📄 forumdisplayaction.java
字号:
}
request.setAttribute("endrows", endrows);
}
request.setAttribute("forumcolwidth", Math.floor(100 / forumcolumns)+ "%");
}
Map<String,String> collapseimg=new HashMap<String,String>();
if(jsprun_collapse!=null&&jsprun_collapse.indexOf("subforum_"+fid)>0){
collapse.put("subforum", "display: none");
collapseimg.put("subforum", "collapsed_yes.gif");
}
else{
collapse.put("subforum", "");
collapseimg.put("subforum", "collapsed_no.gif");
}
request.setAttribute("collapseimg", collapseimg);
request.setAttribute("lastposts", lastposts);
request.setAttribute("subforums",subforums.size() > 0 ? subforums : null);
}maps=null;
if(settings.get("forumjump").equals("1")){
List<Map<String,String>> forumlist=dataParse.characterParse(settings.get("forums"));
if("1".equals(settings.get("jsmenu_1"))){
request.setAttribute("forummenu", Common.forumselect(forumlist,groupid, extgroupid, String.valueOf(fid),forumdisplayurl));
}
else{
request.setAttribute("forumselect", Common.forumselect(forumlist,false, false, groupid, extgroupid,null,forumdisplayurl));
}
}
request.setAttribute("forum", forum);
request.setAttribute("threadsticky", settings.get("threadsticky").split(","));
String viewthreadurl = settings.get("rewritestatus");
boolean viewthread = (Integer.valueOf(viewthreadurl)&2)>0;
short simple = Short.valueOf(forum.get("simple"));
if((simple & 1)>0) {
return mapping.findForward("toForumdisplay_simple");
}
int subforumsindex = -1;
int defaultorderfield = 0;
int defaultorder = 0;
defaultorderfield = simple / 64;
simple %= 64;
defaultorder = simple / 32;
simple %= 32;
if (simple >= 16) {
subforumsindex = 1;
simple -= 16;
}
if (simple >= 8) {
subforumsindex = 0;
simple -= 8;
}
request.setAttribute("simple", simple);
request.setAttribute("subforumsindex", subforumsindex);
request.setAttribute("defaultorderfield", defaultorderfield);
request.setAttribute("defaultorder", defaultorder);
String filteradd = null;
StringBuffer forumdisplayadd = new StringBuffer();
int threadcount = 0;
String filter = request.getParameter("filter");
int typeid = Common.toDigit(request.getParameter("typeid"), 255L, 0L).intValue();
if (filter == null) {
threadcount = Integer.valueOf(forum.get("threads"));
filteradd=" ";
} else {
if ("digest".equals(filter)) {
forumdisplayadd.append("&filter=digest");
filteradd = " AND digest>'0'";
}else if("type".equals(filter)&& typeid >0) {
forumdisplayadd.append("&filter=type&typeid="+typeid);
filteradd = " AND typeid="+typeid;
} else if (filter.matches("^\\d+$")) {
forumdisplayadd.append("&filter=" + filter);
filteradd = Integer.valueOf(filter) > 0 ? " AND lastpost>='"+ (timestamp - Integer.valueOf(filter)) + "'": "";
} else if (specialtype.get(filter) != null) {
forumdisplayadd.append("&filter=" + filter);
filteradd = " AND special='" + specialtype.get(filter)+ "'";
} else {
filteradd=" ";
filter = "";
}
List<Map<String, String>> count = dataBaseService.executeQuery("SELECT COUNT(*) count FROM jrun_threads WHERE fid=" + fid + filteradd+ " AND displayorder>='0'");
threadcount = Integer.valueOf(count.get(0).get("count"));
}
String orderby=request.getParameter("orderby");
String ascdesc=request.getParameter("ascdesc");
if(orderby!=null&&orderfields.contains(orderby)){
forumdisplayadd.append("&orderby="+orderby);
}else{
orderby=orderfields.get(defaultorderfield);
}
if(ascdesc!=null&&order.contains(ascdesc)){
forumdisplayadd.append("&ascdesc="+ascdesc);
}else{
ascdesc=order.get(defaultorder);
}
Map<String,String> checked=new HashMap<String,String>();
checked.put(filter, "selected='selected'");
checked.put(orderby, "selected='selected'");
checked.put(ascdesc, "selected='selected'");
request.setAttribute("checked", checked);
Map threadtypes=dataParse.characterParse(forum.get("threadtypes"), true);
request.setAttribute("threadtypes", threadtypes.size()>0?threadtypes:null);
int globalstick=Common.toDigit(settings.get("globalstick"), 255L, 0L).intValue();
String thisgid = String.valueOf(type.equals("forum")? fup: forumService.findById(fup).getFup());
request.setAttribute("thisgid", thisgid);
int stickycount=0;
StringBuffer stickytids=new StringBuffer();
if(globalstick>0) {
Map<String,String> globalstickMap=(Map<String,String>)request.getAttribute("globalstick");
Map<String,Map<String,String>> globalsticks=dataParse.characterParse(globalstickMap.get("globalstick"),false);
if(globalsticks!=null){
Map<String,String> global=globalsticks.get("global");
Map<String,String> categories=globalsticks.get(thisgid);
if(global!=null){
stickytids.append(global.get("tids"));
stickycount=Integer.valueOf(global.get("count"));
}
if(categories!=null){
stickytids.append(stickytids.length()==0?categories.get("tids"):","+categories.get("tids"));
stickycount+=Integer.valueOf(categories.get("count"));
}
}
}
boolean filterbool = filter!=null &&"|digest|type|activity|poll|trade|reward|debate|video|".contains("|"+filter+"|");
threadcount += filterbool ? 0 : stickycount;
Long threadmaxpages =Long.valueOf(settings.get("threadmaxpages"));
int page = Common.toDigit(request.getParameter("page"),threadmaxpages, 1L).intValue();
int tpp = member != null && member.getTpp() > 0 ? member.getTpp(): Integer.valueOf(settings.get("topicperpage"));
Map<String,Integer> multiInfo=Common.getMultiInfo(threadcount, tpp, page);
page=multiInfo.get("curpage");
int start_limit=multiInfo.get("start_limit");
String extra=Common.encode("page="+page+ forumdisplayadd);
boolean isstaticurl=false;
String url=null;
if(viewthread && forumdisplayadd.length()==0){
isstaticurl=true;
url="forum-"+fid;
request.setAttribute("extra",page);
}else{
url="forumdisplay.jsp?fid=" + fid + forumdisplayadd;
request.setAttribute("extra",extra);
}
Map<String,Object> multi=Common.multi(threadcount, tpp, page,url, threadmaxpages.intValue(), 10, true, false, null, isstaticurl);
request.setAttribute("page",page);
request.setAttribute("url",url);
request.setAttribute("isstaticurl",isstaticurl);
request.setAttribute("multi", multi);
String displayorderadd=!filterbool&&stickycount>0?"t.displayorder IN (0, 1)":"t.displayorder IN (0, 1, 2, 3)";
String querysticky=null;
String query=null;
if((start_limit>0&&start_limit>stickycount)||stickycount==0){
query = "SELECT t.* FROM jrun_threads t WHERE t.fid='"+fid+"' "+filteradd+" AND "+displayorderadd+" ORDER BY t.displayorder DESC, t."+orderby+" "+ascdesc+" LIMIT "+(filterbool ? start_limit : start_limit - stickycount)+", "+tpp;
}
else{
querysticky="SELECT t.* FROM jrun_threads t WHERE t.tid IN ("+stickytids+") AND t.displayorder IN (2, 3) ORDER BY displayorder DESC, "+orderby+" "+ascdesc+" LIMIT "+start_limit+", "+(stickycount - start_limit < tpp ? stickycount - start_limit:tpp);
if(tpp-stickycount+start_limit>0){
query = "SELECT t.* FROM jrun_threads t WHERE t.fid="+fid+" "+filteradd+" AND "+displayorderadd+" ORDER BY displayorder DESC, "+orderby+" "+ascdesc+" LIMIT "+(tpp - stickycount + start_limit);
}
}
Map<String,String> announcement=(Map<String,String>)request.getAttribute("announcement");
if(announcement!=null&&announcement.size()>0){
announcement.put("starttime", Common.gmdate(dateformat, Integer.valueOf(announcement.get("starttime"))+timeoffset));
request.setAttribute("announcement",announcement);
}
List<Map<String, String>> threadlists=new ArrayList<Map<String,String>>();
if(querysticky!=null){
threadlists = dataBaseService.executeQuery(querysticky);
}
if(query!=null){
threadlists.addAll(dataBaseService.executeQuery(query));
}
if (threadlists != null && threadlists.size() > 0) {
Map types=null;
byte prefix=0;
if(threadtypes.size()>0){
types=(Map)threadtypes.get("types");
prefix=(Byte)threadtypes.get("prefix");
}
int postperpage=Integer.valueOf(settings.get("postperpage"));
int ppp= Byte.valueOf(forum.get("threadcaches")) > 0 &&jsprun_uid==0?postperpage:(member != null&& member.getPpp() > 0 ? member.getPpp() :postperpage);
SimpleDateFormat sdf_dateformat=new SimpleDateFormat(dateformat);
String closedby=null;
short autoclose=Short.valueOf(forum.get("autoclose"));
if(autoclose!=0){
closedby = autoclose > 0 ? "dateline" : "lastpost";
autoclose=(short)(Math.abs(autoclose)*86400);
}
int separatepos = 0;
for (Map<String, String> thread : threadlists) {
int thread_typeid=Integer.valueOf(thread.get("typeid"));
if(thread_typeid>0&&prefix==1&&types.get(thread_typeid)!=null){
thread.put("type", "<em>[<a href=\"forumdisplay.jsp?fid="+fid+"&filter=type&typeid="+thread_typeid+"\">"+types.get(thread_typeid)+"</a>]</em>");
}
int replies = Integer.valueOf(thread.get("replies"));
int special = Integer.valueOf(thread.get("special"));
int topicpages = special > 0 ? replies : replies + 1;
if (topicpages > ppp) {
StringBuffer pagelinks =new StringBuffer();
topicpages = (int)(Math.ceil((double)topicpages/(double)ppp));
for (int i = 1; i <= 6 && i <= topicpages; i++) {
if(viewthread){
pagelinks.append("<a href=\"thread-"+ thread.get("tid")+"-"+page+"-" + i + ".html\">" + i + "</a> ");
}else{
pagelinks.append("<a href=\"viewthread.jsp?tid="+ thread.get("tid")+"&extra="+extra+"&page=" + i + "\">" + i + "</a> ");
}
}
if (topicpages > 6) {
if(viewthread){
pagelinks.append(" .. <a href=\"thread-"+ thread.get("tid")+"-"+page+"-" + topicpages + ".html\">"+ topicpages + "</a> ");
}else{
pagelinks.append(" .. <a href=\"viewthread.jsp?tid="+ thread.get("tid")+"&extra="+extra+"&page=" + topicpages + "\">"+ topicpages + "</a> ");
}
}
thread.put("multipage", " " + pagelinks);
}
int highlight=Integer.valueOf(thread.get("highlight"));
if(highlight>0)
{
StringBuffer style=new StringBuffer();
style.append(" style=\"");
style.append(highlight>=40?"font-weight: bold;":"");
highlight=highlight%40;
style.append(highlight>=20?"font-style: italic;":"");
highlight=highlight%20;
style.append(highlight>=10?"text-decoration: underline;":"");
highlight=highlight%10;
style.append("color: "+colorarray[highlight]);
style.append("\"");
thread.put("highlight",style.toString());
}
else{
thread.put("highlight", "");
}
int closed = Integer.valueOf(thread.get("closed"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -