added customizable "HTML Escapes" for the top and bottom of the topic list
and post list pages; configurable through the host tools
This commit is contained in:
parent
9cc34facf6
commit
9d34cc35f0
|
@ -310,6 +310,14 @@ CREATE TABLE propconf (
|
|||
PRIMARY KEY (confid, ndx)
|
||||
);
|
||||
|
||||
# The conference custom HTML block table. There are two custom blocks, one at the
|
||||
# top of the page, one at the bottom, each a maximum of 64K in length.
|
||||
CREATE TABLE confcustom (
|
||||
confid INT NOT NULL PRIMARY KEY,
|
||||
htmltop TEXT,
|
||||
htmlbottom TEXT
|
||||
);
|
||||
|
||||
# The table describing topics within a conference.
|
||||
CREATE TABLE topics (
|
||||
topicid INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
|
|
|
@ -40,6 +40,9 @@ public interface ConferenceContext
|
|||
public static final int SORT_TOTAL = 4;
|
||||
public static final int SORT_DATE = 5;
|
||||
|
||||
public static final int CUST_BLOCK_TOP = 0;
|
||||
public static final int CUST_BLOCK_BOTTOM = 1;
|
||||
|
||||
public abstract int getConfID();
|
||||
|
||||
public abstract String getName();
|
||||
|
@ -174,4 +177,10 @@ public interface ConferenceContext
|
|||
public abstract void sendMailToParticipants(boolean posters, int day_limit, String subject, String text)
|
||||
throws AccessError, DataException;
|
||||
|
||||
public abstract String getCustomBlock(int selector) throws DataException;
|
||||
|
||||
public abstract void setCustomBlock(int selector, String data) throws AccessError, DataException;
|
||||
|
||||
public abstract void removeCustomBlocks() throws AccessError, DataException;
|
||||
|
||||
} // end interface ConferenceContext
|
||||
|
|
|
@ -129,6 +129,7 @@ class BackgroundCommunityPurge implements Runnable
|
|||
stmt.executeUpdate("DELETE FROM confs WHERE confid = " + key + ";");
|
||||
stmt.executeUpdate("DELETE FROM confalias WHERE confid = " + key + ";");
|
||||
stmt.executeUpdate("DELETE FROM propconf WHERE confid = " + key + ";");
|
||||
stmt.executeUpdate("DELETE FROM confcustom WHERE confid = " + key + ";");
|
||||
|
||||
// determine the number of topics in this conference, and the maximum topic ID, and use
|
||||
// that information to queue up the conference deletion
|
||||
|
|
|
@ -80,6 +80,7 @@ class BackgroundConferencePurge implements Runnable
|
|||
stmt.executeUpdate("DELETE FROM confsettings WHERE confid = " + confid + ";");
|
||||
stmt.executeUpdate("DELETE FROM confhotlist WHERE confid = " + confid + ";");
|
||||
stmt.executeUpdate("DELETE FROM propconf WHERE confid = " + confid + ";");
|
||||
stmt.executeUpdate("DELETE FROM confcustom WHERE confid = " + confid + ";");
|
||||
|
||||
// look up all the topic IDs that are present in this conference
|
||||
int[] topicids = new int[num_topics];
|
||||
|
|
|
@ -772,4 +772,22 @@ class ConferenceCommunityContextImpl implements ConferenceCommunityContext
|
|||
|
||||
} // end setProperties
|
||||
|
||||
public String getCustomBlock(int selector) throws DataException
|
||||
{
|
||||
return getConferenceData().getCustomBlock(selector);
|
||||
|
||||
} // end getCustomBlock
|
||||
|
||||
public void setCustomBlock(int selector, String data) throws DataException
|
||||
{
|
||||
getConferenceData().setCustomBlock(selector,data);
|
||||
|
||||
} // end setCustomBlock
|
||||
|
||||
public void removeCustomBlocks() throws DataException
|
||||
{
|
||||
getConferenceData().removeCustomBlocks();
|
||||
|
||||
} // end removeCustomBlocks
|
||||
|
||||
} // end class ConferenceCommunityContextImpl
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
package com.silverwrist.venice.core.impl;
|
||||
|
||||
import java.lang.ref.*;
|
||||
import java.sql.*;
|
||||
import java.util.*;
|
||||
import org.apache.log4j.*;
|
||||
|
@ -67,6 +68,9 @@ class ConferenceCoreData implements ConferenceData
|
|||
private boolean creating_topic = false; // is somebody creating a topic?
|
||||
private boolean deleted = false; // has this conference been deleted?
|
||||
private OptionSet flags; // option flags
|
||||
private boolean has_custom = false; // do we have custom blocks?
|
||||
private SoftReference cust_top = null; // custom block for top
|
||||
private SoftReference cust_bottom = null; // custom block for bottom
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructors
|
||||
|
@ -97,6 +101,7 @@ class ConferenceCoreData implements ConferenceData
|
|||
loadData(rs); // load the conference data
|
||||
flags = new OptionSet();
|
||||
loadProperties(conn);
|
||||
loadCustom(conn);
|
||||
|
||||
} // end try
|
||||
catch (SQLException e)
|
||||
|
@ -185,6 +190,36 @@ class ConferenceCoreData implements ConferenceData
|
|||
|
||||
} // end loadProperties
|
||||
|
||||
private synchronized void loadCustom(Connection conn) throws SQLException
|
||||
{
|
||||
Statement stmt = conn.createStatement();
|
||||
StringBuffer sql = new StringBuffer("SELECT htmltop, htmlbottom FROM confcustom WHERE confid = ");
|
||||
sql.append(confid).append(';');
|
||||
ResultSet rs = stmt.executeQuery(sql.toString());
|
||||
if (rs.next())
|
||||
{ // load the custom data and save it as SoftReferences (so it can be erased
|
||||
has_custom = true;
|
||||
String s;
|
||||
if ((cust_top==null) || (cust_top.get()==null))
|
||||
{ // retrieve the top custom block
|
||||
s = rs.getString(1);
|
||||
if (s!=null)
|
||||
cust_top = new SoftReference(s);
|
||||
|
||||
} // end if
|
||||
|
||||
if ((cust_bottom==null) || (cust_bottom.get()==null))
|
||||
{ // retrieve the bottom custom block
|
||||
s = rs.getString(2);
|
||||
if (s!=null)
|
||||
cust_bottom = new SoftReference(s);
|
||||
|
||||
} // end if
|
||||
|
||||
} // end if
|
||||
|
||||
} // end loadCustom
|
||||
|
||||
private synchronized void touchUpdate(Connection conn) throws SQLException
|
||||
{
|
||||
Statement stmt = conn.createStatement();
|
||||
|
@ -1269,6 +1304,160 @@ class ConferenceCoreData implements ConferenceData
|
|||
|
||||
} // end setProperties
|
||||
|
||||
public String getCustomBlock(int selector) throws DataException
|
||||
{
|
||||
SoftReference r;
|
||||
if (selector==ConferenceContext.CUST_BLOCK_TOP)
|
||||
r = cust_top;
|
||||
else if (selector==ConferenceContext.CUST_BLOCK_BOTTOM)
|
||||
r = cust_bottom;
|
||||
else
|
||||
throw new IndexOutOfBoundsException("invalid custom block selector");
|
||||
|
||||
if ((!has_custom) || (r==null))
|
||||
return null; // no custom block to return
|
||||
|
||||
// try to retrieve a custom block value
|
||||
String rc = (String)(r.get());
|
||||
if (rc==null)
|
||||
{ // need to reload the custom block data
|
||||
Connection conn = null;
|
||||
try
|
||||
{ // load the custom information
|
||||
conn = env.getConnection();
|
||||
loadCustom(conn);
|
||||
|
||||
// set up the return value
|
||||
if (selector==ConferenceContext.CUST_BLOCK_TOP)
|
||||
rc = (String)(cust_top.get());
|
||||
else if (selector==ConferenceContext.CUST_BLOCK_BOTTOM)
|
||||
rc = (String)(cust_bottom.get());
|
||||
|
||||
} // end try
|
||||
catch (SQLException e)
|
||||
{ // database error - this is a DataException
|
||||
logger.error("DB error getting custom block: " + e.getMessage(),e);
|
||||
throw new DataException("unable to get custom block: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
finally
|
||||
{ // make sure the connection is released before we go
|
||||
env.releaseConnection(conn);
|
||||
|
||||
} // end finally
|
||||
|
||||
} // end if
|
||||
|
||||
return rc;
|
||||
|
||||
} // end getCustomBlock
|
||||
|
||||
public synchronized void setCustomBlock(int selector, String data) throws DataException
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("setCustomBlock(" + selector + ") entry");
|
||||
|
||||
String fieldname;
|
||||
if (selector==ConferenceContext.CUST_BLOCK_TOP)
|
||||
fieldname = "htmltop";
|
||||
else if (selector==ConferenceContext.CUST_BLOCK_BOTTOM)
|
||||
fieldname = "htmlbottom";
|
||||
else
|
||||
throw new IndexOutOfBoundsException("invalid custom block selector");
|
||||
|
||||
Connection conn = null;
|
||||
try
|
||||
{ // get a connection
|
||||
conn = env.getConnection();
|
||||
Statement stmt = conn.createStatement();
|
||||
|
||||
// build the right SQL command
|
||||
StringBuffer sql = null;
|
||||
if (has_custom)
|
||||
{ // build an UPDATE command
|
||||
sql = new StringBuffer("UPDATE confcustom SET ");
|
||||
sql.append(fieldname).append(" = ").append(SQLUtil.encodeStringArg(data)).append(" WHERE confid = ");
|
||||
sql.append(confid).append(';');
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // build an INSERT command
|
||||
sql = new StringBuffer("INSERT INTO confcustom (confid, ");
|
||||
sql.append(fieldname).append(") VALUES (").append(confid).append(", ");
|
||||
sql.append(SQLUtil.encodeStringArg(data)).append(");");
|
||||
|
||||
} // end else
|
||||
|
||||
stmt.executeUpdate(sql.toString()); // update the database
|
||||
|
||||
// save off all the data cached locally
|
||||
has_custom = true;
|
||||
SoftReference old_r = null;
|
||||
if (selector==ConferenceContext.CUST_BLOCK_TOP)
|
||||
{ // replace the top block
|
||||
old_r = cust_top;
|
||||
cust_top = new SoftReference(data);
|
||||
|
||||
} // end if
|
||||
else if (selector==ConferenceContext.CUST_BLOCK_BOTTOM)
|
||||
{ // replace the bottom block
|
||||
old_r = cust_bottom;
|
||||
cust_bottom = new SoftReference(data);
|
||||
|
||||
} // end else if
|
||||
|
||||
if (old_r!=null)
|
||||
old_r.clear(); // dump the old data block before we go
|
||||
|
||||
} // end try
|
||||
catch (SQLException e)
|
||||
{ // database error - this is a DataException
|
||||
logger.error("DB error setting custom block: " + e.getMessage(),e);
|
||||
throw new DataException("unable to set custom block: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
finally
|
||||
{ // make sure the connection is released before we go
|
||||
env.releaseConnection(conn);
|
||||
|
||||
} // end finally
|
||||
|
||||
} // end setCustomBlock
|
||||
|
||||
public synchronized void removeCustomBlocks() throws DataException
|
||||
{
|
||||
Connection conn = null;
|
||||
try
|
||||
{ // get a connection
|
||||
conn = env.getConnection();
|
||||
Statement stmt = conn.createStatement();
|
||||
|
||||
// execute the delete statement
|
||||
stmt.executeUpdate("DELETE FROM confcustom WHERE confid = " + confid + ";");
|
||||
|
||||
// zap the custom data in this object
|
||||
has_custom = false;
|
||||
if (cust_top!=null)
|
||||
cust_top.clear();
|
||||
if (cust_bottom!=null)
|
||||
cust_bottom.clear();
|
||||
cust_top = cust_bottom = null;
|
||||
|
||||
} // end try
|
||||
catch (SQLException e)
|
||||
{ // database error - this is a DataException
|
||||
logger.error("DB error removing custom blocks: " + e.getMessage(),e);
|
||||
throw new DataException("unable to remove custom blocks: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
finally
|
||||
{ // make sure the connection is released before we go
|
||||
env.releaseConnection(conn);
|
||||
|
||||
} // end finally
|
||||
|
||||
} // end removeCustomBlocks
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* External static operations (usable only from within package)
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -1591,6 +1591,40 @@ class ConferenceUserContextImpl implements ConferenceContext, ConferenceBackend
|
|||
|
||||
} // end if
|
||||
|
||||
public String getCustomBlock(int selector) throws DataException
|
||||
{
|
||||
return getConferenceData().getCustomBlock(selector);
|
||||
|
||||
} // end getCustomBlock
|
||||
|
||||
public void setCustomBlock(int selector, String data) throws AccessError, DataException
|
||||
{
|
||||
if (!(getConferenceData().canChangeConference(level)))
|
||||
{ // this user can't modify the conference properties
|
||||
logger.error("setCustomBlock(): user not permitted to change custom blocks");
|
||||
throw new AccessError("You are not permitted to change the custom blocks for this conference.");
|
||||
|
||||
} // end if
|
||||
|
||||
// call down to set the custom block
|
||||
getConferenceData().setCustomBlock(selector,data);
|
||||
|
||||
} // end setCustomBlock
|
||||
|
||||
public void removeCustomBlocks() throws AccessError, DataException
|
||||
{
|
||||
if (!(getConferenceData().canChangeConference(level)))
|
||||
{ // this user can't modify the conference properties
|
||||
logger.error("setCustomBlock(): user not permitted to change custom blocks");
|
||||
throw new AccessError("You are not permitted to change the custom blocks for this conference.");
|
||||
|
||||
} // end if
|
||||
|
||||
// call down to remove the custom blocks
|
||||
getConferenceData().removeCustomBlocks();
|
||||
|
||||
} // end removeCustomBlocks
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface ConferenceBackend
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -115,4 +115,10 @@ public interface ConferenceCommunityContext
|
|||
|
||||
public abstract void setProperties(ConferenceProperties props) throws DataException;
|
||||
|
||||
public abstract String getCustomBlock(int selector) throws DataException;
|
||||
|
||||
public abstract void setCustomBlock(int selector, String data) throws DataException;
|
||||
|
||||
public abstract void removeCustomBlocks() throws DataException;
|
||||
|
||||
} // end interface ConferenceCommunityContext
|
||||
|
|
|
@ -109,4 +109,10 @@ public interface ConferenceData
|
|||
|
||||
public abstract void setProperties(ConferenceProperties props) throws DataException;
|
||||
|
||||
public abstract String getCustomBlock(int selector) throws DataException;
|
||||
|
||||
public abstract void setCustomBlock(int selector, String data) throws DataException;
|
||||
|
||||
public abstract void removeCustomBlocks() throws DataException;
|
||||
|
||||
} // end interface ConferenceData
|
||||
|
|
|
@ -168,6 +168,8 @@ public class ConfOperations extends VeniceServlet
|
|||
* SH = Hide/show conference from sequence manager menu
|
||||
* SS = Change conference sequence from sequence manager menu
|
||||
* T = Create topic (requires conference parameter)
|
||||
* U = Customize Conference Display (requires conference parameter)
|
||||
* UX = Remove all custom blocks (requires conference parameter)
|
||||
* Other = Display list of conferences in community
|
||||
*/
|
||||
|
||||
|
@ -337,8 +339,8 @@ public class ConfOperations extends VeniceServlet
|
|||
String message = "You are about to permanently delete the \"" + conf.getName() + "\" conference! "
|
||||
+ "Are you sure you want to do this?";
|
||||
return new ConfirmBox(request,DELETE_CONFIRM_ATTR,DELETE_CONFIRM_PARAM,"Delete Conference",message,
|
||||
"confops?sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID() + "&cmd=SDEL",
|
||||
on_error);
|
||||
"confops?sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID()
|
||||
+ "&cmd=SDEL",on_error);
|
||||
|
||||
} // end else
|
||||
|
||||
|
@ -495,7 +497,8 @@ public class ConfOperations extends VeniceServlet
|
|||
|
||||
try
|
||||
{ // display the "Conference Reports" display
|
||||
setMyLocation(request,"confops?sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID() + "&cmd=QR");
|
||||
setMyLocation(request,"confops?sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID()
|
||||
+ "&cmd=QR");
|
||||
return new ReportConferenceMenu(comm,conf);
|
||||
|
||||
} // end try
|
||||
|
@ -602,7 +605,7 @@ public class ConfOperations extends VeniceServlet
|
|||
} // end try
|
||||
catch (DataException de)
|
||||
{ // something wrong in the database
|
||||
return new ErrorBox("Database Error","Database error getting topic list " + de.getMessage(),
|
||||
return new ErrorBox("Database Error","Database error getting topic list: " + de.getMessage(),
|
||||
on_error);
|
||||
|
||||
} // end catch
|
||||
|
@ -614,6 +617,61 @@ public class ConfOperations extends VeniceServlet
|
|||
|
||||
} // end if ("I" command)
|
||||
|
||||
if (cmd.equals("U"))
|
||||
{ // "U" = Customize Conference Displays (requires conference parameter)
|
||||
ConferenceContext conf = getConferenceParameter(request,comm,true,on_error);
|
||||
on_error = "confops?sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID() + "&cmd=Q";
|
||||
|
||||
if (!(conf.canChangeConference()))
|
||||
return new ErrorBox("Access Error","You are not permitted to change this conference's customizations.",
|
||||
on_error);
|
||||
|
||||
try
|
||||
{ // return the conference custom blocks view
|
||||
return new ConferenceCustomBlocks(comm,conf);
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // something wrong in the database
|
||||
return new ErrorBox("Database Error","Database error getting custom blocks: " + de.getMessage(),
|
||||
on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if ("U" command)
|
||||
|
||||
if (cmd.equals("UX"))
|
||||
{ // "UX" = Customize Conference Displays (requires conference parameter)
|
||||
ConferenceContext conf = getConferenceParameter(request,comm,true,on_error);
|
||||
on_error = "confops?sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID() + "&cmd=U";
|
||||
|
||||
if (!(conf.canChangeConference()))
|
||||
return new ErrorBox("Access Error","You are not permitted to change this conference's customizations.",
|
||||
on_error);
|
||||
|
||||
try
|
||||
{ // zap the custom blocks
|
||||
conf.removeCustomBlocks();
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // something wrong in the database
|
||||
return new ErrorBox("Database Error","Database error removing custom blocks: " + de.getMessage(),
|
||||
on_error);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // some lack of access is causing problems
|
||||
return new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
// all done - bounce back to the menu
|
||||
throw new RedirectResult("confops?sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID()
|
||||
+ "&cmd=Q");
|
||||
|
||||
} // end if ("UX" command)
|
||||
|
||||
if (cmd.equals("DEL"))
|
||||
{ // "DEL" = "Delete Conference (requires conference parameter)
|
||||
ConferenceContext conf = getConferenceParameter(request,comm,true,on_error);
|
||||
|
@ -1139,6 +1197,51 @@ public class ConfOperations extends VeniceServlet
|
|||
|
||||
} // end if ("I" command)
|
||||
|
||||
if (cmd.equals("U"))
|
||||
{ // "U" command - Customize Conference
|
||||
ConferenceContext conf = getConferenceParameter(request,comm,true,on_error);
|
||||
on_error = "confops?sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID() + "&cmd=U";
|
||||
|
||||
if (!(conf.canChangeConference()))
|
||||
return new ErrorBox("Access Error","You are not permitted to change this conference's customizations.",
|
||||
on_error);
|
||||
|
||||
if (isImageButtonClicked(request,"cancel")) // cancel - bounce back to the menu
|
||||
throw new RedirectResult("confops?sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID()
|
||||
+ "&cmd=Q");
|
||||
|
||||
if (isImageButtonClicked(request,"update"))
|
||||
{ // OK, actually update the operation
|
||||
try
|
||||
{ // reset the custom blocks
|
||||
conf.setCustomBlock(ConferenceContext.CUST_BLOCK_TOP,request.getParameter("tx"));
|
||||
conf.setCustomBlock(ConferenceContext.CUST_BLOCK_BOTTOM,request.getParameter("bx"));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // something wrong in the database
|
||||
return new ErrorBox("Database Error","Database error setting custom blocks: " + de.getMessage(),
|
||||
on_error);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // some lack of access is causing problems
|
||||
return new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
// all done - bounce back to the menu
|
||||
throw new RedirectResult("confops?sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID()
|
||||
+ "&cmd=Q");
|
||||
|
||||
} // end if
|
||||
|
||||
// we don't know what button was pressed
|
||||
logger.error("no known button click on ConfOperations.doPost, cmd=U");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed",on_error);
|
||||
|
||||
} // end if ("U" command)
|
||||
|
||||
// unrecognized command!
|
||||
logger.error("invalid command to ConfOperations.doPost: " + cmd);
|
||||
return new ErrorBox("Internal Error","Invalid command to ConfOperations.doPost",on_error);
|
||||
|
|
|
@ -0,0 +1,150 @@
|
|||
/*
|
||||
* 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@silcom.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
package com.silverwrist.venice.servlets.format;
|
||||
|
||||
import java.util.*;
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.*;
|
||||
import com.silverwrist.util.StringUtil;
|
||||
import com.silverwrist.venice.core.*;
|
||||
import com.silverwrist.venice.except.*;
|
||||
|
||||
public class ConferenceCustomBlocks implements JSPRender
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Static data members
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
// Attribute name for request attribute
|
||||
protected static final String ATTR_NAME = "com.silverwrist.venice.content.ConferenceCustomBlocks";
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private CommunityContext comm; // the community we're in
|
||||
private ConferenceContext conf; // the conference being diddled with
|
||||
private String top_custom; // the top custom block
|
||||
private String bottom_custom; // the bottom custom block
|
||||
private String locator = null; // locator string
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public ConferenceCustomBlocks(CommunityContext comm, ConferenceContext conf) throws DataException
|
||||
{
|
||||
this.comm = comm;
|
||||
this.conf = conf;
|
||||
this.top_custom = conf.getCustomBlock(ConferenceContext.CUST_BLOCK_TOP);
|
||||
this.bottom_custom = conf.getCustomBlock(ConferenceContext.CUST_BLOCK_BOTTOM);
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* External static functions
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public static ConferenceCustomBlocks retrieve(ServletRequest request)
|
||||
{
|
||||
return (ConferenceCustomBlocks)(request.getAttribute(ATTR_NAME));
|
||||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Customize Conference: " + conf.getName();
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
public String getPageQID()
|
||||
{
|
||||
return null;
|
||||
|
||||
} // end getPageQID
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public void store(ServletRequest request)
|
||||
{
|
||||
request.setAttribute(ATTR_NAME,this);
|
||||
|
||||
} // end store
|
||||
|
||||
public String getTargetJSPName()
|
||||
{
|
||||
return "conf_custom.jsp";
|
||||
|
||||
} // end getTargetJSPName
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* External operations
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public final int getCommunityID()
|
||||
{
|
||||
return comm.getCommunityID();
|
||||
|
||||
} // end getCommunityID
|
||||
|
||||
public final int getConferenceID()
|
||||
{
|
||||
return conf.getConfID();
|
||||
|
||||
} // end getConferenceID
|
||||
|
||||
public final String getConferenceName()
|
||||
{
|
||||
return conf.getName();
|
||||
|
||||
} // end getConferenceName
|
||||
|
||||
public final String getLocator()
|
||||
{
|
||||
if (locator==null)
|
||||
locator = "sig=" + comm.getCommunityID() + "&conf=" + conf.getConfID();
|
||||
return locator;
|
||||
|
||||
} // end getLocator
|
||||
|
||||
public final String getTopCustomBlock()
|
||||
{
|
||||
return (top_custom==null) ? "" : StringUtil.encodeHTML(top_custom);
|
||||
|
||||
} // end getTopCustomBlock
|
||||
|
||||
public final String getBottomCustomBlock()
|
||||
{
|
||||
return (bottom_custom==null) ? "" : StringUtil.encodeHTML(bottom_custom);
|
||||
|
||||
} // end getBottomCustomBlock
|
||||
|
||||
} // end class ConferenceCustomBlocks
|
|
@ -17,6 +17,8 @@
|
|||
*/
|
||||
package com.silverwrist.venice.servlets.format;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.util.*;
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.*;
|
||||
|
@ -45,6 +47,8 @@ public class TopicListing implements JSPRender
|
|||
private List topic_list; // the topic list
|
||||
private TopicVisitOrder visit_order; // indicates order in which topics are visited
|
||||
private String qid; // "quick ID" for this page
|
||||
private String top_custom; // top custom HTML block
|
||||
private String bottom_custom; // bottom custom HTML block
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
|
@ -62,6 +66,8 @@ public class TopicListing implements JSPRender
|
|||
this.visit_order = TopicVisitOrder.initialize(request.getSession(true),conf.getConfID(),this.topic_list);
|
||||
List aliases = conf.getAliases();
|
||||
this.qid = "go/" + comm.getAlias() + "!" + (String)(aliases.get(0));
|
||||
this.top_custom = conf.getCustomBlock(ConferenceContext.CUST_BLOCK_TOP);
|
||||
this.bottom_custom = conf.getCustomBlock(ConferenceContext.CUST_BLOCK_BOTTOM);
|
||||
|
||||
} // end constructor
|
||||
|
||||
|
@ -115,19 +121,19 @@ public class TopicListing implements JSPRender
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public int getCommunityID()
|
||||
public final int getCommunityID()
|
||||
{
|
||||
return comm.getCommunityID();
|
||||
|
||||
} // end getCommunityID
|
||||
|
||||
public int getConfID()
|
||||
public final int getConfID()
|
||||
{
|
||||
return conf.getConfID();
|
||||
|
||||
} // end getConfID
|
||||
|
||||
public String getLocator()
|
||||
public final String getLocator()
|
||||
{
|
||||
StringBuffer buf = new StringBuffer("sig=");
|
||||
buf.append(comm.getCommunityID()).append("&conf=").append(conf.getConfID());
|
||||
|
@ -135,19 +141,19 @@ public class TopicListing implements JSPRender
|
|||
|
||||
} // end getLocator
|
||||
|
||||
public String getConfName()
|
||||
public final String getConfName()
|
||||
{
|
||||
return conf.getName();
|
||||
|
||||
} // end getConfName
|
||||
|
||||
public boolean canDoReadNew()
|
||||
public final boolean canDoReadNew()
|
||||
{
|
||||
return visit_order.isNext();
|
||||
|
||||
} // end canDoReadNew
|
||||
|
||||
public String getNextLocator()
|
||||
public final String getNextLocator()
|
||||
{
|
||||
StringBuffer buf = new StringBuffer("sig=");
|
||||
buf.append(comm.getCommunityID()).append("&conf=").append(conf.getConfID()).append("&top=");
|
||||
|
@ -156,46 +162,60 @@ public class TopicListing implements JSPRender
|
|||
|
||||
} // end getNextLocator
|
||||
|
||||
public boolean canCreateTopic()
|
||||
public final boolean canCreateTopic()
|
||||
{
|
||||
return conf.canCreateTopic();
|
||||
|
||||
} // end canCreateTopic
|
||||
|
||||
public boolean canAddToHotlist()
|
||||
public final boolean canAddToHotlist()
|
||||
{
|
||||
return conf.canAddToHotlist();
|
||||
|
||||
} // end canAddToHotlist
|
||||
|
||||
public boolean anyTopics()
|
||||
public final boolean anyTopics()
|
||||
{
|
||||
return (topic_list.size()>0);
|
||||
|
||||
} // end anyTopics
|
||||
|
||||
public int getViewOption()
|
||||
public final int getViewOption()
|
||||
{
|
||||
return view_opt;
|
||||
|
||||
} // end getViewOption
|
||||
|
||||
public boolean isView(int value)
|
||||
public final boolean isView(int value)
|
||||
{
|
||||
return (view_opt==value);
|
||||
|
||||
} // end isSort
|
||||
|
||||
public boolean isSort(int value)
|
||||
public final boolean isSort(int value)
|
||||
{
|
||||
return (sort_opt==value);
|
||||
|
||||
} // end isSort
|
||||
|
||||
public Iterator getTopicIterator()
|
||||
public final Iterator getTopicIterator()
|
||||
{
|
||||
return topic_list.iterator();
|
||||
|
||||
} // end getTopicIterator
|
||||
|
||||
public final void writeTopCustom(Writer out) throws IOException
|
||||
{
|
||||
if (top_custom!=null)
|
||||
out.write(top_custom);
|
||||
|
||||
} // end writeTopCustom
|
||||
|
||||
public final void writeBottomCustom(Writer out) throws IOException
|
||||
{
|
||||
if (bottom_custom!=null)
|
||||
out.write(bottom_custom);
|
||||
|
||||
} // end writeBottomCustom
|
||||
|
||||
} // end class TopicListing
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
package com.silverwrist.venice.servlets.format;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.io.Writer;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.*;
|
||||
|
@ -59,6 +61,8 @@ public class TopicPosts implements JSPRender
|
|||
private TopicVisitOrder visit_order;
|
||||
private String topic_stem;
|
||||
private String topic_qid;
|
||||
private String top_custom;
|
||||
private String bottom_custom;
|
||||
private String cache_locator = null;
|
||||
private HashSet bozo_uids = new HashSet();
|
||||
private Dimension photo_size = null;
|
||||
|
@ -97,6 +101,8 @@ public class TopicPosts implements JSPRender
|
|||
List aliases = conf.getAliases();
|
||||
topic_stem = (String)(aliases.get(0)) + "." + topic.getTopicNumber() + ".";
|
||||
topic_qid = "go/" + comm.getAlias() + "!" + (String)(aliases.get(0)) + "." + topic.getTopicNumber();
|
||||
top_custom = conf.getCustomBlock(ConferenceContext.CUST_BLOCK_TOP);
|
||||
bottom_custom = conf.getCustomBlock(ConferenceContext.CUST_BLOCK_BOTTOM);
|
||||
|
||||
// build up the list of users IN THIS VIEW that are bozo-filtered
|
||||
HashSet saw_users = new HashSet();
|
||||
|
@ -192,7 +198,7 @@ public class TopicPosts implements JSPRender
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public static String getPosterName(TopicMessageContext msg)
|
||||
public static final String getPosterName(TopicMessageContext msg)
|
||||
{
|
||||
try
|
||||
{ // have to guard agains a DataException here
|
||||
|
@ -207,7 +213,7 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getPosterName
|
||||
|
||||
public static String getMessageBodyText(TopicMessageContext msg)
|
||||
public static final String getMessageBodyText(TopicMessageContext msg)
|
||||
{
|
||||
try
|
||||
{ // have to guard against a DataException here
|
||||
|
@ -222,25 +228,25 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getMessageBodyText
|
||||
|
||||
public int getCommunityID()
|
||||
public final int getCommunityID()
|
||||
{
|
||||
return comm.getCommunityID();
|
||||
|
||||
} // end getCommunityID
|
||||
|
||||
public int getConfID()
|
||||
public final int getConfID()
|
||||
{
|
||||
return conf.getConfID();
|
||||
|
||||
} // end getConfID
|
||||
|
||||
public int getTopicNumber()
|
||||
public final int getTopicNumber()
|
||||
{
|
||||
return topic.getTopicNumber();
|
||||
|
||||
} // end getTopicNumber
|
||||
|
||||
public int getNextTopicNumber()
|
||||
public final int getNextTopicNumber()
|
||||
{
|
||||
if (visit_order!=null)
|
||||
return visit_order.getNext();
|
||||
|
@ -249,7 +255,7 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getNextTopicNumber
|
||||
|
||||
public String getConfLocator()
|
||||
public final String getConfLocator()
|
||||
{
|
||||
StringBuffer buf = new StringBuffer("sig=");
|
||||
buf.append(comm.getCommunityID()).append("&conf=").append(conf.getConfID());
|
||||
|
@ -257,7 +263,7 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getConfLocator
|
||||
|
||||
public String getLocator()
|
||||
public final String getLocator()
|
||||
{
|
||||
if (cache_locator==null)
|
||||
{ // build up the standard locator
|
||||
|
@ -272,7 +278,7 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getLocator
|
||||
|
||||
public String getNextLocator()
|
||||
public final String getNextLocator()
|
||||
{
|
||||
StringBuffer buf = new StringBuffer("sig=");
|
||||
buf.append(comm.getCommunityID()).append("&conf=").append(conf.getConfID());
|
||||
|
@ -282,7 +288,7 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getNextLocator
|
||||
|
||||
public String getRestoreLocator()
|
||||
public final String getRestoreLocator()
|
||||
{
|
||||
StringBuffer buf = new StringBuffer("rtop=");
|
||||
buf.append(topic.getTopicNumber()).append("&rct=").append(unread);
|
||||
|
@ -290,7 +296,7 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getRestoreLocator
|
||||
|
||||
public String getIdentifyingData()
|
||||
public final String getIdentifyingData()
|
||||
{
|
||||
StringBuffer buf = new StringBuffer("Posts ");
|
||||
buf.append(first).append(" through ").append(last).append(" in topic #").append(topic.getTopicID());
|
||||
|
@ -298,37 +304,37 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getIdentifyingData
|
||||
|
||||
public String getTopicName()
|
||||
public final String getTopicName()
|
||||
{
|
||||
return topic.getName();
|
||||
|
||||
} // end getTopicName
|
||||
|
||||
public int getTotalMessages()
|
||||
public final int getTotalMessages()
|
||||
{
|
||||
return topic.getTotalMessages();
|
||||
|
||||
} // end getTotalMessages
|
||||
|
||||
public int getNewMessages()
|
||||
public final int getNewMessages()
|
||||
{
|
||||
return unread;
|
||||
|
||||
} // end getNewMessages
|
||||
|
||||
public Date getLastUpdate()
|
||||
public final Date getLastUpdate()
|
||||
{
|
||||
return topic.getLastUpdateDate();
|
||||
|
||||
} // end getLastUpdate
|
||||
|
||||
public boolean isTopicHidden()
|
||||
public final boolean isTopicHidden()
|
||||
{
|
||||
return topic.isHidden();
|
||||
|
||||
} // end isTopicHidden
|
||||
|
||||
public boolean canDoNextTopic()
|
||||
public final boolean canDoNextTopic()
|
||||
{
|
||||
if (visit_order!=null)
|
||||
return visit_order.isNext();
|
||||
|
@ -337,43 +343,43 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end canDoNextTopic
|
||||
|
||||
public boolean canFreezeTopic()
|
||||
public final boolean canFreezeTopic()
|
||||
{
|
||||
return topic.canFreeze();
|
||||
|
||||
} // end canFreezeTopic
|
||||
|
||||
public boolean isTopicFrozen()
|
||||
public final boolean isTopicFrozen()
|
||||
{
|
||||
return topic.isFrozen();
|
||||
|
||||
} // end isTopicFrozen
|
||||
|
||||
public boolean canArchiveTopic()
|
||||
public final boolean canArchiveTopic()
|
||||
{
|
||||
return topic.canArchive();
|
||||
|
||||
} // end canArchiveTopic
|
||||
|
||||
public boolean isTopicArchived()
|
||||
public final boolean isTopicArchived()
|
||||
{
|
||||
return topic.isArchived();
|
||||
|
||||
} // end isTopicArchived
|
||||
|
||||
public boolean canDeleteTopic()
|
||||
public final boolean canDeleteTopic()
|
||||
{
|
||||
return topic.canDelete();
|
||||
|
||||
} // end canDeleteTopic
|
||||
|
||||
public boolean canScrollUp()
|
||||
public final boolean canScrollUp()
|
||||
{
|
||||
return (first>0);
|
||||
|
||||
} // end canScrollUp
|
||||
|
||||
public String getScrollUpLocator()
|
||||
public final String getScrollUpLocator()
|
||||
{
|
||||
int new_first = first - engine.getNumPostsPerPage();
|
||||
int new_last = first - 1;
|
||||
|
@ -390,13 +396,13 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getScrollUpLocator
|
||||
|
||||
public boolean canScrollDown()
|
||||
public final boolean canScrollDown()
|
||||
{
|
||||
return ((topic.getTotalMessages() - (1 + last))>0);
|
||||
|
||||
} // end canScrollDown
|
||||
|
||||
public String getScrollDownLocator()
|
||||
public final String getScrollDownLocator()
|
||||
{
|
||||
int new_last = last + engine.getNumPostsPerPage();
|
||||
int my_last = topic.getTotalMessages() - 1;
|
||||
|
@ -408,13 +414,13 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getScrollDownLocator
|
||||
|
||||
public boolean canScrollToEnd()
|
||||
public final boolean canScrollToEnd()
|
||||
{
|
||||
return ((topic.getTotalMessages() - (1 + last))>0);
|
||||
|
||||
} // end canScrollToEnd
|
||||
|
||||
public String getScrollToEndLocator()
|
||||
public final String getScrollToEndLocator()
|
||||
{
|
||||
int my_last = topic.getTotalMessages();
|
||||
StringBuffer buf = new StringBuffer("p1=");
|
||||
|
@ -423,25 +429,25 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getScrollToEndLocator
|
||||
|
||||
public Iterator getMessageIterator()
|
||||
public final Iterator getMessageIterator()
|
||||
{
|
||||
return messages.iterator();
|
||||
|
||||
} // end getMessageIterator()
|
||||
|
||||
public boolean emitBreakLinePoint(int msg)
|
||||
public final boolean emitBreakLinePoint(int msg)
|
||||
{
|
||||
return (msg==(topic.getTotalMessages()-unread));
|
||||
|
||||
} // end emitBreakLinePoint
|
||||
|
||||
public boolean showAdvanced()
|
||||
public final boolean showAdvanced()
|
||||
{
|
||||
return show_advanced && (last==first);
|
||||
|
||||
} // end showAdvanced
|
||||
|
||||
public boolean displayPostBox()
|
||||
public final boolean displayPostBox()
|
||||
{
|
||||
boolean flag1 = conf.canPostToConference();
|
||||
boolean flag2 = (topic.isFrozen() ? topic.canFreeze() : true);
|
||||
|
@ -450,25 +456,25 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end displayPostBox
|
||||
|
||||
public String getDefaultPseud()
|
||||
public final String getDefaultPseud()
|
||||
{
|
||||
return conf.getDefaultPseud();
|
||||
|
||||
} // end getDefaultPseud
|
||||
|
||||
public String getMessageReference(TopicMessageContext msg)
|
||||
public final String getMessageReference(TopicMessageContext msg)
|
||||
{
|
||||
return topic_stem + msg.getPostNumber();
|
||||
|
||||
} // end getMessageReference
|
||||
|
||||
public int getNumPostsPerPage()
|
||||
public final int getNumPostsPerPage()
|
||||
{
|
||||
return engine.getNumPostsPerPage();
|
||||
|
||||
} // end getNumPostsPerPage
|
||||
|
||||
public boolean displayAttachmentInNewWindow(TopicMessageContext msg)
|
||||
public final boolean displayAttachmentInNewWindow(TopicMessageContext msg)
|
||||
{
|
||||
if (!(msg.hasAttachment()))
|
||||
return false;
|
||||
|
@ -477,7 +483,7 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end displayAttachmentInNewWindow
|
||||
|
||||
public boolean bozoFilterUser(int uid)
|
||||
public final boolean bozoFilterUser(int uid)
|
||||
{
|
||||
if (no_bozos)
|
||||
return false;
|
||||
|
@ -486,7 +492,7 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end bozoFilterUser
|
||||
|
||||
public boolean showBozoFilteredIndicator(int uid)
|
||||
public final boolean showBozoFilteredIndicator(int uid)
|
||||
{
|
||||
if (no_bozos)
|
||||
return bozo_uids.contains(new Integer(uid));
|
||||
|
@ -495,13 +501,13 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end showBozoFilteredIndicator
|
||||
|
||||
public boolean showFilterButton(int uid)
|
||||
public final boolean showFilterButton(int uid)
|
||||
{
|
||||
return !(bozo_uids.contains(new Integer(uid))) && topic.canSetBozo(uid);
|
||||
|
||||
} // end showFilterButton
|
||||
|
||||
public String getUserPhotoTag(int uid, RenderData rdat)
|
||||
public final String getUserPhotoTag(int uid, RenderData rdat)
|
||||
{
|
||||
if (photo_size==null)
|
||||
return ""; // user photos not enabled
|
||||
|
@ -515,10 +521,24 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end getUserPhotoTag
|
||||
|
||||
public boolean displayPostPictures()
|
||||
public final boolean displayPostPictures()
|
||||
{
|
||||
return (photo_size!=null);
|
||||
|
||||
} // end displayPostPictures
|
||||
|
||||
public final void writeTopCustom(Writer out) throws IOException
|
||||
{
|
||||
if (top_custom!=null)
|
||||
out.write(top_custom);
|
||||
|
||||
} // end writeTopCustom
|
||||
|
||||
public final void writeBottomCustom(Writer out) throws IOException
|
||||
{
|
||||
if (bottom_custom!=null)
|
||||
out.write(bottom_custom);
|
||||
|
||||
} // end writeBottomCustom
|
||||
|
||||
} // end class TopicPosts
|
||||
|
|
69
web/format/conf_custom.jsp
Normal file
69
web/format/conf_custom.jsp
Normal file
|
@ -0,0 +1,69 @@
|
|||
<%--
|
||||
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@silcom.com>,
|
||||
for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
--%>
|
||||
<%@ page import = "java.util.*" %>
|
||||
<%@ page import = "com.silverwrist.util.StringUtil" %>
|
||||
<%@ page import = "com.silverwrist.venice.core.*" %>
|
||||
<%@ page import = "com.silverwrist.venice.servlets.Variables" %>
|
||||
<%@ page import = "com.silverwrist.venice.servlets.format.*" %>
|
||||
<%
|
||||
ConferenceCustomBlocks data = ConferenceCustomBlocks.retrieve(request);
|
||||
Variables.failIfNull(data);
|
||||
RenderData rdat = RenderConfig.createRenderData(application,request,response);
|
||||
%>
|
||||
<% if (rdat.useHTMLComments()) { %><!-- Custom blocks for conference #<%= data.getConferenceID() %> --><% } %>
|
||||
<% rdat.writeContentHeader(out,"Customize Conference:",data.getConferenceName()); %>
|
||||
|
||||
<FORM METHOD="POST" ACTION="<%= rdat.getEncodedServletPath("confops") %>"><DIV CLASS="content">
|
||||
<INPUT TYPE="HIDDEN" NAME="sig" VALUE="<%= data.getCommunityID() %>">
|
||||
<INPUT TYPE="HIDDEN" NAME="conf" VALUE="<%= data.getConferenceID() %>">
|
||||
<INPUT TYPE="HIDDEN" NAME="cmd" VALUE="U">
|
||||
<TABLE BORDER=0 CELLPADDING=0>
|
||||
<TR VALIGN=MIDDLE>
|
||||
<TD ALIGN=LEFT CLASS="content" COLSPAN=2><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>
|
||||
Custom HTML block to appear at top of Topic List/Posts pages:
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR VALIGN=MIDDLE>
|
||||
<TD ALIGN=LEFT CLASS="cinput" COLSPAN=2>
|
||||
<TEXTAREA NAME="tx" WRAP=HARD ROWS=7 COLS=80><%= data.getTopCustomBlock() %></TEXTAREA>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR VALIGN=MIDDLE>
|
||||
<TD ALIGN=LEFT CLASS="content" COLSPAN=2><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>
|
||||
Custom HTML block to appear at bottom of Topic List/Posts pages:
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR VALIGN=MIDDLE>
|
||||
<TD ALIGN=LEFT CLASS="cinput" COLSPAN=2>
|
||||
<TEXTAREA NAME="bx" WRAP=HARD ROWS=7 COLS=80><%= data.getBottomCustomBlock() %></TEXTAREA>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR VALIGN=MIDDLE>
|
||||
<TD ALIGN=LEFT CLASS="content">
|
||||
<INPUT TYPE="IMAGE" SRC="<%= rdat.getFullImagePath("bn_update.gif") %>" NAME="update"
|
||||
ALT="Update" WIDTH=80 HEIGHT=24 BORDER=0>
|
||||
<INPUT TYPE="IMAGE" SRC="<%= rdat.getFullImagePath("bn_cancel.gif") %>" NAME="cancel"
|
||||
ALT="Cancel" WIDTH=80 HEIGHT=24 BORDER=0>
|
||||
</TD>
|
||||
<TD ALIGN=RIGHT CLASS="content">
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?cmd=UX&" + data.getLocator()) %>"><IMG
|
||||
SRC="<%= rdat.getFullImagePath("bn_remove.gif") %>" ALT="Remove" WIDTH=80 HEIGHT=24 BORDER=0></A>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV></FORM>
|
|
@ -73,6 +73,8 @@
|
|||
Conference Aliases</A><P>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?" + data.getLocator() + "&cmd=M") %>">Manage
|
||||
Conference Members</A><P>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?" + data.getLocator() + "&cmd=U") %>">Customize
|
||||
Conference Appearance</A><P>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?" + data.getLocator() + "&cmd=QR") %>">Conference
|
||||
Activity Reports</A><P>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?" + data.getLocator() + "&cmd=I") %>">Conference
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
</B></FONT></SPAN>
|
||||
<HR ALIGN=LEFT SIZE=2 WIDTH="90%" NOSHADE>
|
||||
|
||||
<% data.writeTopCustom(out); %>
|
||||
<TABLE BORDER=0 WIDTH="100%" CELLPADDING=0 CELLSPACING=0>
|
||||
<TR VALIGN=BOTTOM>
|
||||
<TD NOWRAP ALIGN=LEFT COLSPAN=2 CLASS="content">
|
||||
|
@ -383,3 +384,4 @@
|
|||
<DIV ALIGN=CENTER CLASS="content"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %><B>This is a
|
||||
<EM>Frozen</EM> Topic</B></DIV>
|
||||
<% } // end if %>
|
||||
<% data.writeBottomCustom(out); %>
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
%>
|
||||
<% if (rdat.useHTMLComments()) { %><!-- Topic list for conf #<%= data.getConfID() %> --><% } %>
|
||||
<% rdat.writeContentHeader(out,"Topics in " + data.getConfName(),null); %>
|
||||
|
||||
<% data.writeTopCustom(out); %>
|
||||
<%= stdfont %>
|
||||
<DIV ALIGN="LEFT" CLASS="content">
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?sig=" + data.getCommunityID()) %>"><IMG
|
||||
|
@ -191,3 +193,4 @@
|
|||
<B>]</B>
|
||||
</DIV>
|
||||
</FONT>
|
||||
<% data.writeBottomCustom(out); %>
|
||||
|
|
Loading…
Reference in New Issue
Block a user