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

电子政务应用

开发平台:

Java

  1. <%
  2. /**
  3.  * $RCSfile: post.jsp,v $
  4.  * $Revision: 1.4 $
  5.  * $Date: 2000/12/27 22:39:45 $
  6.  */
  7. %>
  8. <%@ page
  9. import="java.text.*,
  10.             java.util.*,
  11.             java.net.*,
  12.         com.coolservlets.forum.*,
  13. com.coolservlets.forum.util.*"
  14. errorPage="error.jsp"
  15. %>
  16. <%! final static String DEFAULT_REDIRECT_PAGE = "/mainctrl/bbs/viewMessage";
  17. final static String STR_TYPE_NEW  = "new";
  18. final static String STR_TYPE_REPLY  = "reply";
  19. final static String STR_TYPE_EDIT  = "edit";
  20. final static String STR_ACTION_DOPOST = "doPost";
  21. final static int  TYPE_NEW  = 1;
  22. final static int  TYPE_REPLY  = 2;
  23. final static int  TYPE_EDIT  = 4;
  24. final static int  ACTION_DOPOST = 1;
  25. SimpleDateFormat dateFormatter = new SimpleDateFormat( "yyyy.MM.dd" );
  26. SimpleDateFormat timeFormatter = new SimpleDateFormat( "h:mm a" );
  27. %>
  28. <% ////////////////////////
  29. // Authorization check
  30. // check for the existence of an authorization token
  31. Authorization authToken = SkinUtils.getUserAuthorization(request,response);
  32. // if the token was null, they're not authorized. Since this skin will
  33. // allow guests to view forums, we'll set a "guest" authentication
  34. // token
  35. if( authToken == null ) {
  36. authToken = AuthorizationFactory.getAnonymousAuthorization();
  37. }
  38. %>
  39. <% // Get parameter values
  40. int  forumID  = ParamUtils.getIntParameter(request, "forum", -1); // forumID: Forum to post to
  41. int  threadID  = ParamUtils.getIntParameter(request, "thread", -1); // parentID: Parent message ID
  42. int  parentID  = ParamUtils.getIntParameter(request, "message", -1); // threadID: Thread to post to
  43. String  redirectPage  = ParamUtils.getParameter(request, "redirectPage"); // redirectPage: Where to go when this post is successful
  44. String  postTypeStr  = ParamUtils.getParameter(request, "postType"); // postType: either "new" or "reply" or "edit"
  45. String  postActionStr = ParamUtils.getParameter(request, "postAction"); // postAction: either blank or "doPost"
  46. String  subject  = ParamUtils.getParameter(request, "subject"); // subject: subject of the message
  47. String  body   = ParamUtils.getParameter(request, "body"); // body: body of the message
  48. int postType  = 0;
  49. int postAction  = 0;
  50. if (redirectPage == null || redirectPage.length() == 0) {
  51. redirectPage = DEFAULT_REDIRECT_PAGE;
  52. }
  53. // New is default postType
  54. if (postTypeStr == null) {
  55. postType = TYPE_NEW;
  56. postTypeStr = STR_TYPE_NEW;
  57. } else if (STR_TYPE_NEW.equals(postTypeStr)) {
  58. postType = TYPE_NEW;
  59. } else if (STR_TYPE_REPLY.equals(postTypeStr)) {
  60. postType = TYPE_REPLY;
  61. } else if (STR_TYPE_EDIT.equals(postTypeStr)) {
  62. postType = TYPE_EDIT;
  63. }
  64. if (STR_ACTION_DOPOST.equals(postActionStr)) {
  65. postAction = ACTION_DOPOST;
  66. }
  67. %>
  68. <% // Get a ForumFactory object, check if it is null. If it is null, redirect to the error page.
  69. ForumFactory forumFactory = ForumFactory.getInstance(authToken);
  70. // Get a forum object, redirect on error:
  71. Forum forum = forumFactory.getForum(forumID);
  72. // Get a profile manager and create the user object. If the userID of the authorization
  73. // token can't be found, redirect to the error page
  74. ProfileManager manager = forumFactory.getProfileManager();
  75. User thisUser = manager.getUser( authToken.getUserID() );
  76. %>
  77. <% // If this is a reply, setup the parent message and the thread objects
  78. ForumThread thread = null;
  79. ForumMessage parentMessage = null;
  80. if (postType == TYPE_REPLY || postType == TYPE_EDIT) {
  81. thread = forum.getThread( threadID ); // throws ForumThreadNotFoundException
  82. parentMessage = thread.getMessage( parentID ); // throws ForumMessageNotFoundException
  83. }
  84. %>
  85. <% // Create the message only if we're posting or replying to a message:
  86. if (postAction == ACTION_DOPOST) {
  87. ForumMessage newMessage = null;
  88. int messageID = -1;
  89.         if (subject == null || body == null) {
  90. throw new Exception( "您输入的帖子主题或内容不完整!" );
  91.             //return;
  92.         }
  93. try {
  94. if (postType == TYPE_EDIT) {
  95.                 if (parentMessage.getUser().getID() != authToken.getUserID() ||
  96.                  (System.currentTimeMillis() > parentMessage.getCreationDate().getTime() + 3 * 3600 * 1000)) {
  97. throw new Exception( "帖子只能在创建后2小时内修改!" );
  98.                 }
  99.      parentMessage.setSubject( subject );
  100.      parentMessage.setBody( body );
  101.      parentMessage.setProperty( "IP", request.getRemoteAddr() );
  102.      messageID = parentID;
  103. } else {
  104.      newMessage = forum.createMessage( thisUser );
  105.      newMessage.setSubject( subject );
  106.      newMessage.setBody( body );
  107.      newMessage.setProperty( "IP", request.getRemoteAddr() );
  108.      messageID = newMessage.getID();
  109.      if (postType == TYPE_REPLY) {
  110.      thread.addMessage( parentMessage, newMessage );
  111.      }
  112.      else if (postType == TYPE_NEW) {
  113.      // make new thread with the new message as the root.
  114.      thread = forum.createThread(newMessage);
  115.      forum.addThread(thread);
  116.      threadID = thread.getID();
  117.      }
  118. }
  119. }
  120. catch( UnauthorizedException ue) {
  121. // System.err.println( "servletforum/post.jsp: " + ue );
  122. response.sendRedirect( "/mainctrl/bbs/error?message=" + URLEncoder.encode("您没有登录,或者您没有被授权在此发帖子!") );
  123. return;
  124. }
  125. // at this point, the message was created and added successfully,
  126. // so redirect to the redirect page:
  127. response.sendRedirect( redirectPage + "?forum=" + forumID + "&thread=" + threadID + "&parent=" + parentID + "&message=" + messageID);
  128. return;
  129. }
  130. %>
  131. <% /////////////////
  132. // header include
  133. String title = "BBS:贴新帖子";
  134. %>
  135. <%@ include file="/skins/bay/header.jsp" %>
  136. <script language="javascript">
  137. function isEmptyStr(s)
  138. {
  139. var ret = true;
  140. for(i=0;i<s.length;i++)
  141. {
  142. if(s.charAt(i) != " ")
  143. {
  144. ret = false;
  145. break;
  146. }
  147. }
  148. return ret;
  149. }
  150. function checkdata() 
  151. {
  152.     if ( postForm.subject.value.length < 1 || isEmptyStr(postForm.subject.value) )
  153.     {
  154.         alert("你必须输入帖子主题!(不能为空或空格)");
  155.         postForm.subject.focus();
  156.         return false;
  157.     }
  158.     if ( postForm.body.value.length < 1 || isEmptyStr(postForm.body.value) )
  159.     {
  160.         alert("你必须输入帖子内容!(不能为空或空格)");
  161.         postForm.body.focus();
  162.         return false;
  163.     }
  164.     return true;
  165. }
  166. </script>
  167. <table bgcolor="#666666" cellpadding=0 cellspacing=0 border=0 width="100%"> 
  168. <tr>
  169.     <td>
  170.         <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>&gt;&gt;
  171.         <a href="/mainctrl/bbs/viewForum?forum=<%= forumID %>" class="normal"><font color="#FFFFFF"><%= forum.getName() %></font></a>
  172.         &gt;&gt;
  173.         <% if (postType == TYPE_REPLY) { %>
  174.             回帖: <font class="strongw"><%= parentMessage.getSubject() %></font>
  175.         <% } else if (postType == TYPE_NEW) { %>
  176.             贴新帖子:
  177.         <% } %>
  178.         </font>
  179.     </td>
  180. </tr>
  181. </table>
  182. <p>
  183. <% if (postType == TYPE_REPLY || postType == TYPE_EDIT) { %>
  184. <%-- Message table --%>
  185. <table bgcolor="#666666" cellpadding=1 cellspacing=0 border=0 width="100%">
  186. <tr>
  187. <td>
  188. <table bgcolor="#dddddd" cellpadding=3 cellspacing=0 border=0 width="100%">
  189. <td bgcolor="#dddddd" width="99%">
  190. <font face="Trebuchet MS">
  191. <font class="strong"><%= parentMessage.getSubject() %></font>
  192. </font>
  193. <br>
  194. <font face="verdana" >
  195. <font class="strong">
  196. <% if (!parentMessage.isAnonymous()) { 
  197. User parentUser = parentMessage.getUser();
  198. %>
  199. <a href="mailto:<%= parentUser.getEmail() %>" class="normal"><%= parentUser.getName() != null ? parentUser.getName() : parentUser.getUsername() %></a>
  200. <% } else { %>
  201. [匿名]
  202. <% } %>
  203. </font>
  204. </font>
  205. </td>
  206. <td bgcolor="#dddddd" width="1%" nowrap>
  207. <font face="verdana" >
  208. <font class="strong">
  209. <%  java.util.Date d = parentMessage.getCreationDate(); %>
  210. <%= dateFormatter.format(d) %> - <%= timeFormatter.format(d) %>
  211. </font>
  212. </font>
  213. </td>
  214. </table>
  215. <table bgcolor="#666666" cellpadding=0 cellspacing=0 border=0 width="100%">
  216. <td><img src="/skins/bay/images/blank.gif" width=1 height=1 border=0></td>
  217. </table>
  218. <table bgcolor="#ffffff" cellpadding=5 cellspacing=0 border=0 width="100%">
  219. <td>
  220. <%= parentMessage.getBody() %>
  221. </td>
  222. </table>
  223. </td>
  224. </tr>
  225. </table>
  226. <%-- Message table --%>
  227. <% } %>
  228. <p>
  229. <form action="/mainctrl/bbs/post" method="post" name="postForm" onsubmit="return checkdata()">
  230. <input type="hidden" name="message" value="<%= parentID %>">
  231. <input type="hidden" name="thread" value="<%= threadID %>">
  232. <input type="hidden" name="forum" value="<%= forumID %>">
  233. <input type="hidden" name="postType" value="<%= postTypeStr %>">
  234. <input type="hidden" name="postAction" value="<%= STR_ACTION_DOPOST %>">
  235. <table cellspacing=1 cellpadding=2 border=0 bgcolor=#fafafa  width="600">
  236. <tr>
  237. <td>
  238. <font class="strong">
  239. <% if (postType == TYPE_EDIT) { %>
  240. &nbsp;编辑帖子:
  241. <% } else if (postType == TYPE_REPLY) { %>
  242. &nbsp;回复此帖:
  243. <% } else if (postType == TYPE_NEW) { %>
  244. &nbsp;增加新帖:
  245. <% } %>
  246. </font>
  247. </td>
  248. </tr>
  249. </table>
  250. <table cellspacing=1 cellpadding=2 border=0 width="600" class=title>
  251. <tr bgcolor="#fafafa">
  252. <td><font class="strong">&nbsp;主题</font></td>
  253. <% String parentSubject = "";
  254. if (parentMessage != null) {
  255. parentSubject = parentMessage.getSubject();
  256.                             if (postType == TYPE_REPLY) {
  257.      if (parentSubject == null) {
  258.           parentSubject = "回复您的帖子";
  259.      } else if (!parentSubject.startsWith( "回复:" )) {
  260.      parentSubject = "回复:" + parentSubject;
  261.      }
  262.                             }
  263. }
  264. %>
  265. <td bgcolor="#fafafa">&nbsp;<input type="text" name="subject" value="<%= parentSubject %>" size="72" maxlength="100" class=text></td>
  266. </tr>
  267. <% if (postType == TYPE_REPLY) { %>
  268. <tr>
  269. <td><br></td>
  270. <td>
  271. <br></td>
  272. </tr>
  273. <% } %>
  274. <tr bgcolor="#e0e0e0">
  275. <td valign="top"><font face="verdana" ><font class="strong">
  276. <% if (postType == TYPE_REPLY) { %>
  277. &nbsp;回答
  278. <% } else if (postType == TYPE_NEW) { %>
  279. &nbsp;内容
  280. <% } %>
  281. </font></font></td>
  282. <% String parentBody = "";
  283. if (parentMessage != null && postType == TYPE_EDIT) {
  284.     parentBody = parentMessage.getBody();
  285. /***/ // QQQ unfilter waiting for interface change...
  286. parentBody = StringUtils.replace(parentBody, "<BR>", "n");
  287. parentBody = StringUtils.replace(parentBody, "<font class=strong>", "[b]");
  288. parentBody = StringUtils.replace(parentBody, "</font>", "[/b]");
  289. parentBody = StringUtils.replace(parentBody, "<i>", "[i]");
  290. parentBody = StringUtils.replace(parentBody, "</i>", "[/i]");
  291. /***/
  292. }
  293. %>
  294. <td>&nbsp;<textarea name="body" cols="59" rows="10" wrap="virtual"><%= parentBody %></textarea></td>
  295. </tr>
  296. <tr bgcolor="#fafafa">
  297. <td height=30 align=center colspan=2>
  298. <input type="submit" value="贴帖子" class=text>
  299. </td>
  300. </tr>
  301. </table>
  302. </form>
  303. <%@ include file="/skins/bay/footer.jsp" %>