📄 post.jsp
字号:
<%@ page contentType="text/html;charset=gbk" errorPage="error.jsp"%>
<%@ page import="java.net.URLEncoder"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="com.hongshee.ejforum.util.PageUtils"%>
<%@ page import="com.hongshee.ejforum.common.ForumSetting"%>
<%@ page import="com.hongshee.ejforum.common.IConstants"%>
<%@ page import="com.hongshee.ejforum.common.CacheManager"%>
<%@ page import="com.hongshee.ejforum.data.UserDAO.UserInfo"%>
<%@ page import="com.hongshee.ejforum.data.BoardDAO.BoardVO"%>
<%@ page import="com.hongshee.ejforum.data.SectionDAO.SectionVO"%>
<%@ page import="com.hongshee.ejforum.data.GroupDAO.GroupVO"%>
<%@ page import="com.hongshee.ejforum.data.TopicDAO"%>
<%@ page import="com.hongshee.ejforum.data.TopicDAO.TopicVO"%>
<%@ page import="com.hongshee.ejforum.data.ReplyDAO.PostVO"%>
<%@ page import="com.hongshee.ejforum.data.AttachDAO.AttachVO"%>
<%
UserInfo userinfo = PageUtils.getSessionUser(request);
if (!request.isRequestedSessionIdFromCookie())
{
request.setAttribute("errorMsg", "请打开您的浏览器的 Cookie 支持功能, 否则不能发帖");
request.getRequestDispatcher("/error.jsp").forward(request, response);
return;
}
if (userinfo == null && !PageUtils.isUserAgent(request)) // Guest & Robot
return;
CacheManager cache = CacheManager.getInstance();
String sectionID = request.getParameter("sid");
String boardID = request.getParameter("fid");
SectionVO aSection = cache.getSection(sectionID);
BoardVO aBoard = cache.getBoard(aSection, boardID);
GroupVO aGroup = PageUtils.getGroupVO(userinfo, aSection, aBoard);
boolean isModerator = false;
if (aGroup.groupID == 'A' || aGroup.groupID == 'M' || aGroup.groupID == 'S')
isModerator = true;
String action = request.getParameter("act");
if (action != null)
action = action.trim();
if (action == null || action.length() == 0)
action = "topic";
if (userinfo == null) // Guest
{
if (aBoard.isGuestPostOK == 'F'
|| (action.equals("reply") && !PageUtils.isPermitted(aBoard,aGroup,IConstants.PERMIT_NEW_REPLY))
|| (action.equals("topic") && !PageUtils.isPermitted(aBoard,aGroup,IConstants.PERMIT_NEW_TOPIC))
|| (action.equals("reward") && aGroup.rights.indexOf(IConstants.PERMIT_NEW_REWARD) < 0)
|| (action.equals("reward") && !PageUtils.isPermitted(aBoard,aGroup,IConstants.PERMIT_NEW_TOPIC))
|| (action.equals("edit")))
{
String fromPath = request.getRequestURI();
String queryStr = request.getQueryString();
if (queryStr != null)
{
String topicTitle = PageUtils.getParam(request, "topic");
if (topicTitle.length() > 0)
queryStr = queryStr + "&topic=" + URLEncoder.encode(topicTitle, "GBK");
fromPath = fromPath + "?" + queryStr;
}
request.setAttribute("fromPath", fromPath);
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
}
else if (userinfo.state == 'P')
{
request.setAttribute("errorMsg", "您已被禁止发帖或编辑帖子");
request.getRequestDispatcher("/error.jsp").forward(request, response);
return;
}
ForumSetting setting = ForumSetting.getInstance();
Object sessionPosts = (Object)session.getAttribute("posts");
if (sessionPosts != null)
{
int maxSessionPosts = setting.getInt(ForumSetting.MISC, "maxSessionPosts");
if (Integer.parseInt(sessionPosts.toString()) >= maxSessionPosts)
{
request.setAttribute("errorMsg", "您连续发帖数已经达到上限,不能继续发帖");
request.getRequestDispatcher("/error.jsp").forward(request, response);
return;
}
}
String topicID = request.getParameter("tid");
String replyID = request.getParameter("rid");
TopicVO aTopic = null;
PostVO aPost = null;
String strPageNo = null;
String actTitle = null;
String actName = null;
if (action.equals("reply"))
{
if (!PageUtils.isPermitted(aBoard,aGroup,IConstants.PERMIT_NEW_REPLY))
{
request.setAttribute("errorMsg", "您没有发表回复的权限");
request.getRequestDispatcher("/error.jsp").forward(request, response);
return;
}
actTitle = "发表回复";
actName = "post_reply";
}
else if (action.equals("reward"))
{
if (aGroup.rights.indexOf(IConstants.PERMIT_NEW_REWARD) < 0
|| !PageUtils.isPermitted(aBoard,aGroup,IConstants.PERMIT_NEW_TOPIC))
{
request.setAttribute("errorMsg", "您没有发布悬赏的权限");
request.getRequestDispatcher("/error.jsp").forward(request, response);
return;
}
actTitle = "发布悬赏";
actName = "post_reward";
}
else if (action.equals("edit"))
{
aTopic = TopicDAO.getInstance().getPostInfo(request, topicID, replyID);
if (aTopic != null && aTopic.postList != null && aTopic.postList.size() > 0)
{
if (!isModerator)
{
if (aTopic.isDigest == 'T')
{
request.setAttribute("errorMsg", "此主题已被加为精华,不能再修改");
request.getRequestDispatcher("/error.jsp").forward(request, response);
return;
}
if (aTopic.state == 'C')
{
request.setAttribute("errorMsg", "此主题已经关闭,不能再修改");
request.getRequestDispatcher("/error.jsp").forward(request, response);
return;
}
}
aPost = (PostVO)aTopic.postList.get(0);
strPageNo = request.getParameter("page");
}
actTitle = "修改帖子";
if (replyID != null && !replyID.equals("0")) // reply
actName = "post_reply";
else
actName = "post_topic";
}
else
{
if (!PageUtils.isPermitted(aBoard,aGroup,IConstants.PERMIT_NEW_TOPIC))
{
request.setAttribute("errorMsg", "您没有发新话题的权限");
request.getRequestDispatcher("/error.jsp").forward(request, response);
return;
}
actTitle = "发新话题";
actName = "post_topic";
}
String forumName = setting.getForumName();
String title = PageUtils.getTitle(forumName);
String pageTitle = aBoard.boardName;
String topicTitle = null;
String subject = null;
String content = null;
if (topicID != null && topicID.length() > 0)
{
topicTitle = PageUtils.getParam(request, "topic");
pageTitle = topicTitle + " - " + pageTitle;
if (aPost == null)
{
subject = PageUtils.getParam(request, "subject");
content = PageUtils.getParam(request, "content");
}
else
{
subject = aPost.title;
content = aPost.content;
}
}
String[] menus = PageUtils.getHeaderMenu(request, userinfo);
int maxAttachSize = setting.getInt(ForumSetting.FUNCTIONS, "maxAttachSize");
int maxAttachNum = setting.getInt(ForumSetting.FUNCTIONS, "maxAttachNum");
int maxPostLength = setting.getInt(ForumSetting.FUNCTIONS, "maxPostLength");
String allowAttachTypes = setting.getString(ForumSetting.FUNCTIONS, "allowAttachTypes");
int maxTitleLength = 100;
boolean allowHTML = aGroup.rights.indexOf(IConstants.PERMIT_USE_HTML) >= 0;
boolean allowUpload = PageUtils.isPermitted(aBoard,aGroup,IConstants.PERMIT_UPLOAD);
StringBuilder sbuf = new StringBuilder();
sbuf.append("./forum-").append(aSection.sectionID).append("-").append(aBoard.boardID).append("-1.html");
String forumUrl = sbuf.toString();
String homeUrl = "./index.jsp";
String forumStyle = PageUtils.getForumStyle(request, response, aBoard);
sbuf.setLength(0);
sbuf.append("perform.jsp?act=post_").append(action).append("&sid=").append(sectionID)
.append("&fid=").append(boardID);
if (topicID != null)
sbuf.append("&tid=").append(topicID);
if (replyID != null)
sbuf.append("&rid=").append(replyID);
if (strPageNo != null)
sbuf.append("&page=").append(strPageNo);
if (topicTitle != null && topicTitle.length() > 0)
sbuf.append("&topic=").append(URLEncoder.encode(topicTitle, "GBK"));
String performUrl = sbuf.toString();
String topicUrl = null;
if (topicID != null && topicTitle != null)
{
sbuf.setLength(0);
sbuf.append("<A href=\"./topic-").append(topicID).append("-1.html\">").append(topicTitle).append("</A> » ");
topicUrl = sbuf.toString();
}
else
{
topicUrl = "";
}
if (topicTitle == null)
topicTitle = "";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE><%= pageTitle %> - <%= title %></TITLE>
<LINK href="styles/<%= forumStyle %>/ejforum.css" type=text/css rel=stylesheet>
<LINK href="styles/<%= forumStyle %>/ejf_editor.css" type=text/css rel=stylesheet>
</HEAD>
<BODY onkeydown="if(event.keyCode==27) return false;" onload="loaded()">
<SCRIPT src="js/common.js" type=text/javascript></SCRIPT>
<SCRIPT src="js/member.js" type=text/javascript></SCRIPT>
<DIV class=wrap>
<DIV id=header>
<%= PageUtils.getHeader(request, title) %>
<%= PageUtils.getHeadAdBanner(request, null) %>
</DIV>
<%= menus[0] %>
<DIV id=nav><A href="<%= homeUrl %>"><%= forumName %></A> » <A
href="<%= forumUrl %>"><%= aBoard.boardName %></A> » <%= topicUrl %><%= actTitle %></DIV>
<SCRIPT type=text/javascript>
var maxTitleLength = parseInt('<%= maxTitleLength %>');
var maxPostLength = parseInt('<%= maxPostLength %>')*1000;
msgs['bytes'] = '字节';
msgs['post_curlength'] = '当前长度';
msgs['post_subject_empty'] = '请填写标题栏';
msgs['post_content_empty'] = '请填写内容栏';
msgs['post_subject_toolong'] = '您的标题超过 ' + maxTitleLength + ' 个字符的限制';
msgs['post_content_toolong'] = '您的帖子长度超过 ' + maxPostLength + ' 字节的限制';
msgs['post_reward_zero'] = '悬赏积分值必须大于0';
msgs['post_vcode_empty'] = '请输入验证码';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -