diff options
author | Vitaly Takmazov | 2017-08-18 13:58:34 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2017-08-18 14:34:21 +0300 |
commit | 9c0f37b2fd7535a46c324ff7eb89ed9454aee88f (patch) | |
tree | bf663780bbd15deee547c79aa8b42b9735368d67 /juick-www/src/main/java/com/juick/www/controllers/PageTemplates.java | |
parent | f5a87d2b7072426cfe36527db1270e5f85b73e01 (diff) |
www: no more ugnich templates
Diffstat (limited to 'juick-www/src/main/java/com/juick/www/controllers/PageTemplates.java')
-rw-r--r-- | juick-www/src/main/java/com/juick/www/controllers/PageTemplates.java | 380 |
1 files changed, 0 insertions, 380 deletions
diff --git a/juick-www/src/main/java/com/juick/www/controllers/PageTemplates.java b/juick-www/src/main/java/com/juick/www/controllers/PageTemplates.java deleted file mode 100644 index a01cbc55..00000000 --- a/juick-www/src/main/java/com/juick/www/controllers/PageTemplates.java +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (C) 2008-2017, Juick - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package com.juick.www.controllers; - -import com.juick.Message; -import com.juick.server.helpers.TagStats; -import com.juick.service.MessagesService; -import com.juick.service.TagService; -import com.juick.service.UserService; -import com.juick.util.MessageUtils; -import com.juick.www.WebApp; -import org.apache.commons.codec.CharEncoding; -import org.apache.commons.text.StringEscapeUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.util.StringUtils; -import org.springframework.web.util.WebUtils; -import ru.sape.Sape; - -import javax.inject.Inject; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author Ugnich Anton - */ -public class PageTemplates { - - private static final Logger logger = LoggerFactory.getLogger(PageTemplates.class); - - @Inject - private Sape sape; - protected static final SimpleDateFormat sdfSQL = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - private static SimpleDateFormat sdfSimple = new SimpleDateFormat("d MMM"); - private static SimpleDateFormat sdfFull = new SimpleDateFormat("d MMM yyyy"); - private static String tagsHTML = null; - - @Inject - TagService tagService; - @Inject - MessagesService messagesService; - @Inject - UserService userService; - @Inject - WebApp webApp; - - public void pageHead(PrintWriter out, com.juick.User visitor, String title, String headers) { - out.println("<!DOCTYPE html>"); - out.print("<html>"); - out.print("<head>"); - out.println("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">"); - out.print("<link rel=\"stylesheet\" href=\"/" + webApp.getStyleUrl() + "\"/>"); - out.print("<script type=\"text/javascript\" src=\"/" + webApp.getScriptsUrl() + "\"></script>"); - if (headers != null) { - out.print(headers); - } - out.print("<title>" + title + "</title>"); - out.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>"); - out.println("<meta name=\"msapplication-config\" content=\"//i.juick.com/browserconfig.xml\"/>"); - out.println("<meta name=\"msapplication-TileColor\" content=\"#ffffff\"/>"); - out.println("<meta name=\"msapplication-TileImage\" content=\"//i.juick.com/ms-icon-144x144.png\"/>"); - out.println("<meta name=\"theme-color\" content=\"#ffffff\"/>"); - out.println("<link rel=\"apple-touch-icon\" sizes=\"57x57\" href=\"//i.juick.com/apple-icon-57x57.png\"/>"); - out.println("<link rel=\"apple-touch-icon\" sizes=\"60x60\" href=\"//i.juick.com/apple-icon-60x60.png\"/>"); - out.println("<link rel=\"apple-touch-icon\" sizes=\"72x72\" href=\"//i.juick.com/apple-icon-72x72.png\"/>"); - out.println("<link rel=\"apple-touch-icon\" sizes=\"76x76\" href=\"//i.juick.com/apple-icon-76x76.png\"/>"); - out.println("<link rel=\"apple-touch-icon\" sizes=\"114x114\" href=\"//i.juick.com/apple-icon-114x114.png\"/>"); - out.println("<link rel=\"apple-touch-icon\" sizes=\"120x120\" href=\"//i.juick.com/apple-icon-120x120.png\"/>"); - out.println("<link rel=\"apple-touch-icon\" sizes=\"144x144\" href=\"//i.juick.com/apple-icon-144x144.png\"/>"); - out.println("<link rel=\"apple-touch-icon\" sizes=\"152x152\" href=\"//i.juick.com/apple-icon-152x152.png\"/>"); - out.println("<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"//i.juick.com/apple-icon-180x180.png\"/>"); - out.println("<link rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"//i.juick.com/android-icon-192x192.png\"/>"); - out.println("<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"//i.juick.com/favicon-32x32.png\"/>"); - out.println("<link rel=\"icon\" type=\"image/png\" sizes=\"96x96\" href=\"//i.juick.com/favicon-96x96.png\"/>"); - out.println("<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"//i.juick.com/favicon-16x16.png\"/>"); - out.println("<link rel=\"manifest\" href=\"//i.juick.com/manifest.json\"/>"); - out.println("<!--[if lt IE 9 & (!IEMobile 7)]>"); - out.println("<script src=\"//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js\"></script>"); - out.println("<![endif]-->"); - out.println("</head>"); - out.flush(); - if (visitor.getUid() > 0) { - out.println("<body id=\"body\" data-hash=\"" + visitor.getAuthHash() + "\">"); - } else { - out.println("<body id=\"body\">"); - } - } - - public void pageNavigation(PrintWriter out, com.juick.User visitor, String search) { - out.println("<header>"); - out.println(" <div id=\"logo\"><a href=\"/\">Juick</a></div>"); - out.print(" <nav id=\"global\"><ul>"); - out.print("<li><a href=\"/\">Популярные</a></li>"); - out.print("<li><a href=\"/?show=all\" rel=\"nofollow\">Все сообщения</a></li>"); - out.print("<li><a href=\"/?show=photos\" rel=\"nofollow\">Фотографии</a></li>"); - out.println("</ul></nav>"); - out.print(" <div id=\"search\"><form action=\"/\"><input type=\"text\" name=\"search\" class=\"text\" placeholder=\"Поиск\""); - if (search != null) { - out.print(" value=\"" + StringEscapeUtils.escapeHtml4(search) + "\""); - } - out.println("/></form></div>"); - out.println(" <section id=\"headdiv\">"); - if (visitor.getUid() > 0) { - out.print(" <nav id=\"user\"><ul>"); - out.print("<li><a href=\"/?show=my\">Моя лента</a></li>"); - out.print("<li><a href=\"/pm/inbox\">Приватные</a></li>"); - out.print("<li><a href=\"/?show=discuss\">Обсуждения</a></li>"); - out.print("<li><a href=\"/?show=recommended\">Рекомендации</a></li>"); - out.println("</ul></nav>"); - out.print(" <nav id=\"actions\"><ul>"); - out.print("<li><a href=\"/#post\">Написать</a></li>"); - out.print("<li><a href=\"/" + visitor.getName() + "\">@" + visitor.getName() + "</a></li>"); - out.print("<li><a href=\"/logout\">Выйти</a></li>"); - out.println("</ul></nav>"); - } else { - out.println("<p>Чтобы добавлять сообщения и комментарии, <a href=\"#\" class=\"a-login\">представьтесь</a>.</p>"); - } - out.println(" </section>"); - out.println("</header>"); - } - - public void pageHomeColumn(PrintWriter out, com.juick.User visitor) { - pageHomeColumn(out, visitor, false); - } - - public void pageHomeColumn(PrintWriter out, com.juick.User visitor, boolean showAdv) { - if (tagsHTML == null) { - tagsHTML = formatPopularTags(80); - } - - out.println("<aside id=\"column\">"); - out.print(" <p class=\"tags\">" + tagsHTML); - if (showAdv) { - out.print(" <a href=\"http://ru.wix.com/\">конструктор сайтов</a>"); - } - out.println("</p>"); -// if (visitor != null) { -// printContestRating(out, sql); -// } - out.println("</aside>"); - } - - public String formatPopularTags(int cnt) { - List<String> popularTags = tagService.getPopularTags().stream() - .map(t -> "<a href=\"/tag/" + URLEncoder.encode(t) + "\">" + StringEscapeUtils.escapeHtml4(t) + "</a>").collect(Collectors.toList()); - return StringUtils.collectionToDelimitedString(popularTags, " "); - } - - public void pageFooter(HttpServletRequest request, PrintWriter out, com.juick.User visitor, boolean sapeon) { - out.println("<div id=\"footer\">"); - out.println(" <div id=\"footer-right\"><a href=\"/settings\" rel=\"nofollow\">Настройки</a> · <a href=\"/help/ru/contacts\" rel=\"nofollow\">Контакты</a> · <a href=\"/help/\" rel=\"nofollow\">Справка</a> · <a href=\"/help/ru/adv\" rel=\"nofollow\">Реклама</a></div>"); - out.print(" <div id=\"footer-social\">"); - out.print("<a href=\"https://twitter.com/Juick\" rel=\"nofollow\" class=\"ico32-twi\">Twitter</a>"); - out.print("<a href=\"https://vk.com/juick\" rel=\"nofollow\" class=\"ico32-vk\">ВКонтакте</a>"); - out.print("<a href=\"https://www.facebook.com/JuickCom\" rel=\"nofollow\" class=\"ico32-fb\">Facebook</a>"); - out.println("</div>"); - out.print(" <div id=\"footer-left\">juick.com © 2008-2017"); - - String queryString = request.getQueryString(); - String requestURI = request.getRequestURI(); - if (sapeon && sape != null && (visitor.getUid() == 0 || visitor.getUid() == 1) && queryString == null) { - String cookieValue = null; - Cookie sapeCookie = WebUtils.getCookie(request, "sape_cookie"); - if (sapeCookie != null) { - cookieValue = sapeCookie.getValue(); - } - String links = sape.getPageLinks(requestURI, cookieValue).render(); - if (links != null && !links.isEmpty()) { - out.print("<br/>Спонсоры: " + links); - } - } - - out.println("</div>"); - out.println("</div>"); - - if (sapeon) { - out.println("<script>"); - out.println("var _acic={dataProvider:10};"); - out.println("(function(){"); - out.println("var e=document.createElement('script');e.type='text/javascript';e.async=true;e.src='//www2.aci'+'nt.net/aci.js';"); - out.println("var t=document.getElementsByTagName('script')[0];t.parentNode.insertBefore(e,t);"); - out.println("})();"); - out.println("</script>"); - } - } - - public void pageEnd(PrintWriter out) { - out.println("</body></html>"); - } - - public String formatTags(List<TagStats> tags) { - String ret = org.apache.commons.lang3.StringUtils.EMPTY; - for (TagStats tag : tags) { - String tagName = StringEscapeUtils.escapeHtml4(tag.getTag().getName()); - try { - ret += "<a href=\"/tag/" + URLEncoder.encode(tag.getTag().getName(), CharEncoding.UTF_8) + "\""; - if (tag.getUsageCount() < 2) { - ret += " rel=\"nofollow\""; - } - ret += ">" + tagName + "</a>"; - } catch (UnsupportedEncodingException e) { - } - } - - return ret; - } - - public String formatDate(int minutes, Date fulldate) { - if (minutes < 1) { - return "сейчас"; - } else if (minutes < 60) { - String unit; - int ld = minutes % 10; - if ((minutes < 10 || minutes > 20) && ld == 1) { - unit = "минуту"; - } else if ((minutes < 10 || minutes > 20) && ld > 1 && ld < 5) { - unit = "минуты"; - } else { - unit = "минут"; - } - return minutes + " " + unit + " назад"; - } else if (minutes < 1440) { - int hours = (minutes / 60); - String unit; - int ld = hours % 10; - if ((hours < 10 || hours > 20) && ld == 1) { - unit = "час"; - } else if ((hours < 10 || hours > 20) && ld > 1 && ld < 5) { - unit = "часа"; - } else { - unit = "часов"; - } - return hours + " " + unit + " назад"; - } else if (minutes < 20160) { - int days = (minutes / 1440); - String unit; - int ld = days % 10; - if ((days < 10 || days > 20) && ld == 1) { - unit = "день"; - } else if ((days < 10 || days > 20) && ld > 1 && ld < 5) { - unit = "дня"; - } else { - unit = "дней"; - } - return days + " " + unit + " назад"; - } else { - String ret = sdfFull.format(fulldate); - synchronized (sdfSQL) { - try { - Calendar c = Calendar.getInstance(); - int curyear = c.get(Calendar.YEAR); - c.setTime(fulldate); - if (c.get(Calendar.YEAR) == curyear) { - ret = sdfSimple.format(fulldate); - } else { - ret = sdfFull.format(fulldate); - } - } catch (Exception e) { - logger.error("PARSE EXCEPTION: {}, exception {}", fulldate, e); - } - } - return ret; - } - } - - public String formatReplies(int replies) { - int ld = replies % 10; - int lh = replies % 100; - if ((lh < 10 || lh > 20) && ld == 1) { - return replies + " ответ"; - } else if ((lh < 10 || lh > 20) && ld > 1 && ld < 5) { - return replies + " ответа"; - } else { - return replies + " ответов"; - } - } - - public void printMessages(PrintWriter out, com.juick.User user, List<Integer> mids, com.juick.User visitor) { - List<com.juick.Message> msgs = messagesService.getMessages(mids); - - List<Integer> blUIDs = new ArrayList<Integer>(20); - if (visitor != null) { - for (Message msg : msgs) { - blUIDs.add(msg.getUser().getUid()); - } - blUIDs = userService.checkBL(visitor.getUid(), blUIDs); - } - - for (Message msg : msgs) { - - List<TagStats> tags = tagService.getMessageTags(msg.getMid()); - String tagsStr = formatTags(tags); - if (msg.ReadOnly) { - tagsStr += "<a>readonly</a>"; - } - if (msg.getPrivacy() < 0) { - tagsStr += "<a>friends</a>"; - } - String txt; - if (msg.getTags().stream().anyMatch(t -> t.getName().equals("code"))) { - txt = MessageUtils.formatMessageCode(msg.getText()); - } else { - txt = MessageUtils.formatMessage(msg.getText()); - } - - out.println("<article data-mid=\"" + msg.getMid() + "\">"); - out.println(" <header class=\"h\">"); - out.println(" @<a href=\"/" + msg.getUser().getName() + "/\">" + msg.getUser().getName() + "</a>:"); - out.println(" <div class=\"msg-avatar\"><a href=\"/" + msg.getUser().getName() + "/\"><img src=\"//i.juick.com/a/" + msg.getUser().getUid() + ".png\" alt=\"" + msg.getUser().getName() + "\"/></a></div>"); - out.println(" <div class=\"msg-menu\"><a href=\"#\"></a></div>"); - out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.getUser().getName() + "/" + msg.getMid() + "\"><time datetime=\"" + sdfSQL.format(msg.getDate()) + "Z\" title=\"" + sdfSQL.format(msg.getDate()) + " GMT\">" + formatDate(msg.TimeAgo, msg.getDate()) + "</time></a></div>"); - - out.println(" <div class=\"msg-tags\">" + tagsStr + "</div>"); - out.println(" </header>"); - - if (msg.getAttachmentType() != null) { - String fname = msg.getMid() + "." + msg.getAttachmentType(); - out.println(" <p class=\"ir\"><a href=\"//i.juick.com/photos-512/" + fname + "\" data-fname=\"" + fname + "\"><img src=\"//i.juick.com/photos-512/" + fname + "\" alt=\"\"/></a></p>"); - } - out.println(" <p>" + txt + "</p>"); - if (msg.getAttachmentType() != null) { - out.println(" <div class=\"irbr\"></div>"); - } - out.print(" <nav class=\"l\">"); - msg.ReadOnly |= blUIDs.contains(msg.getUser().getUid()); - if (visitor.getUid() == 0) { - out.print("<a href=\"#\" class=\"a-login\">Рекомендовать</a>"); - } else { - out.print("<a href=\"/post?body=!+%23" + msg.getMid() + "\" class=\"a-like\">Рекомендовать</a>"); - } - if (visitor.getUid() == 0 && !msg.ReadOnly) { - out.print("<a href=\"/" + msg.getMid() + "\" class=\"a-login\">Комментировать</a> "); - } else if (visitor.getUid() > 0 && (!msg.ReadOnly || visitor.getUid() == msg.getUser().getUid())) { - out.print("<a class=\"a-comment\" href=\"/" + msg.getMid() + "\">Комментировать</a> "); - } - if (visitor.getUid() > 0 && msg.getPrivacy() < 0 && msg.getUser().getUid() == visitor.getUid()) { - out.print(" <a href=\"#\" class=\"a-privacy\">Открыть доступ</a>"); - } - if (visitor.getUid() > 0 && visitor.getUid() == 3694) { - out.print(" <a href=\"#\" class=\"a-popular-plus\">+</a>"); - out.print(" <a href=\"#\" class=\"a-popular-minus\">-</a>"); - out.print(" <a href=\"#\" class=\"a-popular-delete\">x</a>"); - } - out.println("</nav>"); - - out.print(" <nav class=\"s\">"); - if (msg.getLikes() > 0) { - out.print("<a href=\"/" + msg.getUser().getName() + "/" + msg.getMid() + "\" class=\"likes\"><i data-icon=\"ei-heart\" data-size=\"s\"></i> " + msg.getLikes() + "</a>"); - } - if (msg.getReplies() > 0) { - out.print("<a href=\"/" + msg.getUser().getName() + "/" + msg.getMid() + "\" class=\"replies\"><i data-icon=\"ei-comment\" data-size=\"s\"></i> " + msg.getReplies() + "</a>"); - } - out.println("</nav>"); - out.print("</article>"); - } - } -} |