aboutsummaryrefslogtreecommitdiff
path: root/juick-www/src/main/java/com/juick/www/controllers/Tags.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-www/src/main/java/com/juick/www/controllers/Tags.java')
-rw-r--r--juick-www/src/main/java/com/juick/www/controllers/Tags.java84
1 files changed, 38 insertions, 46 deletions
diff --git a/juick-www/src/main/java/com/juick/www/controllers/Tags.java b/juick-www/src/main/java/com/juick/www/controllers/Tags.java
index 29e2e598..acab1005 100644
--- a/juick-www/src/main/java/com/juick/www/controllers/Tags.java
+++ b/juick-www/src/main/java/com/juick/www/controllers/Tags.java
@@ -16,105 +16,97 @@
*/
package com.juick.www.controllers;
+import com.juick.server.util.HttpNotFoundException;
+import com.juick.server.util.UserUtils;
import com.juick.service.MessagesService;
import com.juick.service.TagService;
-import com.juick.server.util.UserUtils;
-import com.juick.www.Utils;
-import com.juick.www.WebApp;
+import com.juick.service.UserService;
import org.apache.commons.codec.CharEncoding;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.StringEscapeUtils;
import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
-import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.List;
+import java.util.stream.Collectors;
/**
- *
* @author Ugnich Anton
*/
@Controller
public class Tags {
@Inject
- WebApp webApp;
- @Inject
MessagesService messagesService;
@Inject
TagService tagService;
@Inject
- PageTemplates templates;
+ UserService userService;
@GetMapping("/tag/{tagName}")
- protected void doGet(HttpServletRequest request,
- @PathVariable String tagName,
- @RequestParam(required = false, defaultValue = "0") int before,
- HttpServletResponse response) throws IOException {
+ protected String tagAction(HttpServletRequest request,
+ @PathVariable String tagName,
+ @RequestParam(required = false, defaultValue = "0") int before,
+ ModelMap model) throws IOException {
com.juick.User visitor = UserUtils.getCurrentUser();
String paramTagStr = StringEscapeUtils.unescapeHtml4(tagName);
com.juick.Tag paramTag = tagService.getTag(paramTagStr, false);
if (paramTag == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND);
- return;
+ throw new HttpNotFoundException();
} else if (paramTag.SynonymID > 0 && paramTag.TID != paramTag.SynonymID) {
com.juick.Tag synTag = tagService.getTag(paramTag.SynonymID);
String url = "/tag/" + URLEncoder.encode(StringEscapeUtils.escapeHtml4(synTag.getName()), CharEncoding.UTF_8);
if (request.getQueryString() != null) {
url += "?" + request.getQueryString();
}
- Utils.sendPermanentRedirect(response, url);
- return;
+ return "redirect:" + url;
} else if (!paramTag.getName().equals(paramTagStr)) {
String url = "/tag/" + URLEncoder.encode(StringEscapeUtils.escapeHtml4(paramTag.getName()), CharEncoding.UTF_8);
if (request.getQueryString() != null) {
url += "?" + request.getQueryString();
}
- Utils.sendPermanentRedirect(response, url);
- return;
+ return "redirect:" + url;
}
int visitor_uid = visitor.getUid();
String title = "*" + StringEscapeUtils.escapeHtml4(paramTag.getName());
+ model.addAttribute("title", title);
List<Integer> mids = messagesService.getTag(paramTag.TID, visitor_uid, before, (visitor_uid == 0) ? 40 : 20);
- response.setContentType("text/html; charset=UTF-8");
- try (PrintWriter out = response.getWriter()) {
- String head = StringUtils.EMPTY;
- if (tagService.getTagNoIndex(paramTag.TID)) {
- head = "<meta name=\"robots\" content=\"noindex,nofollow\"/>";
- } else if (before > 0 || mids.size() < 5) {
- head = "<meta name=\"robots\" content=\"noindex\"/>";
- }
- templates.pageHead(out, visitor, title, head);
- templates.pageNavigation(out, visitor, null);
-
- out.println("<section id=\"content\">");
-
- if (mids.size() > 0) {
- templates.printMessages(out, null, mids, visitor);
- }
-
- if (mids.size() >= 20) {
- String nextpage = "/tag/" + URLEncoder.encode(paramTag.getName(), CharEncoding.UTF_8) + "?before=" + mids.get(mids.size() - 1);
- out.println("<p class=\"page\"><a href=\"" + nextpage + "\" rel=\"prev\">Читать дальше →</a></p>");
- }
-
- out.println("</section>");
-
- templates.pageHomeColumn(out, visitor);
+ String head = StringUtils.EMPTY;
+ if (tagService.getTagNoIndex(paramTag.TID)) {
+ head = "<meta name=\"robots\" content=\"noindex,nofollow\"/>";
+ } else if (before > 0 || mids.size() < 5) {
+ head = "<meta name=\"robots\" content=\"noindex\"/>";
+ }
+ model.addAttribute("headers", head);
+ model.addAttribute("visitor", visitor);
- templates.pageFooter(request, out, visitor, true);
+ List<com.juick.Message> msgs = messagesService.getMessages(mids);
- templates.pageEnd(out);
+ if (visitor.getUid() != 0) {
+ List<Integer> blUIDs = userService.checkBL(visitor.getUid(),
+ msgs.stream().map(m -> m.getUser().getUid()).collect(Collectors.toList()));
+ msgs.forEach(m -> m.ReadOnly |= blUIDs.contains(m.getUser().getUid()));
+ }
+ model.addAttribute("msgs", msgs);
+ model.addAttribute("tags", tagService.getPopularTags());
+ model.addAttribute("headers", head);
+ model.addAttribute("showAdv",before == 0 && visitor.getUid() == 0);
+ model.addAttribute("isModerator", visitor.getUid() == 3694);
+ if (mids.size() >= 20) {
+ String nextpage = "/tag/" + URLEncoder.encode(paramTag.getName(), CharEncoding.UTF_8) + "?before=" + mids.get(mids.size() - 1);
+ String next = "<p class=\"page\"><a href=\"" + nextpage + "\" rel=\"prev\">Читать дальше →</a></p>";
+ model.addAttribute("next", next);
}
+ return "views/index";
}
}