diff src/nabble/view/web/user/UserPendingNodes.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children 18cf4872fd7f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nabble/view/web/user/UserPendingNodes.java	Thu Mar 21 19:15:52 2019 -0600
@@ -0,0 +1,136 @@
+
+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, response);
+
+		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);
+	}
+}
+