aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/juick/www/controllers/Site.java26
-rw-r--r--src/main/resources/templates/views/blog.html2
2 files changed, 23 insertions, 5 deletions
diff --git a/src/main/java/com/juick/www/controllers/Site.java b/src/main/java/com/juick/www/controllers/Site.java
index dc037073..57115629 100644
--- a/src/main/java/com/juick/www/controllers/Site.java
+++ b/src/main/java/com/juick/www/controllers/Site.java
@@ -185,6 +185,7 @@ public class Site {
@RequestParam(required = false, name = "page", defaultValue = "0") Integer page,
@PathVariable String uname,
@RequestParam(required = false, defaultValue = "0") Integer before,
+ @CookieValue(name = "sape_cookie", required = false, defaultValue = StringUtils.EMPTY) String sapeCookie,
ModelMap model) {
User user = userService.getUserByName(uname);
if (user.isBanned() || user.isAnonymous()) {
@@ -194,8 +195,17 @@ public class Site {
List<Integer> mids;
+ Tag paramTag = null;
if (paramTagStr != null) {
- paramSearch = paramTagStr;
+ if (paramTagStr.length() < 64) {
+ paramTag = tagService.getTag(paramTagStr, false);
+ }
+ if (paramTag == null) {
+ throw new HttpNotFoundException();
+ } else if (!paramTag.getName().equals(paramTagStr)) {
+ String url = user.getName() + "/?tag=" + URLEncoder.encode(paramTag.getName(), StandardCharsets.UTF_8);
+ return "redirect:/" + url;
+ }
}
if (paramSearch != null && paramSearch.length() > 64) {
paramSearch = null;
@@ -212,7 +222,10 @@ public class Site {
String title;
if (paramShow == null) {
- if (paramSearch != null) {
+ if (paramTag != null) {
+ title = "Блог " + user.getName() + ": *" + StringEscapeUtils.escapeHtml4(paramTag.getName());
+ mids = messagesService.getUserTag(user.getUid(), paramTag.TID, privacy, before);
+ } else if (paramSearch != null) {
title = "Блог " + user.getName() + ": " + StringEscapeUtils.escapeHtml4(paramSearch);
mids = messagesService.getUserSearch(visitor, user.getUid(), WebUtils.encodeSphinx(paramSearch), privacy, page);
} else {
@@ -232,7 +245,9 @@ public class Site {
String head = "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"@" +
user.getName() + "\" href=\"//rss.juick.com/" + user.getName() + "/blog\"/>";
head += "<meta name=\"Description\" content=\"" + title + "\" />\n";
- if (before > 0 || paramShow != null) {
+ if (paramTag != null && tagService.getTagNoIndex(paramTag.TID)) {
+ head += "<meta name=\"robots\" content=\"noindex,nofollow\"/>";
+ } else if (before > 0 || paramShow != null) {
head += "<meta name=\"robots\" content=\"noindex\"/>";
}
model.addAttribute("pageUrl", "http://juick.com/" + user.getName());
@@ -241,7 +256,7 @@ public class Site {
model.addAttribute("visitor", visitor);
model.addAttribute("noindex", paramShow == null && before == 0);
fillUserModel(model, user, visitor);
- model.addAttribute("paramTag", paramSearch);
+ model.addAttribute("paramTag", paramTag);
List<Message> msgs = messagesService.getMessages(visitor, mids);
msgs.forEach(m -> m.getUser().setAvatar(webApp.getAvatarWebPath(m.getUser())));
if (!visitor.isAnonymous()) {
@@ -261,6 +276,9 @@ public class Site {
if (paramSearch != null) {
nextpage += "&amp;search=" + URLEncoder.encode(paramSearch, StandardCharsets.UTF_8);
}
+ if (paramTag != null) {
+ nextpage += "&amp;tag=" + URLEncoder.encode(paramTag.getName(), StandardCharsets.UTF_8);
+ }
model.addAttribute("nextpage", nextpage);
}
return "views/blog";
diff --git a/src/main/resources/templates/views/blog.html b/src/main/resources/templates/views/blog.html
index 4e390364..8d6a6581 100644
--- a/src/main/resources/templates/views/blog.html
+++ b/src/main/resources/templates/views/blog.html
@@ -5,7 +5,7 @@
<!--noindex-->
{% endif %}
{% if paramTag | default('') is not empty %}
-<p class="page"><a href="/tag/{{ paramTag | urlencode }}">← {{ i18n("messages","blog.allPostsWithTag") }} <b>{{ paramTag | escape }}</b></a></p>
+<p class="page"><a href="/tag/{{ paramTag.name | urlencode }}">← {{ i18n("messages","blog.allPostsWithTag") }} <b>{{ paramTag.name | escape }}</b></a></p>
{% endif %}
<div>
{% for msg in msgs %}