📄 bbsdocaction.java
字号:
package com.easyjf.bbs.action;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.easyjf.bbs.business.ActiveUser;
import com.easyjf.bbs.business.BBSDir;
import com.easyjf.bbs.business.BBSDoc;
import com.easyjf.bbs.business.BBSRights;
import com.easyjf.bbs.business.BBSUtil;
import com.easyjf.bbs.business.UserInfo;
import com.easyjf.util.CommUtil;
import com.easyjf.util.HtmlUtil;
import com.easyjf.web.ActionContext;
import com.easyjf.web.Module;
import com.easyjf.web.Page;
import com.easyjf.web.WebForm;
import com.easyjf.web.tools.AbstractCmdAction;
import com.easyjf.web.tools.IPageList;
import java.util.StringTokenizer;
/**
*
* <p>Title:BBS栏目处理类</p>
* <p>Description: BBS目录的列表处理Action,使用EasyJWeb0.5;
* <br>通过继承com.easyjf.web.tools.AbstractCmdAction,实现简单的命令式Action处理,去除了复杂烦锁的if else语句</p>
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company: www.easyjf.com</p>
* @author 蔡世友
* @version 1.0
*/
public class BBSDocAction extends AbstractCmdAction {
/**
* 在没有跟任何参数的时候执行,默认显示栏目下的所有帖子信息
*/
public Page doInit(WebForm form, Module module) {
// TODO Auto-generated method stub
return doQuery(form,module);
}
/**
* 发表新帖子
* @param form
* @param module
* @return 若用户有权限发帖子,则返回发帖页面
*/
public Page doNew(WebForm form, Module module) {
String sn=CommUtil.null2String(form.get("sn"));
BBSDir dir=BBSDir.readBySN(sn);
//UserInfo u=UserInfo.readByUserName(user.getUserName());
ActiveUser user=getCurrentUser();
if(user==null)
{
form.addResult("msg","您没有登录,不能发表信息!");
return new Page("login","/bbs/login.html","template");
}
if(dir!=null)
{
form.addResult("dir",dir);
}
else
{
form.addResult("msg","目录不存在,可能是地址链接错误!");
}
form.addResult("user",user);
UserInfo u=UserInfo.readByUserName(user.getUserName());
if(BBSUtil.noRandomCode(u))form.addResult("need_verify","true");
if(BBSUtil.canUploadImg(u))form.addResult("canUpload","true");
form.addResult("vRTypeOptions",CommUtil.getSelectOptions(BBSDoc.vRTypeTitle,""));
return module.findPage("edit");
}
/**
* 查询帖子
* @param form
* @param module
* @return 返回帖子列表
*/
public Page doList(WebForm form,Module module)
{
return doQuery(form,module);
}
/**
* 保存新帖子信息
* @param form
* @param module
* @return 返回列表Page或其它
*/
public Page doAdd(WebForm form,Module module)
{
BBSDoc obj=(BBSDoc)form.toPo(BBSDoc.class);
System.out.println(obj.getFiles());
// obj.setVRType((String)form.get("vRType"));
//System.out.println("权限:"+obj.getVRType());
ActiveUser user=getCurrentUser();
UserInfo u=user==null?null:UserInfo.readByUserName(user.getUserName());
if(!BBSUtil.noRandomCode(u)){
String randomCode=(String)ActionContext.getContext().getSession().getAttribute("rand");
if(!randomCode.equals((String)form.get("randomCode")))
{
form.addResult("msg","验证码不正确,请重新输入!");
return new Page("err","/bbs/err.html","template");
}
form.addResult("need_verify","true");
}
if(BBSUtil.canUploadImg(u))form.addResult("canUpload","true");
//在Action中检测权限
//以下执行表单对象VO到PO转换的代码,通过使用EasyJWeb验证框架中可以省略
if(!BBSRights.checkRights(obj,"add",user))return new Page("popedomError","/bbs/norights.htm","page");
String quotId=CommUtil.null2String(form.get("quotId"));
if(!quotId.equals(""))//处理引用回复
{
BBSDoc quot=BBSDoc.read(quotId);
if(quot!=null)
{
String QuotoSs=(quot.getContent().length()>50?quot.getContent().substring(0,50)+"...":quot.getContent());
String QuotoS="[QUOTE]"+QuotoSs+"[/QUOTE]";
obj.setContent(QuotoS+obj.getContent());
}
}
if(user==null){//guest发表
user=new ActiveUser();
user.setUserName("guest");
user.setIp(ActionContext.getContext().getRequest().getRemoteAddr());
}
boolean op=(obj.getParentId()==null || obj.getParentId().equals(""))?BBSUtil.publishMessage(user,obj):BBSUtil.replyMessage(user,obj);
if(op)
{
form.addResult("msg","信息发布成功!");
}
else
{
form.addResult("msg","信息发布失败");
}
//form.getTextElement().put("sn",obj.getDirSn());
//return doQuery(form,module);
/*不登录也能发帖子
}
else
{
form.addResult("msg","您没有登录,不能发表文章!");
return new Page("login","/bbsuser.ejf","template");
}*/
if( obj.getParentId()==null || obj.getParentId().equals(""))
return new Page("bbsList","/bbsdoc.ejf?easyJWebCommand=show&&cid="+obj.getCid(),"page");
//return new Page("bbsList","/bbsdoc.ejf?easyJWebCommand=list&&sn="+obj.getDirSn(),"page");
else
return new Page("bbsList","/bbsdoc.ejf?easyJWebCommand=show&&cid="+obj.getParentId(),"page");
}
/**
* 修改帖子信息
* @param form
* @param module
* @return 返回帖子列表Page
*/
public Page doUpdate(WebForm form,Module module)
{
String cid=CommUtil.null2String(form.get("cid"));
ActiveUser user=getCurrentUser();
BBSDoc obj=BBSDoc.read(cid);
UserInfo u=UserInfo.readByUserName(user.getUserName());
if(!BBSUtil.noRandomCode(u)){
String randomCode=(String)ActionContext.getContext().getSession().getAttribute("rand");
if(!randomCode.equals((String)form.get("randomCode")))
{
form.addResult("msg","验证码不正确,请重新输入!");
return new Page("err","/bbs/err.html","template");
}
form.addResult("need_verify","true");
}
if(BBSUtil.canUploadImg(u))form.addResult("canUpload","true");
if(user!=null)
{
if(obj!=null)
{
//在Action中检测权限
// 以下执行表单对象VO到PO转换的代码,通过使用EasyJWeb验证框架中可以省略
if(!BBSRights.checkRights(obj,"update",user))return new Page("popedomError","/bbs/norights.htm","page");
form.toPo(obj);
BBSUtil.updateMessage(user,obj);
}
else
{
form.addResult("msg","所要修改的目录不存在!");
}
}
else
{
form.addResult("msg","您没有登录,不能发表文章!");
return new Page("login","/bbsuser.ejf","template");
}
return new Page("bbsList","/bbsdoc.ejf?easyJWebCommand=list&&sn="+obj.getDirSn(),"page");
}
/**
* 显示帖子内容
* @param form
* @param module
* @return 返回显示帖子的Page
*/
public Page doShow(WebForm form,Module module) throws Exception
{
String cid=CommUtil.null2String(form.get("cid"));
int currentPage=CommUtil.null2Int(form.get("page"));
int pageSize=CommUtil.null2Int(form.get("pageSize"));
ActiveUser user=getCurrentUser();
BBSDoc obj=BBSDoc.read(cid);
if(obj!=null)
{
if(currentPage<1)currentPage=1;
if(pageSize<1)pageSize=15;
BBSDir dir=BBSDir.readBySN(obj.getDirSn());
if(dir!=null)
{
form.addResult("dir",dir);
}
else
{
form.addResult("msg","目录不存在,可能是地址链接错误!");
}
if(user!=null){
UserInfo u=UserInfo.readByUserName(user.getUserName());
if(BBSUtil.noRandomCode(u))form.addResult("need_verify","true");
if(BBSUtil.canUploadImg(u))form.addResult("canUpload","true");
form.addResult("user",user);
}
// 保存点击数
obj.setReadTimes(new Integer(obj.getReadTimes()!=null?obj.getReadTimes().intValue()+1:1));
obj.update();
//显示并处理主题信息
//以下执行表单对象PO到VO转换的代码,大部分在使用EasyJWeb验证框架中可以省略
//form.addPo(obj);
form.addResult("cid",obj.getCid());
form.addResult("title",obj.getTitle());
String content;
if(BBSRights.checkRights(obj,"read",user))
content=HtmlUtil.getUBB2HTML(replaceEmotTag(HtmlUtil.escapeHTMLTag(obj.getContent())));
else content=obj.showVRTypeTitle();
form.addResult("content",content);
form.addResult("inputUser",obj.getInputTime());
form.addResult("modifyTime",obj.getModifyTime());
if(obj.getTagPic()!=null && (!obj.getTagPic().equals("")))
form.addResult("tagPic",obj.getTagPic());
if(obj.getImgs()!=null && (!obj.getImgs().equals("")))
form.addResult("imgs",obj.getImgs());
form.addResult("files",obj.getFiles());
form.addResult("ip",obj.getIp());
if(user!=null)
{
if(BBSRights.checkRights(obj,"setTopMessage",user))//置顶
form.addResult("topMessage","true");
if(BBSRights.checkRights(obj,"setEliteMessage",user))//精华
form.addResult("eliteMessage","true");
if(BBSRights.checkRights(obj,"lockMessage",user))//锁定
form.addResult("lockMessage","true");
if(BBSRights.checkRights(obj,"editMessage",user))//修改
form.addResult("editMessage","true");
if(BBSRights.checkRights(obj,"delMessage",user))//删帖
form.addResult("delMessage","true");
if(BBSRights.checkRights(obj,"moveMessage",user))//移动
form.addResult("moveMessage","true");
if(BBSRights.checkRights(obj,"lockUser",user))//锁定用户
form.addResult("lockUser","true");
}
form.addResult("userName",obj.getInputUser());
form.addResult("encodUserName",URLEncoder.encode(obj.getInputUser(),"utf-8"));
//取得发帖人的相关信息
/*
UserInfo inputUser=UserInfo.readByUserName(obj.getInputUser());
if(inputUser!=null)
{
form.addResult("userName",inputUser.getUserName());
form.addResult("userScore",inputUser.getScore());
form.addResult("userQq",inputUser.getQq());
form.addResult("userCid",inputUser.getCid());
form.addResult("userSign",inputUser.getIntro());
form.addResult("userPhoto",inputUser.getPhoto());
} */
//处理回复信息
IPageList pList=BBSUtil.queryReply(obj,pageSize,currentPage);
List replyList=new ArrayList();
if(pList!=null){
List list=pList.getResult();
if(list!=null){
for(int i=0;i<list.size();i++)
{
Map map=new HashMap();
BBSDoc reply=(BBSDoc)list.get(i);
map.put("cid",reply.getCid());
map.put("title",reply.getTitle());
map.put("content",HtmlUtil.getUBB2HTML(replaceEmotTag(HtmlUtil.escapeHTMLTag(reply.getContent()))));
map.put("inputTime",reply.getInputTime());
map.put("modifyTime",reply.getModifyTime());
map.put("ip",reply.getIp());
map.put("imgs",reply.getImgs()!=null?(reply.getImgs().equals("")?null:reply.getImgs()):null);
map.put("files",reply.getFiles());
if(reply.getTagPic()!=null && (!reply.getTagPic().equals("")))
map.put("tagPic",reply.getTagPic());
map.put("floor",new Integer((pageSize*(currentPage-1)+i+1)));
//处理用户帖子管理权限
if(user!=null)
{
if(BBSRights.checkRights(reply,"lockMessage",user))
map.put("lockMessage","true");
if(BBSRights.checkRights(reply,"editMessage",user))
map.put("editMessage","true");
if(BBSRights.checkRights(reply,"delMessage",user))
map.put("delMessage","true");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -