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

电子政务应用

开发平台:

Java

  1. <%
  2. /**
  3.  * $RCSfile: threadContent.jsp,v $
  4.  * $Revision: 1.3 $
  5.  * $Date: 2000/12/18 02:06:21 $
  6.  */
  7. %>
  8. <%@ page import="java.util.*,
  9.                  java.text.SimpleDateFormat,
  10.                  com.coolservlets.forum.*,
  11.                  com.coolservlets.forum.util.*,
  12.  com.coolservlets.forum.util.admin.*"
  13. errorPage="error.jsp"
  14. %>
  15. <jsp:useBean id="adminBean" scope="session"
  16.  class="com.coolservlets.forum.util.admin.AdminBean"/>
  17. <%!
  18. /**
  19.  * Print a child message
  20.  */
  21. private String printChildMessage( Forum forum, ForumThread thread, ForumMessage message, int indentation )
  22. {
  23. StringBuffer buf = new StringBuffer();
  24. try {
  25. if( message.getID() == thread.getRootMessage().getID() ) {
  26. return "";
  27. }
  28. String subject = message.getSubject();
  29. boolean msgIsAnonymous = message.isAnonymous();
  30. User author = message.getUser();
  31. String authorName = author.getName();
  32. String authorEmail = author.getEmail();
  33. int forumID = forum.getID();
  34. int threadID = thread.getID();
  35. int messageID = message.getID();
  36. Date creationDate = message.getCreationDate();
  37. String msgBody = message.getBody();
  38. buf.append("<tr>");
  39. buf.append("<form>");
  40. buf.append("<td width="1%" class="forumListCell" align="center">");
  41. buf.append("<input type="radio"");
  42. buf.append("onclick="if(confirm('您确定要删除此帖子和回复它的所有帖子吗?')){");
  43. buf.append("location.href='threadContent.jsp?message=").append(messageID).append("&doDeleteMessage=true");
  44. buf.append("&forum=").append(forumID).append("&thread=").append(threadID).append("';}">");
  45. buf.append("</td>");
  46. buf.append("<td class="forumListCell" width="").append(99-indentation).append("%">");
  47. buf.append("<table cellpadding=2 cellspacing=0 border=0 width="100%">");
  48. buf.append("<tr bgcolor="#dddddd">");
  49. int i = indentation;
  50. while(i-- >= 0 ) {
  51. buf.append("<td bgcolor="#ffffff">&nbsp;</td>");
  52. }
  53. buf.append("<td><b>").append( message.getSubject() ).append("</b></td>");
  54. buf.append("</tr>");
  55. buf.append("<tr bgcolor="#eeeeee">");
  56. String rootMsgUsername = "<i>匿名者</i>";
  57. User rootMsgUser = message.getUser();
  58. if( !message.getUser().isAnonymous() ) {
  59. rootMsgUsername = rootMsgUser.getUsername();
  60. }
  61. i = indentation;
  62. while(i-- >= 0 ) {
  63. buf.append("<td bgcolor="#ffffff">&nbsp;</td>");
  64. }
  65. buf.append("<td><font size="-2"><b>作者: ").append( rootMsgUsername ).append(",日期: ").append( message.getCreationDate() ).append("</b></font></td>");
  66. buf.append("</tr>");
  67. buf.append("<tr>");
  68. i = indentation;
  69. while(i-- >= 0 ) {
  70. buf.append("<td>&nbsp;</td>");
  71. }
  72. buf.append("<td>").append( message.getBody() ).append("</td>");
  73. buf.append("</tr>");
  74. buf.append("</table></td></form></tr>");
  75. } catch( Exception ignored ) {}
  76. return buf.toString();
  77. }
  78. /**
  79.  * Recursive method to print all the children of a message.
  80.  */
  81. private String printChildren( TreeWalker walker, Forum forum, ForumThread thread, ForumMessage message, int indentation )
  82. {
  83. StringBuffer buf = new StringBuffer();
  84. buf.append( printChildMessage( forum, thread, message, indentation ) );
  85. // recursive call
  86.         int numChildren = walker.getChildCount(message);
  87.         if( numChildren > 0 ) {
  88.             for( int i=0; i<numChildren; i++ ) {
  89.                 buf.append(
  90. printChildren( walker, forum, thread, walker.getChild(message,i), (indentation+1) )
  91. );
  92.             }
  93.         }
  94. return buf.toString();
  95.     }
  96. %>
  97.  
  98.  
  99. <%! //////////////////////////
  100. // global vars
  101. // date formatter for message dates
  102. private final SimpleDateFormat dateFormatter
  103. = new SimpleDateFormat( "yyyy.MM.dd h:mm a" );
  104. private final static int RANGE = 15;
  105. private final static int START = 0;
  106. %>
  107. <% ////////////////////////////////
  108. // Jive authorization check
  109. // check the bean for the existence of an authorization token.
  110. // Its existence proves the user is valid. If it's not found, redirect
  111. // to the login page
  112. Authorization authToken = adminBean.getAuthToken();
  113. if( authToken == null ) {
  114. response.sendRedirect( "/mainctrl/bbs/admin" );
  115. return;
  116. }
  117. %>
  118.  
  119. <% ////////////////////
  120. // Security check
  121. // make sure the user is authorized to administer users:
  122. ForumFactory forumFactory = ForumFactory.getInstance(authToken);
  123. ForumPermissions permissions = forumFactory.getPermissions(authToken);
  124. boolean isSystemAdmin = permissions.get(ForumPermissions.SYSTEM_ADMIN);
  125. boolean isUserAdmin   = permissions.get(ForumPermissions.FORUM_ADMIN);
  126. // redirect to error page if we're not a forum admin or a system admin
  127. if( !isUserAdmin && !isSystemAdmin ) {
  128. request.setAttribute("message","您没有权限管理论坛。");
  129. response.sendRedirect("error.jsp");
  130. return;
  131. }
  132. %>
  133.  
  134. <% ////////////////////
  135. // get parameters
  136. int forumID   = ParamUtils.getIntParameter(request,"forum",-1);
  137. boolean doDeleteThread = ParamUtils.getBooleanParameter(request,"doDeleteThread");
  138. boolean doDeleteMessage = ParamUtils.getBooleanParameter(request,"doDeleteMessage");
  139. int threadID = ParamUtils.getIntParameter(request,"thread",-1);
  140. int messageID = ParamUtils.getIntParameter(request,"message",-1);
  141. int start = ParamUtils.getIntParameter(request,"start",START);
  142. int range = ParamUtils.getIntParameter(request,"range",RANGE);
  143. %>
  144.  
  145. <% //////////////////////////////////
  146. // global error variables
  147. String errorMessage = "";
  148. boolean noForumSpecified = (forumID < 0);
  149. boolean noThreadSpecified = (threadID < 0);
  150. %>
  151. <% ////////////////////
  152. // make a profile manager
  153. ProfileManager manager = forumFactory.getProfileManager();
  154. %>
  155. <% //////////////////////////
  156. // delete an entire thread
  157. if( doDeleteThread ) {
  158. Forum tempForum = forumFactory.getForum(forumID);
  159. ForumThread tempThread = tempForum.getThread(threadID);
  160. tempForum.deleteThread(tempThread);
  161. response.sendRedirect("forumContent.jsp?forum=" + forumID);
  162. return;
  163. }
  164. else if( doDeleteMessage ) {
  165. Forum tempForum = forumFactory.getForum(forumID);
  166. ForumThread tempThread = tempForum.getThread(threadID);
  167. ForumMessage tempMessage = tempThread.getMessage(messageID);
  168. tempThread.deleteMessage(tempMessage);
  169. response.sendRedirect("threadContent.jsp?forum=" + forumID + "&thread=" + threadID);
  170. return;
  171. }
  172. %>
  173. <html>
  174. <head>
  175. <title></title>
  176. <link rel="stylesheet" href="style/global.css">
  177. </head>
  178. <body background="images/shadowBack.gif" bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">
  179. <% ///////////////////////
  180. // pageTitleInfo variable (used by include/pageTitle.jsp)
  181. String[] pageTitleInfo = { "论坛 : 管理论题内容" };
  182. %>
  183. <% ///////////////////
  184. // pageTitle include
  185. %><%@ include file="include/pageTitle.jsp" %>
  186. <p>
  187. <% //////////////////////
  188. // show the name of the forum we're working with (if one was selected)
  189. Forum currentForum = null;
  190. if( !noForumSpecified ) {
  191. try {
  192. currentForum = forumFactory.getForum(forumID);
  193. %>
  194. 您正在管理论坛: <b><%= currentForum.getName() %></b>,
  195. 论题: <strong><%= currentForum.getThread(threadID).getName() %></strong>
  196. <% }
  197. catch( ForumNotFoundException fnfe ) {
  198. %>
  199. <span class="errorText">没有发现此论坛。</span>
  200. <% }
  201. catch( UnauthorizedException ue ) {
  202. %>
  203. <span class="errorText">您没有权限管理此论坛。</span>
  204. <% }
  205. }
  206. %>
  207. <p>
  208. <form action="forumContent.jsp">
  209. <input type="hidden" name="forum" value="<%= forumID %>">
  210. <input type="submit" value="取消 / 返回">
  211. </form>
  212. <p>
  213. <%-- thread table --%>
  214. <%
  215. ForumThread thread = currentForum.getThread(threadID);
  216. TreeWalker walker = thread.treeWalker();
  217. ForumMessage rootMessage = walker.getRoot();
  218. %>
  219. <table bgcolor="#cccccc" cellpadding=0 cellspacing=0 border=0 width="100%">
  220. <td>
  221. <table bgcolor="#cccccc" cellpadding=3 cellspacing=1 border=0 width="100%">
  222. <tr bgcolor="#dddddd">
  223. <td class="forumListHeader" width="1%" nowrap bgcolor="#cccccc"><b>删除?</b></td>
  224. <td class="forumListHeader" width="99%">&nbsp;</td>
  225. </tr>
  226. <tr>
  227. <form>
  228. <td width="1%" class="forumListCell" align="center">
  229. <input type="radio"
  230.  onclick="if(confirm('你确定要删除此帖子和它所有的回帖吗?')){location.href='threadContent.jsp?forum=<%= forumID %>&thread=<%= threadID %>&doDeleteThread=true';}">
  231. <font size="-2">(删除论题)</font>
  232. </td>
  233. <td class="forumListCell" width="99%">
  234. <table cellpadding=2 cellspacing=0 border=0 width="100%">
  235. <tr bgcolor="#dddddd">
  236. <td><b><%= rootMessage.getSubject() %></b></td>
  237. </tr>
  238. <tr bgcolor="#eeeeee">
  239. <% String rootMsgUsername = "<i>Anonymous</i>";
  240. User rootMsgUser = rootMessage.getUser();
  241. if( !rootMessage.getUser().isAnonymous() ) {
  242. rootMsgUsername = rootMsgUser.getUsername();
  243. }
  244. %>
  245. <td><font size="-2"><b>作者:<%= rootMsgUsername %>,日期:<%= rootMessage.getCreationDate() %></b></font></td>
  246. </tr>
  247. <tr>
  248. <td><%= rootMessage.getBody() %></td>
  249. </tr>
  250. </table>
  251. </td>
  252. </form>
  253. </tr>
  254. <%= printChildren( walker, currentForum, thread, rootMessage, 0 ) %>
  255. </table></td></table>
  256. </body>
  257. </html>