<% /** * $RCSfile: viewForum.jsp,v $ * $Revision: 137 $ * $Date: 2001-09-08 17:52:14 +0900 (Sat, 08 Sep 2001) $ */ %> <%@ page import="java.util.*, java.text.*, java.net.*, com.coolservlets.forum.*, com.coolservlets.forum.util.*" errorPage="error.jsp" %> <%! // Global variables //final SimpleDateFormat formatter = new SimpleDateFormat( "EE, MMM d" ); final SimpleDateFormat formatter = new SimpleDateFormat( "EE, MMM d yyyy 'at' H:mm" ); final SimpleDateFormat timeFormatter = new SimpleDateFormat( "h:mm a" ); final SimpleDateFormat dayFormatter = new SimpleDateFormat( "EEEE" ); final long ONE_DAY = 1000L * 60 * 60 * 24; final long ONE_WEEK = ONE_DAY * 7; final int DEFAULT_MSG_RANGE = 15; // Method to print one line on the thread table private String displayMessage(int forumID, ForumThread thread, ForumMessage message, String forumParams, long now, long lastVisited) { StringBuffer buf = new StringBuffer(); if( message != null ) { Date messageDate = thread.getModifiedDate(); long messageDateMS = messageDate.getTime(); String subject = message.getSubject(); int messageID = message.getID(); String username = null; if( !message.isAnonymous() ) { User user = message.getUser(); username = user.getName(); if (username == null) username = user.getUsername(); } if (username == null) username = "Anonymous"; int threadID = thread.getID(); int numReplies = thread.getMessageCount()-1; if( subject == null || subject.equals("") ) { subject = "[no subject]"; } String dateText = ""; if (messageDateMS >= (now - 2 * ONE_DAY)) { dateText = SkinUtils.dateToText(messageDate); } else { dateText = formatter.format(messageDate); } // new flag buf.append(""); buf.append(messageDateMS > lastVisited ? "" : " "); buf.append(""); // subject cell buf.append(""); buf.append("").append(subject); buf.append(""); //buf.append(" [").append(numReplies).append("]"); buf.append("").append("\n"); // replies cell buf.append(""); buf.append(""); buf.append("["); buf.append("").append(numReplies); buf.append(""); buf.append("]"); buf.append(""); // username cell buf.append(""); buf.append(""); buf.append(username); buf.append(""); // date cell if( messageDateMS >= (now-ONE_WEEK) ) { buf.append(""); } else { buf.append(""); } buf.append(""); buf.append( dateText ); buf.append(""); buf.append("").append("\n"); } return buf.toString(); } %> <% //////////////////////// // Authorization check // check for the existence of an authorization token Authorization authToken = SkinUtils.getUserAuthorization(request,response); // if the token was null, they're not authorized. Since this skin will // allow guests to view forums, we'll set a "guest" authentication // token if( authToken == null ) { authToken = AuthorizationFactory.getAnonymousAuthorization(); } %> <% // get parameters int forumID = ParamUtils.getIntParameter(request, "forum", -1); int range = ParamUtils.getIntParameter(request, "range", DEFAULT_MSG_RANGE); int start = ParamUtils.getIntParameter(request, "start", 0); long lastVisited = SkinUtils.getLastVisited(request, response); String startParam = (start == 0) ? "" : "&start=" + start; String rangeParam = (range == DEFAULT_MSG_RANGE) ? "" : "&range=" + range; %> <% ForumThread thread = null; Forum forum = null; ForumFactory forumFactory = ForumFactory.getInstance(authToken); try { forum = forumFactory.getForum(forumID); // throws ForumNotFoundException } catch( UnauthorizedException ue ) { response.sendRedirect( "error.jsp?message=" + URLEncoder.encode("You don't have access to view this forum.") ); return; } catch( ForumNotFoundException fnfe ) { response.sendRedirect( "error.jsp?message=" + URLEncoder.encode("Can't view a forum that doesn't exist.") ); return; } String forumName = forum.getName(); Iterator forumIterator = forumFactory.forums(); %> <% ///////////////// // header include String title = forumName; %> <%@ include file="header.jsp" %> <%-- begin breadcrumbs --%>
Home >
<%-- end breadcrubms --%> <% Iterator it = forum.threads(start,range); if( !it.hasNext() ) { %> <% } else { %>
<% long now = (new java.util.Date()).getTime(); ForumMessage root = null; int rowColor = 0; String bgcolor = ""; String forumParams = URLEncoder.encode(startParam + rangeParam); int numThreadInForum = forum.getThreadCount(); while(it.hasNext()) { rowColor++; thread = (ForumThread)it.next(); root = thread.getRootMessage(); if( rowColor%2 == 0 ) { bgcolor = "#ffffff"; } else { bgcolor = "#eeeeee"; } %> <%= displayMessage(forumID, thread, root, forumParams, now, lastVisited) %> <% } %>
  subject replies posted by date

<% if( (start-range) >= 0 ) { %> << previous <%= range %> messages <% } %>

<% if( (range+start) < numThreadInForum ) { %> next <%= (((numThreadInForum-range)<=range)?(numThreadInForum-range):range) %> messages >> <% } %>
<% } %> <%@ include file="footer.jsp" %>