viewForum.jsp
上传用户:guhaomin
上传日期:2007-06-10
资源大小:23203k
文件大小:9k
源码类别:

电子政务应用

开发平台:

Java

  1. <%
  2. /**
  3.  * $RCSfile: viewForum.jsp,v $
  4.  * $Revision: 1.4 $
  5.  * $Date: 2000/12/27 22:39:45 $
  6.  */
  7. %>
  8. <%@ page 
  9. import="java.util.*,
  10.         java.text.*,
  11.         java.net.*,
  12. com.coolservlets.forum.*,
  13. com.coolservlets.forum.util.*"
  14. errorPage="/mainctrl/bbs/error"
  15. %>
  16. <%! // Global variables
  17. //final SimpleDateFormat formatter = new SimpleDateFormat( "EE, MMM d" );
  18. final SimpleDateFormat formatter = new SimpleDateFormat( "yyyy.MM.dd h:mm a" );
  19. final SimpleDateFormat timeFormatter = new SimpleDateFormat( "h:mm a" );
  20. final SimpleDateFormat dayFormatter = new SimpleDateFormat( "yyyy.MM.dd" );
  21. final long ONE_DAY = 1000L * 60 * 60 * 24;
  22. final long ONE_WEEK = ONE_DAY * 7;
  23. final int DEFAULT_MSG_RANGE = 15;
  24. // Method to print one line on the thread table
  25. private String displayMessage(int forumID, ForumThread thread, ForumMessage message, String forumParams, long now, long lastVisited) {
  26. StringBuffer buf = new StringBuffer();
  27. if( message != null ) {
  28. Date messageDate = thread.getModifiedDate();
  29. long messageDateMS = messageDate.getTime(); 
  30. String subject = message.getSubject();
  31. int messageID = message.getID();
  32. String username = null;
  33. if( !message.isAnonymous() ) {
  34. User user = message.getUser();
  35. username = user.getName();
  36. if (username == null)
  37.     username = user.getUsername();
  38. }
  39. if (username == null)
  40.     username = "匿名者";
  41. int threadID = thread.getID();
  42. int numReplies = thread.getMessageCount()-1;
  43. if( subject == null || subject.equals("") ) {
  44. subject = "[无主题]";
  45. }
  46. String dateText = "";
  47. //if (messageDateMS >= (now - 2 * ONE_DAY)) {
  48. //dateText = SkinUtils.dateToText(messageDate);
  49. //}
  50. //else {
  51. dateText = formatter.format(messageDate);
  52. //}
  53. // new flag
  54. buf.append("<td width='1%'>");
  55. buf.append(messageDateMS > lastVisited ? "<img src="/skins/bay/images/new.gif">" : "&nbsp;");
  56. buf.append("</td>");
  57. // subject cell
  58. buf.append("<td width='96%'><font face='verdana' >");
  59. buf.append("<a href='/mainctrl/bbs/viewMessage?message=").append(messageID).append("&thread=");
  60. buf.append(threadID).append("&forum=").append(forumID);
  61. if (forumParams.length() > 0)
  62. buf.append("&forumparams=").append(forumParams);
  63. buf.append("'><font class=strong>").append(subject);
  64. buf.append("</font></a>");
  65. //buf.append("&nbsp;[").append(numReplies).append("]");
  66. buf.append("</font></td>").append("n");
  67. // replies cell
  68. buf.append("<td width='1%' align='center'>");
  69. buf.append("<font color='#666666' face='verdana' >");
  70. buf.append("[");
  71. buf.append("<a href='/mainctrl/bbs/viewMessage?message=").append(messageID).append("&thread=");
  72. buf.append(threadID).append("&forum=").append(forumID);
  73. if (forumParams.length() > 0)
  74. buf.append("&forumparams=").append(forumParams);
  75. buf.append("'><font class=strong>").append(numReplies);
  76. buf.append("</font></a>");
  77. buf.append("]");
  78. buf.append("</font></td>");
  79. // username cell
  80. buf.append("<td width='1%' nowrap align='center'>");
  81. buf.append("<font color='#666666' face='verdana' >");
  82. buf.append(username);
  83. buf.append("</font></td>");
  84. // date cell
  85. if( messageDateMS >= (now-ONE_WEEK) ) {
  86. buf.append("<td width='1%' nowrap class='dateTimeListToday' align='center'>");
  87. } else { 
  88. buf.append("<td width='1%' nowrap class='dateTimeList' align='center'>");
  89. }
  90. buf.append("<font face='verdana' >");
  91. buf.append( dateText );
  92. buf.append("</font></font>");
  93. buf.append("</td>").append("n");
  94. }
  95. return buf.toString();
  96.     }
  97. %>
  98. <% ////////////////////////
  99. // Authorization check
  100. // check for the existence of an authorization token
  101. Authorization authToken = SkinUtils.getUserAuthorization(request,response);
  102. // if the token was null, they're not authorized. Since this skin will
  103. // allow guests to view forums, we'll set a "guest" authentication
  104. // token
  105. if( authToken == null ) {
  106. authToken = AuthorizationFactory.getAnonymousAuthorization();
  107. }
  108. %>
  109. <% // get parameters
  110. int  forumID =  ParamUtils.getIntParameter(request, "forum", -1);
  111. int  range =  ParamUtils.getIntParameter(request, "range", DEFAULT_MSG_RANGE);
  112. int  start =  ParamUtils.getIntParameter(request, "start", 0);
  113. long lastVisited = SkinUtils.getLastVisited(request, response);
  114. String startParam =  (start == 0) ? "" : "&start=" + start;
  115. String rangeParam =  (range == DEFAULT_MSG_RANGE) ? "" : "&range=" + range;
  116. %>
  117. <% ForumThread thread = null;
  118. Forum forum = null;
  119. ForumFactory forumFactory = ForumFactory.getInstance(authToken);
  120. try {
  121. forum = forumFactory.getForum(forumID); // throws ForumNotFoundException
  122. }
  123. catch( UnauthorizedException ue ) {
  124. response.sendRedirect( "/mainctrl/bbs/error?message=" + URLEncoder.encode("您没有权限访问此论坛!") );
  125. return;
  126. }
  127. catch( ForumNotFoundException fnfe ) {
  128. response.sendRedirect( "/mainctrl/bbs/error?message=" + URLEncoder.encode("此论坛不存在!") );
  129. return;
  130. }
  131. String   forumName = forum.getName();
  132. Iterator forumIterator = forumFactory.forums();
  133. %>
  134. <% /////////////////
  135. // header include
  136. String title = forumName;
  137. %>
  138. <%@ include file="/skins/bay/header.jsp" %>
  139. <%-- begin breadcrumbs --%>
  140. <form>
  141. <table bgcolor="#666666" cellpadding=0 cellspacing=0 border=0 width="100%"> 
  142. <tr>
  143.     <td>
  144.         <font class="strongw"><a href="/mainctrl/home/index"><font color="#FFFFFF">首页</font></a>&gt;&gt;<a href="/mainctrl/communication/main"><font color="#FFFFFF">通信</font></a>&gt;&gt;<a href="/mainctrl/bbs/index"><font color="#FFFFFF">论坛主页</font></a>
  145.         &gt;&gt;</font>
  146.         <font class="strong">
  147.         <select name="forumName" size=1 class="text" onchange="location=this.options[this.selectedIndex].value;">
  148.         <option value="" selected><%= forumName %>
  149.         <option value="/mainctrl/bbs/viewForum?forum=<%= forumID %>">---------------------------
  150.         <% while (forumIterator.hasNext()) {
  151.                 Forum tmpForum = (Forum)forumIterator.next();
  152.                 String name = tmpForum.getName();
  153.                 String location = "/mainctrl/bbs/viewForum?forum=" + tmpForum.getID();
  154.         %>
  155.                 <option value="<%= location %>">&gt;&gt; <%= name %>
  156.         <% }
  157.         %>
  158.         </select>
  159.         </font>
  160.     </td>
  161. </tr>
  162. </table>
  163. </form>
  164. <%-- end breadcrubms --%>
  165. <div align="center"><a href="/mainctrl/bbs/post?forum=<%= forumID %>" class="normal"><img src="/skins/bay/images/newthread.gif" width=106 height=23 border="0"></a><br></div>
  166. <% Iterator it = forum.threads(start,range);
  167. if( !it.hasNext() ) {
  168. %>
  169. <ul>
  170. <font face="verdana" ><font class="strong">
  171. 此论坛中没有帖子。
  172. </font><br>
  173. </font>
  174. </ul>
  175. <% } else { %>
  176. <table bgcolor="#999999" cellpadding=0 cellspacing=0 border=0 width="100%">
  177. <td>
  178. <table bgcolor="#999999" cellpadding=3 cellspacing=1 border=0 width="100%">
  179. <tr bgcolor="#dddddd">
  180. <td width="1%"> &nbsp; </td>
  181. <td align="center" width="96%"><font class="strong">主题</font></td>
  182. <td align="center" width="1%" nowrap><font class="strong">回复</font></td>
  183. <td align="center" width="1%" nowrap><font class="strong">作者</font></td>
  184. <td align="center" width="1%" nowrap><img src="/skins/bay/images/arrow-up.gif" width=8 height=7 border=0 hspace=6><font class="strong">时间</font></td>
  185. </tr>
  186. <% long now = (new java.util.Date()).getTime();
  187. ForumMessage root =  null;
  188. int rowColor = 0;
  189. String bgcolor = "";
  190. String forumParams = URLEncoder.encode(startParam + rangeParam);
  191. int numThreadInForum = forum.getThreadCount();
  192. while(it.hasNext()) {
  193. rowColor++;
  194. thread = (ForumThread)it.next();
  195. root = thread.getRootMessage();
  196. if( rowColor%2 == 0 ) {
  197. bgcolor = "#ffffff";
  198. } else {
  199. bgcolor = "#eeeeee";
  200. }
  201. %>
  202. <tr bgcolor="<%= bgcolor %>">
  203. <%= displayMessage(forumID, thread, root, forumParams, now, lastVisited) %>
  204. </tr>
  205. <% } %>
  206. </table>
  207. </td>
  208. </table>
  209.     <table cellpadding=0 height=26 cellspacing=0 border=0 width="100%" bgcolor="#fafafa">
  210. <td width="1%" nowrap>
  211. <font face="verdana,arial">
  212. <% if( (start-range) >= 0 ) { %>
  213. <a href="/mainctrl/bbs/viewForum?forum=<%= forumID %><%= rangeParam %>&start=<%= (start-range) %>"><font class="strong">&lt;&lt;</font>前<%= range %>帖子</a>
  214. <% } %>
  215. </font>
  216. </td>
  217. <td width="98%" nowrap>
  218. </td>
  219. <td width="1%" nowrap>
  220. <font face="verdana,arial">
  221. <% if( (range+start) < numThreadInForum ) { %>
  222. <a href="/mainctrl/bbs/viewForum?forum=<%= forumID %><%= rangeParam %>&start=<%= (start+range) %>">后<%= (((numThreadInForum-range)<=range)?(numThreadInForum-range):range) %>帖子 <font class="strong">&gt;&gt;</font></a>
  223. <% } %>
  224. </font>
  225. </td>
  226. </table>
  227. <% } %>
  228. <%@ include file="/skins/bay/footer.jsp" %>