added "sticky" topic facility to cause topics to always float at the top of
the topic list when it's set
This commit is contained in:
parent
f0bf5e31ee
commit
477aac51f0
|
@ -215,11 +215,13 @@
|
|||
<button id="set" caption="Set" fixup="true">classic/set.jpg</button>
|
||||
<button id="show" caption="Show" fixup="true">classic/show.jpg</button>
|
||||
<button id="show_topic" caption="Show Topic" fixup="true">classic/show_topic.jpg</button>
|
||||
<button id="stick_topic" caption="Stick Topic" fixup="true">classic/stick_topic.jpg</button>
|
||||
<button id="topic_list" caption="Topic List" fixup="true">classic/topic_list.jpg</button>
|
||||
<button id="ua_accept" caption="I Accept" fixup="true">classic/user_accept.jpg</button>
|
||||
<button id="ua_decline" caption="I Decline" fixup="true">classic/user_decline.jpg</button>
|
||||
<button id="unarchive_topic" caption="Unarchive Topic" fixup="true">classic/unarchive_topic.jpg</button>
|
||||
<button id="unfreeze_topic" caption="Unfreeze Topic" fixup="true">classic/unfreeze_topic.jpg</button>
|
||||
<button id="unstick_topic" caption="Unstick Topic" fixup="true">classic/unstick_topic.jpg</button>
|
||||
<button id="update" caption="Update" fixup="true">classic/update.jpg</button>
|
||||
<button id="upload" caption="Upload" fixup="true">classic/upload.jpg</button>
|
||||
<button id="yes" caption="Yes" fixup="true">classic/yes.jpg</button>
|
||||
|
@ -274,11 +276,13 @@
|
|||
<button id="set" caption="Set" fixup="true">gelcap/set.jpg</button>
|
||||
<button id="show" caption="Show" fixup="true">gelcap/show.jpg</button>
|
||||
<button id="show_topic" caption="Show Topic" fixup="true">gelcap/show_topic.jpg</button>
|
||||
<button id="stick_topic" caption="Stick Topic" fixup="true">gelcap/stick_topic.jpg</button>
|
||||
<button id="topic_list" caption="Topic List" fixup="true">gelcap/topic_list.jpg</button>
|
||||
<button id="ua_accept" caption="I Accept" fixup="true">gelcap/user_accept.jpg</button>
|
||||
<button id="ua_decline" caption="I Decline" fixup="true">gelcap/user_decline.jpg</button>
|
||||
<button id="unarchive_topic" caption="Unarchive Topic" fixup="true">gelcap/unarchive_topic.jpg</button>
|
||||
<button id="unfreeze_topic" caption="Unfreeze Topic" fixup="true">gelcap/unfreeze_topic.jpg</button>
|
||||
<button id="unstick_topic" caption="Unstick Topic" fixup="true">gelcap/unstick_topic.jpg</button>
|
||||
<button id="update" caption="Update" fixup="true">gelcap/update.jpg</button>
|
||||
<button id="upload" caption="Upload" fixup="true">gelcap/upload.jpg</button>
|
||||
<button id="yes" caption="Yes" fixup="true">gelcap/yes.jpg</button>
|
||||
|
|
|
@ -321,8 +321,6 @@
|
|||
<config name="post-body">
|
||||
<options wordwrap="55" angles="true" parens="true" discardHTML="false"/>
|
||||
<output-filter type="normal" class="com.silverwrist.venice.htmlcheck.filters.HTMLEncodingFilter"/>
|
||||
<output-filter type="normal" class="com.silverwrist.venice.htmlcheck.filters.SQLEncodingFilter"/>
|
||||
<output-filter type="raw" class="com.silverwrist.venice.htmlcheck.filters.SQLEncodingFilter"/>
|
||||
<rewriter type="string" class="com.silverwrist.venice.htmlcheck.filters.EmailRewriter"/>
|
||||
<rewriter type="string" class="com.silverwrist.venice.htmlcheck.filters.URLRewriter"/>
|
||||
<rewriter type="tag" class="com.silverwrist.venice.db.PostLinkRewriter"/>
|
||||
|
@ -335,8 +333,6 @@
|
|||
<config name="post-pseud">
|
||||
<options wordwrap="0" angles="true" parens="false" discardHTML="false"/>
|
||||
<output-filter type="normal" class="com.silverwrist.venice.htmlcheck.filters.HTMLEncodingFilter"/>
|
||||
<output-filter type="normal" class="com.silverwrist.venice.htmlcheck.filters.SQLEncodingFilter"/>
|
||||
<output-filter type="raw" class="com.silverwrist.venice.htmlcheck.filters.SQLEncodingFilter"/>
|
||||
<tag-set id="restricted"/>
|
||||
</config>
|
||||
<config name="preview">
|
||||
|
@ -364,8 +360,6 @@
|
|||
<options wordwrap="55" rewrap="true" angles="true" parens="true" discardHTML="false"
|
||||
discardRejected="true" discardComments="true" discardXML="true"/>
|
||||
<output-filter type="normal" class="com.silverwrist.venice.htmlcheck.filters.HTMLEncodingFilter"/>
|
||||
<output-filter type="normal" class="com.silverwrist.venice.htmlcheck.filters.SQLEncodingFilter"/>
|
||||
<output-filter type="raw" class="com.silverwrist.venice.htmlcheck.filters.SQLEncodingFilter"/>
|
||||
<rewriter type="string" class="com.silverwrist.venice.htmlcheck.filters.EmailRewriter"/>
|
||||
<rewriter type="string" class="com.silverwrist.venice.htmlcheck.filters.URLRewriter"/>
|
||||
<rewriter type="tag" class="com.silverwrist.venice.db.PostLinkRewriter"/>
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
//
|
||||
// The Original Code is the Venice Web Communities System.
|
||||
//
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
// for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
// Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
// Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
//
|
||||
// Contributor(s):
|
||||
|
||||
|
@ -34,7 +34,7 @@ on_error = "conf/manage_conf.js.vs?cc=" + comm.communityID + "&conf=" + conf.con
|
|||
rc = null;
|
||||
try
|
||||
{ // get a topic list from the conference
|
||||
topics = conf.getTopicList(ConferenceContext.GET_ALL,ConferenceContext.SORT_NUMBER);
|
||||
topics = conf.getTopicList(ConferenceContext.GET_ALL,ConferenceContext.SORT_NUMBER,true);
|
||||
rinput.setRequestAttribute("conference.reports.topiclist",topics);
|
||||
|
||||
// create the result view
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
//
|
||||
// The Original Code is the Venice Web Communities System.
|
||||
//
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
// for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
// Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
// Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
//
|
||||
// Contributor(s):
|
||||
|
||||
|
@ -35,7 +35,7 @@ if ("GET"==rinput.verb)
|
|||
{ // display the dialog
|
||||
try
|
||||
{ // we need the topic list
|
||||
tlist = conf.getTopicList(ConferenceContext.DISPLAY_ALL,ConferenceContext.SORT_NAME);
|
||||
tlist = conf.getTopicList(ConferenceContext.DISPLAY_ALL,ConferenceContext.SORT_NAME,true);
|
||||
rinput.setRequestAttribute("topic.email.list",tlist);
|
||||
|
||||
// create the dialog
|
||||
|
|
|
@ -45,7 +45,7 @@ try
|
|||
{ // figure out what to do here
|
||||
if ("GET"==rinput.verb)
|
||||
{ // load and display the JSP page for the form
|
||||
l = conf.getTopicList(ConferenceContext.GET_ALL,ConferenceContext.SORT_NUMBER);
|
||||
l = conf.getTopicList(ConferenceContext.GET_ALL,ConferenceContext.SORT_NUMBER,true);
|
||||
rinput.setRequestAttribute("topic.list",l);
|
||||
|
||||
rc = new JSPView("Export Messages: " + conf.name,"conf/export.jsp");
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
//
|
||||
// The Original Code is the Venice Web Communities System.
|
||||
//
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
// for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
// Copyright (C) 2002 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
// Copyright (C) 2002-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
//
|
||||
// Contributor(s):
|
||||
|
||||
|
@ -58,7 +58,7 @@ if ("GET"==rinput.verb)
|
|||
rc = null;
|
||||
try
|
||||
{ // get the list of topics in the conference
|
||||
in_list = vlib.castList(conf.getTopicList(ConferenceContext.GET_ALL,ConferenceContext.SORT_NAME));
|
||||
in_list = vlib.castList(conf.getTopicList(ConferenceContext.GET_ALL,ConferenceContext.SORT_NAME,true));
|
||||
out_list = vlib.createList();
|
||||
it = in_list.iterator();
|
||||
while (it.hasNext())
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
//
|
||||
// The Original Code is the Venice Web Communities System.
|
||||
//
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
// for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
// Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
// Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
//
|
||||
// Contributor(s):
|
||||
|
||||
|
@ -113,7 +113,7 @@ try
|
|||
rc.pageQID = "go/" + comm.alias + "!" + tmp;
|
||||
|
||||
if (conf.displayPostPictures() && rinput.user.displayPostPictures())
|
||||
{ // set up the user p[hoto dimensions
|
||||
{ // set up the user photo dimensions
|
||||
old_psz = rinput.engine.getUserPhotoSize();
|
||||
rc.photoDims = new Dimension((old_psz.width * SCALING_NUM) / SCALING_DENOM,
|
||||
(old_psz.height * SCALING_NUM) / SCALING_DENOM);
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
//
|
||||
// The Original Code is the Venice Web Communities System.
|
||||
//
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
// for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
// Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
// Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
//
|
||||
// Contributor(s):
|
||||
|
||||
|
@ -32,7 +32,7 @@ conf = currc.getConference(true,"conf/conferences.js.vs?cc=" + comm.communityID)
|
|||
rc = null;
|
||||
try
|
||||
{ // get the topic list, using the current view and sort options
|
||||
topic_list = conf.getTopicList(currc.viewOption,currc.sortOption);
|
||||
topic_list = conf.getTopicList(currc.viewOption,currc.sortOption,false);
|
||||
|
||||
// initialize and return the topic visit order
|
||||
ord = currc.newTopicVisitOrder(topic_list);
|
||||
|
|
56
scripts/conf/stick_topic.js
Normal file
56
scripts/conf/stick_topic.js
Normal file
|
@ -0,0 +1,56 @@
|
|||
// The contents of this file are subject to the Mozilla Public License Version 1.1
|
||||
// (the "License"); you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
||||
//
|
||||
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
||||
// WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||
// language governing rights and limitations under the License.
|
||||
//
|
||||
// The Original Code is the Venice Web Communities System.
|
||||
//
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
// for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
// Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
//
|
||||
// Contributor(s):
|
||||
|
||||
importPackage(java.util);
|
||||
importPackage(Packages.com.silverwrist.venice.core);
|
||||
importPackage(Packages.com.silverwrist.venice.except);
|
||||
importPackage(Packages.com.silverwrist.venice.ui);
|
||||
importPackage(Packages.com.silverwrist.venice.ui.conf);
|
||||
importPackage(Packages.com.silverwrist.venice.ui.helpers);
|
||||
|
||||
// get the request object and the community
|
||||
rinput = bsf.lookupBean("request");
|
||||
comm = rinput.getCommunity(true,"top.js.vs");
|
||||
|
||||
// get the current conference
|
||||
currc = new CurrentConference(rinput);
|
||||
conf = currc.getConference(true,"conf/conferences.js.vs?cc=" + comm.communityID);
|
||||
|
||||
// get the current topic
|
||||
topic = currc.getTopic(true,"conf/topics.js.vs?cc=" + comm.communityID + "&conf=" + conf.confID);
|
||||
on_error = "conf/posts.js.vs?cc=" + comm.communityID + "&conf=" + conf.confID + "&top=" + topic.topicNumber;
|
||||
|
||||
rc = null;
|
||||
try
|
||||
{ // get the flag and set the sticky status
|
||||
flag = rinput.getParameterInt("flag",0);
|
||||
topic.setSticky(flag==1);
|
||||
rc = new Redirect(on_error,LinkTypes.SERVLET);
|
||||
|
||||
} // end try
|
||||
catch (e)
|
||||
{ // error setting the hide topic
|
||||
etype = vlib.exceptionType(e) + "";
|
||||
if (etype.match("DataException"))
|
||||
rc = new ErrorBox("Database Error","Database error setting sticky status: " + e.message,on_error);
|
||||
else if (etype.match("AccessError"))
|
||||
rc = new ErrorBox("Access Error",e.message,on_error);
|
||||
else
|
||||
rc = e;
|
||||
|
||||
} // end catch
|
||||
|
||||
vlib.output(rc); // all done!
|
|
@ -8,9 +8,9 @@
|
|||
//
|
||||
// The Original Code is the Venice Web Communities System.
|
||||
//
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
// The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
// for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
// Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
// Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
//
|
||||
// Contributor(s):
|
||||
|
||||
|
@ -70,7 +70,7 @@ if (rinput.hasParameter("sort"))
|
|||
rc = null;
|
||||
try
|
||||
{ // get the topic list
|
||||
topic_list = conf.getTopicList(view_opt,sort_opt);
|
||||
topic_list = conf.getTopicList(view_opt,sort_opt,false);
|
||||
|
||||
// initialize the visit order
|
||||
ord = currc.newTopicVisitOrder(topic_list);
|
||||
|
|
|
@ -328,6 +328,7 @@ CREATE TABLE topics (
|
|||
top_message INT DEFAULT 0,
|
||||
frozen TINYINT DEFAULT 0,
|
||||
archived TINYINT DEFAULT 0,
|
||||
sticky TINYINT DEFAULT 0,
|
||||
createdate DATETIME NOT NULL,
|
||||
lastupdate DATETIME NOT NULL,
|
||||
name VARCHAR(128) NOT NULL,
|
||||
|
@ -508,6 +509,7 @@ INSERT INTO refaudit (type, descr) VALUES
|
|||
(314, 'Upload Message Attachment'),
|
||||
(315, 'Delete Conference'),
|
||||
(316, 'Move Message'),
|
||||
(317, 'Set Topic Sticky'),
|
||||
(9999999, 'DUMMY');
|
||||
|
||||
# Populate the Category table.
|
||||
|
|
|
@ -49,158 +49,158 @@ public interface ConferenceContext
|
|||
public static final int IMPORT_MATCH_NUM = 0;
|
||||
public static final int IMPORT_MATCH_NAME = 1;
|
||||
|
||||
public abstract int getConfID();
|
||||
public int getConfID();
|
||||
|
||||
public abstract String getName();
|
||||
public String getName();
|
||||
|
||||
public abstract String getDescription();
|
||||
public String getDescription();
|
||||
|
||||
public abstract Date getCreationDate();
|
||||
public Date getCreationDate();
|
||||
|
||||
public abstract Date getLastUpdateDate();
|
||||
public Date getLastUpdateDate();
|
||||
|
||||
public abstract List getAliases() throws DataException;
|
||||
public List getAliases() throws DataException;
|
||||
|
||||
public abstract List getHosts() throws DataException;
|
||||
public List getHosts() throws DataException;
|
||||
|
||||
public abstract boolean canReadConference();
|
||||
public boolean canReadConference();
|
||||
|
||||
public abstract boolean canPostToConference();
|
||||
public boolean canPostToConference();
|
||||
|
||||
public abstract boolean canCreateTopic();
|
||||
public boolean canCreateTopic();
|
||||
|
||||
public abstract boolean canChangeConference();
|
||||
public boolean canChangeConference();
|
||||
|
||||
public abstract int getReadLevel() throws DataException, AccessError;
|
||||
public int getReadLevel() throws DataException, AccessError;
|
||||
|
||||
public abstract int getPostLevel() throws DataException, AccessError;
|
||||
public int getPostLevel() throws DataException, AccessError;
|
||||
|
||||
public abstract int getCreateLevel() throws DataException, AccessError;
|
||||
public int getCreateLevel() throws DataException, AccessError;
|
||||
|
||||
public abstract int getHideLevel() throws DataException, AccessError;
|
||||
public int getHideLevel() throws DataException, AccessError;
|
||||
|
||||
public abstract int getNukeLevel() throws DataException, AccessError;
|
||||
public int getNukeLevel() throws DataException, AccessError;
|
||||
|
||||
public abstract int getChangeLevel() throws DataException, AccessError;
|
||||
public int getChangeLevel() throws DataException, AccessError;
|
||||
|
||||
public abstract int getDeleteLevel() throws DataException, AccessError;
|
||||
public int getDeleteLevel() throws DataException, AccessError;
|
||||
|
||||
public abstract void setSecurityLevels(int read, int post, int create, int hide, int nuke,
|
||||
int change, int delete) throws DataException, AccessError;
|
||||
|
||||
public abstract void setName(String val) throws DataException, AccessError;
|
||||
|
||||
public abstract void setDescription(String val) throws DataException, AccessError;
|
||||
|
||||
public abstract void addAlias(String alias) throws DataException, AccessError;
|
||||
|
||||
public abstract void removeAlias(String alias) throws DataException, AccessError;
|
||||
|
||||
public abstract void setMembership(int uid, int grant_level) throws DataException, AccessError;
|
||||
|
||||
public abstract void addMember(int uid, boolean as_host) throws DataException, AccessError;
|
||||
|
||||
public abstract void removeMember(int uid) throws DataException, AccessError;
|
||||
|
||||
public abstract int getCommunityGrantedLevel() throws DataException, AccessError;
|
||||
|
||||
public abstract void setCommunityGrantedLevel(int new_level) throws DataException, AccessError;
|
||||
|
||||
public abstract short getSequence() throws DataException, AccessError;
|
||||
|
||||
public abstract void setSequence(short seq) throws DataException, AccessError;
|
||||
|
||||
public abstract boolean getHideList() throws DataException, AccessError;
|
||||
|
||||
public abstract void setHideList(boolean flag) throws DataException, AccessError;
|
||||
|
||||
public abstract boolean canSetHideList();
|
||||
|
||||
public abstract String getDefaultPseud();
|
||||
|
||||
public abstract void setDefaultPseud(String val) throws DataException;
|
||||
|
||||
public abstract boolean anyUnread();
|
||||
|
||||
public abstract List getTopicList(int get_option, int sort_option) throws DataException, AccessError;
|
||||
|
||||
public abstract TopicContext getTopic(short number) throws DataException, AccessError;
|
||||
|
||||
public abstract TopicContext addTopic(String title, String zp_pseud, String zp_text)
|
||||
public void setSecurityLevels(int read, int post, int create, int hide, int nuke, int change, int delete)
|
||||
throws DataException, AccessError;
|
||||
|
||||
public abstract TopicMessageContext getMessageByPostID(long postid) throws DataException, AccessError;
|
||||
public void setName(String val) throws DataException, AccessError;
|
||||
|
||||
public abstract HTMLChecker getNewTopicPreviewChecker();
|
||||
public void setDescription(String val) throws DataException, AccessError;
|
||||
|
||||
public abstract void fixSeen() throws DataException, AccessError;
|
||||
public void addAlias(String alias) throws DataException, AccessError;
|
||||
|
||||
public abstract List getActivePosters(int skip, int limit) throws DataException, AccessError;
|
||||
public void removeAlias(String alias) throws DataException, AccessError;
|
||||
|
||||
public abstract List getActivePosters(int limit) throws DataException, AccessError;
|
||||
public void setMembership(int uid, int grant_level) throws DataException, AccessError;
|
||||
|
||||
public abstract List getActivePosters() throws DataException, AccessError;
|
||||
public void addMember(int uid, boolean as_host) throws DataException, AccessError;
|
||||
|
||||
public abstract List getActiveReaders(int skip, int limit) throws DataException, AccessError;
|
||||
public void removeMember(int uid) throws DataException, AccessError;
|
||||
|
||||
public abstract List getActiveReaders(int limit) throws DataException, AccessError;
|
||||
public int getCommunityGrantedLevel() throws DataException, AccessError;
|
||||
|
||||
public abstract List getActiveReaders() throws DataException, AccessError;
|
||||
public void setCommunityGrantedLevel(int new_level) throws DataException, AccessError;
|
||||
|
||||
public abstract List getMemberList() throws DataException, AccessError;
|
||||
public short getSequence() throws DataException, AccessError;
|
||||
|
||||
public abstract int getMemberLevel(int uid) throws DataException, AccessError;
|
||||
public void setSequence(short seq) throws DataException, AccessError;
|
||||
|
||||
public abstract void delete() throws DataException, AccessError;
|
||||
public boolean getHideList() throws DataException, AccessError;
|
||||
|
||||
public abstract void deleteConference() throws DataException, AccessError;
|
||||
public void setHideList(boolean flag) throws DataException, AccessError;
|
||||
|
||||
public abstract boolean canDeleteConference();
|
||||
public boolean canSetHideList();
|
||||
|
||||
public abstract boolean isInHotlist();
|
||||
public String getDefaultPseud();
|
||||
|
||||
public abstract void addToHotlist() throws DataException;
|
||||
public void setDefaultPseud(String val) throws DataException;
|
||||
|
||||
public abstract boolean canAddToHotlist();
|
||||
public boolean anyUnread();
|
||||
|
||||
public abstract CommunityContext getEnclosingCommunity();
|
||||
public List getTopicList(int get_option, int sort_option, boolean ignore_sticky) throws DataException, AccessError;
|
||||
|
||||
public abstract void removeFromHotlist() throws DataException;
|
||||
public List getTopicList(int get_option, int sort_option) throws DataException, AccessError;
|
||||
|
||||
public abstract void setHotlistSequence(int seq) throws DataException;
|
||||
public TopicContext getTopic(short number) throws DataException, AccessError;
|
||||
|
||||
public abstract boolean displayPostPictures();
|
||||
public TopicContext addTopic(String title, String zp_pseud, String zp_text) throws DataException, AccessError;
|
||||
|
||||
public abstract ConferenceProperties getProperties() throws DataException, AccessError;
|
||||
public TopicMessageContext getMessageByPostID(long postid) throws DataException, AccessError;
|
||||
|
||||
public abstract void setProperties(ConferenceProperties props) throws DataException, AccessError;
|
||||
public HTMLChecker getNewTopicPreviewChecker();
|
||||
|
||||
public abstract SecurityInfo getSecurityInfo();
|
||||
public void fixSeen() throws DataException, AccessError;
|
||||
|
||||
public abstract void sendInvitation(String address, String personal_message)
|
||||
public List getActivePosters(int skip, int limit) throws DataException, AccessError;
|
||||
|
||||
public List getActivePosters(int limit) throws DataException, AccessError;
|
||||
|
||||
public List getActivePosters() throws DataException, AccessError;
|
||||
|
||||
public List getActiveReaders(int skip, int limit) throws DataException, AccessError;
|
||||
|
||||
public List getActiveReaders(int limit) throws DataException, AccessError;
|
||||
|
||||
public List getActiveReaders() throws DataException, AccessError;
|
||||
|
||||
public List getMemberList() throws DataException, AccessError;
|
||||
|
||||
public int getMemberLevel(int uid) throws DataException, AccessError;
|
||||
|
||||
public void delete() throws DataException, AccessError;
|
||||
|
||||
public void deleteConference() throws DataException, AccessError;
|
||||
|
||||
public boolean canDeleteConference();
|
||||
|
||||
public boolean isInHotlist();
|
||||
|
||||
public void addToHotlist() throws DataException;
|
||||
|
||||
public boolean canAddToHotlist();
|
||||
|
||||
public CommunityContext getEnclosingCommunity();
|
||||
|
||||
public void removeFromHotlist() throws DataException;
|
||||
|
||||
public void setHotlistSequence(int seq) throws DataException;
|
||||
|
||||
public boolean displayPostPictures();
|
||||
|
||||
public ConferenceProperties getProperties() throws DataException, AccessError;
|
||||
|
||||
public void setProperties(ConferenceProperties props) throws DataException, AccessError;
|
||||
|
||||
public SecurityInfo getSecurityInfo();
|
||||
|
||||
public void sendInvitation(String address, String personal_message)
|
||||
throws AccessError, DataException, EmailException;
|
||||
|
||||
public abstract boolean canSendInvitation();
|
||||
public boolean canSendInvitation();
|
||||
|
||||
public abstract void sendMailToParticipants(boolean posters, int day_limit, String subject, String text)
|
||||
public void sendMailToParticipants(boolean posters, int day_limit, String subject, String text)
|
||||
throws AccessError, DataException;
|
||||
|
||||
public abstract String getCustomBlock(int selector) throws DataException;
|
||||
public String getCustomBlock(int selector) throws DataException;
|
||||
|
||||
public abstract void setCustomBlock(int selector, String data) throws AccessError, DataException;
|
||||
public void setCustomBlock(int selector, String data) throws AccessError, DataException;
|
||||
|
||||
public abstract void removeCustomBlocks() throws AccessError, DataException;
|
||||
public void removeCustomBlocks() throws AccessError, DataException;
|
||||
|
||||
public abstract List searchPosts(String search_terms, int offset, int count)
|
||||
throws AccessError, DataException;
|
||||
public List searchPosts(String search_terms, int offset, int count) throws AccessError, DataException;
|
||||
|
||||
public abstract int getSearchPostCount(String search_terms) throws AccessError, DataException;
|
||||
public int getSearchPostCount(String search_terms) throws AccessError, DataException;
|
||||
|
||||
public abstract String getPostLink() throws DataException;
|
||||
public String getPostLink() throws DataException;
|
||||
|
||||
public abstract String exportTopics(Set select_topics) throws AccessError, DataException, IOException;
|
||||
public String exportTopics(Set select_topics) throws AccessError, DataException, IOException;
|
||||
|
||||
public abstract List importMessages(InputStream xmlstream, int match_method, boolean create_new)
|
||||
public List importMessages(InputStream xmlstream, int match_method, boolean create_new)
|
||||
throws AccessError, DataException;
|
||||
|
||||
} // end interface ConferenceContext
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
* Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
@ -30,105 +30,111 @@ public interface TopicContext
|
|||
public static final int POST_MODE_NORMAL = 0;
|
||||
public static final int POST_MODE_EMAIL = 1;
|
||||
|
||||
public abstract void refresh() throws DataException;
|
||||
public void refresh() throws DataException;
|
||||
|
||||
public abstract int getTopicID();
|
||||
public int getTopicID();
|
||||
|
||||
public abstract short getTopicNumber();
|
||||
public short getTopicNumber();
|
||||
|
||||
public abstract String getName();
|
||||
public String getName();
|
||||
|
||||
public abstract int getUnreadMessages();
|
||||
public int getUnreadMessages();
|
||||
|
||||
public abstract int getTotalMessages();
|
||||
public int getTotalMessages();
|
||||
|
||||
public abstract Date getLastUpdateDate();
|
||||
public Date getLastUpdateDate();
|
||||
|
||||
public abstract int getCreatorUID();
|
||||
public int getCreatorUID();
|
||||
|
||||
public abstract boolean isFrozen();
|
||||
public boolean isFrozen();
|
||||
|
||||
public abstract boolean isArchived();
|
||||
public boolean isArchived();
|
||||
|
||||
public abstract Date getCreatedDate();
|
||||
public boolean isSticky();
|
||||
|
||||
public abstract boolean isHidden();
|
||||
public Date getCreatedDate();
|
||||
|
||||
public abstract boolean isDeleted();
|
||||
public boolean isHidden();
|
||||
|
||||
public abstract boolean canFreeze();
|
||||
public boolean isDeleted();
|
||||
|
||||
public abstract boolean canArchive();
|
||||
public boolean canFreeze();
|
||||
|
||||
public abstract void setFrozen(boolean flag) throws DataException, AccessError;
|
||||
public boolean canArchive();
|
||||
|
||||
public abstract void setArchived(boolean flag) throws DataException, AccessError;
|
||||
public boolean canStick();
|
||||
|
||||
public abstract void setHidden(boolean flag) throws DataException;
|
||||
public void setFrozen(boolean flag) throws DataException, AccessError;
|
||||
|
||||
public abstract int getFirstUnreadMessage();
|
||||
public void setArchived(boolean flag) throws DataException, AccessError;
|
||||
|
||||
public abstract void setUnreadMessages(int count) throws DataException;
|
||||
public void setSticky(boolean flag) throws DataException, AccessError;
|
||||
|
||||
public abstract void fixSeen() throws DataException;
|
||||
public void setHidden(boolean flag) throws DataException;
|
||||
|
||||
public abstract List getMessages(int low, int high) throws DataException, AccessError;
|
||||
public int getFirstUnreadMessage();
|
||||
|
||||
public abstract TopicMessageContext getMessage(int number) throws DataException, AccessError;
|
||||
public void setUnreadMessages(int count) throws DataException;
|
||||
|
||||
public abstract TopicMessageContext postNewMessage(long parent, String pseud, String text, int mode)
|
||||
public void fixSeen() throws DataException;
|
||||
|
||||
public List getMessages(int low, int high) throws DataException, AccessError;
|
||||
|
||||
public TopicMessageContext getMessage(int number) throws DataException, AccessError;
|
||||
|
||||
public TopicMessageContext postNewMessage(long parent, String pseud, String text, int mode)
|
||||
throws DataException, AccessError;
|
||||
|
||||
public abstract TopicMessageContext postNewMessage(long parent, String pseud, String text)
|
||||
public TopicMessageContext postNewMessage(long parent, String pseud, String text)
|
||||
throws DataException, AccessError;
|
||||
|
||||
public abstract HTMLChecker getPreviewChecker();
|
||||
public HTMLChecker getPreviewChecker();
|
||||
|
||||
public abstract boolean canDelete();
|
||||
public boolean canDelete();
|
||||
|
||||
public abstract void delete() throws DataException, AccessError;
|
||||
public void delete() throws DataException, AccessError;
|
||||
|
||||
public abstract void deleteTopic() throws DataException, AccessError;
|
||||
public void deleteTopic() throws DataException, AccessError;
|
||||
|
||||
public abstract List getActivePosters(int skip, int limit) throws DataException, AccessError;
|
||||
public List getActivePosters(int skip, int limit) throws DataException, AccessError;
|
||||
|
||||
public abstract List getActivePosters(int limit) throws DataException, AccessError;
|
||||
public List getActivePosters(int limit) throws DataException, AccessError;
|
||||
|
||||
public abstract List getActivePosters() throws DataException, AccessError;
|
||||
public List getActivePosters() throws DataException, AccessError;
|
||||
|
||||
public abstract List getActiveReaders(int skip, int limit) throws DataException, AccessError;
|
||||
public List getActiveReaders(int skip, int limit) throws DataException, AccessError;
|
||||
|
||||
public abstract List getActiveReaders(int limit) throws DataException, AccessError;
|
||||
public List getActiveReaders(int limit) throws DataException, AccessError;
|
||||
|
||||
public abstract List getActiveReaders() throws DataException, AccessError;
|
||||
public List getActiveReaders() throws DataException, AccessError;
|
||||
|
||||
public abstract boolean isBozo(int other_uid) throws DataException;
|
||||
public boolean isBozo(int other_uid) throws DataException;
|
||||
|
||||
public abstract void setBozo(int other_uid, boolean bozo) throws DataException;
|
||||
public void setBozo(int other_uid, boolean bozo) throws DataException;
|
||||
|
||||
public abstract boolean canSetBozo(int other_uid);
|
||||
public boolean canSetBozo(int other_uid);
|
||||
|
||||
public abstract List getBozos() throws DataException;
|
||||
public List getBozos() throws DataException;
|
||||
|
||||
public abstract boolean isSubscribed();
|
||||
public boolean isSubscribed();
|
||||
|
||||
public abstract void setSubscribed(boolean flag) throws DataException;
|
||||
public void setSubscribed(boolean flag) throws DataException;
|
||||
|
||||
public abstract void sendInvitation(String address, String personal_message)
|
||||
public void sendInvitation(String address, String personal_message)
|
||||
throws AccessError, DataException, EmailException;
|
||||
|
||||
public abstract boolean canSendInvitation();
|
||||
public boolean canSendInvitation();
|
||||
|
||||
public abstract void sendMailToParticipants(boolean posters, int day_limit, String subject, String text)
|
||||
public void sendMailToParticipants(boolean posters, int day_limit, String subject, String text)
|
||||
throws AccessError, DataException;
|
||||
|
||||
public abstract List searchPosts(String search_terms, int offset, int count)
|
||||
public List searchPosts(String search_terms, int offset, int count)
|
||||
throws AccessError, DataException;
|
||||
|
||||
public abstract int getSearchPostCount(String search_terms) throws AccessError, DataException;
|
||||
public int getSearchPostCount(String search_terms) throws AccessError, DataException;
|
||||
|
||||
public abstract ConferenceContext getEnclosingConference();
|
||||
public ConferenceContext getEnclosingConference();
|
||||
|
||||
public abstract String getPostLink() throws DataException;
|
||||
public String getPostLink() throws DataException;
|
||||
|
||||
} // end interface TopicContext
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
* Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
* Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
@ -986,7 +986,9 @@ class ConferenceCoreData implements ConferenceData
|
|||
throw new DataException("This conference has been deleted.");
|
||||
|
||||
Connection conn = null; // database connection
|
||||
Statement stmt = null;
|
||||
PreparedStatement stmt = null;
|
||||
Statement stmt2 = null;
|
||||
ResultSet rs = null;
|
||||
AuditRecord ar = null; // audit record
|
||||
short new_topic_num; // sequential number of the new topic
|
||||
int new_topic_id; // ID of the new topic
|
||||
|
@ -995,63 +997,65 @@ class ConferenceCoreData implements ConferenceData
|
|||
try
|
||||
{ // get a database connection
|
||||
conn = globalsite.getConnection(null);
|
||||
stmt = conn.createStatement();
|
||||
stmt2 = conn.createStatement();
|
||||
|
||||
// lock the tables we need to use so we can update them
|
||||
stmt.executeUpdate("LOCK TABLES confs WRITE, topics WRITE, posts WRITE, postdata WRITE;");
|
||||
stmt2.executeUpdate("LOCK TABLES confs WRITE, topics WRITE, posts WRITE, postdata WRITE;");
|
||||
|
||||
try
|
||||
{ // determine the data for the initial topic
|
||||
new_topic_num = (short)(top_topic + 1);
|
||||
|
||||
// add the topic row to the database
|
||||
StringBuffer sql = new StringBuffer("INSERT INTO topics (confid, num, creator_uid, createdate, "
|
||||
+ "lastupdate, name) VALUES (");
|
||||
sql.append(confid).append(", ").append(new_topic_num).append(", ").append(outer.getUserID());
|
||||
stmt = conn.prepareStatement("INSERT INTO topics (confid, num, creator_uid, createdate, lastupdate, name) "
|
||||
+ "VALUES (?, ?, ?, ?, ?, ?);");
|
||||
stmt.setInt(1,confid);
|
||||
stmt.setShort(2,new_topic_num);
|
||||
stmt.setInt(3,outer.getUserID());
|
||||
creation = new java.util.Date();
|
||||
String now_str = SQLUtil.encodeDate(creation);
|
||||
sql.append(", '").append(now_str).append("', '").append(now_str).append("', '").append(title);
|
||||
sql.append("');");
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SQL: " + sql.toString());
|
||||
stmt.executeUpdate(sql.toString());
|
||||
SQLUtil.setFullDateTime(stmt,4,creation);
|
||||
SQLUtil.setFullDateTime(stmt,5,creation);
|
||||
stmt.setString(6,title);
|
||||
stmt.executeUpdate();
|
||||
|
||||
// get the topic ID we just inserted
|
||||
ResultSet rs = stmt.executeQuery("SELECT LAST_INSERT_ID();");
|
||||
rs = stmt2.executeQuery("SELECT LAST_INSERT_ID();");
|
||||
if (!(rs.next()))
|
||||
throw new InternalStateError("createNewTopic() could not get back inserted Topic ID");
|
||||
new_topic_id = rs.getInt(1);
|
||||
SQLUtil.shutdown(rs);
|
||||
|
||||
// insert the "header" for the "zero post" in the topic
|
||||
sql.setLength(0);
|
||||
sql.append("INSERT INTO posts (topicid, num, linecount, creator_uid, posted, pseud) VALUES (");
|
||||
sql.append(new_topic_id).append(", 0, ").append(body_lines).append(", ").append(outer.getUserID());
|
||||
sql.append(", '").append(now_str).append("', '").append(pseud).append("');");
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SQL: " + sql.toString());
|
||||
stmt.executeUpdate(sql.toString());
|
||||
stmt.close();
|
||||
stmt = conn.prepareStatement("INSERT INTO posts (topicid, num, linecount, creator_uid, posted, pseud) "
|
||||
+ "VALUES (?, 0, ?, ?, ?, ?);");
|
||||
stmt.setInt(1,new_topic_id);
|
||||
stmt.setInt(2,body_lines);
|
||||
stmt.setInt(3,outer.getUserID());
|
||||
SQLUtil.setFullDateTime(stmt,4,creation);
|
||||
stmt.setString(5,pseud);
|
||||
stmt.executeUpdate();
|
||||
|
||||
// get the ID of the zero post
|
||||
rs = stmt.executeQuery("SELECT LAST_INSERT_ID();");
|
||||
rs.close();
|
||||
rs = stmt2.executeQuery("SELECT LAST_INSERT_ID();");
|
||||
if (!(rs.next()))
|
||||
throw new InternalStateError("createNewTopic() could not get back inserted zero post ID");
|
||||
long zero_post_id = rs.getLong(1);
|
||||
SQLUtil.shutdown(rs);
|
||||
|
||||
// insert the post data
|
||||
sql.setLength(0);
|
||||
sql.append("INSERT INTO postdata (postid, data) VALUES (").append(zero_post_id).append(", '");
|
||||
sql.append(body).append("');");
|
||||
stmt.executeUpdate(sql.toString());
|
||||
stmt.close();
|
||||
stmt = conn.prepareStatement("INSERT INTO postdata (postid, data) VALUES (?, ?);");
|
||||
stmt.setLong(1,zero_post_id);
|
||||
stmt.setString(2,body);
|
||||
stmt.executeUpdate();
|
||||
|
||||
// touch the "conference" entry to reflect the update
|
||||
sql.setLength(0);
|
||||
sql.append("UPDATE confs SET lastupdate = '").append(now_str).append("', top_topic = ");
|
||||
sql.append(new_topic_num).append(" WHERE confid = ").append(confid).append(';');
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SQL: " + sql.toString());
|
||||
stmt.executeUpdate(sql.toString());
|
||||
stmt.close();
|
||||
stmt = conn.prepareStatement("UPDATE confs SET lastupdate = ?, top_topic = ? WHERE confid = ?;");
|
||||
SQLUtil.setFullDateTime(stmt,1,creation);
|
||||
stmt.setInt(2,new_topic_num);
|
||||
stmt.setInt(3,confid);
|
||||
stmt.executeUpdate();
|
||||
|
||||
// touch the local variables, too
|
||||
top_topic = new_topic_num;
|
||||
|
@ -1077,7 +1081,9 @@ class ConferenceCoreData implements ConferenceData
|
|||
} // end catch
|
||||
finally
|
||||
{ // make sure the connection is released before we go
|
||||
SQLUtil.shutdown(rs);
|
||||
SQLUtil.shutdown(stmt);
|
||||
SQLUtil.shutdown(stmt2);
|
||||
AuditRecord.store(conn,ar);
|
||||
SQLUtil.shutdown(conn);
|
||||
|
||||
|
@ -1109,14 +1115,14 @@ class ConferenceCoreData implements ConferenceData
|
|||
if (deleted)
|
||||
throw new DataException("This conference has been deleted.");
|
||||
|
||||
Statement stmt = null;
|
||||
PreparedStatement stmt = null;
|
||||
|
||||
try
|
||||
{ // update the last update date
|
||||
stmt = conn.createStatement();
|
||||
StringBuffer sql = new StringBuffer("UPDATE confs SET lastupdate = '");
|
||||
sql.append(SQLUtil.encodeDate(date)).append("' WHERE confid = ").append(confid).append(';');
|
||||
stmt.executeUpdate(sql.toString());
|
||||
stmt = conn.prepareStatement("UPDATE confs SET lastupdate = ? WHERE confid = ?;");
|
||||
SQLUtil.setFullDateTime(stmt,1,date);
|
||||
stmt.setInt(2,confid);
|
||||
stmt.executeUpdate();
|
||||
last_update = date;
|
||||
|
||||
} // end try
|
||||
|
@ -1177,26 +1183,22 @@ class ConferenceCoreData implements ConferenceData
|
|||
|
||||
ArrayList rc = new ArrayList(); // return from this function
|
||||
Connection conn = null; // pooled database connection
|
||||
Statement stmt = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
|
||||
try
|
||||
{ // get a database connection
|
||||
conn = globalsite.getConnection(null);
|
||||
stmt = conn.createStatement();
|
||||
|
||||
// create a new SQL statement
|
||||
StringBuffer sql = new StringBuffer("SELECT u.uid, u.username, u.description, c.given_name, "
|
||||
+ "c.family_name, c.locality, c.region, c.country, m.granted_lvl "
|
||||
+ "FROM users u, contacts c, confmember m WHERE "
|
||||
+ "u.contactid = c.contactid AND u.uid = m.uid AND m.confid = ");
|
||||
sql.append(confid).append(" AND u.is_anon = 0 ORDER BY u.username;");
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SQL: " + sql.toString());
|
||||
stmt = conn.prepareStatement("SELECT u.uid, u.username, u.description, c.given_name, c.family_name, "
|
||||
+ "c.locality, c.region, c.country, m.granted_lvl FROM users u, contacts c, "
|
||||
+ "confmember m WHERE u.contactid = c.contactid AND u.uid = m.uid "
|
||||
+ "AND m.confid = ? AND u.is_anon = 0 ORDER BY u.username;");
|
||||
stmt.setInt(1,confid);
|
||||
|
||||
// launch the search!
|
||||
ResultSet rs = stmt.executeQuery(sql.toString());
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
while (rs.next())
|
||||
{ // add all the found users to the list
|
||||
UserFoundImpl ufi = new UserFoundImpl(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),
|
||||
|
@ -1216,6 +1218,7 @@ class ConferenceCoreData implements ConferenceData
|
|||
} // end catch
|
||||
finally
|
||||
{ // make sure we release the connection before we go
|
||||
SQLUtil.shutdown(rs);
|
||||
SQLUtil.shutdown(stmt);
|
||||
SQLUtil.shutdown(conn);
|
||||
|
||||
|
@ -1231,19 +1234,20 @@ class ConferenceCoreData implements ConferenceData
|
|||
throw new DataException("This conference has been deleted.");
|
||||
|
||||
Connection conn = null; // pooled database connection
|
||||
Statement stmt = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
|
||||
try
|
||||
{ // get a database connection
|
||||
conn = globalsite.getConnection(null);
|
||||
stmt = conn.createStatement();
|
||||
|
||||
// create the statement
|
||||
StringBuffer sql = new StringBuffer("SELECT granted_lvl FROM confmember WHERE confid = ");
|
||||
sql.append(confid).append(" AND uid = ").append(uid).append(';');
|
||||
stmt = conn.prepareStatement("SELECT granted_lvl FROM confmember WHERE confid = ? AND uid = ?;");
|
||||
stmt.setInt(1,confid);
|
||||
stmt.setInt(2,uid);
|
||||
|
||||
// execute the statement and return the retrieved value
|
||||
ResultSet rs = stmt.executeQuery(sql.toString());
|
||||
rs = stmt.executeQuery();
|
||||
if (rs.next())
|
||||
return rs.getInt(1);
|
||||
|
||||
|
@ -1256,6 +1260,7 @@ class ConferenceCoreData implements ConferenceData
|
|||
} // end catch
|
||||
finally
|
||||
{ // make sure we release the connection before we go
|
||||
SQLUtil.shutdown(rs);
|
||||
SQLUtil.shutdown(stmt);
|
||||
SQLUtil.shutdown(conn);
|
||||
|
||||
|
|
|
@ -866,7 +866,7 @@ class ConferenceUserContextImpl implements ConferenceContext, ConferenceBackend
|
|||
|
||||
} // end anyUnread
|
||||
|
||||
public List getTopicList(int get_option, int sort_option) throws DataException, AccessError
|
||||
public List getTopicList(int get_option, int sort_option, boolean ignore_sticky) throws DataException, AccessError
|
||||
{
|
||||
if (!(getConferenceData().canReadConference(level)))
|
||||
{ // the luser can't even read the conference...
|
||||
|
@ -876,7 +876,13 @@ class ConferenceUserContextImpl implements ConferenceContext, ConferenceBackend
|
|||
} // end if
|
||||
|
||||
// palm it all off on the big static function
|
||||
return TopicUserContextImpl.getTopicList(env,get_option,sort_option);
|
||||
return TopicUserContextImpl.getTopicList(env,get_option,sort_option,ignore_sticky);
|
||||
|
||||
} // end getTopicList
|
||||
|
||||
public List getTopicList(int get_option, int sort_option) throws DataException, AccessError
|
||||
{
|
||||
return getTopicList(get_option,sort_option,false);
|
||||
|
||||
} // end getTopicList
|
||||
|
||||
|
@ -943,20 +949,18 @@ class ConferenceUserContextImpl implements ConferenceContext, ConferenceBackend
|
|||
|
||||
// now we need to reset our last post date
|
||||
Connection conn = null;
|
||||
Statement stmt = null;
|
||||
PreparedStatement stmt = null;
|
||||
|
||||
try
|
||||
{ // get a connection
|
||||
conn = env.getConnection();
|
||||
|
||||
// create a new record in topicsettings (we WERE the first to post in the topic after all!)
|
||||
stmt = conn.createStatement();
|
||||
StringBuffer sql = new StringBuffer("INSERT INTO topicsettings (topicid, uid, last_post) VALUES (");
|
||||
sql.append(new_topic_inf.getTopicID()).append(", ").append(env.getUserID()).append(", '");
|
||||
sql.append(SQLUtil.encodeDate(new_topic_inf.getCreateDate())).append("');");
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SQL: " + sql.toString());
|
||||
stmt.executeUpdate(sql.toString());
|
||||
stmt = conn.prepareStatement("INSERT INTO topicsettings (topicid, uid, last_post) VALUES (?, ?, ?);");
|
||||
stmt.setInt(1,new_topic_inf.getTopicID());
|
||||
stmt.setInt(2,env.getUserID());
|
||||
SQLUtil.setFullDateTime(stmt,3,new_topic_inf.getCreateDate());
|
||||
stmt.executeUpdate();
|
||||
|
||||
// update the conference last-post information
|
||||
touchPost(conn,new_topic_inf.getCreateDate());
|
||||
|
|
|
@ -188,7 +188,7 @@ class ConferencingExporter
|
|||
m_wr = new PrintWriter(m_buffer);
|
||||
m_wr.write("<?xml version=\"1.0\"?>\n<vcif>\n");
|
||||
|
||||
List l = conf.getTopicList(ConferenceContext.GET_ALL,ConferenceContext.SORT_NUMBER);
|
||||
List l = conf.getTopicList(ConferenceContext.GET_ALL,ConferenceContext.SORT_NUMBER,true);
|
||||
for (Iterator it=l.iterator(); it.hasNext(); )
|
||||
visit((TopicUserContextImpl)(it.next()));
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
* Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
@ -40,18 +40,19 @@ class PublishedMessageTopicImpl implements TopicContext
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private EnvEngine env;
|
||||
private int cid;
|
||||
private int topicid;
|
||||
private short topicnum;
|
||||
private int creator_uid;
|
||||
private int total_msgs;
|
||||
private boolean frozen;
|
||||
private boolean archived;
|
||||
private java.util.Date createdate;
|
||||
private java.util.Date lastupdate;
|
||||
private String name;
|
||||
private String postlink;
|
||||
private EnvEngine m_env;
|
||||
private int m_cid;
|
||||
private int m_topicid;
|
||||
private short m_topicnum;
|
||||
private int m_creator_uid;
|
||||
private int m_total_msgs;
|
||||
private boolean m_frozen;
|
||||
private boolean m_archived;
|
||||
private boolean m_sticky;
|
||||
private java.util.Date m_createdate;
|
||||
private java.util.Date m_lastupdate;
|
||||
private String m_name;
|
||||
private String m_postlink;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
|
@ -61,47 +62,55 @@ class PublishedMessageTopicImpl implements TopicContext
|
|||
PublishedMessageTopicImpl(EnvEngine env, int cid, int topicid) throws DataException
|
||||
{
|
||||
Connection conn = null;
|
||||
Statement stmt = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
|
||||
try
|
||||
{ // get a database connection
|
||||
conn = env.getConnection();
|
||||
stmt = conn.createStatement();
|
||||
|
||||
// query the topics table for information
|
||||
StringBuffer sql =
|
||||
new StringBuffer("SELECT confid, num, creator_uid, top_message, frozen, archived, createdate, "
|
||||
+ "lastupdate, name FROM topics WHERE topicid = ");
|
||||
sql.append(topicid).append(";");
|
||||
ResultSet rs = stmt.executeQuery(sql.toString());
|
||||
stmt = conn.prepareStatement("SELECT confid, num, creator_uid, top_message, frozen, archived, sticky, "
|
||||
+ "createdate, lastupdate, name FROM topics WHERE topicid = ?;");
|
||||
stmt.setInt(1,topicid);
|
||||
rs = stmt.executeQuery();
|
||||
if (!(rs.next()))
|
||||
throw new DataException("Topic with ID " + topicid + " not found");
|
||||
|
||||
// fill internal attributes with data
|
||||
this.env = env;
|
||||
this.cid = cid;
|
||||
this.topicid = topicid;
|
||||
m_env = env;
|
||||
m_cid = cid;
|
||||
m_topicid = topicid;
|
||||
int confid = rs.getInt(1);
|
||||
this.topicnum = rs.getShort(2);
|
||||
this.creator_uid = rs.getInt(3);
|
||||
this.total_msgs = rs.getInt(4) + 1;
|
||||
this.frozen = rs.getBoolean(5);
|
||||
this.archived = rs.getBoolean(6);
|
||||
this.createdate = SQLUtil.getFullDateTime(rs,7);
|
||||
this.lastupdate = SQLUtil.getFullDateTime(rs,8);
|
||||
this.name = rs.getString(9);
|
||||
m_topicnum = rs.getShort(2);
|
||||
m_creator_uid = rs.getInt(3);
|
||||
m_total_msgs = rs.getInt(4) + 1;
|
||||
m_frozen = rs.getBoolean(5);
|
||||
m_archived = rs.getBoolean(6);
|
||||
m_sticky = rs.getBoolean(7);
|
||||
m_createdate = SQLUtil.getFullDateTime(rs,8);
|
||||
m_lastupdate = SQLUtil.getFullDateTime(rs,9);
|
||||
m_name = rs.getString(10);
|
||||
rs.close();
|
||||
stmt.close();
|
||||
|
||||
// retrieve the community alias
|
||||
rs = stmt.executeQuery("SELECT alias FROM sigs WHERE sigid = " + cid + ";");
|
||||
stmt = conn.prepareStatement("SELECT alias FROM sigs WHERE sigid = ?;");
|
||||
stmt.setInt(1,cid);
|
||||
rs = stmt.executeQuery();
|
||||
if (!(rs.next()))
|
||||
throw new DataException("Community with ID " + cid + " not found");
|
||||
postlink = rs.getString(1) + "!";
|
||||
m_postlink = rs.getString(1) + "!";
|
||||
rs.close();
|
||||
stmt.close();
|
||||
|
||||
// retrieve a conference alias
|
||||
rs = stmt.executeQuery("SELECT alias FROM confalias WHERE confid = " + confid + " LIMIT 1;");
|
||||
stmt = conn.prepareStatement("SELECT alias FROM confalias WHERE confid = ? LIMIT 1;");
|
||||
stmt.setInt(1,confid);
|
||||
rs = stmt.executeQuery();
|
||||
if (!(rs.next()))
|
||||
throw new DataException("Conference with ID " + confid + " not found");
|
||||
postlink += (rs.getString(1) + "." + topicnum);
|
||||
m_postlink += (rs.getString(1) + "." + m_topicnum);
|
||||
|
||||
} // end try
|
||||
catch (SQLException e)
|
||||
|
@ -112,6 +121,7 @@ class PublishedMessageTopicImpl implements TopicContext
|
|||
} // end catch
|
||||
finally
|
||||
{ // release the connection
|
||||
SQLUtil.shutdown(rs);
|
||||
SQLUtil.shutdown(stmt);
|
||||
SQLUtil.shutdown(conn);
|
||||
|
||||
|
@ -130,19 +140,19 @@ class PublishedMessageTopicImpl implements TopicContext
|
|||
|
||||
public int getTopicID()
|
||||
{
|
||||
return topicid;
|
||||
return m_topicid;
|
||||
|
||||
} // end getTopicID
|
||||
|
||||
public short getTopicNumber()
|
||||
{
|
||||
return topicnum;
|
||||
return m_topicnum;
|
||||
|
||||
} // end getTopicNumber
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
return m_name;
|
||||
|
||||
} // end getName
|
||||
|
||||
|
@ -154,39 +164,45 @@ class PublishedMessageTopicImpl implements TopicContext
|
|||
|
||||
public int getTotalMessages()
|
||||
{
|
||||
return total_msgs;
|
||||
return m_total_msgs;
|
||||
|
||||
} // end getTotalMessages
|
||||
|
||||
public java.util.Date getLastUpdateDate()
|
||||
{
|
||||
return lastupdate;
|
||||
return m_lastupdate;
|
||||
|
||||
} // end getLastUpdateDate
|
||||
|
||||
public int getCreatorUID()
|
||||
{
|
||||
return creator_uid;
|
||||
return m_creator_uid;
|
||||
|
||||
} // end getCreatorUID
|
||||
|
||||
public boolean isFrozen()
|
||||
{
|
||||
return frozen;
|
||||
return m_frozen;
|
||||
|
||||
} // end isFrozen
|
||||
|
||||
public boolean isArchived()
|
||||
{
|
||||
return archived;
|
||||
return m_archived;
|
||||
|
||||
} // end isArchived
|
||||
|
||||
public boolean isSticky()
|
||||
{
|
||||
return m_sticky;
|
||||
|
||||
} // end isSticky
|
||||
|
||||
public java.util.Date getCreatedDate()
|
||||
{
|
||||
return createdate;
|
||||
return m_createdate;
|
||||
|
||||
} // end egtCreatedDate
|
||||
} // end getCreatedDate
|
||||
|
||||
public boolean isHidden()
|
||||
{
|
||||
|
@ -212,6 +228,12 @@ class PublishedMessageTopicImpl implements TopicContext
|
|||
|
||||
} // end canArchive
|
||||
|
||||
public boolean canStick()
|
||||
{
|
||||
return false;
|
||||
|
||||
} // end canStick
|
||||
|
||||
public void setFrozen(boolean flag) throws AccessError
|
||||
{
|
||||
throw new AccessError("cannot perform this function from a read-only topic view");
|
||||
|
@ -224,6 +246,12 @@ class PublishedMessageTopicImpl implements TopicContext
|
|||
|
||||
} // end setArchived
|
||||
|
||||
public void setSticky(boolean flag) throws AccessError
|
||||
{
|
||||
throw new AccessError("cannot perform this function from a read-only topic view");
|
||||
|
||||
} // end setSticky
|
||||
|
||||
public void setHidden(boolean flag)
|
||||
{ // do nothing
|
||||
} // end setHidden
|
||||
|
@ -399,7 +427,7 @@ class PublishedMessageTopicImpl implements TopicContext
|
|||
|
||||
public String getPostLink()
|
||||
{
|
||||
return postlink;
|
||||
return m_postlink;
|
||||
|
||||
} // end getPostLink
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -68,5 +68,6 @@ public interface Audit
|
|||
public static final int UPLOAD_ATTACHMENT = 314;
|
||||
public static final int DELETE_CONF = 315;
|
||||
public static final int MOVE_MESSAGE = 316;
|
||||
public static final int TOPIC_STICKY = 317;
|
||||
|
||||
} // end interface Audit
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
|
||||
The Original Code is the Venice Web Communities System.
|
||||
|
||||
The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
--%>
|
||||
|
@ -45,6 +45,12 @@
|
|||
<util:header>
|
||||
<util:title><%= view.getTitle() %></util:title>
|
||||
<util:subtitle>
|
||||
<% if (my_topic.isSticky()) { %>
|
||||
(Sticky)
|
||||
<% } // end if %>
|
||||
<% if (my_topic.isHidden()) { %>
|
||||
(Hidden)
|
||||
<% } // end if %>
|
||||
<% if (my_topic.isArchived()) { %>
|
||||
(Archived)
|
||||
<% } else if (my_topic.isFrozen()) { %>
|
||||
|
@ -55,19 +61,35 @@
|
|||
</util:header>
|
||||
|
||||
<%= view.getTopCustom() %>
|
||||
<TABLE BORDER=0 WIDTH="100%" CELLPADDING=0 CELLSPACING=0>
|
||||
<TR VALIGN=BOTTOM>
|
||||
<TD NOWRAP ALIGN=LEFT COLSPAN=2 CLASS="content">
|
||||
<table border="0" width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr valign="bottom">
|
||||
<td nowrap="nowrap" align="left" colspan="2" class="content">
|
||||
<util:call_jsp name="conf/posts_usercontrols.jsp"/>
|
||||
</TD>
|
||||
</TR>
|
||||
</td>
|
||||
</tr>
|
||||
<% out.flush(); response.flushBuffer(); %>
|
||||
|
||||
<TR VALIGN=BOTTOM>
|
||||
<TD> </TD>
|
||||
<TD NOWRAP ALIGN=RIGHT CLASS="content">
|
||||
<tr valign="bottom">
|
||||
<td> </td>
|
||||
<td nowrap="nowrap" align="right" class="content">
|
||||
<util:comment>Topic admin controls section</util:comment>
|
||||
<% if (my_topic.canFreeze()) { %>
|
||||
<% if (my_topic.canStick()) { %>
|
||||
|
||||
<% if (my_topic.isSticky()) { %>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/stick_topic.js.vs?<%= topic_locator %>&flag=0</util:href>
|
||||
<util:text><util:button id="unstick_topic"/></util:text>
|
||||
</util:xlink>
|
||||
<% } else { %>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/stick_topic.js.vs?<%= topic_locator %>&flag=1</util:href>
|
||||
<util:text><util:button id="stick_topic"/></util:text>
|
||||
</util:xlink>
|
||||
<%
|
||||
} // end if
|
||||
} // end if
|
||||
if (my_topic.canFreeze()) {
|
||||
%>
|
||||
|
||||
<% if (my_topic.isFrozen()) { %>
|
||||
<util:xlink>
|
||||
|
@ -106,25 +128,25 @@
|
|||
<util:text><util:button id="delete_topic"/></util:text>
|
||||
</util:xlink>
|
||||
<% } // end if %>
|
||||
</TD>
|
||||
</TR>
|
||||
</td>
|
||||
</tr>
|
||||
<% out.flush(); response.flushBuffer(); %>
|
||||
|
||||
<TR VALIGN=BOTTOM>
|
||||
<TD NOWRAP ALIGN=LEFT CLASS="content">
|
||||
<tr valign="bottom">
|
||||
<td nowrap="nowrap" align="left" class="content">
|
||||
<util:comment>Go box</util:comment>
|
||||
<util:form verb="GET" action="conf/posts.js.vs" type="servlet"><DIV CLASS="content">
|
||||
<INPUT TYPE="HIDDEN" NAME="cc" VALUE="<%= my_comm.getCommunityID() %>">
|
||||
<INPUT TYPE="HIDDEN" NAME="conf" VALUE="<%= my_conf.getConfID() %>">
|
||||
<INPUT TYPE="HIDDEN" NAME="top" VALUE="<%= my_topicnum %>">
|
||||
<SPAN CLASS="cinput"><INPUT TYPE="TEXT" CLASS="cinput" NAME="pxg" VALUE="" SIZE=6
|
||||
MAXLENGTH=13></SPAN>
|
||||
<util:form verb="GET" action="conf/posts.js.vs" type="servlet"><div class="content">
|
||||
<input type="hidden" name="cc" value="<%= my_comm.getCommunityID() %>" />
|
||||
<input type="hidden" name="conf" value="<%= my_conf.getConfID() %>" />
|
||||
<input type="hidden" name="top" value="<%= my_topicnum %>" />
|
||||
<span class="cinput"><input type="text" class="cinput" name="pxg" value="" size="6"
|
||||
maxlength="13"></span>
|
||||
<util:button id="go" type="input"/>
|
||||
</DIV></util:form>
|
||||
</TD>
|
||||
<TD NOWRAP ALIGN=RIGHT CLASS="content"><util:font color="content.fg" size="content">
|
||||
</div></util:form>
|
||||
</td>
|
||||
<td nowrap="nowrap" align="right" class="content"><util:font color="content.fg" size="content">
|
||||
<util:comment>Upper navigation linkset</util:comment>
|
||||
<A NAME="top">[</A>
|
||||
<a name="top">[</a>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/posts.js.vs?<%= topic_locator %>&p1=0&p2=-1</util:href>
|
||||
<util:text>View All</util:text>
|
||||
|
@ -157,12 +179,12 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
</util:xlink>
|
||||
<% } // end if %>
|
||||
|
|
||||
<A HREF="#bottom">Bottom</A>
|
||||
<a href="#bottom">Bottom</a>
|
||||
]
|
||||
</util:font></TD>
|
||||
</TR>
|
||||
<TR VALIGN=MIDDLE>
|
||||
<TD ALIGN=CENTER COLSPAN=2><util:font color="content.fg" size="post-reference">
|
||||
</util:font></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<td align="center" colspan="2"><util:font color="content.fg" size="post-reference">
|
||||
<util:xlink>
|
||||
<util:href type="servlet"><%= view.getPageQID() %></util:href>
|
||||
<util:text>[Permalink to this topic]</util:text>
|
||||
|
@ -172,27 +194,27 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
<util:href type="servlet"><%= view.getPageQID() %>.<%= my_first %>-<%= my_last %></util:href>
|
||||
<util:text>[Permalink to these posts]</util:text>
|
||||
</util:xlink>
|
||||
</util:font></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</util:font></td>
|
||||
</tr>
|
||||
</table>
|
||||
<% out.flush(); response.flushBuffer(); %>
|
||||
|
||||
<util:comment>Begin Actual Messages</util:comment>
|
||||
<%
|
||||
Iterator it = view.getMessages().iterator();
|
||||
String last_post = "shac=1&p1=" + String.valueOf(my_total_msg - 1);
|
||||
boolean can_line = false;
|
||||
while (it.hasNext()) {
|
||||
for (Iterator it=view.getMessages().iterator(); it.hasNext(); ) {
|
||||
TopicMessageContext msg = (TopicMessageContext)(it.next());
|
||||
String poster = view.getPosterName(msg);
|
||||
if (can_line && (msg.getPostNumber()==(my_total_msg-my_unread))) {
|
||||
out.write("<HR WIDTH=\"70%\">\n");
|
||||
out.write("<hr width=\"70%\" />\n");
|
||||
} // end if
|
||||
|
||||
if (view.getShowAdvanced() && (view.getMessages().size()==1)) {
|
||||
%>
|
||||
<BR>
|
||||
<TABLE WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0><TR VALIGN=TOP><TD NOWRAP ALIGN=LEFT CLASS="content">
|
||||
<br />
|
||||
<table width="100%" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr valign="top"><td nowrap="nowrap" align="left" class="content">
|
||||
<% } // end if %>
|
||||
<util:font color="content.fg" size="content">
|
||||
<%
|
||||
|
@ -222,32 +244,32 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
<%
|
||||
if (view.getShowAdvanced() && (view.getMessages().size()==1)) {
|
||||
if (msg.isHidden()) {
|
||||
out.write("<B><EM>(Hidden)</EM></B>\n");
|
||||
out.write("<b><i>(Hidden)</i></b>\n");
|
||||
} // end if
|
||||
if (view.showBozoFilteredIndicator(msg.getCreatorUID())) {
|
||||
%>
|
||||
<B><EM>(User filtered;
|
||||
<b><i>(User filtered;
|
||||
<util:xlink>
|
||||
<util:href type="servlet">
|
||||
conf/message_bozo.js.vs?<%= topic_locator %>&msg=<%= msg.getPostNumber() %>&flag=0
|
||||
</util:href>
|
||||
<util:text>remove filter</util:text>
|
||||
</util:xlink>)
|
||||
</EM></B>
|
||||
</i></b>
|
||||
<%
|
||||
} // end if
|
||||
} // end if
|
||||
if (!(view.bozoFilterUser(msg.getCreatorUID()))) {
|
||||
%>
|
||||
<BR>
|
||||
<B><%= msg.getPseud() %></B>
|
||||
(<EM>
|
||||
<br />
|
||||
<b><%= msg.getPseud() %></b>
|
||||
(<i>
|
||||
<util:xlink target="_blank">
|
||||
<util:href type="servlet">user/<%= poster %></util:href>
|
||||
<util:text><%= poster %></util:text>
|
||||
</util:xlink>,
|
||||
<%= view.formatDate(msg.getPostDate()) %>
|
||||
</EM>)
|
||||
</i>)
|
||||
<% if (msg.hasAttachment()) { %>
|
||||
<util:xlink>
|
||||
<% if (view.displayAttachmentInNewWindow(msg)) { %>
|
||||
|
@ -272,15 +294,15 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
} // end if
|
||||
%>
|
||||
</util:font>
|
||||
<P>
|
||||
<p />
|
||||
<% if (msg.isScribbled()) { %>
|
||||
<SPAN CLASS="post"><TT><EM><B>
|
||||
<span class="post"><tt><i><b>
|
||||
(Scribbled by <%= view.getMessageBodyText(msg) %> on
|
||||
<%= view.formatDate(msg.getScribbleDate()) %>)
|
||||
</B></EM></TT></SPAN>
|
||||
<% if (view.getPhotoDims()!=null) { %><BR CLEAR=LEFT><% } %><P>
|
||||
</b></i></tt></SPAN>
|
||||
<% if (view.getPhotoDims()!=null) { %><br clear="left" /><% } %><p />
|
||||
<% } else if (view.bozoFilterUser(msg.getCreatorUID())) { %>
|
||||
<SPAN CLASS="post"><TT><EM><B>
|
||||
<span class="post"><tt><i><b>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">
|
||||
conf/posts.js.vs?<%= topic_locator %>&shac=1&nbz=1&p1=<%= msg.getPostNumber() %>
|
||||
|
@ -290,9 +312,9 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
<%= msg.getNumLines() %> <% if (msg.getNumLines()==1) { %>Line<% } else { %>Lines<% } %>)
|
||||
</util:text>
|
||||
</util:xlink>
|
||||
</B></EM></TT></SPAN><P>
|
||||
</b></i></tt></span><p />
|
||||
<% } else if (msg.isHidden() && (!(view.getShowAdvanced()) || (view.getMessages().size()!=1))) { %>
|
||||
<SPAN CLASS="post"><TT><EM><B>
|
||||
<span class="post"><tt><i><b>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">
|
||||
conf/posts.js.vs?<%= topic_locator %>&shac=1&p1=<%= msg.getPostNumber() %>
|
||||
|
@ -302,16 +324,16 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
<%= msg.getNumLines() %> <% if (msg.getNumLines()==1) { %>Line<% } else { %>Lines<% } %>)
|
||||
</util:text>
|
||||
</util:xlink>
|
||||
</B></EM></TT></SPAN>
|
||||
<% if (view.getPhotoDims()!=null) { %><BR CLEAR=LEFT><% } %><P>
|
||||
</b></i></tt></span>
|
||||
<% if (view.getPhotoDims()!=null) { %><br clear="left" /><% } %><p />
|
||||
<% } else { %>
|
||||
<TT><PRE CLASS="post"><post:rewrite><%= view.getMessageBodyText(msg) %></post:rewrite></PRE></TT>
|
||||
<% if (view.getPhotoDims()!=null) { %><BR CLEAR=LEFT><% } %><P>
|
||||
<tt><pre class="post"><post:rewrite><%= view.getMessageBodyText(msg) %></post:rewrite></pre></tt>
|
||||
<% if (view.getPhotoDims()!=null) { %><br clear="left" /><% } %><p />
|
||||
<%
|
||||
} // end if
|
||||
if (view.getShowAdvanced() && (view.getMessages().size()==1)) {
|
||||
%>
|
||||
</TD><TD NOWRAP ALIGN=RIGHT CLASS="content">
|
||||
</td><td nowrap="nowrap" align="right" class="content">
|
||||
<%
|
||||
if (!(msg.isScribbled())) {
|
||||
if (msg.canHide()) {
|
||||
|
@ -322,14 +344,14 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
conf/hide_message.js.vs?<%= topic_locator %>&msg=<%= msg.getPostNumber() %>&flag=0
|
||||
</util:href>
|
||||
<util:text><util:button id="show"/></util:text>
|
||||
</util:xlink><P>
|
||||
</util:xlink><p />
|
||||
<% } else { %>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">
|
||||
conf/hide_message.js.vs?<%= topic_locator %>&msg=<%= msg.getPostNumber() %>&flag=1
|
||||
</util:href>
|
||||
<util:text><util:button id="hide"/></util:text>
|
||||
</util:xlink><P>
|
||||
</util:xlink><p />
|
||||
<%
|
||||
} // end if
|
||||
} // end if (can hide)
|
||||
|
@ -340,7 +362,7 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
conf/scribble_message.js.vs?<%= topic_locator %>&msg=<%= msg.getPostNumber() %>
|
||||
</util:href>
|
||||
<util:text><util:button id="scribble"/></util:text>
|
||||
</util:xlink><P>
|
||||
</util:xlink><p />
|
||||
<%
|
||||
} // end if (can scribble)
|
||||
} // end if (not already scribbled)
|
||||
|
@ -351,7 +373,7 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
conf/message_bozo.js.vs?<%= topic_locator %>&msg=<%= msg.getPostNumber() %>&flag=1
|
||||
</util:href>
|
||||
<util:text><util:button id="filter_user"/></util:text>
|
||||
</util:xlink><P>
|
||||
</util:xlink><p />
|
||||
<%
|
||||
} // end if (can bozo filter)
|
||||
if (msg.canNuke()) {
|
||||
|
@ -361,7 +383,7 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
conf/nuke_message.js.vs?<%= topic_locator %>&msg=<%= msg.getPostNumber() %>
|
||||
</util:href>
|
||||
<util:text><util:button id="nuke"/></util:text>
|
||||
</util:xlink><P>
|
||||
</util:xlink><p />
|
||||
<%
|
||||
} // end if (can nuke)
|
||||
if (msg.canMove() && (my_topic.getTotalMessages()>1)) {
|
||||
|
@ -371,7 +393,7 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
conf/move_message.js.vs?<%= topic_locator %>&msg=<%= msg.getPostNumber() %>
|
||||
</util:href>
|
||||
<util:text><util:button id="move"/></util:text>
|
||||
</util:xlink><P>
|
||||
</util:xlink><p />
|
||||
<%
|
||||
} // end if (can move)
|
||||
if (msg.canPublish()) {
|
||||
|
@ -381,21 +403,21 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
conf/publish_message.js.vs?<%= topic_locator %>&msg=<%= msg.getPostNumber() %>
|
||||
</util:href>
|
||||
<util:text><util:button id="publish"/></util:text>
|
||||
</util:xlink><P>
|
||||
</util:xlink><p />
|
||||
<% } // end if (can publish) %>
|
||||
</TD></TR></TABLE><BR>
|
||||
</td></tr></table><br />
|
||||
<%
|
||||
} // end if (showing advanced controls)
|
||||
can_line = true;
|
||||
out.flush();
|
||||
response.flushBuffer();
|
||||
} // end while
|
||||
} // end for
|
||||
%>
|
||||
<util:comment>End Actual Messages</util:comment>
|
||||
|
||||
<TABLE BORDER=0 WIDTH="100%" CELLPADDING=0 CELLSPACING=0>
|
||||
<TR VALIGN=MIDDLE>
|
||||
<TD ALIGN=CENTER COLSPAN=2><util:font color="content.fg" size="post-reference">
|
||||
<table border="0" width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr valign="middle">
|
||||
<td align="center" colspan="2"><util:font color="content.fg" size="post-reference">
|
||||
<util:xlink>
|
||||
<util:href type="servlet"><%= view.getPageQID() %></util:href>
|
||||
<util:text>[Permalink to this topic]</util:text>
|
||||
|
@ -405,13 +427,13 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
<util:href type="servlet"><%= view.getPageQID() %>.<%= my_first %>-<%= my_last %></util:href>
|
||||
<util:text>[Permalink to these posts]</util:text>
|
||||
</util:xlink>
|
||||
</util:font></TD>
|
||||
</TR>
|
||||
<TR VALIGN=BOTTOM>
|
||||
<TD NOWRAP ALIGN=LEFT> </TD>
|
||||
<TD NOWRAP ALIGN=RIGHT CLASS="content"><util:font color="content.fg" size="content">
|
||||
</util:font></td>
|
||||
</tr>
|
||||
<tr valign="bottom">
|
||||
<td nowrap="nowrap" align="left"> </td>
|
||||
<td nowrap="nowrap" align="right" class="content"><util:font color="content.fg" size="content">
|
||||
<util:comment>Lower navigation linkset</util:comment>
|
||||
<A NAME="bottom">[</A>
|
||||
<a name="bottom">[</a>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/posts.js.vs?<%= topic_locator %>&p1=0&p2=-1</util:href>
|
||||
<util:text>View All</util:text>
|
||||
|
@ -442,18 +464,18 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
</util:xlink>
|
||||
<% } // end if %>
|
||||
|
|
||||
<A HREF="#top">Top</A>
|
||||
<a href="#top">Top</a>
|
||||
]
|
||||
</util:font></TD>
|
||||
</TR>
|
||||
</util:font></td>
|
||||
</tr>
|
||||
<% out.flush(); response.flushBuffer(); %>
|
||||
|
||||
<TR VALIGN=BOTTOM>
|
||||
<TD NOWRAP ALIGN=LEFT COLSPAN=2 CLASS="content">
|
||||
<tr valign="bottom">
|
||||
<td nowrap="nowrap" align="left" colspan="2" class="content">
|
||||
<util:call_jsp name="conf/posts_usercontrols.jsp"/>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<% out.flush(); response.flushBuffer(); %>
|
||||
|
||||
<%
|
||||
|
@ -462,9 +484,9 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
final boolean flag3 = (my_topic.isArchived() ? my_topic.canArchive() : true);
|
||||
if (flag1 && flag2 && flag3) {
|
||||
%>
|
||||
<HR><SPAN STYLE="font-size: 14pt;"><util:font color="content.fg" size="subhead">
|
||||
<B>Post Message in "<%= my_topic.getName() %>":</B>
|
||||
</util:font></SPAN><BR>
|
||||
<hr /><span style="font-size: 14pt;"><util:font color="content.fg" size="subhead">
|
||||
<b>Post Message in "<%= my_topic.getName() %>":</b>
|
||||
</util:font></span><br />
|
||||
<post:box action="conf/post_message.js.vs" type="servlet">
|
||||
<post:param name="cc"><%= my_comm.getCommunityID() %></post:param>
|
||||
<post:param name="conf"><%= my_conf.getConfID() %></post:param>
|
||||
|
@ -486,15 +508,15 @@ conf/posts.js.vs?<%= topic_locator %>&p1=<%= my_last + 1 %>&p2=<%= Math.min(my_l
|
|||
} else if (my_conf.canPostToConference()) {
|
||||
if (my_topic.isArchived()) {
|
||||
%>
|
||||
<DIV ALIGN=CENTER CLASS="content"><util:font color="content.fg" size="content"><B>This is an
|
||||
<EM>Archived</EM> Topic</B></util:font></DIV>
|
||||
<div align="center" class="content"><util:font color="content.fg" size="content"><b>This is an
|
||||
<i>Archived</i> Topic</b></util:font></div>
|
||||
<% } else if (my_topic.isFrozen()) { %>
|
||||
<DIV ALIGN=CENTER CLASS="content"><util:font color="content.fg" size="content"><B>This is a
|
||||
<EM>Frozen</EM> Topic</B></util:font></DIV>
|
||||
<div align="center" class="content"><util:font color="content.fg" size="content"><b>This is a
|
||||
<i>Frozen</i> Topic</b></util:font></div>
|
||||
<%
|
||||
} // end if
|
||||
} // end if
|
||||
%>
|
||||
<%= view.getBottomCustom() %>
|
||||
<% out.flush(); response.flushBuffer(); %>
|
||||
|
||||
<%-- EOF --%>
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
|
||||
The Original Code is the Venice Web Communities System.
|
||||
|
||||
The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
--%>
|
||||
|
@ -51,7 +51,7 @@
|
|||
|
||||
<%= view.getRequestAttribute("conference.custom.top").toString() %>
|
||||
<util:font color="content.fg" size="content">
|
||||
<DIV ALIGN="LEFT" CLASS="content">
|
||||
<div align="left" class="content">
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/conferences.js.vs?<%= base_locator %></util:href>
|
||||
<util:text><util:button id="conf_list"/></util:text>
|
||||
|
@ -83,104 +83,106 @@
|
|||
<util:text><util:button id="add_to_hotlist"/></util:text>
|
||||
</util:xlink>
|
||||
</conf:can_add_to_hotlist>
|
||||
<BR>
|
||||
<br />
|
||||
<util:font color="content.fg" size="post-reference"><util:xlink>
|
||||
<util:href type="servlet"><%= view.getPageQID() %></util:href>
|
||||
<util:text>[Permalink to this conference]</util:text>
|
||||
</util:xlink></util:font>
|
||||
</DIV>
|
||||
</div>
|
||||
<% out.flush(); response.flushBuffer(); %>
|
||||
|
||||
<% final List topics = (List)(view.getRequestAttribute("topics.list")); %>
|
||||
<% if (topics.size()>0) { %>
|
||||
<TABLE WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=3>
|
||||
<TR VALIGN=TOP>
|
||||
<TD ALIGN=LEFT WIDTH="1%" CLASS="content" NOWRAP><util:font color="content.fg" size="content">
|
||||
<B><util:xlink>
|
||||
<table width="100%" border="0" cellpadding="0" cellspacing="3">
|
||||
<tr valign="top">
|
||||
<td align="left" width="1%" class="content" nowrap="nowrap"><util:font color="content.fg" size="content">
|
||||
<b><util:xlink>
|
||||
<util:href type="servlet">conf/topics.js.vs?<%= base_locator %>&sort=<%= ((sort_opt==SORT_NUMBER) ? -SORT_NUMBER : SORT_NUMBER) %></util:href>
|
||||
<util:text>#</util:text>
|
||||
</util:xlink></B>
|
||||
</util:font></TD>
|
||||
<TD ALIGN=LEFT CLASS="content"><util:font color="content.fg" size="content">
|
||||
<B><util:xlink>
|
||||
</util:xlink></b>
|
||||
</util:font></td>
|
||||
<td align="left" class="content"><util:font color="content.fg" size="content">
|
||||
<b><util:xlink>
|
||||
<util:href type="servlet">conf/topics.js.vs?<%= base_locator %>&sort=<%= ((sort_opt==SORT_NAME) ? -SORT_NAME : SORT_NAME) %></util:href>
|
||||
<util:text>Topic Name</util:text>
|
||||
</util:xlink></B>
|
||||
</util:font></TD>
|
||||
<TD ALIGN=RIGHT CLASS="content" NOWRAP><util:font color="content.fg" size="content">
|
||||
<B><util:xlink>
|
||||
</util:xlink></b>
|
||||
</util:font></td>
|
||||
<td align="right" class="content" nowrap="nowrap"><util:font color="content.fg" size="content">
|
||||
<b><util:xlink>
|
||||
<util:href type="servlet">conf/topics.js.vs?<%= base_locator %>&sort=<%= ((sort_opt==SORT_UNREAD) ? -SORT_UNREAD : SORT_UNREAD) %></util:href>
|
||||
<util:text>New</util:text>
|
||||
</util:xlink></B>
|
||||
</util:font></TD>
|
||||
<TD ALIGN=RIGHT CLASS="content" NOWRAP><util:font color="content.fg" size="content">
|
||||
<B><util:xlink>
|
||||
</util:xlink></b>
|
||||
</util:font></td>
|
||||
<td align="right" class="content" nowrap="nowrap"><util:font color="content.fg" size="content">
|
||||
<b><util:xlink>
|
||||
<util:href type="servlet">conf/topics.js.vs?<%= base_locator %>&sort=<%= ((sort_opt==SORT_TOTAL) ? -SORT_TOTAL : SORT_TOTAL) %></util:href>
|
||||
<util:text>Total</util:text>
|
||||
</util:xlink></B>
|
||||
</util:font></TD>
|
||||
<TD ALIGN=LEFT CLASS="content" NOWRAP><util:font color="content.fg" size="content">
|
||||
<B><util:xlink>
|
||||
</util:xlink></b>
|
||||
</util:font></td>
|
||||
<td align="left" class="content" nowrap="nowrap"><util:font color="content.fg" size="content">
|
||||
<b><util:xlink>
|
||||
<util:href type="servlet">conf/topics.js.vs?<%= base_locator %>&sort=<%= ((sort_opt==SORT_DATE) ? -SORT_DATE : SORT_DATE) %></util:href>
|
||||
<util:text>Last Response</util:text>
|
||||
</util:xlink></B>
|
||||
</util:font></TD>
|
||||
</TR>
|
||||
</util:xlink></b>
|
||||
</util:font></td>
|
||||
</tr>
|
||||
<tr valign="top"><td align="left" colspan="5"> </td></tr>
|
||||
<% out.flush(); response.flushBuffer(); %>
|
||||
|
||||
<TR VALIGN=TOP><TD ALIGN=LEFT COLSPAN=5> </TD></TR>
|
||||
<%
|
||||
Iterator it = topics.iterator();
|
||||
while (it.hasNext()) {
|
||||
for (Iterator it=topics.iterator(); it.hasNext(); ) {
|
||||
TopicContext topic = (TopicContext)(it.next());
|
||||
short num = topic.getTopicNumber();
|
||||
String my_locator = base_locator + "&top=" + num;
|
||||
%>
|
||||
<TR VALIGN=TOP>
|
||||
<TD ALIGN=LEFT WIDTH="1%" CLASS="content" NOWRAP><util:font color="content.fg" size="content">
|
||||
<tr valign="top">
|
||||
<td align="left" width="1%" class="content" nowrap="nowrap"><util:font color="content.fg" size="content">
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/posts.js.vs?<%= my_locator %>&rnm=1</util:href>
|
||||
<util:text><%= num %></util:text>
|
||||
</util:xlink>
|
||||
</util:font></TD>
|
||||
<TD ALIGN=LEFT CLASS="content"><util:font color="content.fg" size="content">
|
||||
</util:font></td>
|
||||
<td align="left" class="content"><util:font color="content.fg" size="content">
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/posts.js.vs?<%= my_locator %>&rnm=1</util:href>
|
||||
<util:text><%= topic.getName() %></util:text>
|
||||
</util:xlink>
|
||||
<% if (topic.isArchived() && (view_opt!=DISPLAY_ARCHIVED)) { %>
|
||||
<EM>(archived)</EM>
|
||||
<% } else if (topic.isFrozen()) { %>
|
||||
<EM>(frozen)</EM>
|
||||
<% if (topic.isSticky()) { %>
|
||||
<i>(sticky)</i>
|
||||
<% } // end if %>
|
||||
</util:font></TD>
|
||||
<TD ALIGN=RIGHT CLASS="content" NOWRAP><util:font color="content.fg" size="content">
|
||||
<% if (topic.isArchived() && (view_opt!=DISPLAY_ARCHIVED)) { %>
|
||||
<i>(archived)</i>
|
||||
<% } else if (topic.isFrozen()) { %>
|
||||
<i>(frozen)</i>
|
||||
<% } // end if %>
|
||||
</util:font></td>
|
||||
<td align="right" class="content" nowrap="nowrap"><util:font color="content.fg" size="content">
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/posts.js.vs?<%= my_locator %>&rnm=1</util:href>
|
||||
<util:text><%= topic.getUnreadMessages() %></util:text>
|
||||
</util:xlink>
|
||||
</util:font></TD>
|
||||
<TD ALIGN=RIGHT CLASS="content" NOWRAP><util:font color="content.fg" size="content">
|
||||
</util:font></td>
|
||||
<td align="right" class="content" nowrap="nowrap"><util:font color="content.fg" size="content">
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/posts.js.vs?<%= my_locator %>&p1=0&p2=-1</util:href>
|
||||
<util:text><%= topic.getTotalMessages() %></util:text>
|
||||
</util:xlink>
|
||||
</util:font></TD>
|
||||
<TD ALIGN=LEFT CLASS="content" NOWRAP><util:font color="content.fg" size="content">
|
||||
</util:font></td>
|
||||
<td align="left" class="content" nowrap="nowrap"><util:font color="content.fg" size="content">
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/posts.js.vs?<%= my_locator %>&rnm=1</util:href>
|
||||
<util:text><%= view.formatDate(topic.getLastUpdateDate()) %></util:text>
|
||||
</util:xlink>
|
||||
</util:font></TD>
|
||||
</TR>
|
||||
</util:font></td>
|
||||
</tr>
|
||||
<%
|
||||
out.flush();
|
||||
response.flushBuffer();
|
||||
} // end while (more topics in enumeration)
|
||||
} // end for (all topics in enumeration)
|
||||
%>
|
||||
</TABLE><P>
|
||||
</table><p />
|
||||
<% } else { %>
|
||||
<EM><%
|
||||
<i><%
|
||||
switch (view_opt)
|
||||
{
|
||||
case DISPLAY_NEW:
|
||||
|
@ -200,58 +202,59 @@
|
|||
out.write("Invalid display option selected.");
|
||||
break;
|
||||
} // end switch
|
||||
%></EM>
|
||||
<P>
|
||||
%></i>
|
||||
<p />
|
||||
<% } // end if %>
|
||||
<% out.flush(); response.flushBuffer(); %>
|
||||
|
||||
<DIV ALIGN="CENTER" CLASS="content">
|
||||
<B>[</B>
|
||||
<div align="center" class="content">
|
||||
<b>[</b>
|
||||
<% if (view_opt==DISPLAY_NEW) { %>
|
||||
<B>New</B>
|
||||
<b>New</b>
|
||||
<% } else { %>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/topics.js.vs?<%= base_locator %>&view=<%= DISPLAY_NEW %></util:href>
|
||||
<util:text>New</util:text>
|
||||
</util:xlink>
|
||||
<% } // end if %>
|
||||
<B>|</B>
|
||||
<b>|</b>
|
||||
<% if (view_opt==DISPLAY_ACTIVE) { %>
|
||||
<B>Active</B>
|
||||
<b>Active</b>
|
||||
<% } else { %>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/topics.js.vs?<%= base_locator %>&view=<%= DISPLAY_ACTIVE %></util:href>
|
||||
<util:text>Active</util:text>
|
||||
</util:xlink>
|
||||
<% } // end if %>
|
||||
<B>|</B>
|
||||
<b>|</b>
|
||||
<% if (view_opt==DISPLAY_ALL) { %>
|
||||
<B>All</B>
|
||||
<b>All</b>
|
||||
<% } else { %>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/topics.js.vs?<%= base_locator %>&view=<%= DISPLAY_ALL %></util:href>
|
||||
<util:text>All</util:text>
|
||||
</util:xlink>
|
||||
<% } // end if %>
|
||||
<B>|</B>
|
||||
<b>|</b>
|
||||
<% if (view_opt==DISPLAY_HIDDEN) { %>
|
||||
<B>Hidden</B>
|
||||
<b>Hidden</b>
|
||||
<% } else { %>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/topics.js.vs?<%= base_locator %>&view=<%= DISPLAY_HIDDEN %></util:href>
|
||||
<util:text>Hidden</util:text>
|
||||
</util:xlink>
|
||||
<% } // end if %>
|
||||
<B>|</B>
|
||||
<b>|</b>
|
||||
<% if (view_opt==DISPLAY_ARCHIVED) { %>
|
||||
<B>Archived</B>
|
||||
<b>Archived</b>
|
||||
<% } else { %>
|
||||
<util:xlink>
|
||||
<util:href type="servlet">conf/topics.js.vs?<%= base_locator %>&view=<%= DISPLAY_ARCHIVED %></util:href>
|
||||
<util:text>Archived</util:text>
|
||||
</util:xlink>
|
||||
<% } // end if %>
|
||||
<B>]</B>
|
||||
</DIV>
|
||||
<b>]</b>
|
||||
</div>
|
||||
</util:font>
|
||||
<%= view.getRequestAttribute("conference.custom.bottom").toString() %>
|
||||
<%-- EOF --%>
|
||||
|
|
BIN
web/images/classic/stick_topic.jpg
Normal file
BIN
web/images/classic/stick_topic.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
BIN
web/images/classic/unstick_topic.jpg
Normal file
BIN
web/images/classic/unstick_topic.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
BIN
web/images/gelcap/stick_topic.jpg
Normal file
BIN
web/images/gelcap/stick_topic.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
BIN
web/images/gelcap/unstick_topic.jpg
Normal file
BIN
web/images/gelcap/unstick_topic.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Loading…
Reference in New Issue
Block a user