Mercurial Hosting > nabble
view src/nabble/view/web/user/UserPendingNodes.java @ 19:18cf4872fd7f
remove anonymous posting
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 29 May 2020 22:58:25 -0600 |
parents | 7ecd1a4ef557 |
children |
line wrap: on
line source
package nabble.view.web.user; import nabble.model.Node; import nabble.model.User; import nabble.view.lib.Jtp; import nabble.view.lib.Shared; import nabble.view.lib.HtmlViewUtils; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; public final class UserPendingNodes extends HttpServlet { private static final int MAX_ROWS = 20; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); User user = Jtp.getUser(request); if ( user == null ) { Jtp.login("You must register/login to edit your profile.", request, response); return; } String iRecS = request.getParameter("i"); int iRec = iRecS == null? 0 : Integer.valueOf(iRecS); List<Node> nodeArray = user.getPendingPosts().get(0, 1000); SearchResults searchResults = cutResults(nodeArray, iRec); String title = "Pending Posts of "; title += user.getName(); String url = "/user/UserPendingNodes.jtp"; HtmlViewUtils.GenericPagingPath pagingPath = new HtmlViewUtils.GenericPagingPath(url); out.print( "\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n<html>\r\n <head>\r\n " ); Shared.title(request, response, title); out.print( "\r\n </head>\r\n <body>\r\n " ); Shared.minHeaderGlobal(request, response); out.print( "\r\n <table>\r\n <tr valign=\"top\">\r\n <td><img src=\"" ); out.print( (Shared.getAvatarImageURL(user, false)) ); out.print( "\" class=\"avatar light-border-color\" width=100 height=100/></td>\r\n <td style=\"width:100%\">\r\n <div class=\"second-font\" style=\"font-size:170%\">\r\n " ); out.print( (user.getNameHtml()) ); out.print( "\r\n </div>\r\n <div style=\"margin-top:.5em\">\r\n <a href=\"/template/NamlServlet.jtp?macro=user_profile\">Account Settings</a>\r\n </div>\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n <table style=\"border-collapse:collapse;width:100%;margin-top:.5em\">\r\n <tr>\r\n <td class=\"title-row light-border-color\" colspan=3>\r\n <div style=\"float:left;padding-top:.2em\">\r\n <b>Pending Messages</b>\r\n </div>\r\n " ); HtmlViewUtils.genericPaging(request, response, searchResults.getCount(), iRec, MAX_ROWS, pagingPath, ".4em 0 0 0"); out.print( "\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n <style type=\"text/css\">\r\n table.nodes {\r\n width:100%;\r\n border-width: 1px;\r\n border-style: solid;\r\n border-collapse:collapse;\r\n margin-top:.5em;\r\n }\r\n\r\n table.nodes td {\r\n padding:.1em;\r\n }\r\n\r\n table.nodes td.header {\r\n padding: .2em .3em;\r\n border-bottom-width: 1px;\r\n border-bottom-style: solid;\r\n }\r\n </style>\r\n\r\n " ); String[] columns = new String[] { "Message", "Pending Since", "Forum" }; out.print( "\r\n\r\n<table class=\"nodes medium-border-color\">\r\n <tr class=\"shaded-bg-color\" style=\"font-weight: bold\">\r\n <td class=\"header\" style=\"width:16px\"></td>\r\n <td class=\"header\">" ); out.print( (columns[0]) ); out.print( "</td>\r\n <td class=\"header\">" ); out.print( (columns[1]) ); out.print( "</td>\r\n <td class=\"header\">" ); out.print( (columns[2]) ); out.print( "</td>\r\n </tr>\r\n " ); Node[] nodes = searchResults.getNodes(); int i = 0; if (nodes.length > 0) { for (Node node : nodes) { out.print( "\r\n<tr " ); out.print( (i++%2==1?"class=\"light-bg-color\"":"") ); out.print( ">\r\n <td align=\"center\">\r\n " ); Shared.showPending(out, node); out.print( "\r\n </td>\r\n <td style=\"padding:.3em .4em;\">\r\n <a href=\"" ); out.print( (Jtp.url(node)) ); out.print( "\">" ); out.print( (node.getSubjectHtml()) ); out.print( "</a>\r\n </td>\r\n <td style=\"padding:.2em\">\r\n " ); out.print( (node.getMailToList() == null? "" : Jtp.formatDateLong(node.getMailToList().getWhenSent())) ); out.print( "\r\n </td>\r\n <td style=\"padding:.2em\">\r\n " ); out.print( (Jtp.link(node.getApp())) ); out.print( "\r\n </td>\r\n</tr>\r\n" ); } } else { out.print( "\r\n<tr><td colspan=4 style=\"padding:.3em\">None</td></tr>\r\n" ); } out.print( "\r\n</table>\r\n" ); HtmlViewUtils.genericPaging(request, response, searchResults.getCount(), iRec, MAX_ROWS, pagingPath, ".5em 0 0 0"); out.print( "\r\n\r\n" ); Shared.footer(request,response); out.print( "\r\n" ); Shared.analytics(request,response); out.print( "\r\n</body>\r\n</html>\r\n" ); } private class SearchResults { private int count; private Node[] nodes; public SearchResults() {} public SearchResults(int count, Node[] nodes) { this.count = count; this.nodes = nodes; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public Node[] getNodes() { return nodes; } public void setNodes(Node[] nodes) { this.nodes = nodes; } } private SearchResults cutResults(List<Node> array, int iRec) { int i = iRec; int count = 0; List<Node> nodes = new ArrayList<Node>(); while (count < MAX_ROWS) { if (array.size()-1 < i) break; nodes.add(array.get(i++)); count++; } Node[] nodesArray = nodes.toArray(new Node[0]); return new SearchResults(array.size(), nodesArray); } }