?? threadmode1.jsp
字號(hào):
<%@ page contentType="text/html;charset=ISO8859_1" %>
<%
/**
* $RCSfile: threadMode1.jsp,v $
* $Revision: 1.4 $
* $Date: 2002/10/07 07:50:53 $
*/
%>
<%@ page import="java.util.*,
com.jivesoftware.forum.*,
com.jivesoftware.forum.util.*"
errorPage="error.jsp"
%>
<%@ include file="global.jsp" %>
<% // Get parameters
long forumID = ParamUtils.getLongParameter(request,"forum",-1L);
long threadID = ParamUtils.getLongParameter(request,"thread",-1L);
long messageID = ParamUtils.getLongParameter(request,"message",-1L);
int start = ParamUtils.getIntParameter(request,"start",0);
int range = myEnv.du.getMessageRange(request,response,pageUser);
boolean hilite = ParamUtils.getBooleanParameter(request,"hilite");
boolean redirect = ParamUtils.getBooleanParameter(request,"redirect");
String searchWords = ParamUtils.getParameter(request,"q");
// Load the forum
Forum forum = myEnv.getForumFactory().getForum(forumID);
// The requested thread object
ForumThread thread = forum.getThread(threadID);
// Compute number of topics, messages in this forum, number of pages
int numMessages = thread.getMessageCount();
int numReplies = numMessages-1; // subtract 1 because the root message is counted
// TreeWalker lets us get an iterator of nested messages
TreeWalker treeWalker = thread.treeWalker();
// Root message of the thread
ForumMessage rootMessage = thread.getRootMessage();
// Message iterator
Iterator messages = treeWalker.recursiveChildren(rootMessage);
// A user manager lets us get information about users
UserManager userManager = myEnv.getForumFactory().getUserManager();
// Get a thread iterator (for the next/previous thread feature)
ForumThreadIterator threadIterator = forum.threads();
// Set its index to this thread
threadIterator.setIndex(thread);
// Get a watch manager to manage watches on this page.
WatchManager watchManager = null;
// Indicates if this thread is watched
boolean isWatchedThread = false;
if (!isGuest) {
watchManager = myEnv.getForumFactory().getWatchManager();
isWatchedThread = watchManager.isWatchedThread(pageUser, thread, WatchManager.NORMAL_WATCH);
}
// Get the minimum moderation value for this forum since we need to manually
// mark each message as moderated or not
int minModValue = forum.getModerationMinMessageValue();
%>
<% String title = "論壇 - " + thread.getName(); %>
<%@ include file="header.jsp" %>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td width="99%" valign="top">
<font face="<%= JiveGlobals.getJiveProperty("skin.default.fontFace") %>" color="<%= JiveGlobals.getJiveProperty("skin.default.linkColor") %>">
<b><%= rootMessage.getSubject() %></b>
</font>
<br>
<%-- Breadcrumbs --%>
<font size="-1" face="<%= JiveGlobals.getJiveProperty("skin.default.fontFace") %>" color="<%= JiveGlobals.getJiveProperty("skin.default.linkColor") %>">
<b>
<a href="<%= JiveGlobals.getJiveProperty("skin.default.homeURL") %>"
>首頁(yè)</a>
»
<a href="index.jsp" title="返回論壇列表"
>論壇</a>
»
<a href="forum.jsp?forum=<%= forumID %>" title="返回論壇主題列表"
><%= forum.getName() %></a>
</b>
</font>
<p>
<font class=p2 face="<%= JiveGlobals.getJiveProperty("skin.default.fontFace") %>">
<b><%= numReplies %></b>回復(fù).
<% if (numReplies > 0) {
String recentUsername = null;
// Get the most recent message in this thread:
ResultFilter filter = new ResultFilter();
filter.setSortOrder(ResultFilter.DESCENDING);
filter.setNumResults(1);
Iterator recentMessages = thread.messages(filter);
ForumMessage recentMessage = null;
if (recentMessages.hasNext()) {
recentMessage = (ForumMessage)recentMessages.next();
}
if (recentMessage != null) {
User recentUser = recentMessage.getUser();
long recentMessageID = recentMessage.getID();
if (!recentMessage.isAnonymous()) {
recentUsername = recentUser.getUsername();
}
%>
<a href="#<%= recentMessageID %>"
title="此主題的更多回復(fù)">更多回復(fù)</a>:
本主題最后由 <% if (recentMessage.isAnonymous()) { %><i>客人</i>
<% } else { %>
<a href="profile.jsp?user=<%= recentUser.getID() %>" title="<%= recentUsername %>'s profile"><%= recentUsername %></a>
<% } %>
在<%= SkinUtils.formatDate(request, response, pageUser, recentMessage.getCreationDate()) %>回復(fù)
<% }
}
%>
</font>
</td>
<td valign="top" width="1%" align="center">
<%@ include file="loginbox.jsp" %>
</td>
</tr>
</table>
<% if (isGuest) { %>
<p>
<% } %>
<% if (isWatchedThread) { %>
<table bgcolor="<%= JiveGlobals.getJiveProperty("skin.default.tableBorderColor") %>"
cellpadding="0" cellspacing="0" border="0">
<tr><td>
<table bgcolor="<%= JiveGlobals.getJiveProperty("skin.default.tableBorderColor") %>"
cellpadding="3" cellspacing="1" border="0" width="100%">
<tr bgcolor="<%= JiveGlobals.getJiveProperty("skin.default.prefsHeaderBgColor") %>"><td>
<font class=p2 face="<%= JiveGlobals.getJiveProperty("skin.default.fontFace") %>">
您正在監(jiān)控此主題. 按下面“停止監(jiān)控”按鈕可以停止查看.
<br>
[<a href="watches.jsp?forum=<%= forumID %>">監(jiān)控選項(xiàng)</a>]
</font>
</td></tr>
</table>
</td></tr>
</table><br>
<% } %>
<table cellpadding="0" cellspacing="2" border="0">
<tr>
<td><a href="post.jsp?forum=<%= forumID %>&thread=<%= threadID %>&reply=true"><img src="images/reply.gif" width="17" height="17" alt="回復(fù)此主題" border="0"></a></td>
<td nowrap><font class=p2 face="<%= JiveGlobals.getJiveProperty("skin.default.buttonFontFace") %>">
<a href="post.jsp?forum=<%= forumID %>&thread=<%= threadID %>&reply=true" title="Click to reply to this topic">回復(fù)此主題</a>
</font>
</td>
<td><img src="images/blank.gif" width="10" height="1" border="0"></td>
<td><a href="search.jsp?forums=<%= forumID %>"><img src="images/search.gif" width="17" height="17" alt="Click to search messages in this forum" border="0"></a></td>
<td nowrap><font class=p2 face="<%= JiveGlobals.getJiveProperty("skin.default.buttonFontFace") %>">
<a href="search.jsp?forums=<%= forumID %>" title="在此論壇中搜索">搜索論壇</a>
</font>
</td>
<td><img src="images/blank.gif" width="10" height="1" border="0"></td>
<% if (!isGuest) {
if (isWatchedThread) {
%>
<td><a href="watches.jsp?forum=<%= forumID %>&thread=<%= threadID %>&remove=true"><img src="images/watch.gif" width="17" height="17" alt="停止監(jiān)控此主題" border="0"></a></td>
<td nowrap><font class=p2 face="<%= JiveGlobals.getJiveProperty("skin.default.buttonFontFace") %>">
<a href="watches.jsp?forum=<%= forumID %>&thread=<%= threadID %>&remove=true" title="Click to stop watching this topic">停止監(jiān)控</a>
</font>
</td>
<% } else { %>
<td><a href="watches.jsp?forum=<%= forumID %>&thread=<%= threadID %>&add=true"><img src="images/watch.gif" width="17" height="17" alt="開始監(jiān)控此主題" border="0"></a></td>
<td nowrap><font class=p2 face="<%= JiveGlobals.getJiveProperty("skin.default.buttonFontFace") %>">
<a href="watches.jsp?forum=<%= forumID %>&thread=<%= threadID %>&add=true" title="Click to start watching this topic">監(jiān)控此主題</a>
</font>
</td>
<% }
}
%>
</tr>
</table>
<table cellpadding="0" cellspacing="2" border="0" width="100%" align="center">
<tr><td colspan="3"><img src="images/blank.gif" width="1" height="5" border="0"></td></tr>
<tr>
<td width="1%" nowrap>
<% if (threadIterator.hasPrevious()) {
ForumThread prevThread = (ForumThread)threadIterator.previous();
// advance the iterator pointer back to the original index
threadIterator.next();
String subj = prevThread.getRootMessage().getSubject();
// Replace any " in the subject
subj = StringUtils.replace(subj, "\"", """);
%>
<a href="thread.jsp?forum=<%= forumID %>&thread=<%= prevThread.getID() %>"
title="<%= subj %>"><img src="images/prev.gif" width="10" height="10" hspace="2" alt="Topic: <%= subj %>" border="0"></a>
<font class=p2 face="<%= JiveGlobals.getJiveProperty("skin.default.buttonFontFace") %>">
<a href="thread.jsp?forum=<%= forumID %>&thread=<%= prevThread.getID() %>"
title="Topic: <%= subj %>">上一主題</a>
</font>
<% } else { %>
<% } %>
</td>
<td width="98%" align="center">
<table cellpadding="0" cellspacing="2" border="0">
<tr>
<td><a href="forum.jsp?forum=<%= forumID %>"><img src="images/back_to.gif" width="12" height="12" alt="Go back to the topic listing" border="0"></a></td>
<td nowrap><font class=p2 face="<%= JiveGlobals.getJiveProperty("skin.default.buttonFontFace") %>">
<a href="forum.jsp?forum=<%= forumID %>" title="返回主題列表">返回主題列表</a>
</font>
</td>
</tr>
</table>
</td>
<td width="1%" nowrap>
<% if (threadIterator.hasNext()) {
ForumThread nextThread = (ForumThread)threadIterator.next();
String subj = nextThread.getRootMessage().getSubject();
%>
<font class=p2 face="<%= JiveGlobals.getJiveProperty("skin.default.buttonFontFace") %>">
<a href="thread.jsp?forum=<%= forumID %>&thread=<%= nextThread.getID() %>"
title="<%= subj %>">下一主題</a>
</font>
<a href="thread.jsp?forum=<%= forumID %>&thread=<%= nextThread.getID() %>"
title="<%= subj %>"><img src="images/next.gif" width="10" height="10" hspace="2" alt="Topic: <%= subj %>" border="0"></a>
<% } else { %>
<% } %>
</td>
</tr>
</table>
<% // There are messages, so iterate and print them out
String bgcolor = "";
int row = 1;
boolean rootDisplayed = false;
int lastMessageDepth = 0;
while (messages.hasNext() || !rootDisplayed) {
ForumMessage message = null;
if (!rootDisplayed) {
message = rootMessage;
rootDisplayed = true;
}
else {
message = (ForumMessage)messages.next();
}
// Get the tree depth for this message. This tells us how far to indent
// it.
int messageDepth = treeWalker.getMessageDepth(message);
// Message moderation:
// For each of the message, get its moderation value. If it's less
// than the minimum moderation value for the thread, don't display it.
int messageMinModValue = message.getModerationValue();
// Only display this message if this message's moderation value meets
// or exceeds the minimum moderation value.
if (messageMinModValue >= minModValue) {
if (messageDepth <= lastMessageDepth+1) {
lastMessageDepth = messageDepth;
boolean isRootMessage = (message.getID() == rootMessage.getID());
User author = message.getUser();
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -