diff options
Diffstat (limited to 'src/java/com/juick')
-rw-r--r-- | src/java/com/juick/http/www/Blogs.java | 41 | ||||
-rw-r--r-- | src/java/com/juick/http/www/Chats.java | 77 | ||||
-rw-r--r-- | src/java/com/juick/http/www/Login.java | 1 | ||||
-rw-r--r-- | src/java/com/juick/http/www/Main.java | 13 | ||||
-rw-r--r-- | src/java/com/juick/http/www/Map.java | 64 | ||||
-rw-r--r-- | src/java/com/juick/http/www/NewMessage.java | 1 | ||||
-rw-r--r-- | src/java/com/juick/http/www/PageTemplates.java | 134 | ||||
-rw-r--r-- | src/java/com/juick/http/www/Photos.java | 100 | ||||
-rw-r--r-- | src/java/com/juick/http/www/Tags.java | 87 | ||||
-rw-r--r-- | src/java/com/juick/http/www/User.java | 38 | ||||
-rw-r--r-- | src/java/com/juick/http/www/UserThread.java | 28 |
11 files changed, 252 insertions, 332 deletions
diff --git a/src/java/com/juick/http/www/Blogs.java b/src/java/com/juick/http/www/Blogs.java index a1cfdeb07..ea728eab0 100644 --- a/src/java/com/juick/http/www/Blogs.java +++ b/src/java/com/juick/http/www/Blogs.java @@ -98,10 +98,10 @@ public class Blogs { response.sendError(404); return; } - } else if (paramShow.equals("incoming")) { + } else if (paramShow.equals("discuss")) { if (visitor != null) { - title = rb.getString("Incoming"); - mids = MessagesQueries.getIncoming(sql, visitor.UID, paramBefore); + title = rb.getString("Discussions"); + mids = MessagesQueries.getDiscussions(sql, visitor.UID, paramBefore); } else { response.sendError(404); return; @@ -130,18 +130,27 @@ public class Blogs { try { PageTemplates.pageHead(out, title, null); PageTemplates.pageNavigation(out, locale, visitor); - PageTemplates.pageTitle(out, title); + out.println("<div id=\"topwrapper\">"); out.println("<div id=\"wrapper\">"); out.println("<div id=\"content\">"); - out.println("<ul>"); + + PageTemplates.pageFilters(out, locale, visitor); if (mids.size() > 0) { + /* + if (paramShow != null && paramShow.equals("photos")) { + PageTemplates.printPhotos(out, sql, mids, locale); + } else { + */ + out.println("<ul>"); PageTemplates.printMessages(out, sql, mids, locale); + out.println("</ul>"); + /* + } + */ } - out.println("</ul>"); - if (mids.size() == 20) { String nextpage = "?before=" + mids.get(mids.size() - 1); if (paramShow != null) { @@ -154,29 +163,33 @@ public class Blogs { } out.println("</div>"); + out.println("</div>"); // wrapper + - out.println("<div id=\"column\">"); + out.println("<div id=\"column\" class=\"stickya\">"); out.println("<h2>" + rb.getString("Lists") + "</h2>"); if (visitor != null) { out.println("<ul>"); out.println(" <li><a href=\"?show=my\">" + rb.getString("My feed") + "</a></li>"); out.println(" <li><a href=\"?show=private\">" + rb.getString("Private") + "</a></li>"); - out.println(" <li><a href=\"?show=incoming\">" + rb.getString("Incoming") + "</a></li>"); + out.println(" <li><a href=\"?show=discuss\">" + rb.getString("Discussions") + "</a></li>"); out.println(" <li><a href=\"?show=recommended\">" + rb.getString("Recommended") + "</a></li>"); out.println("</ul>"); + out.println("<hr/>"); } out.println("<ul>"); out.println(" <li><a href=\"?\">" + rb.getString("All messages") + "</a></li>"); out.println(" <li><a href=\"?show=top\">" + rb.getString("Popular") + "</a></li>"); out.println(" <li><a href=\"?show=photos\">" + rb.getString("With photos") + "</a></li>"); out.println("</ul>"); - out.println("<h2>" + rb.getString("Tags") + "</h2>"); - out.println("<p style=\"text-align: justify\">" + getTags(sql, 30) + "</p>"); - out.println("<h2>" + rb.getString("Search") + "</h2>"); - out.println("<form action=\"/\" id=\"search\"><p><input type=\"text\" name=\"search\" class=\"inp\"/></p></form>"); - out.println("</div>"); + out.println("<hr/>"); + out.println("<p>" + getTags(sql, 30) + "</p>"); out.println("</div>"); + out.println("<div id=\"rcol\"></div>"); + + out.println("</div>"); // topwrapper + PageTemplates.pageFooter(request, out, locale, visitor); } finally { out.close(); diff --git a/src/java/com/juick/http/www/Chats.java b/src/java/com/juick/http/www/Chats.java deleted file mode 100644 index d15bb271c..000000000 --- a/src/java/com/juick/http/www/Chats.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Juick - * Copyright (C) 2008-2011, Ugnich Anton - * - * 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.http.www; - -import java.io.IOException; -import java.io.PrintWriter; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Locale; -import java.util.ResourceBundle; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * - * @author Ugnich Anton - */ -public class Chats { - - protected void doGet(Connection sql, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - com.juick.User visitor = Utils.getVisitorUser(sql, request); - Locale locale = request.getLocale(); - ResourceBundle rb = ResourceBundle.getBundle("Chats", locale); - - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - try { - PageTemplates.pageHead(out, rb.getString("Active chats"), ""); - PageTemplates.pageNavigation(out, locale, visitor); - PageTemplates.pageTitle(out, rb.getString("Active chats")); - - out.println("<div id=\"wrapper\">"); - out.println("<div id=\"content\"><ul id=\"chats\">"); - - PreparedStatement stmt = null; - ResultSet rs = null; - try { - stmt = sql.prepareStatement("SELECT chats.chat_id,chats.subject,COUNT(chat_users.user_id) AS cnt FROM chats INNER JOIN chat_users USING(chat_id) GROUP BY chat_id ORDER BY cnt DESC"); - rs = stmt.executeQuery(); - rs.beforeFirst(); - while (rs.next()) { - String chatid = Integer.toString(rs.getInt(1), Character.MAX_RADIX); - out.println("<li><b>" + Utils.encodeHTML(rs.getString(2)) + "</b><br/><i>" + rb.getString("Users online") + ": " + rs.getInt(3) + "</i><br/><a href=\"xmpp:" + chatid + "@chat.juick.com?join\">" + chatid + "@chat.juick.com</a></li>"); - } - } catch (SQLException e) { - System.err.println(e); - } finally { - Utils.finishSQL(rs, stmt); - } - - out.println("</ul></div>"); - out.println("</div>"); - - PageTemplates.pageFooter(request, out, locale, visitor); - } finally { - out.close(); - } - } -} diff --git a/src/java/com/juick/http/www/Login.java b/src/java/com/juick/http/www/Login.java index 0006f9d00..3cf4a318e 100644 --- a/src/java/com/juick/http/www/Login.java +++ b/src/java/com/juick/http/www/Login.java @@ -45,7 +45,6 @@ public class Login { try { PageTemplates.pageHead(out, rb.getString("Login"), ""); PageTemplates.pageNavigation(out, locale, visitor); - PageTemplates.pageTitle(out, rb.getString("Login")); out.println("<div id=\"wrapper\">"); out.println("<div id=\"content\">"); diff --git a/src/java/com/juick/http/www/Main.java b/src/java/com/juick/http/www/Main.java index 256e70f92..055327dd2 100644 --- a/src/java/com/juick/http/www/Main.java +++ b/src/java/com/juick/http/www/Main.java @@ -42,10 +42,8 @@ public class Main extends HttpServlet implements XmppListener { Connection sqlSearch; XmppConnection xmpp; Blogs blogs = new Blogs(); - Chats chats = new Chats(); - Photos photos = new Photos(); + Tags tags = new Tags(); RootRedirects rootRedirects = new RootRedirects(); - Map map = new Map(); Login login = new Login(); User pagesUser = new User(); UserThread pagesUserThread = new UserThread(); @@ -124,12 +122,9 @@ public class Main extends HttpServlet implements XmppListener { String uri = request.getRequestURI(); if (uri.equals("/")) { blogs.doGet(sql, sqlSearch, request, response); - } else if (uri.equals("/chats")) { - chats.doGet(sql, request, response); - } else if (uri.equals("/photos")) { - photos.doGet(sql, request, response); - } else if (uri.equals("/map")) { - map.doGet(sql, request, response); + } else if (uri.equals("/tags")) { + com.juick.User visitor = Utils.getVisitorUser(sql, request); + tags.doGetTags(sql, request, response, visitor); } else if (uri.equals("/post")) { com.juick.User visitor = Utils.getVisitorUser(sql, request); if (visitor != null) { diff --git a/src/java/com/juick/http/www/Map.java b/src/java/com/juick/http/www/Map.java deleted file mode 100644 index 96524ac0e..000000000 --- a/src/java/com/juick/http/www/Map.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Juick - * Copyright (C) 2008-2011, Ugnich Anton - * - * 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.http.www; - -import java.io.IOException; -import java.io.PrintWriter; -import java.sql.Connection; -import java.util.Locale; -import java.util.ResourceBundle; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * - * @author Ugnich Anton - */ -public class Map { - - protected void doGet(Connection sql, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - com.juick.User visitor = Utils.getVisitorUser(sql, request); - Locale locale = request.getLocale(); - ResourceBundle rb = ResourceBundle.getBundle("Map", locale); - - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - try { - PageTemplates.pageHead(out, rb.getString("Messages on map"), "<script src=\"http://maps.google.com/maps?file=api&v=2&sensor=false&key=ABQIAAAAVVtPtxkw4soCEHg44FsNChRB4OFYjAXt73He16Zkp6a_0tPs2RTU6i6UlcMs4QvPBYvIY8rWvcxqOg\" type=\"text/javascript\"></script>" - + "<script src=\"http://static.juick.com/mc.js\" type=\"text/javascript\"></script>" - + "<script src=\"http://static.juick.com/map.js?2010111500\" type=\"text/javascript\"></script>"); - PageTemplates.pageNavigation(out, locale, visitor); - PageTemplates.pageTitle(out, rb.getString("Messages on map")); - - out.println("<div id=\"wrapper\">"); - out.println("<div id=\"geomap\" style=\"height: 400px; margin: 1em 0.5em\"></div>"); - out.println("<div id=\"content\"><ul id=\"messages\"></ul></div>"); - out.println("<div id=\"column\"><h2>" + rb.getString("Popular places") + "</h2><ul id=\"places\"></ul></div>"); - out.println("</div>"); - out.println("<script type=\"text/javascript\">"); - out.println("$(document).ready(mapInit);"); - out.println("$(window).unload(GUnload);"); - out.println("</script>"); - - PageTemplates.pageFooter(request, out, locale, visitor); - } finally { - out.close(); - } - } -} diff --git a/src/java/com/juick/http/www/NewMessage.java b/src/java/com/juick/http/www/NewMessage.java index 1efb753db..1e00a5532 100644 --- a/src/java/com/juick/http/www/NewMessage.java +++ b/src/java/com/juick/http/www/NewMessage.java @@ -49,7 +49,6 @@ public class NewMessage { + "<script src=\"http://static.juick.com/map.js?2010111500\" type=\"text/javascript\"></script>" + "<script src=\"http://static.juick.com/post3.js\" type=\"text/javascript\"></script>"); PageTemplates.pageNavigation(out, locale, visitor); - PageTemplates.pageTitle(out, rbnm.getString("New message")); out.println("<div id=\"wrapper\"><div id=\"content\" class=\"pagetext\">"); out.println("<form action=\"/post\" method=\"post\" id=\"postmsg\" enctype=\"multipart/form-data\">"); diff --git a/src/java/com/juick/http/www/PageTemplates.java b/src/java/com/juick/http/www/PageTemplates.java index a76e02806..08e88342b 100644 --- a/src/java/com/juick/http/www/PageTemplates.java +++ b/src/java/com/juick/http/www/PageTemplates.java @@ -24,7 +24,11 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; import java.util.Locale; import java.util.ResourceBundle; import java.util.regex.Matcher; @@ -39,6 +43,9 @@ import ru.sape.Sape; public class PageTemplates { public static Sape sape = null; + private static SimpleDateFormat sdfSQL = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); + private static SimpleDateFormat sdfSimple = new SimpleDateFormat("d MMM"); + private static SimpleDateFormat sdfFull = new SimpleDateFormat("d MMM yyyy"); public static void pageHead(PrintWriter out, String title, String headers) { out.println("<!DOCTYPE html>"); @@ -46,10 +53,10 @@ public class PageTemplates { out.println("<head>"); out.println(" <meta charset=\"utf-8\"/>"); out.println(" <title>" + title + "</title>"); - out.println(" <link rel=\"stylesheet\" href=\"http://static.juick.com/style3.css?20120306\"/>"); + out.println(" <link rel=\"stylesheet\" href=\"http://static.juick.com/style3.css?2012030601\"/>"); out.println(" <link rel=\"icon\" type=\"image/png\" href=\"http://static.juick.com/favicon.png\"/>"); - out.println(" <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js\"></script>"); - out.println(" <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js\"></script>"); + out.println(" <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\"></script>"); + out.println(" <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js\"></script>"); out.println(" <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js\"></script>"); out.println(" <script type=\"text/javascript\" src=\"http://static.juick.com/scripts3.js?20120306\"></script>"); out.println(" <script type=\"text/javascript\" src=\"http://static.juick.com/js/jquery.autoresize.js\"></script>"); @@ -63,18 +70,16 @@ public class PageTemplates { public static void pageNavigation(PrintWriter out, Locale loc, com.juick.User user) { ResourceBundle rb = ResourceBundle.getBundle("Global", loc); + out.println("<div id=\"hwrapper\">"); out.println("<div id=\"header\">"); - out.println("<div id=\"logo\"><a href=\"" + (user != null ? "/?show=my" : "/") + "\"><img src=\"http://static.juick.com/logo3.png\" width=\"120\" height=\"40\" alt=\"Juick\"/></a></div>"); - out.println(" <ul id=\"nav\">"); - out.println(" <li><a href=\"/\">" + rb.getString("Blogs") + "</a></li>"); -// out.println(" <li><a href=\"/chats\">" + rb.getString("Chats") + "</a></li>"); - out.println(" <li><a href=\"/photos\">" + rb.getString("Photos") + "</a></li>"); - out.println(" <li><a href=\"/map\">" + rb.getString("Map") + "</a></li>"); - out.println(" </ul>"); + out.println(" <div id=\"logo\"><a href=\"" + (user != null ? "/?show=my" : "/") + "\"><img src=\"http://static.juick.com/logo3.png\" width=\"120\" height=\"40\" alt=\"Juick\"/></a></div>"); + out.println(" <form action=\"/\" id=\"search\">"); + out.println(" <div id=\"search\"><input type=\"text\" name=\"search\" class=\"text\" placeholder=\"" + rb.getString("Search") + "\"/><input type=\"submit\" class=\"submit\" value=\">\"></div>"); + out.println(" </form>"); out.println(" <ul id=\"nav-right\">"); if (user != null) { out.println(" <li><a href=\"/post\">" + rb.getString("Post") + "</a></li>"); - out.println(" <li><a href=\"#\" onclick=\"$('#nav-menu').toggle('blind'); return false\"><img src=\"http://i.juick.com/as/" + user.UID + ".png\" alt=\"" + user.UName + "\"/>" + user.UName + "</a><ul id=\"nav-menu\">"); + out.println(" <li><a href=\"#\" onclick=\"$('#nav-menu').toggle(); return false\"><img src=\"http://i.juick.com/as/" + user.UID + ".png\" alt=\"" + user.UName + "\"/>" + user.UName + "</a><ul id=\"nav-menu\">"); out.println(" <li><a href=\"/" + user.UName + "/\">" + rb.getString("Blog") + "</a></li>"); out.println(" <li><a href=\"/settings\">" + rb.getString("Settings") + "</a></li>"); out.println(" <li><a href=\"/logout\">" + rb.getString("Logout") + "</a></li>"); @@ -84,11 +89,21 @@ public class PageTemplates { } out.println(" </ul>"); out.println("</div>"); + out.println("</div>"); } - public static void pageTitle(PrintWriter out, String title) { - out.println("<div id=\"title\">"); - out.println(" <h1>" + title + "</h1>"); + public static void pageFilters(PrintWriter out, Locale loc, com.juick.User user) { + ResourceBundle rb = ResourceBundle.getBundle("Global", loc); + + out.println("<div id=\"filters\">"); + out.println("<ul>"); + out.println(" <li><a href=\"#\">Messages</a></li>"); + out.println(" <li><a href=\"#\">Photos</a></li>"); + out.println(" <li><a href=\"#\">Recommendations</a></li>"); + out.println(" <li><a href=\"#\">Private</a></li>"); + out.println(" <li><a href=\"#\">Tags</a></li>"); + out.println(" <li><a href=\"#\">Users</a></li>"); + out.println("</ul>"); out.println("</div>"); } @@ -236,7 +251,19 @@ public class PageTemplates { int days = (minsago / 1440); return days + " day" + ((days % 10 == 1) ? "" : "s") + " ago"; } else { - return fulldate; + try { + Date pDate = sdfSQL.parse(fulldate); + Calendar c = Calendar.getInstance(); + int curyear = c.get(Calendar.YEAR); + c.setTime(pDate); + if (c.get(Calendar.YEAR) == curyear) { + return sdfSimple.format(pDate); + } else { + return sdfFull.format(pDate); + } + } catch (ParseException e) { + return fulldate; + } } } @@ -355,11 +382,11 @@ public class PageTemplates { txt = formatMessage(txt); - out.print(" <li id=\"msg-" + mid + "\" class=\"msg\""); - if (mid == mids.get(0)) { - out.print(" style=\"border: 0\""); - } - out.println(">"); + out.println(" <li id=\"msg-" + mid + "\" class=\"msg\">"); + out.println(" <div class=\"msg-avatar\"><a href=\"/" + uname + "/\"><img src=\"http://i.juick.com/a/" + uid + ".png\" alt=\"" + uname + "\"/></a></div>"); + out.println(" <div class=\"msg-ts\"><a href=\"/" + uname + "/" + mid + "\" title=\"" + rs.getString(9) + "\">" + formatDate(rs.getInt(8), rs.getString(9), locale) + "</a></div>"); + out.println(" <div class=\"msg-header\"><a href=\"/" + uname + "/\">@" + uname + "</a>:" + tags + "</div>"); + out.println(" <div class=\"msg-txt\">" + txt + "</div>"); if (rs.getString(12) != null) { if (rs.getString(12).equals("jpg")) { @@ -372,15 +399,6 @@ public class PageTemplates { } } - out.println(" <div class=\"msg-avatar\"><a href=\"/" + uname + "/\"><img src=\"http://i.juick.com/a/" + uid + ".png\" alt=\"" + uname + "\"/></a></div>"); - out.println(" <div class=\"msg-ts\"><a href=\"/" + uname + "/" + mid + "\">" + formatDate(rs.getInt(8), rs.getString(9), locale) + "</a><div class=\"msg-menu\"><a href=\"#\" onclick=\"$('#msg-menu-" + mid + "').toggle('blind'); return false\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a><ul id=\"msg-menu-" + mid + "\">"); - out.println(" <li><a href=\"/post?body=%21%20%23" + mid + "\">" + rb.getString("Recommend message") + "</a></li>"); - out.println(" <li><a href=\"/post?body=%40" + uname + "%20\">" + rb.getString("Send private message") + "</a></li>"); - out.println(" <li><a href=\"/post?body=BL%20%40" + uname + "\">" + rb.getString("Block user") + "</a></li>"); - out.println(" </ul></div></div>"); - out.println(" <div class=\"msg-header\"><a href=\"/" + uname + "/\">@" + uname + "</a>:" + tags + "</div>"); - out.println(" <div class=\"msg-txt\">" + txt + "</div>"); - if (rs.getInt(10) > 0) { String repliesby = rs.getString(11); if (repliesby == null) { @@ -389,7 +407,7 @@ public class PageTemplates { out.println(" <div class=\"msg-comments\"><a href=\"/" + uname + "/" + mid + "\">" + formatReplies(rs.getInt(10), locale) + "</a> " + rb.getString("(replies) by") + " " + repliesby + "</div>"); } else if (cancomment) { out.println(" <form action=\"/post\" method=\"POST\" enctype=\"multipart/form-data\"><input type=\"hidden\" name=\"mid\" value=\"" + mid + "\"/>"); - out.println(" <div class=\"msg-comment\"><textarea name=\"body\" rows=\"1\" class=\"reply\" placeholder=\"Add a comment...\" onkeypress=\"postformListener(this.form,event)\"></textarea><input type=\"submit\" value=\"OK\"/></div>"); + out.println(" <div class=\"msg-comment\"><textarea name=\"body\" rows=\"1\" class=\"reply\" placeholder=\"Add a comment...\" onkeypress=\"postformListener(this.form,event)\"></textarea></div>"); out.println(" </form>"); } out.println(" </li>"); @@ -400,4 +418,60 @@ public class PageTemplates { Utils.finishSQL(rs, stmt); } } + /* + public static void printPhotos(PrintWriter out, Connection sql, ArrayList<Integer> mids, Locale locale) { + ResourceBundle rb = ResourceBundle.getBundle("Global", locale); + + out.println("<table class=\"photos\">"); + out.println(" <tr>"); + + PreparedStatement stmt = null; + ResultSet rs = null; + try { + stmt = sql.prepareStatement("SELECT STRAIGHT_JOIN messages.message_id,messages.user_id,users.nick,messages_txt.tags,messages.readonly,messages.privacy,messages_txt.txt,TIMESTAMPDIFF(MINUTE,messages.ts,NOW()),messages.ts,messages.replies,messages_txt.repliesby,messages.attach,messages.place_id,places.name,messages.lat,messages.lon FROM ((messages INNER JOIN messages_txt ON messages.message_id=messages_txt.message_id) INNER JOIN users ON messages.user_id=users.id) LEFT JOIN places ON messages.place_id=places.place_id WHERE messages.message_id IN (" + Utils.convertArray2String(mids) + ") ORDER BY messages.message_id DESC"); + rs = stmt.executeQuery(); + rs.beforeFirst(); + int cnt = 0; + while (rs.next()) { + int mid = rs.getInt(1); + int uid = rs.getInt(2); + String uname = rs.getString(3); + String tags = rs.getString(4); + String txt = rs.getString(7); + + txt = formatMessage(txt); + + if (cnt % 2 == 0 && cnt > 0) { + out.println(" </tr>"); + out.println(" <tr>"); + } + + out.print(" <td id=\"photo-" + mid + "\" class=\"photo\""); + if (mid == mids.get(0)) { + out.print(" style=\"border: 0\""); + } + out.print(">"); + + out.println("<div class=\"photowrap\">"); + out.println(" <a href=\"#\" onclick=\"return photoDetails(" + mid + ")\"><img src=\"http://i.juick.com/" + (rs.getString(12).equals("jpg") ? "photos-512" : "thumbs") + "/" + mid + ".jpg\" alt=\"\"/></a>"); + out.println(" <div class=\"photo-ts\" title=\"" + rs.getString(9) + "\">" + formatDate(rs.getInt(8), rs.getString(9), locale) + "</div>"); + out.println(" <div class=\"photo-uname\">@" + uname + "</div>"); + if (rs.getInt(10) > 0) { + out.println(" <div class=\"photo-comments\">" + rs.getInt(10) + "</div>"); + } + out.println(" <div class=\"photo-txt\">" + txt + "</div>"); + out.println(" </td>"); + + cnt++; + } + } catch (SQLException e) { + System.err.println(e); + } finally { + Utils.finishSQL(rs, stmt); + } + + out.println(" </tr>"); + out.println("</table>"); + } + */ } diff --git a/src/java/com/juick/http/www/Photos.java b/src/java/com/juick/http/www/Photos.java deleted file mode 100644 index a26655018..000000000 --- a/src/java/com/juick/http/www/Photos.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Juick - * Copyright (C) 2008-2011, Ugnich Anton - * - * 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.http.www; - -import java.io.IOException; -import java.io.PrintWriter; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Locale; -import java.util.ResourceBundle; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * - * @author Ugnich Anton - */ -public class Photos { - - protected void doGet(Connection sql, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - com.juick.User visitor = Utils.getVisitorUser(sql, request); - Locale locale = request.getLocale(); - ResourceBundle rb = ResourceBundle.getBundle("Photos", locale); - - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - try { - PageTemplates.pageHead(out, rb.getString("Last photos and videos"), "<script type=\"text/javascript\" src=\"http://static.juick.com/js/jquery.onImagesLoad.min.js\"></script>" - + "<script type=\"text/javascript\" src=\"http://static.juick.com/js/gallery.js\"></script>" - + "<script type=\"text/javascript\" src=\"http://static.juick.com/js/jquery.fancybox-1.3.4.js\"></script>" - + "<link rel=\"stylesheet\" href=\"http://static.juick.com/fancybox/jquery.fancybox-1.3.4.css\"/>"); - PageTemplates.pageNavigation(out, locale, visitor); - PageTemplates.pageTitle(out, rb.getString("Last photos and videos")); - - out.println("<div id=\"wrapper\">"); - out.println("<div id=\"spinner\" style=\"text-align: center\">Loading...</div>"); - out.println("<ul id=\"gallery\" style=\"display: none\">"); - - PreparedStatement stmt = null; - ResultSet rs = null; - try { - stmt = sql.prepareStatement("SELECT messages.message_id,messages.attach,users.nick FROM messages INNER JOIN users ON messages.user_id=users.id WHERE messages.attach IS NOT NULL ORDER BY message_id DESC LIMIT 20"); - rs = stmt.executeQuery(); - rs.beforeFirst(); - while (rs.next()) { - if (rs.getString(2).equals("jpg")) { - out.println("<li class=\"galleryitem\"><a href=\"/" + rs.getString(3) + "/" + rs.getInt(1) + "\" title=\"@" + rs.getString(3) + "\"><img src=\"http://i.juick.com/photos-512/" + rs.getInt(1) + ".jpg\" alt=\"\"></a></li>"); - } else { - out.println("<li class=\"galleryitem\"><a href=\"/" + rs.getString(3) + "/" + rs.getInt(1) + "\" title=\"@" + rs.getString(3) + "\"><img src=\"http://i.juick.com/thumbs/" + rs.getInt(1) + ".jpg\" alt=\"\"></a></li>"); - } - } - } catch (SQLException e) { - System.err.println(e); - } finally { - Utils.finishSQL(rs, stmt); - } - - out.println("</ul>"); - out.println("</div>"); - out.println("<script type=\"text/javascript\">"); - out.println("$('#gallery').onImagesLoad({selectorCallback: galleryResize});"); - out.println("$('.galleryitem a').click(function() {"); - out.println(" $.fancybox({"); - out.println(" 'href': $(this).children('img').attr('src'),"); - out.println(" 'link': this.href,"); - out.println(" 'title': this.title,"); - out.println(" 'orig': this,"); - out.println(" 'transitionIn': 'elastic',"); - out.println(" 'transitionOut': 'none',"); - out.println(" 'easingIn': 'easeOutBack',"); - out.println(" 'easingOut': 'easeInBack'"); - out.println(" });"); - out.println(" return false;"); - out.println("});"); - out.println("</script>"); - - PageTemplates.pageFooter(request, out, locale, visitor); - } finally { - out.close(); - } - } -} diff --git a/src/java/com/juick/http/www/Tags.java b/src/java/com/juick/http/www/Tags.java new file mode 100644 index 000000000..07cff5821 --- /dev/null +++ b/src/java/com/juick/http/www/Tags.java @@ -0,0 +1,87 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.juick.http.www; + +import java.io.IOException; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.Locale; +import java.util.ResourceBundle; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + * @author ugnich + */ +public class Tags { + + protected void doGetTags(Connection sql, HttpServletRequest request, HttpServletResponse response, com.juick.User visitor) throws ServletException, IOException { + Locale locale = request.getLocale(); + ResourceBundle rbnm = ResourceBundle.getBundle("Blogs", locale); + + response.setContentType("text/html; charset=UTF-8"); + PrintWriter out = response.getWriter(); + try { + PageTemplates.pageHead(out, rbnm.getString("Tags"), null); + PageTemplates.pageNavigation(out, locale, visitor); + + int cnt = 30; + com.juick.Tag tags[] = new com.juick.Tag[cnt]; + int maxUsageCnt = 0; + PreparedStatement stmt = null; + ResultSet rs = null; + try { + stmt = sql.prepareStatement("SELECT tags.name AS name,COUNT(DISTINCT messages.user_id) AS cnt FROM (messages INNER JOIN messages_tags ON (messages.ts>TIMESTAMPADD(DAY,-3,NOW()) AND messages.message_id=messages_tags.message_id)) INNER JOIN tags ON messages_tags.tag_id=tags.tag_id GROUP BY tags.tag_id ORDER BY cnt DESC LIMIT ?"); + stmt.setInt(1, cnt); + rs = stmt.executeQuery(); + rs.beforeFirst(); + cnt = 0; + while (rs.next()) { + tags[cnt] = new com.juick.Tag(); + tags[cnt].Name = rs.getString(1); + tags[cnt].UsageCnt = rs.getInt(2); + if (tags[cnt].UsageCnt > maxUsageCnt) { + maxUsageCnt = tags[cnt].UsageCnt; + } + cnt++; + } + } catch (SQLException e) { + System.err.println(e); + } finally { + Utils.finishSQL(rs, stmt); + } + + Arrays.sort(tags, 0, cnt); + + for (int i = 0; i < cnt; i++) { + String tag = Utils.encodeHTML(tags[i].Name); + try { + tag = "<a href=\"/?tag=" + URLEncoder.encode(tags[i].Name, "UTF-8") + "\">" + tag + "</a>"; + } catch (UnsupportedEncodingException e) { + } + + if (tags[i].UsageCnt > maxUsageCnt / 3 * 2) { + out.print("<big>" + tag + "</big> "); + } else if (tags[i].UsageCnt > maxUsageCnt / 3) { + out.print("<small>" + tag + "</small> "); + } else { + out.print(tag + " "); + } + } + + PageTemplates.pageFooter(request, out, locale, visitor); + } finally { + out.close(); + } + } +} diff --git a/src/java/com/juick/http/www/User.java b/src/java/com/juick/http/www/User.java index 73dd5827d..0ddac42d7 100644 --- a/src/java/com/juick/http/www/User.java +++ b/src/java/com/juick/http/www/User.java @@ -100,6 +100,7 @@ public class User { PageTemplates.pageNavigation(out, locale, visitor); PageTemplates.pageUserTitle(out, sql, locale, user, visitor); + out.println("<div id=\"topwrapper\">"); out.println("<div id=\"wrapper\">"); out.println("<div id=\"content\">"); out.println("<ul>"); @@ -122,6 +123,7 @@ public class User { pageUserColumn(out, sql, user, visitor, locale); out.println("</div>"); + out.println("</div>"); // topwrapper PageTemplates.pageFooter(request, out, locale, visitor); } finally { @@ -146,11 +148,7 @@ public class User { out.println("<div id=\"wrapper\">"); out.println("<div id=\"content\">"); - - out.print("<p>"); - pageUserTags(out, sql, user, visitor, 0); - out.print("</p>"); - + out.println("<p>" + pageUserTags(sql, user, visitor, 0) + "</p>"); out.println("</div>"); pageUserColumn(out, sql, user, visitor, locale); out.println("</div>"); @@ -219,7 +217,7 @@ public class User { try { PageTemplates.pageHead(out, "@" + user.UName + ": " + rb.getString("(Stats) I read"), null); PageTemplates.pageNavigation(out, locale, visitor); - PageTemplates.pageUserTitle(out, sql, locale, user, visitor); + //PageTemplates.pageUserTitle(out, sql, locale, user, visitor); out.println("<div id=\"wrapper\">"); out.println("<div id=\"content\">"); @@ -260,21 +258,21 @@ public class User { public static void pageUserColumn(PrintWriter out, Connection sql, com.juick.User user, com.juick.User visitor, Locale locale) { ResourceBundle rb = ResourceBundle.getBundle("User", locale); - out.println("<div id=\"column\">"); - out.println("<h2>" + rb.getString("(Menu) Messages") + "</h2>"); + out.println("<div id=\"column\" class=\"stickya\">"); out.println("<ul>"); - out.println(" <li><a href=\"?\">" + rb.getString("(Menu) Blog") + "</a></li>"); - out.println(" <li><a href=\"?show=recomm\">" + rb.getString("(Menu) Recommendations") + "</a></li>"); - out.println(" <li><a href=\"?show=photos\">" + rb.getString("(Menu) Photos") + "</a></li>"); + out.println(" <li><a href=\"./\">" + rb.getString("(Menu) Blog") + "</a></li>"); + out.println(" <li><a href=\"./?show=recomm\">" + rb.getString("(Menu) Recommendations") + "</a></li>"); + out.println(" <li><a href=\"./?show=photos\">" + rb.getString("(Menu) Photos") + "</a></li>"); out.println("</ul>"); - out.println("<h2>" + rb.getString("(Menu) Tags") + " <a href=\"./tags\">" + rb.getString("all") + "</a></h2>"); - pageUserTags(out, sql, user, visitor, 15); - out.println("<h2>" + rb.getString("(Menu) Search") + "</h2>"); - out.println("<form action=\"./\" id=\"search\"><p><input type=\"text\" name=\"search\" class=\"inp\"/></p></form>"); + out.println("<hr/>"); + out.println("<p>" + pageUserTags(sql, user, visitor, 15) + "</p>"); + out.println("<form action=\"./\" id=\"searchuser\">"); + out.println("<p><input type=\"text\" name=\"search\" class=\"inp\" placeholder=\"" + rb.getString("Search") + "\"/></p>"); + out.println("</form>"); out.println("</div>"); } - public static void pageUserTags(PrintWriter out, Connection sql, com.juick.User user, com.juick.User visitor, int cnt) { + public static String pageUserTags(Connection sql, com.juick.User user, com.juick.User visitor, int cnt) { com.juick.Tag tags[] = null; int maxUsageCnt = 0; @@ -313,6 +311,7 @@ public class User { Arrays.sort(tags, 0, cnt); } + String ret = ""; for (int i = 0; i < cnt; i++) { String tag = Utils.encodeHTML(tags[i].Name); try { @@ -321,12 +320,13 @@ public class User { } if (tags[i].UsageCnt > maxUsageCnt / 3 * 2) { - out.print("<big>" + tag + "</big> "); + ret += "<big>" + tag + "</big> "; } else if (tags[i].UsageCnt > maxUsageCnt / 3) { - out.print("<small>" + tag + "</small> "); + ret += "<small>" + tag + "</small> "; } else { - out.print(tag + " "); + ret += tag + " "; } } + return ret; } } diff --git a/src/java/com/juick/http/www/UserThread.java b/src/java/com/juick/http/www/UserThread.java index e64b44374..1680ca8e9 100644 --- a/src/java/com/juick/http/www/UserThread.java +++ b/src/java/com/juick/http/www/UserThread.java @@ -71,7 +71,7 @@ public class UserThread { PageTemplates.pageNavigation(out, locale, visitor); PageTemplates.pageUserTitle(out, sql, locale, user, visitor); - + out.println("<div id=\"topwrapper\">"); out.println("<div id=\"wrapper\">"); out.println("<div id=\"content\" style=\"margin-left: 0; width: 100%\">"); @@ -80,8 +80,8 @@ public class UserThread { printReplies(out, sql, MID, locale, listview); out.println("</div>"); - out.println("</div>"); + out.println("</div>"); // topwrapper out.println("<script type=\"text/javascript\">"); out.println("$(document).ready(unfoldReply);"); @@ -143,7 +143,7 @@ public class UserThread { if (rs.getString(11) != null) { if (rs.getString(11).equals("jpg")) { - out.println(" <div class=\"msg-media\"><a href=\"http://i.juick.com/photos-1024/" + mid + ".jpg\"><img src=\"http://i.juick.com/photos-512/" + mid + ".jpg\" alt=\"\"/></a></div>"); + out.println(" <div class=\"msg-media\"><a href=\"http://i.juick.com/p/" + mid + ".jpg\"><img src=\"http://i.juick.com/photos-512/" + mid + ".jpg\" alt=\"\"/></a></div>"); } else { out.println(" <div class=\"msg-media\"><div id=\"video-" + mid + "\"><b>Attachment: <a href=\"http://i.juick.com/video/" + mid + ".mp4\">Video</a></b></div></div>"); out.println(" <script type=\"text/javascript\">"); @@ -153,17 +153,13 @@ public class UserThread { } out.println(" <div class=\"msg-avatar\"><a href=\"/" + uname + "/\"><img src=\"http://i.juick.com/a/" + uid + ".png\" alt=\"" + uname + "\"/></a></div>"); - out.println(" <div class=\"msg-ts\"><a href=\"/" + uname + "/" + mid + "\">" + PageTemplates.formatDate(rs.getInt(8), rs.getString(9), locale) + "</a><div class=\"msg-menu\"><a href=\"#\" onclick=\"$('#msg-menu-" + mid + "').toggle('blind'); return false\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a><ul id=\"msg-menu-" + mid + "\">"); - out.println(" <li><a href=\"/post?body=%21%20%23" + mid + "\">" + rb.getString("Recommend message") + "</a></li>"); - out.println(" <li><a href=\"/post?body=%40" + uname + "%20\">" + rb.getString("Send private message") + "</a></li>"); - out.println(" <li><a href=\"/post?body=BL%20%40" + uname + "\">" + rb.getString("Block user") + "</a></li>"); - out.println(" </ul></div></div>"); + out.println(" <div class=\"msg-ts\"><a href=\"/" + uname + "/" + mid + "\" title=\"" + rs.getString(9) + "\">" + PageTemplates.formatDate(rs.getInt(8), rs.getString(9), locale) + "</a></div>"); out.println(" <div class=\"msg-header\"><a href=\"/" + uname + "/\">@" + uname + "</a>:" + tags + "</div>"); out.println(" <div class=\"msg-txt\">" + txt + "</div>"); if (cancomment) { out.println(" <form action=\"/post\" method=\"POST\" enctype=\"multipart/form-data\"><input type=\"hidden\" name=\"mid\" value=\"" + mid + "\"/>"); - out.println(" <div class=\"msg-comment\"><textarea name=\"body\" rows=\"1\" class=\"reply\" placeholder=\"Add a comment...\" onkeypress=\"postformListener(this.form,event)\"></textarea><input type=\"submit\" value=\"OK\"/></div>"); + out.println(" <div class=\"msg-comment\"><textarea name=\"body\" rows=\"1\" class=\"reply\" placeholder=\"Add a comment...\" onkeypress=\"postformListener(this.form,event)\"></textarea></div>"); out.println(" </form>"); } @@ -255,6 +251,10 @@ public class UserThread { public static void printTree(PrintWriter out, ArrayList<com.juick.Message> replies, int ReplyTo, int margin, Locale locale) { ResourceBundle rb = ResourceBundle.getBundle("Global", locale); + if (margin > 420) { + margin = 420; + } + for (int i = 0; i < replies.size(); i++) { com.juick.Message msg = replies.get(i); if (msg.ReplyTo == ReplyTo) { @@ -278,10 +278,7 @@ public class UserThread { } } out.println(" <div class=\"msg-avatar\"><a href=\"/" + msg.User.UName + "/\"><img src=\"http://i.juick.com/a/" + msg.User.UID + ".png\" alt=\"" + msg.User.UName + "\"/></a></div>"); - out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.MID + "#" + msg.RID + "\">" + PageTemplates.formatDate(msg.MinutesAgo, msg.TimestampString, locale) + "</a><div class=\"msg-menu\"><a href=\"#\" onclick=\"$('#msg-menu-" + msg.MID + "-" + msg.RID + "').toggle('blind'); return false\"><img src=\"http://static.juick.com/message-menu-icon.png\"/></a><ul id=\"msg-menu-" + msg.MID + "-" + msg.RID + "\">"); - out.println(" <li><a href=\"/post?body=%40" + msg.User.UName + "%20\">" + rb.getString("Send private message") + "</a></li>"); - out.println(" <li><a href=\"/post?body=BL%20%40" + msg.User.UName + "\">" + rb.getString("Block user") + "</a></li>"); - out.println(" </ul></div></div>"); + out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.MID + "#" + msg.RID + "\" title=\"" + msg.TimestampString + "\">" + PageTemplates.formatDate(msg.MinutesAgo, msg.TimestampString, locale) + "</a></div>"); out.println(" <div class=\"msg-header\"><a href=\"/" + msg.User.UName + "/\">@" + msg.User.UName + "</a>:</div>"); out.println(" <div class=\"msg-txt\">" + msg.Text + "</div>"); out.println(" <div class=\"msg-links\"><a href=\"#\" onclick=\"return showCommentForm(" + msg.MID + "," + msg.RID + ")\">" + rb.getString("Comment") + "</a></div>"); @@ -317,10 +314,7 @@ public class UserThread { } } out.println(" <div class=\"msg-avatar\"><a href=\"/" + msg.User.UName + "/\"><img src=\"http://i.juick.com/a/" + msg.User.UID + ".png\"></a></div>"); - out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.MID + "#" + msg.RID + "\">" + PageTemplates.formatDate(msg.MinutesAgo, msg.TimestampString, locale) + "</a><div class=\"msg-menu\"><a href=\"#\" onclick=\"$('#msg-menu-" + msg.MID + "-" + msg.RID + "').toggle('blind'); return false\"><img src=\"http://static.juick.com/message-menu-icon.png\"></a><ul id=\"msg-menu-" + msg.MID + "\">"); - out.println(" <li><a href=\"/post?body=%40" + msg.User.UName + "%20\">" + rb.getString("Send private message") + "</a></li>"); - out.println(" <li><a href=\"/post?body=BL%20%40" + msg.User.UName + "\">" + rb.getString("Block user") + "</a></li>"); - out.println(" </ul></div></div>"); + out.println(" <div class=\"msg-ts\"><a href=\"/" + msg.MID + "#" + msg.RID + "\" title=\"" + msg.TimestampString + "\">" + PageTemplates.formatDate(msg.MinutesAgo, msg.TimestampString, locale) + "</a></div>"); out.println(" <div class=\"msg-header\"><a href=\"/" + msg.User.UName + "/\">@" + msg.User.UName + "</a>:</div>"); out.println(" <div class=\"msg-txt\">" + msg.Text + "</div>"); out.print(" <div class=\"msg-links\">/" + msg.RID); |