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);
	}
}