partial implementation of conference management; rewrote the whole servlets
layer to eliminate duplicate code and make error checking more efficient (we now use a system that relies on Throwables to do interesting things)
This commit is contained in:
parent
a51fa644b7
commit
f706cdaf5f
3
TODO
3
TODO
|
@ -6,7 +6,8 @@ Lots!
|
|||
|
||||
- Should we provide the sysadmin the ability to disable SIG creation for
|
||||
non-admin users? Maybe there needs to be a "global" set of levels that
|
||||
aren't hardcoded. Where do they get stored? The database?
|
||||
aren't hardcoded. Where do they get stored? The database? (Maybe the
|
||||
nice shiny new "globals" table?)
|
||||
|
||||
- There's no system admin functionality AT ALL. We need to have this stuff
|
||||
before we go live. (It plugs into the Administrative SIG features.)
|
||||
|
|
|
@ -117,4 +117,6 @@ public interface ConferenceContext
|
|||
|
||||
public abstract HTMLChecker getNewTopicPreviewChecker();
|
||||
|
||||
public abstract void fixSeen() throws DataException;
|
||||
|
||||
} // end interface ConferenceContext
|
||||
|
|
|
@ -74,6 +74,48 @@ class ConferenceUserContextImpl implements ConferenceContext, ConferenceBackend
|
|||
|
||||
} // end class ConfCache
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Internal class used in the implementation of fixSeen()
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static class FixSeenHelper
|
||||
{
|
||||
private int topicid;
|
||||
private int top_message;
|
||||
private boolean do_insert;
|
||||
|
||||
public FixSeenHelper(int topicid, int top_message, boolean do_insert)
|
||||
{
|
||||
this.topicid = topicid;
|
||||
this.top_message = top_message;
|
||||
this.do_insert = do_insert;
|
||||
|
||||
} // end constructor
|
||||
|
||||
public void doFix(Statement stmt, int uid) throws SQLException
|
||||
{
|
||||
StringBuffer sql = new StringBuffer();
|
||||
if (do_insert)
|
||||
{ // construct an SQL INSERT statement
|
||||
sql.append("INSERT INTO topicsettings (topicid, uid, last_message) VALUES (").append(topicid);
|
||||
sql.append(", ").append(uid).append(", ").append(top_message).append(");");
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // construct an SQL UPDATE statement
|
||||
sql.append("UPDATE topicsettings SET last_message = ").append(top_message).append(" WHERE topicid = ");
|
||||
sql.append(topicid).append(" AND uid = ").append(uid).append(';');
|
||||
|
||||
} // end else
|
||||
|
||||
// now execute the update
|
||||
stmt.executeUpdate(sql.toString());
|
||||
|
||||
} // end doFix
|
||||
|
||||
} // end class FixSeenHelper
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Static data members
|
||||
*--------------------------------------------------------------------------------
|
||||
|
@ -908,6 +950,68 @@ class ConferenceUserContextImpl implements ConferenceContext, ConferenceBackend
|
|||
|
||||
} // end getNewTopicPreviewChecker
|
||||
|
||||
public void fixSeen() throws DataException
|
||||
{
|
||||
Connection conn = null;
|
||||
|
||||
try
|
||||
{ // retrieve a connection from the datapool
|
||||
conn = datapool.getConnection();
|
||||
Statement stmt = conn.createStatement();
|
||||
|
||||
// lock the tables that we need
|
||||
stmt.executeUpdate("LOCK TABLES confsettings WRITE, topicsettings WRITE, topics READ;");
|
||||
|
||||
try
|
||||
{ // get the existing topic list and its top messages list
|
||||
StringBuffer sql =
|
||||
new StringBuffer("SELECT topics.topicid, topics.top_message, ISNULL(topicsettings.last_message) "
|
||||
+ "FROM topics LEFT JOIN topicsettings ON topics.topicid = topicsettings.topicid "
|
||||
+ "AND topicsettings.uid = ");
|
||||
sql.append(sig.realUID()).append(" WHERE topics.confid = ").append(confid).append(';');
|
||||
ResultSet rs = stmt.executeQuery(sql.toString());
|
||||
|
||||
// use the results to build up a list of FixSeenHelpers
|
||||
Vector tmp = new Vector();
|
||||
while (rs.next())
|
||||
tmp.add(new FixSeenHelper(rs.getInt(1),rs.getInt(2),rs.getBoolean(3)));
|
||||
|
||||
// now iterate over the list and call doFix on each one
|
||||
Iterator it = tmp.iterator();
|
||||
while (it.hasNext())
|
||||
{ // just hit each one in turn
|
||||
FixSeenHelper fsh = (FixSeenHelper)(it.next());
|
||||
fsh.doFix(stmt,sig.realUID());
|
||||
|
||||
} // end while
|
||||
|
||||
// update our last-read indicator, too
|
||||
touchRead(conn);
|
||||
|
||||
} // end try
|
||||
finally
|
||||
{ // make sure we unlock everything before we go
|
||||
Statement ulk_stmt = conn.createStatement();
|
||||
ulk_stmt.executeUpdate("UNLOCK TABLES;");
|
||||
|
||||
} // end finally
|
||||
|
||||
} // end try
|
||||
catch (SQLException e)
|
||||
{ // this becomes a DataException
|
||||
logger.error("DB error updating user information: " + e.getMessage(),e);
|
||||
throw new DataException("unable to update user information: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
finally
|
||||
{ // make sure we release the connection before we go
|
||||
if (conn!=null)
|
||||
datapool.releaseConnection(conn);
|
||||
|
||||
} // end finally
|
||||
|
||||
} // end fixSeen
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface UserBackend
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -34,6 +34,8 @@ public class Account extends VeniceServlet
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static final String DISPLAY_LOGIN_ATTR = "com.silverwrist.venice.servlets.internal.DisplayLogin";
|
||||
|
||||
private static Category logger = Category.getInstance(Account.class.getName());
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
|
@ -41,6 +43,12 @@ public class Account extends VeniceServlet
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private void setDisplayLogins(ServletRequest request)
|
||||
{
|
||||
request.setAttribute(DISPLAY_LOGIN_ATTR,new Integer(0));
|
||||
|
||||
} // end setDisplayLogins
|
||||
|
||||
private NewAccountDialog makeNewAccountDialog() throws ServletException
|
||||
{
|
||||
final String desired_name = "NewAccountDialog";
|
||||
|
@ -122,186 +130,154 @@ public class Account extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
UserContext user = getUserContext(request);
|
||||
String page_title = null;
|
||||
ContentRender content = null;
|
||||
boolean display_login = false;
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected String getMyLocation(HttpServletRequest request, VeniceEngine engine, UserContext user,
|
||||
RenderData rdat)
|
||||
{
|
||||
if (request.getAttribute(DISPLAY_LOGIN_ATTR)!=null)
|
||||
return "account?cmd=" + getStandardCommandParam(request);
|
||||
else
|
||||
return null;
|
||||
|
||||
} // end getMyLocation
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
String tgt = request.getParameter("tgt"); // target location
|
||||
if (tgt==null)
|
||||
tgt = "top"; // go back to the Top screen if nothing else
|
||||
String cmd = request.getParameter("cmd"); // command parameter
|
||||
String cmd = getStandardCommandParam(request);
|
||||
|
||||
if (cmd.equals("L"))
|
||||
{ // "L" = Log in/out
|
||||
{ // "L" = Log In/Out
|
||||
if (user.isLoggedIn())
|
||||
{ // log the user out and send 'em back to the "top" page
|
||||
{ // this is a Logout command
|
||||
clearUserContext(request);
|
||||
// TODO: here is where the persistent cookie gets nuked, if it does...
|
||||
rdat.redirectTo("top");
|
||||
return;
|
||||
throw new RedirectResult("top"); // take 'em back to the "top" page
|
||||
|
||||
} // end if (logging out)
|
||||
else
|
||||
{ // display the Login page
|
||||
LoginDialog dlg = makeLoginDialog();
|
||||
dlg.setupNew(tgt);
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
} // end if
|
||||
|
||||
} // end else
|
||||
// this is a Login command - display the Login page
|
||||
LoginDialog dlg = makeLoginDialog();
|
||||
dlg.setupNew(tgt);
|
||||
return dlg;
|
||||
|
||||
} // end if ("L" command)
|
||||
else if (cmd.equals("C"))
|
||||
|
||||
if (cmd.equals("C"))
|
||||
{ // "C" = create new account
|
||||
if (user.isLoggedIn())
|
||||
{ // you can't create a new account while logged in on an existing one!
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(page_title,"You cannot create a new account while logged in on "
|
||||
+ "an existing one. You must log out first.",tgt);
|
||||
if (user.isLoggedIn()) // you can't create a new account while logged in on an existing one!
|
||||
return new ErrorBox("Error","You cannot create a new account while logged in on an existing "
|
||||
+ "one. You must log out first.",tgt);
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // display the "Create Account" page
|
||||
NewAccountDialog dlg = makeNewAccountDialog();
|
||||
dlg.setEngine(getVeniceEngine());
|
||||
page_title = dlg.getTitle();
|
||||
dlg.setTarget(tgt);
|
||||
dlg.setFieldValue("country","US");
|
||||
content = dlg;
|
||||
|
||||
} // end else
|
||||
// display the "Create Account" dialog
|
||||
NewAccountDialog dlg = makeNewAccountDialog();
|
||||
dlg.setEngine(engine);
|
||||
dlg.setTarget(tgt);
|
||||
dlg.setFieldValue("country","US");
|
||||
return dlg;
|
||||
|
||||
} // end if ("C" command)
|
||||
else if (cmd.equals("P"))
|
||||
|
||||
if (cmd.equals("P"))
|
||||
{ // "P" = user profile
|
||||
if (user.isLoggedIn())
|
||||
{ // display the User Profile page
|
||||
EditProfileDialog dlg = makeEditProfileDialog();
|
||||
try
|
||||
{ // load the profile information
|
||||
dlg.setupDialog(user,tgt);
|
||||
if (!(user.isLoggedIn())) // you have to be logged in for this one!
|
||||
return new ErrorBox("Error","You must log in before you can modify the profile "
|
||||
+ "on your account.",tgt);
|
||||
|
||||
// set up the Edit Profile dialog
|
||||
EditProfileDialog dlg = makeEditProfileDialog();
|
||||
try
|
||||
{ /// set up the profile information for the dialog
|
||||
dlg.setupDialog(user,tgt);
|
||||
|
||||
// prepare for display
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
} // end try
|
||||
catch (DataException e)
|
||||
{ // unable to load the contact info for the profile
|
||||
return new ErrorBox("Database Error","Database error retrieving profile: " + e.getMessage(),tgt);
|
||||
|
||||
} // end try
|
||||
catch (DataException e)
|
||||
{ // we couldn't load the contact info for the profile
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error retrieving profile: " + e.getMessage(),tgt);
|
||||
} // end catch
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // you have to be logged in for this one!
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(page_title,"You must log in before you can modify the profile "
|
||||
+ "on your account.",tgt);
|
||||
|
||||
} // end else
|
||||
return dlg; // display dialog
|
||||
|
||||
} // end if ("P" command)
|
||||
else if (cmd.equals("V"))
|
||||
|
||||
if (cmd.equals("V"))
|
||||
{ // "V" = verify email address
|
||||
display_login = true;
|
||||
|
||||
if (user.isLoggedIn())
|
||||
{ // display the Verify E-mail Address page
|
||||
VerifyEmailDialog dlg = makeVerifyEmailDialog();
|
||||
page_title = dlg.getTitle();
|
||||
dlg.setTarget(tgt);
|
||||
content = dlg;
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // you have to be logged in for this one!
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(page_title,"You must log in before you can verify your account's "
|
||||
setDisplayLogins(request);
|
||||
if (!(user.isLoggedIn())) // you have to be logged in for this one!
|
||||
return new ErrorBox("Error","You must log in before you can verify your account's "
|
||||
+ "email address.",tgt);
|
||||
|
||||
} // end else
|
||||
// display the "verify email" dialog
|
||||
VerifyEmailDialog dlg = makeVerifyEmailDialog();
|
||||
dlg.setTarget(tgt);
|
||||
return dlg;
|
||||
|
||||
} // end else if ("V" command)
|
||||
else
|
||||
{ // unknown command
|
||||
page_title = "Internal Error";
|
||||
logger.error("invalid command to Account.doGet: " + cmd);
|
||||
content = new ErrorBox(page_title,"Invalid command to Account.doGet",tgt);
|
||||
} // end if ("V" command)
|
||||
|
||||
} // end else
|
||||
// command not found!
|
||||
logger.error("invalid command to Account.doGet: " + cmd);
|
||||
return new ErrorBox("Internal Error","Invalid command to Account.doGet",tgt);
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"account?cmd=" + cmd,content);
|
||||
basedat.displayLoginLinks(display_login);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end doGet
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
UserContext user = getUserContext(request);
|
||||
String page_title = null;
|
||||
ContentRender content = null;
|
||||
boolean display_login = false;
|
||||
|
||||
changeMenuTop(request); // this is "top" menus
|
||||
String tgt = request.getParameter("tgt"); // target location
|
||||
if (tgt==null)
|
||||
tgt = "top"; // go back to Top screen if nothing else
|
||||
String cmd = request.getParameter("cmd"); // command parameter
|
||||
tgt = "top"; // go back to the Top screen if nothing else
|
||||
String cmd = getStandardCommandParam(request);
|
||||
|
||||
if (cmd.equals("L"))
|
||||
{ // log the user in
|
||||
{ // "L" = login the user
|
||||
LoginDialog dlg = makeLoginDialog();
|
||||
|
||||
if (dlg.isButtonClicked(request,"cancel"))
|
||||
{ // go back where we came from - we decided not to log in anyhoo
|
||||
rdat.redirectTo(tgt);
|
||||
return;
|
||||
|
||||
} // end if (canceled)
|
||||
throw new RedirectResult(tgt); // we decided not to log in - go back where we came from
|
||||
|
||||
if (dlg.isButtonClicked(request,"remind"))
|
||||
{ // this will email a password reminder to the owner's account
|
||||
dlg.loadValues(request); // load the dialog values
|
||||
|
||||
try
|
||||
{ // send the password reminder
|
||||
getVeniceEngine().sendPasswordReminder(dlg.getFieldValue("user"));
|
||||
engine.sendPasswordReminder(dlg.getFieldValue("user"));
|
||||
|
||||
// recycle and redisplay the dialog box
|
||||
dlg.resetOnError("Password reminder has been sent to your e-mail address.");
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
|
||||
} // end try
|
||||
catch (DataException e1)
|
||||
{ // this indicates a database error - display an ErrorBox
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding user: " + e1.getMessage(),tgt);
|
||||
catch (DataException de)
|
||||
{ // there was a database error finding your email address
|
||||
return new ErrorBox("Database Error","Database error finding user: " + de.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError e2)
|
||||
catch (AccessError ae)
|
||||
{ // this indicates a problem with the user account or password
|
||||
page_title = "User E-mail Address Not Found";
|
||||
content = new ErrorBox(page_title,e2.getMessage(),tgt);
|
||||
return new ErrorBox("User E-mail Address Not Found",ae.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
catch (EmailException ee)
|
||||
{ // error sending the confirmation email
|
||||
page_title = "E-mail Error";
|
||||
content = new ErrorBox(page_title,"E-mail error sending reminder: " + ee.getMessage(),tgt);
|
||||
return new ErrorBox("E-mail Error","E-mail error sending reminder: " + ee.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if ("reminder" button clicked)
|
||||
else if (dlg.isButtonClicked(request,"login"))
|
||||
return dlg; // redisplay the dialog
|
||||
|
||||
} // end if ("remind" button clicked)
|
||||
|
||||
if (dlg.isButtonClicked(request,"login"))
|
||||
{ // we actually want to try and log in! imagine that!
|
||||
dlg.loadValues(request); // load the values
|
||||
|
||||
|
@ -313,123 +289,96 @@ public class Account extends VeniceServlet
|
|||
|
||||
// assuming it worked OK, redirect them back where they came from
|
||||
// (or to the verification page if they need to go there)
|
||||
String url;
|
||||
if (user.isEmailVerified())
|
||||
url = tgt;
|
||||
else // they haven't verified yet - remind them to do so
|
||||
url = "account?cmd=V&tgt=" + URLEncoder.encode(tgt);
|
||||
|
||||
clearMenu(request);
|
||||
rdat.redirectTo(url);
|
||||
return;
|
||||
if (user.isEmailVerified())
|
||||
throw new RedirectResult(tgt);
|
||||
else // they haven't verified yet - remind them to do so
|
||||
throw new RedirectResult("account?cmd=V&tgt=" + URLEncoder.encode(tgt));
|
||||
|
||||
} // end try
|
||||
catch (DataException e1)
|
||||
catch (DataException de)
|
||||
{ // this indicates a database error - display an ErrorBox
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error logging in: " + e1.getMessage(),tgt);
|
||||
return new ErrorBox("Database Error","Database error logging in: " + de.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError e2)
|
||||
catch (AccessError ae)
|
||||
{ // this indicates a problem with the user account or password
|
||||
dlg.resetOnError(e2.getMessage());
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
dlg.resetOnError(ae.getMessage());
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if ("login" button clicked)
|
||||
else
|
||||
{ // the button must be wrong!
|
||||
page_title = "Internal Error";
|
||||
logger.error("no known button click on Account.doPost, cmd=L");
|
||||
content = new ErrorBox(page_title,"Unknown command button pressed",tgt);
|
||||
return dlg; // go back and redisplay the dialog
|
||||
|
||||
} // end else
|
||||
} // end if ("login" button clicked)
|
||||
|
||||
// the button must be wrong!
|
||||
logger.error("no known button click on Account.doPost, cmd=L");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed",tgt);
|
||||
|
||||
} // end if ("L" command)
|
||||
else if (cmd.equals("C"))
|
||||
{ // C = Create New Account
|
||||
|
||||
if (cmd.equals("C"))
|
||||
{ // "C" = Create New Account
|
||||
NewAccountDialog dlg = makeNewAccountDialog();
|
||||
dlg.setEngine(getVeniceEngine());
|
||||
dlg.setEngine(engine);
|
||||
|
||||
if (dlg.isButtonClicked(request,"cancel"))
|
||||
{ // go back where we came from - we decided not to create the account anyhoo
|
||||
String url = response.encodeRedirectURL(rdat.getFullServletPath(tgt));
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
|
||||
} // end if ("cancel" button clicked)
|
||||
throw new RedirectResult(tgt); // we decided not to create account - go back where we came from
|
||||
|
||||
if (dlg.isButtonClicked(request,"create"))
|
||||
{ // OK, actually want to create the account!
|
||||
dlg.loadValues(request); // load field values
|
||||
|
||||
|
||||
try
|
||||
{ // attempt to create the account
|
||||
UserContext uc = dlg.doDialog(request);
|
||||
putUserContext(request,uc); // effectively logging in the new user
|
||||
user = uc;
|
||||
|
||||
// now jump to the Verify page
|
||||
String partial = "account?cmd=V&tgt=" + URLEncoder.encode(tgt);
|
||||
String url = response.encodeRedirectURL(rdat.getFullServletPath(partial));
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
throw new RedirectResult("account?cmd=V&tgt=" + URLEncoder.encode(tgt));
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // unable to validate some of the data in the form
|
||||
dlg.resetOnError(ve.getMessage() + " Please try again.");
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // data error in setting up account
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error creating account: " + de.getMessage(),tgt);
|
||||
return new ErrorBox("Database Error","Database error creating account: " + de.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // access error in setting up the account
|
||||
dlg.resetOnError(ae.getMessage());
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
|
||||
} // end catch
|
||||
catch (EmailException ee)
|
||||
{ // error sending the confirmation email
|
||||
page_title = "E-mail Error";
|
||||
content = new ErrorBox(page_title,"E-mail error creating account: " + ee.getMessage(),tgt);
|
||||
return new ErrorBox("E-mail Error","E-mail error creating account: " + ee.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if ("create" button clicked)
|
||||
else
|
||||
{ // the button must be wrong!
|
||||
page_title = "Internal Error";
|
||||
logger.error("no known button click on Account.doPost, cmd=C");
|
||||
content = new ErrorBox(page_title,"Unknown command button pressed",tgt);
|
||||
return dlg; // redisplay me
|
||||
|
||||
} // end else
|
||||
} // end if ("create" button pressed)
|
||||
|
||||
} // end else if ("C" command)
|
||||
else if (cmd.equals("V"))
|
||||
{ // V = Verify E-mail Address
|
||||
display_login = true;
|
||||
// the button must be wrong!
|
||||
logger.error("no known button click on Account.doPost, cmd=C");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed",tgt);
|
||||
|
||||
} // end if ("C" command)
|
||||
|
||||
if (cmd.equals("V"))
|
||||
{ // "V" = Verify E-mail Address
|
||||
setDisplayLogins(request);
|
||||
VerifyEmailDialog dlg = makeVerifyEmailDialog();
|
||||
|
||||
if (dlg.isButtonClicked(request,"cancel"))
|
||||
{ // go back to our desired location
|
||||
String url = response.encodeRedirectURL(rdat.getFullServletPath(tgt));
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
|
||||
} // end if ("cancel" button clicked)
|
||||
throw new RedirectResult(tgt); // we decided not to bother - go back where we came from
|
||||
|
||||
if (dlg.isButtonClicked(request,"again"))
|
||||
{ // do a "send again"
|
||||
{ // send the confirmation message again
|
||||
try
|
||||
{ // resend the email confirmation
|
||||
user.resendEmailConfirmation();
|
||||
|
@ -437,25 +386,24 @@ public class Account extends VeniceServlet
|
|||
// now force the form to be redisplayed
|
||||
dlg.clearAllFields();
|
||||
dlg.setTarget(tgt);
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // data error in setting up account
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error sending confirmation: " + de.getMessage(),tgt);
|
||||
{ // database error resending confirmation
|
||||
return new ErrorBox("Database Error","Database error sending confirmation: " + de.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
catch (EmailException ee)
|
||||
{ // error sending the confirmation email
|
||||
page_title = "E-mail Error";
|
||||
content = new ErrorBox(page_title,"E-mail error sending confirmation: " + ee.getMessage(),tgt);
|
||||
return new ErrorBox("E-mail Error","E-mail error sending confirmation: " + ee.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if ("again" clicked)
|
||||
else if (dlg.isButtonClicked(request,"ok"))
|
||||
return dlg; // redisplay the dialog
|
||||
|
||||
} // end if ("again" button clicked)
|
||||
|
||||
if (dlg.isButtonClicked(request,"ok"))
|
||||
{ // try to verify the confirmation number
|
||||
dlg.loadValues(request); // load field values
|
||||
|
||||
|
@ -465,119 +413,85 @@ public class Account extends VeniceServlet
|
|||
user.confirmEmail(dlg.getConfirmationNumber());
|
||||
|
||||
// go back to our desired location
|
||||
String url = response.encodeRedirectURL(rdat.getFullServletPath(tgt));
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
throw new RedirectResult(tgt);
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // there was a validation error...
|
||||
dlg.resetOnError(ve.getMessage() + " Please try again.");
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // data error in setting up account
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error verifying email: " + de.getMessage(),tgt);
|
||||
{ // data error in confirming account
|
||||
return new ErrorBox("Database Error","Database error verifying email: " + de.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // access error in setting up the account
|
||||
{ // invalid confirmation number, perhaps?
|
||||
dlg.resetOnError(ae.getMessage());
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if ("OK" clicked)
|
||||
else
|
||||
{ // the button must be wrong!
|
||||
page_title = "Internal Error";
|
||||
logger.error("no known button click on Account.doPost, cmd=V");
|
||||
content = new ErrorBox(page_title,"Unknown command button pressed",tgt);
|
||||
return dlg; // redisplay the dialog
|
||||
|
||||
} // end else
|
||||
} // end if ("ok" button clicked)
|
||||
|
||||
} // end else if ("V" command)
|
||||
else if (cmd.equals("P"))
|
||||
{ // P = Edit User Profile
|
||||
display_login = true;
|
||||
// the button must be wrong!
|
||||
logger.error("no known button click on Account.doPost, cmd=V");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed",tgt);
|
||||
|
||||
} // end if ("V" command)
|
||||
|
||||
if (cmd.equals("P"))
|
||||
{ // "P" = Edit User Profile
|
||||
setDisplayLogins(request);
|
||||
EditProfileDialog dlg = makeEditProfileDialog();
|
||||
|
||||
if (dlg.isButtonClicked(request,"cancel"))
|
||||
{ // go back to our desired location
|
||||
String url = response.encodeRedirectURL(rdat.getFullServletPath(tgt));
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
|
||||
} // end if ("cancel" button clicked)
|
||||
throw new RedirectResult(tgt); // we decided not to bother - go back where we came from
|
||||
|
||||
if (dlg.isButtonClicked(request,"update"))
|
||||
{ // we're ready to update the user profile
|
||||
dlg.loadValues(request); // load field values
|
||||
|
||||
try
|
||||
{ // validate the dialog and start setting info
|
||||
String url;
|
||||
if (dlg.doDialog(user))
|
||||
{ // the email address was changed - need to jump to the "Verify" page
|
||||
String partial = "account?cmd=V&tgt=" + URLEncoder.encode(tgt);
|
||||
url = response.encodeRedirectURL(rdat.getFullServletPath(partial));
|
||||
|
||||
} // end if
|
||||
else // just go back where we came from
|
||||
url = response.encodeRedirectURL(rdat.getFullServletPath(tgt));
|
||||
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
{ // validate the dialog and reset profile info
|
||||
if (dlg.doDialog(user)) // need to reconfirm email address
|
||||
throw new RedirectResult("account?cmd=V&tgt=" + URLEncoder.encode(tgt));
|
||||
else
|
||||
throw new RedirectResult(tgt); // just go straight on back
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // there was a validation error...
|
||||
dlg.resetOnError(ve.getMessage() + " Please try again.");
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // data error in setting up account
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error updating profile: " + de.getMessage(),tgt);
|
||||
{ // data error in changing profile
|
||||
return new ErrorBox("Database Error","Database error updating profile: " + de.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
catch (EmailException ee)
|
||||
{ // error sending the confirmation email
|
||||
page_title = "E-mail Error";
|
||||
content = new ErrorBox(page_title,"E-mail error sending confirmation: " + ee.getMessage(),tgt);
|
||||
return new ErrorBox("E-mail Error","E-mail error sending confirmation: " + ee.getMessage(),tgt);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if ("update" button pressed)
|
||||
else
|
||||
{ // the button must be wrong!
|
||||
page_title = "Internal Error";
|
||||
logger.error("no known button click on Account.doPost, cmd=P");
|
||||
content = new ErrorBox(page_title,"Unknown command button pressed",tgt);
|
||||
return dlg; // redisplay dialog
|
||||
|
||||
} // end else
|
||||
} // end if ("update" button clicked)
|
||||
|
||||
} // end else if ("P" command)
|
||||
else
|
||||
{ // unknown command
|
||||
page_title = "Internal Error";
|
||||
logger.error("invalid command to Account.doPost: " + cmd);
|
||||
content = new ErrorBox(page_title,"Invalid command to Account.doPost",tgt);
|
||||
// the button must be wrong!
|
||||
logger.error("no known button click on Account.doPost, cmd=P");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed",tgt);
|
||||
|
||||
} // end else
|
||||
} // end if
|
||||
|
||||
changeMenuTop(request);
|
||||
// unknown command
|
||||
logger.error("invalid command to Account.doPost: " + cmd);
|
||||
return new ErrorBox("Internal Error","Invalid command to Account.doPost",tgt);
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"account?cmd=" + cmd,content);
|
||||
basedat.displayLoginLinks(display_login);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doPost
|
||||
} // end doVenicePost
|
||||
|
||||
} // end class Account
|
||||
|
|
|
@ -22,10 +22,8 @@ import java.util.*;
|
|||
import javax.servlet.*;
|
||||
import javax.servlet.http.*;
|
||||
import org.apache.log4j.*;
|
||||
import com.silverwrist.util.StringUtil;
|
||||
import com.silverwrist.util.ServletMultipartHandler;
|
||||
import com.silverwrist.util.ServletMultipartException;
|
||||
import com.silverwrist.venice.ValidationException;
|
||||
import com.silverwrist.venice.core.*;
|
||||
import com.silverwrist.venice.servlets.format.*;
|
||||
|
||||
|
@ -38,135 +36,6 @@ public class Attachment extends VeniceServlet
|
|||
|
||||
private static Category logger = Category.getInstance(Attachment.class.getName());
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Internal functions
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static SIGContext getSIGParameter(String str, UserContext user)
|
||||
throws ValidationException, DataException
|
||||
{
|
||||
if (str==null)
|
||||
{ // no SIG parameter - bail out now!
|
||||
logger.error("SIG parameter not specified!");
|
||||
throw new ValidationException("No SIG specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a SIGID, and thence to a SIGContext
|
||||
int sigid = Integer.parseInt(str);
|
||||
return user.getSIGContext(sigid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert SIG parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid SIG parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
|
||||
throws ValidationException, DataException
|
||||
{
|
||||
return getSIGParameter(request.getParameter("sig"),user);
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
private static SIGContext getSIGParameter(ServletMultipartHandler mphandler, UserContext user)
|
||||
throws ValidationException, DataException
|
||||
{
|
||||
if (mphandler.isFileParam("sig"))
|
||||
throw new ValidationException("Internal Error: SIG should be a normal param");
|
||||
return getSIGParameter(mphandler.getValue("sig"),user);
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
private static ConferenceContext getConferenceParameter(String str, SIGContext sig)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
if (str==null)
|
||||
{ // no conference parameter - bail out now!
|
||||
logger.error("Conference parameter not specified!");
|
||||
throw new ValidationException("No conference specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a ConfID, and thence to a ConferenceContext
|
||||
int confid = Integer.parseInt(str);
|
||||
return sig.getConferenceContext(confid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert conference parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid conference parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
return getConferenceParameter(request.getParameter("conf"),sig);
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
private static ConferenceContext getConferenceParameter(ServletMultipartHandler mphandler, SIGContext sig)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
if (mphandler.isFileParam("conf"))
|
||||
throw new ValidationException("Internal Error: conference should be a normal param");
|
||||
return getConferenceParameter(mphandler.getValue("conf"),sig);
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
private static TopicMessageContext getMessageParameter(String str, ConferenceContext conf)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
if (str==null)
|
||||
{ // no conference parameter - bail out now!
|
||||
logger.error("Message parameter not specified!");
|
||||
throw new ValidationException("No message specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a postid, and thence to a TopicMessageContext
|
||||
long postid = Long.parseLong(str);
|
||||
return conf.getMessageByPostID(postid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert message parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid message parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getMessageParameter
|
||||
|
||||
private static TopicMessageContext getMessageParameter(ServletRequest request, ConferenceContext conf)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
return getMessageParameter(request.getParameter("msg"),conf);
|
||||
|
||||
} // end getMessageParameter
|
||||
|
||||
private static TopicMessageContext getMessageParameter(ServletMultipartHandler mphandler,
|
||||
ConferenceContext conf)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
if (mphandler.isFileParam("msg"))
|
||||
throw new ValidationException("Internal Error: message should be a normal param");
|
||||
return getMessageParameter(mphandler.getValue("msg"),conf);
|
||||
|
||||
} // end getMessageParameter
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class HttpServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
|
@ -180,248 +49,101 @@ public class Attachment extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
SIGContext sig = null; // SIG context
|
||||
ConferenceContext conf = null; // conference context
|
||||
TopicMessageContext msg = null; // message context
|
||||
// get the SIG
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
changeMenuSIG(request,sig);
|
||||
|
||||
// get the conference
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,"top");
|
||||
|
||||
// get the message we want to use
|
||||
TopicMessageContext msg = getMessageParameter(request,conf,true,"top");
|
||||
|
||||
String type, filename;
|
||||
int length;
|
||||
InputStream data;
|
||||
|
||||
try
|
||||
{ // this outer try is to catch ValidationException
|
||||
try
|
||||
{ // all commands require a SIG parameter
|
||||
sig = getSIGParameter(request,user);
|
||||
changeMenuSIG(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the SIG
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // we got the SIG parameter OK
|
||||
try
|
||||
{ // all commands require a conference parameter
|
||||
conf = getConferenceParameter(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
|
||||
if (content==null)
|
||||
{ // we got the conference parameter OK
|
||||
try
|
||||
{ // now we need a message parameter
|
||||
msg = getMessageParameter(request,conf);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found post #" + String.valueOf(msg.getPostID()));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding message: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
{ // retrieve the information about the attachment
|
||||
type = msg.getAttachmentType();
|
||||
filename = msg.getAttachmentFilename();
|
||||
length = msg.getAttachmentLength();
|
||||
data = msg.getAttachmentData();
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),"top");
|
||||
{ // unable to access the data stream
|
||||
return new ErrorBox("Access Error",ae.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error getting at the data stream from the attachment
|
||||
return new ErrorBox("Database Error","Database error retrieving attachment: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // extract the attachment data from the message and send it out
|
||||
try
|
||||
{ // extract the attachment data and send it out!
|
||||
rdat.sendBinaryData(msg.getAttachmentType(),msg.getAttachmentFilename(),
|
||||
msg.getAttachmentLength(),msg.getAttachmentData());
|
||||
return; // now we're all done!
|
||||
// now we want to send that data back to the user!
|
||||
throw new SendFileResult(type,filename,length,data);
|
||||
|
||||
} // end try
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),"top");
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error retrieving attachment: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
|
||||
// we only get here if there were an error
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"top",content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doGet
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
protected VeniceContent doVenicePost(HttpServletRequest request, ServletMultipartHandler mphandler,
|
||||
VeniceEngine engine, UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
ServletMultipartHandler mphandler = null;
|
||||
String target = "top";
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
SIGContext sig = null; // SIG context
|
||||
ConferenceContext conf = null; // conference context
|
||||
TopicMessageContext msg = null; // message context
|
||||
// Get target URL for the operation
|
||||
if (mphandler.isFileParam("target"))
|
||||
return new ErrorBox(null,"Internal Error: 'target' should be a normal param","top");
|
||||
String target = mphandler.getValue("target");
|
||||
setMyLocation(request,target);
|
||||
|
||||
// also check on file parameter status
|
||||
if (!(mphandler.isFileParam("thefile")))
|
||||
return new ErrorBox(null,"Internal Error: 'thefile' should be a file param",target);
|
||||
|
||||
// get the SIG
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
changeMenuSIG(request,sig);
|
||||
|
||||
// get the conference
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,"top");
|
||||
|
||||
// get the message we want to use
|
||||
TopicMessageContext msg = getMessageParameter(request,conf,true,"top");
|
||||
|
||||
try
|
||||
{ // this outer try is to catch ValidationException
|
||||
mphandler = new ServletMultipartHandler(request);
|
||||
|
||||
if (mphandler.isFileParam("target"))
|
||||
throw new ValidationException("Internal Error: 'target' should be a normal param");
|
||||
target = mphandler.getValue("target");
|
||||
|
||||
try
|
||||
{ // all commands require a SIG parameter
|
||||
sig = getSIGParameter(mphandler,user);
|
||||
changeMenuSIG(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the SIG
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // we got the SIG parameter OK
|
||||
try
|
||||
{ // all commands require a conference parameter
|
||||
conf = getConferenceParameter(mphandler,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
|
||||
if (content==null)
|
||||
{ // we got the conference parameter OK
|
||||
try
|
||||
{ // now we need a message parameter
|
||||
msg = getMessageParameter(mphandler,conf);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found post #" + String.valueOf(msg.getPostID()));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding message: " + de.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
|
||||
// also check on file and target parameter status
|
||||
if (!(mphandler.isFileParam("thefile")))
|
||||
throw new ValidationException("Internal error: 'thefile' should be a file param");
|
||||
|
||||
{ // attach the data to the message!
|
||||
msg.attachData(mphandler.getContentType("thefile"),mphandler.getValue("thefile"),
|
||||
mphandler.getContentSize("thefile"),mphandler.getFileContentStream("thefile"));
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
catch (ServletMultipartException smpe)
|
||||
{ // this is kind of a special case
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(page_title,"Internal Error: " + smpe.getMessage(),target);
|
||||
{ // error processing the file parameter data
|
||||
return new ErrorBox(null,"Internal Error: " + smpe.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // access error posting the attachment data
|
||||
return new ErrorBox("Access Error",ae.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error storing the attachment in the database
|
||||
return new ErrorBox("Database Error","Database error storing attachment: " + de.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // we're ready to get the data and attach it
|
||||
try
|
||||
{ // attach the data to the message!
|
||||
msg.attachData(mphandler.getContentType("thefile"),mphandler.getValue("thefile"),
|
||||
mphandler.getContentSize("thefile"),mphandler.getFileContentStream("thefile"));
|
||||
throw new RedirectResult(target); // get back, get back, get back to where you once belonged
|
||||
|
||||
// go back to where we should have gone before we uploaded the message
|
||||
rdat.redirectTo(target);
|
||||
return;
|
||||
|
||||
} // end try
|
||||
catch (ServletMultipartException smpe)
|
||||
{ // this is kind of a special case
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(page_title,"Internal Error: " + smpe.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error storing attachment: " + de.getMessage(),target);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if (we got all the parameters OK)
|
||||
|
||||
// we only get here if there were an error
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,target,content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doPost
|
||||
} // end doVenicePost
|
||||
|
||||
} // end class Attachment
|
||||
|
|
|
@ -82,82 +82,8 @@ public class ConfDisplay extends VeniceServlet
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
|
||||
throws ValidationException, DataException
|
||||
{
|
||||
String str = request.getParameter("sig");
|
||||
if (str==null)
|
||||
{ // no SIG parameter - bail out now!
|
||||
logger.error("SIG parameter not specified!");
|
||||
throw new ValidationException("No SIG specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a SIGID, and thence to a SIGContext
|
||||
int sigid = Integer.parseInt(str);
|
||||
return user.getSIGContext(sigid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert SIG parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid SIG parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
String str = request.getParameter("conf");
|
||||
if (str==null)
|
||||
{ // no conference parameter - bail out now!
|
||||
logger.error("Conference parameter not specified!");
|
||||
throw new ValidationException("No conference specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a ConfID, and thence to a ConferenceContext
|
||||
int confid = Integer.parseInt(str);
|
||||
return sig.getConferenceContext(confid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert conference parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid conference parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
private static TopicContext getTopicParameter(ServletRequest request, ConferenceContext conf)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
String str = request.getParameter("top");
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
return null; // no topic specified
|
||||
|
||||
try
|
||||
{ // turn the string into a TopicID, and thence to a TopicContext
|
||||
short topicid = Short.parseShort(str);
|
||||
return conf.getTopic(topicid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert topic parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid topic parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getTopicParameter
|
||||
|
||||
private static void getViewSortDefaults(ServletRequest request, int confid, TopicSortHolder tsc)
|
||||
throws ValidationException
|
||||
private static void getViewSortDefaults(ServletRequest request, int confid, TopicSortHolder tsc,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
String str = request.getParameter("view");
|
||||
if (!(StringUtil.isStringEmpty(str)))
|
||||
|
@ -176,7 +102,7 @@ public class ConfDisplay extends VeniceServlet
|
|||
break;
|
||||
|
||||
default:
|
||||
throw new ValidationException("Invalid view parameter.");
|
||||
throw new ErrorBox(null,"Invalid view parameter.",on_error);
|
||||
|
||||
} // end switch
|
||||
|
||||
|
@ -184,7 +110,7 @@ public class ConfDisplay extends VeniceServlet
|
|||
catch (NumberFormatException nfe)
|
||||
{ // failure in parseInt
|
||||
logger.error("Cannot convert view parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid view parameter.");
|
||||
throw new ErrorBox(null,"Invalid view parameter.",on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
|
@ -208,7 +134,7 @@ public class ConfDisplay extends VeniceServlet
|
|||
break;
|
||||
|
||||
default:
|
||||
throw new ValidationException("Invalid sort parameter.");
|
||||
throw new ErrorBox(null,"Invalid sort parameter.",on_error);
|
||||
|
||||
} // end switch
|
||||
|
||||
|
@ -216,7 +142,7 @@ public class ConfDisplay extends VeniceServlet
|
|||
catch (NumberFormatException nfe)
|
||||
{ // failure in parseInt
|
||||
logger.error("Cannot convert sort parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid sort parameter.");
|
||||
throw new ErrorBox(null,"Invalid sort parameter.",on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
|
@ -224,8 +150,8 @@ public class ConfDisplay extends VeniceServlet
|
|||
|
||||
} // end getViewSortDefaults
|
||||
|
||||
private static PostInterval getInterval(VeniceEngine engine, ServletRequest request, TopicContext topic)
|
||||
throws ValidationException
|
||||
private static PostInterval getInterval(VeniceEngine engine, ServletRequest request, TopicContext topic,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
int first, last;
|
||||
|
||||
|
@ -294,7 +220,7 @@ public class ConfDisplay extends VeniceServlet
|
|||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // we could not translate the parameter to a number
|
||||
throw new ValidationException("Message parameter is invalid.");
|
||||
throw new ErrorBox(null,"Message parameter is invalid.",on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
|
@ -312,7 +238,7 @@ public class ConfDisplay extends VeniceServlet
|
|||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // we could not translate the parameter to a number
|
||||
throw new ValidationException("Message parameter is invalid.");
|
||||
throw new ErrorBox(null,"Message parameter is invalid.",on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
|
@ -403,178 +329,94 @@ public class ConfDisplay extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
SIGContext sig = null; // SIG context
|
||||
ConferenceContext conf = null; // conference context
|
||||
TopicContext topic = null; // topic context
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
try
|
||||
{ // this outer try is to catch ValidationException
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
// get the SIG
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
changeMenuSIG(request,sig);
|
||||
|
||||
// get the conference
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,"top");
|
||||
|
||||
// get the topic, if we have it
|
||||
TopicContext topic = getTopicParameter(request,conf,false,"top");
|
||||
|
||||
if (topic!=null)
|
||||
{ // we're handling messages within a single topic
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("MODE: display messages in topic");
|
||||
String on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
|
||||
setMyLocation(request,on_error + "&topic=" + topic.getTopicNumber());
|
||||
|
||||
// if this request is restoring the number of unread posts in another topic, try to do so
|
||||
restorePosts(request,conf);
|
||||
|
||||
// determine what the post interval is we want to display
|
||||
PostInterval piv = getInterval(engine,request,topic,on_error);
|
||||
boolean read_new = !(StringUtil.isStringEmpty(request.getParameter("rnm")));
|
||||
boolean show_adv = !(StringUtil.isStringEmpty(request.getParameter("shac")));
|
||||
|
||||
// Create the post display.
|
||||
TopicPosts tpos = null;
|
||||
try
|
||||
{ // all commands require a SIG parameter
|
||||
sig = getSIGParameter(request,user);
|
||||
changeMenuSIG(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
|
||||
{ // create the display
|
||||
tpos = new TopicPosts(request,engine,sig,conf,topic,piv.getFirst(),piv.getLast(),read_new,show_adv);
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the SIG
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
|
||||
{ // there was a database error retrieving messages
|
||||
return new ErrorBox("Database Error","Database error listing messages: " + de.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we were unable to retrieve the message list
|
||||
return new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // we got the SIG parameter OK
|
||||
try
|
||||
{ // all commands require a conference parameter
|
||||
conf = getConferenceParameter(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),"top");
|
||||
return tpos;
|
||||
|
||||
} // end catch
|
||||
} // end if (messages in a topic)
|
||||
else
|
||||
{ // we're displaying the conference's topic list
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("MODE: display topics in conference");
|
||||
setMyLocation(request,"confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID());
|
||||
String on_error = "confops?sig=" + sig.getSIGID();
|
||||
|
||||
} // end if
|
||||
// get any changes to view or sort options
|
||||
TopicSortHolder opts = TopicSortHolder.retrieve(request.getSession(true));
|
||||
getViewSortDefaults(request,conf.getConfID(),opts,on_error);
|
||||
|
||||
if (content==null)
|
||||
{ // we got the conference parameter OK
|
||||
try
|
||||
{ // there's an optional topic parameter
|
||||
topic = getTopicParameter(request,conf);
|
||||
if (logger.isDebugEnabled())
|
||||
{ // do a little debugging output
|
||||
if (topic!=null)
|
||||
logger.debug("found topic #" + String.valueOf(topic.getTopicID()));
|
||||
else
|
||||
logger.debug("no topic specified");
|
||||
TopicListing tl = null;
|
||||
try
|
||||
{ // create the topic lict
|
||||
tl = new TopicListing(request,sig,conf,opts.getViewOption(conf.getConfID()),
|
||||
opts.getSortOption(conf.getConfID()));
|
||||
|
||||
} // end if
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error retrieving topics
|
||||
return new ErrorBox("Database Error","Database error listing topics: " + de.getMessage(),on_error);
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding topic: " + de.getMessage(),"top");
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we were unable to retrieve the topic list
|
||||
return new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
return tl;
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
} // end else (topics in a conference)
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // OK, let's handle the display now
|
||||
if (topic!=null)
|
||||
{ // we're handling messages within a single topic
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("MODE: display messages in topic");
|
||||
|
||||
// if this request is restoring the number of unread posts in another topic, try to do so
|
||||
restorePosts(request,conf);
|
||||
|
||||
try
|
||||
{ // determine what the post interval is we want to display
|
||||
VeniceEngine engine = getVeniceEngine();
|
||||
PostInterval piv = getInterval(engine,request,topic);
|
||||
boolean read_new = !(StringUtil.isStringEmpty(request.getParameter("rnm")));
|
||||
boolean show_adv = !(StringUtil.isStringEmpty(request.getParameter("shac")));
|
||||
|
||||
// create the post display
|
||||
TopicPosts tpos = new TopicPosts(request,engine,sig,conf,topic,piv.getFirst(),piv.getLast(),
|
||||
read_new,show_adv);
|
||||
content = tpos;
|
||||
page_title = topic.getName() + ": " + String.valueOf(topic.getTotalMessages()) + " Total; "
|
||||
+ String.valueOf(tpos.getNewMessages()) + " New; Last: "
|
||||
+ rdat.formatDateForDisplay(topic.getLastUpdateDate());
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // there's an error in the parameters somewhere
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // there was a database error retrieving topics
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error listing messages: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we were unable to retrieve the topic list
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // we're displaying the conference's topic list
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("MODE: display topics in conference");
|
||||
|
||||
TopicSortHolder opts = TopicSortHolder.retrieve(request.getSession(true));
|
||||
try
|
||||
{ // get any changes to view or sort options
|
||||
getViewSortDefaults(request,conf.getConfID(),opts);
|
||||
|
||||
// create the topic list
|
||||
content = new TopicListing(request,sig,conf,opts.getViewOption(conf.getConfID()),
|
||||
opts.getSortOption(conf.getConfID()));
|
||||
page_title = "Topics in " + conf.getName();
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // there was some sort of a parameter error in the display
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // there was a database error retrieving topics
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error listing topics: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we were unable to retrieve the topic list
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"confdisp?" + request.getQueryString(),content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doGet
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end class ConfDisplay
|
||||
|
|
|
@ -39,58 +39,6 @@ public class ConfOperations extends VeniceServlet
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
|
||||
throws ValidationException, DataException
|
||||
{
|
||||
String str = request.getParameter("sig");
|
||||
if (str==null)
|
||||
{ // no SIG parameter - bail out now!
|
||||
logger.error("SIG parameter not specified!");
|
||||
throw new ValidationException("No SIG specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a SIGID, and thence to a SIGContext
|
||||
int sigid = Integer.parseInt(str);
|
||||
return user.getSIGContext(sigid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert SIG parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid SIG parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
String str = request.getParameter("conf");
|
||||
if (str==null)
|
||||
{ // no conference parameter - bail out now!
|
||||
logger.error("Conference parameter not specified!");
|
||||
throw new ValidationException("No conference specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a ConfID, and thence to a ConferenceContext
|
||||
int confid = Integer.parseInt(str);
|
||||
return sig.getConferenceContext(confid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert conference parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid conference parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
private CreateConferenceDialog makeCreateConferenceDialog() throws ServletException
|
||||
{
|
||||
final String desired_name = "CreateConferenceDialog";
|
||||
|
@ -108,22 +56,22 @@ public class ConfOperations extends VeniceServlet
|
|||
|
||||
} // end makeCreateConferenceDialog
|
||||
|
||||
private static boolean validateNewTopic(ServletRequest request) throws ValidationException
|
||||
private static boolean validateNewTopic(ServletRequest request, String on_error) throws ErrorBox
|
||||
{
|
||||
boolean is_title_null, is_zp_null;
|
||||
|
||||
String foo = request.getParameter("title");
|
||||
if (foo==null)
|
||||
throw new ValidationException("Title parameter was not specified.");
|
||||
throw new ErrorBox(null,"Title parameter was not specified.",on_error);
|
||||
is_title_null = (foo.length()==0);
|
||||
|
||||
foo = request.getParameter("pseud");
|
||||
if (foo==null)
|
||||
throw new ValidationException("Pseud parameter was not specified.");
|
||||
throw new ErrorBox(null,"Pseud parameter was not specified.",on_error);
|
||||
|
||||
foo = request.getParameter("pb");
|
||||
if (foo==null)
|
||||
throw new ValidationException("Body text was not specified.");
|
||||
throw new ErrorBox(null,"Body text was not specified.",on_error);
|
||||
is_zp_null = (foo.length()==0);
|
||||
|
||||
return is_title_null || is_zp_null;
|
||||
|
@ -143,375 +91,256 @@ public class ConfOperations extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
SIGContext sig = null;
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
// get the SIG
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
changeMenuSIG(request,sig);
|
||||
String on_error = "confops?sig=" + sig.getSIGID();
|
||||
|
||||
// get the command we want to use
|
||||
String cmd = getStandardCommandParam(request);
|
||||
|
||||
if (cmd.equals("C"))
|
||||
{ // "C" = "Create conference"
|
||||
if (!(sig.canCreateConference()))
|
||||
return new ErrorBox("Access Error","You are not permitted to create conferences in this SIG.",
|
||||
on_error);
|
||||
|
||||
// make the "create" dialog
|
||||
CreateConferenceDialog dlg = makeCreateConferenceDialog();
|
||||
dlg.setupDialog(engine,sig);
|
||||
setMyLocation(request,on_error + "&cmd=C");
|
||||
return dlg;
|
||||
|
||||
} // end if ("C" command)
|
||||
|
||||
if (cmd.equals("T"))
|
||||
{ // "T" = "Create topic" (requires conference parameter)
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,on_error);
|
||||
on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
|
||||
|
||||
// Create the new topic form.
|
||||
NewTopicForm ntf = new NewTopicForm(sig,conf);
|
||||
ntf.setupNewRequest();
|
||||
setMyLocation(request,"confops?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID() + "&cmd=T");
|
||||
return ntf;
|
||||
|
||||
} // end if ("T" command)
|
||||
|
||||
if (cmd.equals("Q"))
|
||||
{ // "Q" = display Manage menu (requires conference parameter)
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,on_error);
|
||||
on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
|
||||
|
||||
// display the "Manage Conference" display
|
||||
setMyLocation(request,"confops?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID() + "&cmd=Q");
|
||||
return new ManageConference(sig,conf);
|
||||
|
||||
} // end if ("Q" command)
|
||||
|
||||
if (cmd.equals("FX"))
|
||||
{ // "FX" = the dreaded fixseen :-) - catches up the entire conference
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,on_error);
|
||||
on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
|
||||
|
||||
try
|
||||
{ // do the fixseen operation
|
||||
conf.fixSeen();
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // some sort of error in the database
|
||||
return new ErrorBox("Database Error","Database error catching up conference: " + de.getMessage(),
|
||||
on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
return null; // null response here
|
||||
|
||||
} // end if ("FX" command)
|
||||
|
||||
// Any unrecognized command shows us the conference list.
|
||||
on_error = "sigprofile?sig=" + sig.getSIGID();
|
||||
try
|
||||
{ // all conference commands require a SIG parameter as well
|
||||
sig = getSIGParameter(request,user);
|
||||
changeMenuSIG(request,sig);
|
||||
{ // make a conference listing
|
||||
setMyLocation(request,"confops?sig=" + sig.getSIGID());
|
||||
return new ConferenceListing(sig);
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // no SIG specified
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error looking up the SIG
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
|
||||
{ // something wrong in the database
|
||||
return new ErrorBox("Database Error","Database error finding conferences: " + 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
|
||||
|
||||
if (content==null)
|
||||
{ // get the command we want to use
|
||||
String cmd = request.getParameter("cmd");
|
||||
if (cmd==null)
|
||||
cmd = "???";
|
||||
} // end doVeniceGet
|
||||
|
||||
if (cmd.equals("C"))
|
||||
{ // "C" = "Create conference"
|
||||
if (sig.canCreateConference())
|
||||
{ // make the create conference dialog!
|
||||
CreateConferenceDialog dlg = makeCreateConferenceDialog();
|
||||
dlg.setupDialog(getVeniceEngine(),sig);
|
||||
content = dlg;
|
||||
page_title = dlg.getTitle();
|
||||
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
// get the SIG
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
changeMenuSIG(request,sig);
|
||||
String on_error = "confops?sig=" + sig.getSIGID();
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // we can't create conferences
|
||||
page_title = "Error";
|
||||
content = new ErrorBox("SIG Error","You are not permitted to create conferences in this SIG.","top");
|
||||
// get the command we want to use
|
||||
String cmd = getStandardCommandParam(request);
|
||||
|
||||
} // end else
|
||||
if (cmd.equals("C"))
|
||||
{ // "C" = "Create Conference"
|
||||
if (!(sig.canCreateConference()))
|
||||
return new ErrorBox("Access Error","You are not permitted to create conferences in this SIG.",
|
||||
on_error);
|
||||
|
||||
// load up the create conference dialog!
|
||||
CreateConferenceDialog dlg = makeCreateConferenceDialog();
|
||||
dlg.setupDialog(engine,sig);
|
||||
|
||||
if (dlg.isButtonClicked(request,"cancel"))
|
||||
throw new RedirectResult(on_error); // they chickened out - go back to the conference list
|
||||
|
||||
if (dlg.isButtonClicked(request,"create"))
|
||||
{ // OK, they actually want to create the new conference...
|
||||
dlg.loadValues(request); // load the form data
|
||||
|
||||
} // end if
|
||||
else if (cmd.equals("T"))
|
||||
{ // "T" = "Create topic" (requires conference parameter)
|
||||
try
|
||||
{ // start by getting the conference parameter
|
||||
ConferenceContext conf = getConferenceParameter(request,sig);
|
||||
{ // attempt to create the conference!
|
||||
ConferenceContext conf = dlg.doDialog(sig);
|
||||
|
||||
// create the New Topic form
|
||||
NewTopicForm ntf = new NewTopicForm(sig,conf);
|
||||
ntf.setupNewRequest();
|
||||
content = ntf;
|
||||
page_title = "Create New Topic";
|
||||
// success! redirect to the conference's topic list
|
||||
throw new RedirectResult("confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID());
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // we can't get the conference parameter
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),
|
||||
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
|
||||
{ // validation error - throw it back to the user
|
||||
dlg.resetOnError(ve.getMessage() + " Please try again.");
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we have some sort of access problem
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),
|
||||
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
|
||||
{ // some sort of access error - display an error dialog
|
||||
return new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // some sort of error in the database
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),
|
||||
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
|
||||
{ // database error creating the conference
|
||||
return new ErrorBox("Database Error","Database error creating conference: " + de.getMessage(),
|
||||
on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else
|
||||
else
|
||||
{ // any unrecognized command jumps us to "conference list"
|
||||
try
|
||||
{ // show the conference listing
|
||||
content = new ConferenceListing(sig);
|
||||
page_title = "Conference Listing: " + sig.getName();
|
||||
setMyLocation(request,on_error + "&cmd=C");
|
||||
return dlg; // redisplay the dialog
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // something wrong in the database
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding conferences: " + de.getMessage(),
|
||||
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
|
||||
} // end if ("create" button clicked)
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // some lack of access is causing problems
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),
|
||||
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
|
||||
// error - don't know what button was clicked
|
||||
logger.error("no known button click on ConfOperations.doPost, cmd=C");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed",on_error);
|
||||
|
||||
} // end catch
|
||||
} // end if ("C" command)
|
||||
|
||||
} // end else
|
||||
if (cmd.equals("T"))
|
||||
{ // "T" command = Create New Topic (requires conference parameter)
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,on_error);
|
||||
on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
|
||||
|
||||
} // end if (SIG parameter retrieved OK)
|
||||
// determine what to do based on the button pressed
|
||||
if (isImageButtonClicked(request,"cancel"))
|
||||
throw new RedirectResult(on_error); // the user chickened out - go back to the conference display
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"confops?" + request.getQueryString(),content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doGet
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
SIGContext sig = null;
|
||||
String location;
|
||||
|
||||
try
|
||||
{ // all conference commands require a SIG parameter as well
|
||||
sig = getSIGParameter(request,user);
|
||||
changeMenuSIG(request,sig);
|
||||
location = "confops?sig=" + String.valueOf(sig.getSIGID());
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // no SIG specified
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
location = "top";
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error looking up the SIG
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
|
||||
location = "top";
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // get the command we want to use
|
||||
String cmd = request.getParameter("cmd");
|
||||
if (cmd==null)
|
||||
cmd = "???";
|
||||
|
||||
if (cmd.equals("C"))
|
||||
{ // "C" = "Create Conference"
|
||||
if (sig.canCreateConference())
|
||||
{ // load up the create conference dialog!
|
||||
CreateConferenceDialog dlg = makeCreateConferenceDialog();
|
||||
dlg.setupDialog(getVeniceEngine(),sig);
|
||||
|
||||
if (dlg.isButtonClicked(request,"cancel"))
|
||||
{ // they chickened out - go back to the conference list
|
||||
rdat.redirectTo(location);
|
||||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
if (dlg.isButtonClicked(request,"create"))
|
||||
{ // OK, they actually want to create the new conference...
|
||||
dlg.loadValues(request); // load the form data
|
||||
|
||||
try
|
||||
{ // attempt to create the conference!
|
||||
ConferenceContext conf = dlg.doDialog(sig);
|
||||
|
||||
// success! go to the conference's topic list
|
||||
rdat.redirectTo("confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
|
||||
+ String.valueOf(conf.getConfID()));
|
||||
return;
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // validation error - throw it back to the user
|
||||
dlg.resetOnError(ve.getMessage() + " Please try again.");
|
||||
content = dlg;
|
||||
page_title = dlg.getTitle();
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // some sort of access error - display an error dialog
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // database error creating the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error creating conference: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // error - don't know what button was clicked
|
||||
page_title = "Internal Error";
|
||||
logger.error("no known button click on ConfOperations.doPost, cmd=C");
|
||||
content = new ErrorBox(page_title,"Unknown command button pressed",location);
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // we can't create conferences
|
||||
page_title = "Error";
|
||||
content = new ErrorBox("SIG Error","You are not permitted to create conferences in this SIG.",
|
||||
location);
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if ("C" command)
|
||||
else if (cmd.equals("T"))
|
||||
{ // "T" command = Create New Topic (requires conference parameter)
|
||||
ConferenceContext conf = null;
|
||||
if (isImageButtonClicked(request,"preview"))
|
||||
{ // generate a preview and redisplay the form
|
||||
NewTopicForm ntf = new NewTopicForm(sig,conf);
|
||||
|
||||
try
|
||||
{ // start by getting the conference parameter
|
||||
conf = getConferenceParameter(request,sig);
|
||||
{ // generate a preview display
|
||||
ntf.generatePreview(engine,conf,request);
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // we can't get the conference parameter
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),location);
|
||||
{ // something messed up in the preview generation
|
||||
return new ErrorBox(null,ve.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
if (ntf.isNullRequest())
|
||||
return null; // no title or text specified - "204 No Content"
|
||||
|
||||
setMyLocation(request,"confops?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID() + "&cmd=T");
|
||||
return ntf;
|
||||
|
||||
} // end if ("preview" clicked)
|
||||
|
||||
if (isImageButtonClicked(request,"post"))
|
||||
{ // first validate that we've got all the parameters
|
||||
if (validateNewTopic(request,on_error))
|
||||
return null; // this is a null request - send a null response
|
||||
|
||||
try
|
||||
{ // add the new topic!
|
||||
TopicContext topic = conf.addTopic(request.getParameter("title"),request.getParameter("pseud"),
|
||||
request.getParameter("pb"));
|
||||
|
||||
final String yes = "Y";
|
||||
if (yes.equals(request.getParameter("attach")))
|
||||
{ // we need to upload an attachment for this post
|
||||
setMyLocation(request,on_error);
|
||||
return new AttachmentForm(sig,conf,topic.getMessage(0),on_error);
|
||||
|
||||
} // end if
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // display a database error
|
||||
return new ErrorBox("Database Error","Database error adding topic: " + de.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we have some sort of access problem
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // some sort of error in the database
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),location);
|
||||
{ // some sort of access problem
|
||||
return new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // determine what to do based on the button pressed
|
||||
String on_error = "confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
|
||||
+ String.valueOf(conf.getConfID());
|
||||
if (isImageButtonClicked(request,"cancel"))
|
||||
{ // the user chickened out - go back to the conference display
|
||||
rdat.redirectTo(on_error);
|
||||
return;
|
||||
// jump back to the form under normal circumstances
|
||||
throw new RedirectResult(on_error);
|
||||
|
||||
} // end if
|
||||
} // end if ("post" clicked)
|
||||
|
||||
if (isImageButtonClicked(request,"preview"))
|
||||
{ // generate a preview and redisplay the form
|
||||
NewTopicForm ntf = new NewTopicForm(sig,conf);
|
||||
// we don't know what button was pressed
|
||||
logger.error("no known button click on ConfOperations.doPost, cmd=T");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed",on_error);
|
||||
|
||||
try
|
||||
{ // do a preview generation
|
||||
ntf.generatePreview(getVeniceEngine(),conf,request);
|
||||
} // end if ("T" command)
|
||||
|
||||
if (cmd.equals("P"))
|
||||
{ // "P" = Set default pseud (requires conference parameter)
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,on_error);
|
||||
on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
|
||||
|
||||
if (ntf.isNullRequest())
|
||||
{ // no title or text specified - this is a "204 No Content" return
|
||||
rdat.nullResponse();
|
||||
return;
|
||||
// TODO: finish this later
|
||||
|
||||
} // end if
|
||||
return null;
|
||||
|
||||
content = ntf;
|
||||
page_title = "Preview New Topic";
|
||||
} // end if ("P" command)
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // something messed up in the preview generation
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),on_error);
|
||||
// unrecognized command!
|
||||
logger.error("invalid command to ConfOperations.doPost: " + cmd);
|
||||
return new ErrorBox("Internal Error","Invalid command to ConfOperations.doPost",on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if ("preview" button clicked)
|
||||
else if (isImageButtonClicked(request,"post"))
|
||||
{ // OK, let's do a post request!
|
||||
try
|
||||
{ // first validate that we've got all the parameters
|
||||
if (validateNewTopic(request))
|
||||
{ // this is a null request - send a null response
|
||||
rdat.nullResponse();
|
||||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
// add the new topic!
|
||||
TopicContext topic = conf.addTopic(request.getParameter("title"),request.getParameter("pseud"),
|
||||
request.getParameter("pb"));
|
||||
|
||||
final String yes = "Y";
|
||||
if (yes.equals(request.getParameter("attach")))
|
||||
{ // we need to upload an attachment for this post
|
||||
TopicMessageContext msg = topic.getMessage(0); // load the "zero post"
|
||||
|
||||
content = new AttachmentForm(sig,conf,msg,on_error);
|
||||
page_title = "Upload Attachment";
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // the post is complete, we need only jump to the topic
|
||||
// TODO: jump straight to the new topic
|
||||
rdat.redirectTo(on_error);
|
||||
return;
|
||||
|
||||
} // end else
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // the validation of parameters failed
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // display a database error
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error adding topic: " + de.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // some sort of access problem
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if
|
||||
else
|
||||
{ // we don't know what button was pressed
|
||||
page_title = "Internal Error";
|
||||
logger.error("no known button click on ConfOperations.doPost, cmd=T");
|
||||
content = new ErrorBox(page_title,"Unknown command button pressed",on_error);
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if (we got the conference parameter OK)
|
||||
|
||||
} // end else if ("T" command)
|
||||
else
|
||||
{ // unrecognized command!
|
||||
page_title = "Internal Error";
|
||||
logger.error("invalid command to ConfOperations.doPost: " + cmd);
|
||||
content = new ErrorBox(page_title,"Invalid command to ConfOperations.doPost",location);
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if (SIG parameter retrieved OK)
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,location,content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doPost
|
||||
} // end doVenicePost
|
||||
|
||||
} // end class ConfOperations
|
||||
|
|
54
src/com/silverwrist/venice/servlets/ContentResult.java
Normal file
54
src/com/silverwrist/venice/servlets/ContentResult.java
Normal file
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* 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;
|
||||
|
||||
import com.silverwrist.venice.servlets.format.VeniceContent;
|
||||
|
||||
public class ContentResult extends VeniceServletResult
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private VeniceContent content;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public ContentResult(VeniceContent content)
|
||||
{
|
||||
super();
|
||||
this.content = content;
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* External operations
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public VeniceContent getContent()
|
||||
{
|
||||
return content;
|
||||
|
||||
} // end getContent
|
||||
|
||||
} // end class ContentResult
|
66
src/com/silverwrist/venice/servlets/ErrorResult.java
Normal file
66
src/com/silverwrist/venice/servlets/ErrorResult.java
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* 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;
|
||||
|
||||
import java.io.IOException;
|
||||
import com.silverwrist.venice.servlets.format.RenderData;
|
||||
|
||||
public class ErrorResult extends ExecuteResult
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private int code;
|
||||
private String msg;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructors
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public ErrorResult(int code)
|
||||
{
|
||||
this.code = code;
|
||||
this.msg = null;
|
||||
|
||||
} // end constructor
|
||||
|
||||
public ErrorResult(int code, String msg)
|
||||
{
|
||||
this.code = code;
|
||||
this.msg = msg;
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class ExecuteResult
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public void execute(RenderData rdat) throws IOException
|
||||
{
|
||||
if (msg!=null)
|
||||
rdat.errorResponse(code,msg);
|
||||
else
|
||||
rdat.errorResponse(code);
|
||||
|
||||
} // end execute
|
||||
|
||||
} // end class ErrorResult
|
44
src/com/silverwrist/venice/servlets/ExecuteResult.java
Normal file
44
src/com/silverwrist/venice/servlets/ExecuteResult.java
Normal file
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* 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;
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.servlet.ServletException;
|
||||
import com.silverwrist.venice.servlets.format.RenderData;
|
||||
|
||||
public abstract class ExecuteResult extends VeniceServletResult
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected ExecuteResult()
|
||||
{
|
||||
super();
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Abstract operations which must be overridden
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public abstract void execute(RenderData rdat) throws IOException, ServletException;
|
||||
|
||||
} // end class ExecuteResult
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -75,7 +75,7 @@ public class Find extends VeniceServlet
|
|||
|
||||
} // end getDisplayParam
|
||||
|
||||
private int getCategoryParam(ServletRequest request) throws ServletException
|
||||
private int getCategoryParam(VeniceEngine engine, ServletRequest request)
|
||||
{
|
||||
String cat_str = request.getParameter("cat");
|
||||
if (cat_str==null)
|
||||
|
@ -84,7 +84,7 @@ public class Find extends VeniceServlet
|
|||
try
|
||||
{ // get the category ID and check it for validity
|
||||
int cat = Integer.parseInt(cat_str);
|
||||
if (getVeniceEngine().isValidCategoryID(cat))
|
||||
if (engine.isValidCategoryID(cat))
|
||||
return cat;
|
||||
|
||||
} // end try
|
||||
|
@ -109,86 +109,71 @@ public class Find extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
changeMenuTop(request); // we go to the "top" menus for this
|
||||
|
||||
// figure out which page to display
|
||||
int disp = getDisplayParam(request,FindData.getNumChoices());
|
||||
FindData finddata = new FindData(getVeniceEngine(),user,disp);
|
||||
FindData finddata = new FindData(engine,user,disp);
|
||||
|
||||
// figure out the category ID parameter
|
||||
int cat = -1;
|
||||
if (disp==FindData.FD_SIGS)
|
||||
cat = getCategoryParam(request);
|
||||
cat = getCategoryParam(engine,request);
|
||||
|
||||
try
|
||||
{ // attempt to configure the display
|
||||
finddata.loadGet(cat);
|
||||
|
||||
// display the standard output
|
||||
page_title = "Find";
|
||||
content = finddata;
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // database error, man
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error accessing category data: " + de.getMessage(),"top");
|
||||
return new ErrorBox("Database Error","Database error accessing category data: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"find?" + request.getQueryString(),content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
setMyLocation(request,"find?" + request.getQueryString());
|
||||
return finddata;
|
||||
|
||||
} // end doGet
|
||||
} // end doVeniceGet
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
|
||||
changeMenuTop(request); // we go to the "top" menus for this
|
||||
|
||||
// figure out which page to display
|
||||
int disp = getDisplayParam(request,FindData.getNumChoices());
|
||||
FindData finddata = new FindData(getVeniceEngine(),user,disp);
|
||||
FindData finddata = new FindData(engine,user,disp);
|
||||
|
||||
try
|
||||
{ // attempt to configure the display
|
||||
finddata.loadPost(request);
|
||||
|
||||
// display the standard output
|
||||
page_title = "Find";
|
||||
content = finddata;
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // error in find parameters
|
||||
page_title = "Find Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
return new ErrorBox("Find Error",ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // database error, man
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error on find: " + de.getMessage(),"top");
|
||||
return new ErrorBox("Database Error","Database error on find: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,
|
||||
"find?disp=" + String.valueOf(finddata.getDisplayOption()),content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
setMyLocation(request,"find?disp=" + finddata.getDisplayOption());
|
||||
return finddata;
|
||||
|
||||
} // end doPost
|
||||
} // end doVenicePost
|
||||
|
||||
} // end class Find
|
||||
|
|
|
@ -41,89 +41,11 @@ public class PostMessage extends VeniceServlet
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
|
||||
throws ValidationException, DataException
|
||||
{
|
||||
String str = request.getParameter("sig");
|
||||
if (str==null)
|
||||
{ // no SIG parameter - bail out now!
|
||||
logger.error("SIG parameter not specified!");
|
||||
throw new ValidationException("No SIG specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a SIGID, and thence to a SIGContext
|
||||
int sigid = Integer.parseInt(str);
|
||||
return user.getSIGContext(sigid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert SIG parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid SIG parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
String str = request.getParameter("conf");
|
||||
if (str==null)
|
||||
{ // no conference parameter - bail out now!
|
||||
logger.error("Conference parameter not specified!");
|
||||
throw new ValidationException("No conference specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a ConfID, and thence to a ConferenceContext
|
||||
int confid = Integer.parseInt(str);
|
||||
return sig.getConferenceContext(confid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert conference parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid conference parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
private static TopicContext getTopicParameter(ServletRequest request, ConferenceContext conf)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
String str = request.getParameter("top");
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
{ // no topic parameter - bail out now!
|
||||
logger.error("Topic parameter not specified!");
|
||||
throw new ValidationException("No topic specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a TopicID, and thence to a TopicContext
|
||||
short topicid = Short.parseShort(str);
|
||||
return conf.getTopic(topicid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert topic parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid topic parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getTopicParameter
|
||||
|
||||
private static int getPostNumber(ServletRequest request) throws ValidationException
|
||||
private static int getPostNumber(ServletRequest request, String on_error) throws ErrorBox
|
||||
{
|
||||
String str = request.getParameter("sd");
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
throw new ValidationException("Invalid parameter.");
|
||||
throw new ErrorBox(null,"Invalid parameter.",on_error);
|
||||
try
|
||||
{ // get the number of posts we think he topic has
|
||||
return Integer.parseInt(str);
|
||||
|
@ -131,7 +53,7 @@ public class PostMessage extends VeniceServlet
|
|||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // not a good integer...
|
||||
throw new ValidationException("Invalid parameter.");
|
||||
throw new ErrorBox(null,"Invalid parameter.",on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
|
@ -150,265 +72,108 @@ public class PostMessage extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
SIGContext sig = null; // SIG context
|
||||
ConferenceContext conf = null; // conference context
|
||||
TopicContext topic = null; // topic context
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
// get the SIG
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
changeMenuSIG(request,sig);
|
||||
|
||||
// get the conference
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,"top");
|
||||
|
||||
// get the topic
|
||||
TopicContext topic = getTopicParameter(request,conf,true,"top");
|
||||
|
||||
String on_error = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID() + "&top="
|
||||
+ topic.getTopicNumber();
|
||||
|
||||
// make sure we've got some post data
|
||||
String raw_postdata = request.getParameter("pb");
|
||||
if (StringUtil.isStringEmpty(raw_postdata))
|
||||
return null; // don't allow zero-size posts
|
||||
|
||||
final String yes = "Y";
|
||||
|
||||
if (isImageButtonClicked(request,"cancel"))
|
||||
throw new RedirectResult(on_error); // canceled posting - take us back
|
||||
|
||||
if (isImageButtonClicked(request,"preview")) // generate a preview
|
||||
return new PostPreview(engine,sig,conf,topic,request.getParameter("pseud"),raw_postdata,
|
||||
request.getParameter("next"),getPostNumber(request,on_error),
|
||||
yes.equals(request.getParameter("attach")));
|
||||
|
||||
if (isImageButtonClicked(request,"post") || isImageButtonClicked(request,"postnext"))
|
||||
{ // post the message, and then either go back to the same topic or on to the next one
|
||||
boolean go_next = isImageButtonClicked(request,"postnext");
|
||||
int pn = getPostNumber(request,on_error);
|
||||
|
||||
try
|
||||
{ // this outer try is to catch ValidationException
|
||||
try
|
||||
{ // all commands require a SIG parameter
|
||||
sig = getSIGParameter(request,user);
|
||||
changeMenuSIG(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
|
||||
{ // first check for slippage
|
||||
if (pn!=topic.getTotalMessages()) // slippage detected! display the slippage screen
|
||||
return new PostSlippage(engine,sig,conf,topic,pn,request.getParameter("next"),
|
||||
request.getParameter("pseud"),raw_postdata,
|
||||
yes.equals(request.getParameter("attach")));
|
||||
|
||||
// post the darn thing!
|
||||
TopicMessageContext msg = topic.postNewMessage(0,request.getParameter("pseud"),raw_postdata);
|
||||
|
||||
short next;
|
||||
try
|
||||
{ // attempt to get the value of the "next topic" parameter
|
||||
if (go_next)
|
||||
{ // get the "next topic" parameter
|
||||
String foo = request.getParameter("next");
|
||||
if (StringUtil.isStringEmpty(foo))
|
||||
next = topic.getTopicNumber();
|
||||
else
|
||||
next = Short.parseShort(foo);
|
||||
|
||||
} // end if
|
||||
else
|
||||
next = topic.getTopicNumber();
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // just default me
|
||||
next = topic.getTopicNumber();
|
||||
|
||||
} // end catch
|
||||
|
||||
// where do we want to go now?
|
||||
String target = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID() + "&top="
|
||||
+ next + "&rnm=1";
|
||||
|
||||
if (yes.equals(request.getParameter("attach")))
|
||||
return new AttachmentForm(sig,conf,msg,target); // go to upload an attachment
|
||||
|
||||
// no attachment - redirect where we need to go
|
||||
throw new RedirectResult(target);
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the SIG
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
|
||||
{ // there was a database error posting the message
|
||||
return new ErrorBox("Database Error","Database error posting message: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we were unable to post the message
|
||||
return new ErrorBox("Access Error",ae.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // we got the SIG parameter OK
|
||||
try
|
||||
{ // all commands require a conference parameter
|
||||
conf = getConferenceParameter(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),"top");
|
||||
} // end if
|
||||
|
||||
} // end catch
|
||||
// unknown button clicked
|
||||
logger.error("no known button click on PostMessage.doPost");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed","top");
|
||||
|
||||
} // end if
|
||||
|
||||
if (content==null)
|
||||
{ // we got the conference parameter OK
|
||||
try
|
||||
{ // now we need a topic parameter
|
||||
topic = getTopicParameter(request,conf);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found topic #" + String.valueOf(topic.getTopicID()));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding topic: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // make sure we've got some post data
|
||||
String raw_postdata = request.getParameter("pb");
|
||||
if (StringUtil.isStringEmpty(raw_postdata))
|
||||
{ // don't allow zero-size posts
|
||||
rdat.nullResponse();
|
||||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
final String yes = "Y";
|
||||
|
||||
// now decide what to do based on which button got clicked
|
||||
if (isImageButtonClicked(request,"cancel"))
|
||||
{ // canceled posting - take us back to familiar ground
|
||||
rdat.redirectTo("confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
|
||||
+ String.valueOf(conf.getConfID()) + "&top="
|
||||
+ String.valueOf(topic.getTopicNumber()));
|
||||
return;
|
||||
|
||||
} // end if ("Cancel")
|
||||
else if (isImageButtonClicked(request,"preview"))
|
||||
{ // previewing the post!
|
||||
try
|
||||
{ // generate a preview view
|
||||
content = new PostPreview(getVeniceEngine(),sig,conf,topic,request.getParameter("pseud"),
|
||||
raw_postdata,request.getParameter("next"),getPostNumber(request),
|
||||
yes.equals(request.getParameter("attach")));
|
||||
page_title = "Previewing Post";
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // there was some sort of a parameter error in the display (getPostNumber can throw this)
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if ("Preview & Spellcheck")
|
||||
else if (isImageButtonClicked(request,"post"))
|
||||
{ // post the message, and then reload the same topic
|
||||
try
|
||||
{ // first, check against slippage
|
||||
int pn = getPostNumber(request);
|
||||
if (pn==topic.getTotalMessages())
|
||||
{ // no slippage - post the message!!!
|
||||
TopicMessageContext msg = topic.postNewMessage(0,request.getParameter("pseud"),raw_postdata);
|
||||
if (yes.equals(request.getParameter("attach")))
|
||||
{ // we have an attachment to upload...display the "Upload Attachment" form
|
||||
String target = "confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
|
||||
+ String.valueOf(conf.getConfID()) + "&top="
|
||||
+ String.valueOf(topic.getTopicNumber()) + "&rnm=1";
|
||||
content = new AttachmentForm(sig,conf,msg,target);
|
||||
page_title = "Upload Attachment";
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // no attachment - jump back to the topic
|
||||
rdat.redirectTo("confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
|
||||
+ String.valueOf(conf.getConfID()) + "&top="
|
||||
+ String.valueOf(topic.getTopicNumber()) + "&rnm=1");
|
||||
return;
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // slippage detected - show the slippage display
|
||||
content = new PostSlippage(getVeniceEngine(),sig,conf,topic,pn,request.getParameter("next"),
|
||||
request.getParameter("pseud"),raw_postdata,
|
||||
yes.equals(request.getParameter("attach")));
|
||||
page_title = "Slippage or Double-Click Detected";
|
||||
|
||||
} // end else
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // there was some sort of a parameter error in the display
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // there was a database error posting the message
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error posting message: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we were unable to retrieve the topic list
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if ("Post & Reload")
|
||||
else if (isImageButtonClicked(request,"postnext"))
|
||||
{ // post the message, and then go to the "next" topic
|
||||
try
|
||||
{ // first, check against slippage
|
||||
int pn = getPostNumber(request);
|
||||
if (pn==topic.getTotalMessages())
|
||||
{ // no slippage - post the message!
|
||||
TopicMessageContext msg = topic.postNewMessage(0,request.getParameter("pseud"),raw_postdata);
|
||||
|
||||
short next;
|
||||
try
|
||||
{ // attempt to get the value of the "next topic" parameter
|
||||
String foo = request.getParameter("next");
|
||||
if (StringUtil.isStringEmpty(foo))
|
||||
next = topic.getTopicNumber();
|
||||
else
|
||||
next = Short.parseShort(foo);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // just default me
|
||||
next = topic.getTopicNumber();
|
||||
|
||||
} // end catch
|
||||
|
||||
if (yes.equals(request.getParameter("attach")))
|
||||
{ // we have an attachment to upload...
|
||||
// TODO: jump somewhere we can upload the attachment!
|
||||
rdat.redirectTo("confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
|
||||
+ String.valueOf(conf.getConfID()) + "&top=" + String.valueOf(next) + "&rnm=1");
|
||||
return;
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // no attachment - jump to the next topic
|
||||
rdat.redirectTo("confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
|
||||
+ String.valueOf(conf.getConfID()) + "&top=" + String.valueOf(next) + "&rnm=1");
|
||||
return;
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // slippage detected - show the slippage display
|
||||
content = new PostSlippage(getVeniceEngine(),sig,conf,topic,pn,request.getParameter("next"),
|
||||
request.getParameter("pseud"),raw_postdata,
|
||||
yes.equals(request.getParameter("attach")));
|
||||
page_title = "Slippage or Double-Click Detected";
|
||||
|
||||
} // end else
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // there was some sort of a parameter error in the display
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // there was a database error posting the message
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error posting message: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we were unable to retrieve the topic list
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if ("Post & Go Next")
|
||||
else
|
||||
{ // unknown button clicked
|
||||
page_title = "Internal Error";
|
||||
logger.error("no known button click on PostMessage.doPost");
|
||||
content = new ErrorBox(page_title,"Unknown command button pressed","top");
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if (got all parameters oK)
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"post",content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doPost
|
||||
} // end doVenicePost
|
||||
|
||||
} // end class PostMessage
|
||||
|
|
|
@ -39,115 +39,6 @@ public class PostOperations extends VeniceServlet
|
|||
|
||||
private static Category logger = Category.getInstance(TopicOperations.class.getName());
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Internal functions
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
|
||||
throws ValidationException, DataException
|
||||
{
|
||||
String str = request.getParameter("sig");
|
||||
if (str==null)
|
||||
{ // no SIG parameter - bail out now!
|
||||
logger.error("SIG parameter not specified!");
|
||||
throw new ValidationException("No SIG specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a SIGID, and thence to a SIGContext
|
||||
int sigid = Integer.parseInt(str);
|
||||
return user.getSIGContext(sigid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert SIG parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid SIG parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
String str = request.getParameter("conf");
|
||||
if (str==null)
|
||||
{ // no conference parameter - bail out now!
|
||||
logger.error("Conference parameter not specified!");
|
||||
throw new ValidationException("No conference specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a ConfID, and thence to a ConferenceContext
|
||||
int confid = Integer.parseInt(str);
|
||||
return sig.getConferenceContext(confid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert conference parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid conference parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
private static TopicContext getTopicParameter(ServletRequest request, ConferenceContext conf)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
String str = request.getParameter("top");
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
{ // no topic parameter - bail out now!
|
||||
logger.error("Topic parameter not specified!");
|
||||
throw new ValidationException("No topic specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a TopicID, and thence to a TopicContext
|
||||
short topicid = Short.parseShort(str);
|
||||
return conf.getTopic(topicid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert topic parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid topic parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getTopicParameter
|
||||
|
||||
private static TopicMessageContext getMessageParameter(ServletRequest request, TopicContext topic)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
String str = request.getParameter("msg");
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
{ // no topic parameter - bail out now!
|
||||
logger.error("Message parameter not specified!");
|
||||
throw new ValidationException("No message specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a TopicID, and thence to a TopicContext
|
||||
int message_num = Integer.parseInt(str);
|
||||
return topic.getMessage(message_num);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert message parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid message parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getMessageParameter
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class HttpServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
|
@ -161,233 +52,130 @@ public class PostOperations extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String location = "top";
|
||||
String locator = null;
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
SIGContext sig = null; // SIG context
|
||||
ConferenceContext conf = null; // conference context
|
||||
TopicContext topic = null; // topic context
|
||||
TopicMessageContext msg = null; // message context
|
||||
// get the SIG
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
changeMenuSIG(request,sig);
|
||||
String locator = "sig=" + sig.getSIGID();
|
||||
String location = "sigprofile?" + locator;
|
||||
|
||||
try
|
||||
{ // this outer try is to catch ValidationException
|
||||
// get the conference
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,location);
|
||||
locator += "&conf=" + conf.getConfID();
|
||||
location = "confdisp?" + locator;
|
||||
|
||||
// get the topic
|
||||
TopicContext topic = getTopicParameter(request,conf,true,location);
|
||||
locator += "&top=" + topic.getTopicID();
|
||||
location = "confdisp?" + locator;
|
||||
|
||||
// get the message
|
||||
TopicMessageContext msg = getMessageParameter(request,topic,true,location);
|
||||
location = "confdisp?" + locator + "&p1=" + msg.getPostNumber() + "&shac=1";
|
||||
setMyLocation(request,location);
|
||||
|
||||
// figure out what command we want to perform
|
||||
String cmd = getStandardCommandParam(request);
|
||||
|
||||
if (cmd.equals("HY") || cmd.equals("HN"))
|
||||
{ // we want to hide or show the message
|
||||
try
|
||||
{ // all commands require a SIG parameter
|
||||
sig = getSIGParameter(request,user);
|
||||
changeMenuSIG(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
|
||||
locator = "sig=" + String.valueOf(sig.getSIGID());
|
||||
location = "sigprofile?" + locator;
|
||||
{ // attempt to hide or show the message
|
||||
msg.setHidden(cmd.equals("HY"));
|
||||
|
||||
} // end try
|
||||
// go back and display stuff
|
||||
throw new RedirectResult(location);
|
||||
|
||||
} // end if
|
||||
catch (DataException de)
|
||||
{ // error looking up the SIG
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),location);
|
||||
{ // there was a database error
|
||||
return new ErrorBox("Database Error","Database error setting hidden status: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
return new ErrorBox("Access Error",ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // we got the SIG parameter OK
|
||||
try
|
||||
{ // all commands require a conference parameter
|
||||
conf = getConferenceParameter(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
|
||||
locator += "&conf=" + String.valueOf(conf.getConfID());
|
||||
location = "confdisp?" + locator;
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),location);
|
||||
} // end if ("hide" or "show")
|
||||
|
||||
} // end catch
|
||||
if (cmd.equals("SCR"))
|
||||
{ // we want to scribble the message
|
||||
try
|
||||
{ // attempt to scribble the message
|
||||
msg.scribble();
|
||||
|
||||
} // end if
|
||||
// go back and display stuff
|
||||
throw new RedirectResult(location);
|
||||
|
||||
if (content==null)
|
||||
{ // we got the conference parameter OK
|
||||
try
|
||||
{ // now we need a topic parameter
|
||||
topic = getTopicParameter(request,conf);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found topic #" + String.valueOf(topic.getTopicID()));
|
||||
locator += "&top=" + String.valueOf(topic.getTopicID());
|
||||
location = "confdisp?" + locator;
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
return new ErrorBox("Database Error","Database error scribbling message: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding topic: " + de.getMessage(),location);
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
return new ErrorBox("Access Error",ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
} // end if ("scribble")
|
||||
|
||||
if (content==null)
|
||||
{ // we got the topic parameter OK
|
||||
try
|
||||
{ // now we need a message parameter
|
||||
msg = getMessageParameter(request,topic);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found message #" + String.valueOf(msg.getPostID()));
|
||||
location = "confdisp?" + locator + "&p1=" + msg.getPostNumber() + "&shac=1";
|
||||
if (cmd.equals("NUKE"))
|
||||
{ // nuking requires confirmation
|
||||
try
|
||||
{ // we need confirmation on this operation
|
||||
if (ConfirmBox.isConfirmed(request,NUKE_CONFIRM_ATTR,NUKE_CONFIRM_PARAM))
|
||||
{ // OK, go ahead, nuke the message!
|
||||
msg.nuke();
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding message: " + de.getMessage(),location);
|
||||
// after which, redirect to topic view
|
||||
throw new RedirectResult("confdisp?" + locator);
|
||||
|
||||
} // end catch
|
||||
} // end if (confirmed)
|
||||
else
|
||||
{ // not a proper confirmation - better display one
|
||||
List aliases = conf.getAliases();
|
||||
String message = "You are about to nuke message <" + (String)(aliases.get(0)) + "."
|
||||
+ topic.getTopicNumber() + "." + msg.getPostNumber() + ">, originally composed by <"
|
||||
+ msg.getCreatorName() + ">! Are you sure you want to do this?";
|
||||
String confirm_url = "postops?" + locator + "&msg=" + msg.getPostNumber() + "&cmd=NUKE";
|
||||
return new ConfirmBox(request,NUKE_CONFIRM_ATTR,NUKE_CONFIRM_PARAM,"Nuke Message",
|
||||
message,confirm_url,location);
|
||||
|
||||
} // end if
|
||||
} // end else (not yet confirmed)
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
return new ErrorBox("Database Error","Database error nuking message: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),location);
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
return new ErrorBox("Access Error",ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),location);
|
||||
} // end catch
|
||||
|
||||
} // end catch
|
||||
} // end if ("nuke")
|
||||
|
||||
if (content==null)
|
||||
{ // figure out what command we want to perform
|
||||
String cmd = request.getParameter("cmd");
|
||||
if (cmd==null)
|
||||
cmd = "???";
|
||||
// unrecognized command!
|
||||
logger.error("invalid command to PostOperations.doGet: " + cmd);
|
||||
return new ErrorBox("Internal Error","Invalid command to PostOperations.doGet",location);
|
||||
|
||||
if (cmd.equals("HY") || cmd.equals("HN"))
|
||||
{ // we want to hide or show the message
|
||||
try
|
||||
{ // attempt to hide or show the message
|
||||
msg.setHidden(cmd.equals("HY"));
|
||||
|
||||
// go back and display stuff
|
||||
rdat.redirectTo(location);
|
||||
return;
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error setting hidden status: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if ("hide" or "show")
|
||||
else if (cmd.equals("SCR"))
|
||||
{ // we want to scribble the message
|
||||
try
|
||||
{ // attempt to scribble the message
|
||||
msg.scribble();
|
||||
|
||||
// go back and display stuff
|
||||
rdat.redirectTo(location);
|
||||
return;
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error scribbling message: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if ("scribble")
|
||||
else if (cmd.equals("NUKE"))
|
||||
{ // nuking requires confirmation
|
||||
try
|
||||
{ // we need confirmation on this operation!
|
||||
if (ConfirmBox.isConfirmed(request,NUKE_CONFIRM_ATTR,NUKE_CONFIRM_PARAM))
|
||||
{ // OK, go ahead, nuke the message!
|
||||
msg.nuke();
|
||||
|
||||
// after which, redirect to topic view
|
||||
rdat.redirectTo("confdisp?" + locator);
|
||||
return;
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // not a proper confirmation - better display one
|
||||
List aliases = conf.getAliases();
|
||||
String message = "You are about to nuke message <" + (String)(aliases.get(0)) + "."
|
||||
+ String.valueOf(topic.getTopicNumber()) + "." + String.valueOf(msg.getPostNumber())
|
||||
+ ">, originally composed by <" + msg.getCreatorName()
|
||||
+ ">! Are you sure you want to do this?";
|
||||
String confirm_url = "postops?" + locator + "&msg=" + msg.getPostNumber() + "&cmd=NUKE";
|
||||
|
||||
page_title = "Nuke Message";
|
||||
content = new ConfirmBox(request,NUKE_CONFIRM_ATTR,NUKE_CONFIRM_PARAM,page_title,
|
||||
message,confirm_url,location);
|
||||
|
||||
} // end else
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error nuking message: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if ("nuke")
|
||||
else
|
||||
{ // unrecognized command!
|
||||
page_title = "Internal Error";
|
||||
logger.error("invalid command to PostOperations.doGet: " + cmd);
|
||||
content = new ErrorBox(page_title,"Invalid command to PostOperations.doGet",location);
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if (got parameters OK)
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,location,content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doGet
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end class PostOperations
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -40,31 +40,34 @@ public class PostShortcut extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String raw_link = request.getPathInfo().substring(1);
|
||||
PostLinkDecoder decoder;
|
||||
|
||||
try
|
||||
{ // attempt to decode the path link information
|
||||
decoder = new PostLinkDecoder(raw_link);
|
||||
if (decoder.getSIG()==null) // it must include the SIG
|
||||
throw new ValidationException("ambiguous post link (no SIG)");
|
||||
|
||||
} // end try
|
||||
catch (ValidationException e)
|
||||
{ // display an error message for validation
|
||||
String page_title = "Invalid Post Link";
|
||||
ContentRender content = new ErrorBox(page_title,"Invalid post link \"" + raw_link + "\": "
|
||||
+ e.getMessage(),null);
|
||||
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
|
||||
return;
|
||||
|
||||
{ // the post link decoder failed
|
||||
return new ErrorBox("Invalid Post Link","Invalid post link \"" + raw_link + "\": " + e.getMessage(),
|
||||
null);
|
||||
|
||||
} // end catch
|
||||
|
||||
if (decoder.getSIG()==null) // it must include the SIG
|
||||
return new ErrorBox("Invalid Post Link","Invalid post link \"" + raw_link
|
||||
+ "\": ambiguous post link (no SIG)",null);
|
||||
|
||||
SIGContext sig;
|
||||
try
|
||||
{ // get the SIG represented by that alias
|
||||
|
@ -73,20 +76,13 @@ public class PostShortcut extends VeniceServlet
|
|||
} // end try
|
||||
catch (DataException e)
|
||||
{ // can't find the SIG - we're screwed
|
||||
String page_title = "Invalid Post Link";
|
||||
ContentRender content = new ErrorBox(page_title,"Invalid post link \"" + raw_link
|
||||
+ "\": cannot find SIG: " + e.getMessage(),null);
|
||||
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
|
||||
return;
|
||||
return new ErrorBox("Invalid Post Link","Invalid post link \"" + raw_link + "\": cannot find SIG: "
|
||||
+ e.getMessage(),null);
|
||||
|
||||
} // end catch
|
||||
|
||||
if (decoder.getConference()==null)
|
||||
{ // it's a SIG link only - redirect to the SIG's default page
|
||||
rdat.redirectTo("sig/" + decoder.getSIG());
|
||||
return;
|
||||
|
||||
} // end if
|
||||
if (decoder.getConference()==null) // it's a SIG link only - redirect to the SIG's default page
|
||||
throw new RedirectResult("sig/" + decoder.getSIG());
|
||||
|
||||
ConferenceContext conf;
|
||||
try
|
||||
|
@ -96,31 +92,21 @@ public class PostShortcut extends VeniceServlet
|
|||
} // end try
|
||||
catch (DataException e)
|
||||
{ // can't find the conference - we're screwed
|
||||
String page_title = "Invalid Post Link";
|
||||
ContentRender content = new ErrorBox(page_title,"Invalid post link \"" + raw_link
|
||||
+ "\": cannot find conference: " + e.getMessage(),null);
|
||||
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
|
||||
return;
|
||||
return new ErrorBox("Invalid Post Link","Invalid post link \"" + raw_link
|
||||
+ "\": cannot find conference: " + e.getMessage(),null);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we can't get to the conference...
|
||||
String page_title = "Access Error";
|
||||
ContentRender content = new ErrorBox(page_title,ae.getMessage(),null);
|
||||
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
|
||||
return;
|
||||
return new ErrorBox("Access Error",ae.getMessage(),null);
|
||||
|
||||
} // end catch
|
||||
|
||||
// compute an elementary "locator"
|
||||
String locator = "sig=" + String.valueOf(sig.getSIGID()) + "&conf=" + String.valueOf(conf.getConfID());
|
||||
String locator = "sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
|
||||
|
||||
if (decoder.getTopic()==-1)
|
||||
{ // just a conference link - go to the top-level display
|
||||
rdat.redirectTo("confdisp?" + locator);
|
||||
return;
|
||||
|
||||
} // end if
|
||||
if (decoder.getTopic()==-1) // just a conference link - go to the top-level display
|
||||
throw new RedirectResult("confdisp?" + locator);
|
||||
|
||||
TopicContext topic;
|
||||
try
|
||||
|
@ -130,32 +116,26 @@ public class PostShortcut extends VeniceServlet
|
|||
} // end try
|
||||
catch (DataException e)
|
||||
{ // we can't find the topic - we're screwed
|
||||
String page_title = "Invalid Post Link";
|
||||
ContentRender content = new ErrorBox(page_title,"Invalid post link \"" + raw_link
|
||||
+ "\": cannot find topic: " + e.getMessage(),null);
|
||||
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
|
||||
return;
|
||||
return new ErrorBox("Invalid Post Link","Invalid post link \"" + raw_link + "\": cannot find topic: "
|
||||
+ e.getMessage(),null);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we can't get to the topic...
|
||||
String page_title = "Access Error";
|
||||
ContentRender content = new ErrorBox(page_title,ae.getMessage(),null);
|
||||
new BaseJSPData(page_title,"top",content).transfer(getServletContext(),rdat);
|
||||
return;
|
||||
return new ErrorBox("Access Error",ae.getMessage(),null);
|
||||
|
||||
} // end catch
|
||||
|
||||
// add the topic to our locator
|
||||
locator += "&top=" + String.valueOf(decoder.getTopic());
|
||||
locator += "&top=" + decoder.getTopic();
|
||||
|
||||
if (decoder.getFirstPost()==-1) // we're just referencing the topic
|
||||
rdat.redirectTo("confdisp?" + locator + "&rnm=1");
|
||||
else // we're referencing a post range within the topic
|
||||
rdat.redirectTo("confdisp?" + locator + "&p1=" + String.valueOf(decoder.getFirstPost()) + "&p2="
|
||||
+ String.valueOf(decoder.getLastPost()));
|
||||
throw new RedirectResult("confdisp?" + locator + "&rnm=1");
|
||||
|
||||
} // end doGet
|
||||
// we're referencing a post range within the topic
|
||||
throw new RedirectResult("confdisp?" + locator + "&p1=" + decoder.getFirstPost() + "&p2="
|
||||
+ decoder.getLastPost());
|
||||
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end class PostShortcut
|
||||
|
||||
|
|
55
src/com/silverwrist/venice/servlets/RedirectResult.java
Normal file
55
src/com/silverwrist/venice/servlets/RedirectResult.java
Normal file
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* 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;
|
||||
|
||||
import java.io.IOException;
|
||||
import com.silverwrist.venice.servlets.format.RenderData;
|
||||
|
||||
public class RedirectResult extends ExecuteResult
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private String target;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public RedirectResult(String target)
|
||||
{
|
||||
super();
|
||||
this.target = target;
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class ExecuteResult
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public void execute(RenderData rdat) throws IOException
|
||||
{
|
||||
rdat.redirectTo(target);
|
||||
|
||||
} // end doRedirect
|
||||
|
||||
} // end class RedirectResult
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -87,355 +87,238 @@ public class SIGAdmin extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
// get the SIG context
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
changeMenuSIG(request,sig);
|
||||
setMyLocation(request,"sigadmin?" + request.getQueryString());
|
||||
String on_error = "sigadmin?sig=" + sig.getSIGID();
|
||||
|
||||
SIGContext sig = null;
|
||||
try
|
||||
{ // first get the SIG context we're working with
|
||||
int sigid = Integer.parseInt(request.getParameter("sig"));
|
||||
sig = user.getSIGContext(sigid);
|
||||
changeMenuSIG(request,sig);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // an improperly formatted SIGID brought us down!
|
||||
page_title = "Input Error";
|
||||
logger.error("Somebody fed 'sig=" + request.getParameter("sig") + "' to this page, that's bogus");
|
||||
content = new ErrorBox(page_title,"SIG ID not valid: " + request.getParameter("sig"),"top");
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SIGAdmin/doGet operating on SIG \"" + sig.getName() + "\" (" + sig.getSIGID() + ")");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // unable to pull SIG data out of the database
|
||||
page_title = "Database Error";
|
||||
logger.error("database error looking up SIGID " + request.getParameter("sig"));
|
||||
content = new ErrorBox(page_title,"Database error accessing SIG: " + de.getMessage(),"top");
|
||||
// now decide what to do based on the "cmd" parameter
|
||||
String cmd = getStandardCommandParam(request);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SIGAdmin/doGet command value = " + cmd);
|
||||
|
||||
} // end catch
|
||||
if (cmd.equals("P"))
|
||||
{ // "P" = "Edit Profile"
|
||||
if (!(sig.canModifyProfile()))
|
||||
{ // no access - sorry, dude
|
||||
logger.error("tried to call up SIG profile screen without access...naughty naughty!");
|
||||
return new ErrorBox("Unauthorized","You do not have access to modify this SIG's profile.",on_error);
|
||||
|
||||
if (logger.isDebugEnabled() && (sig!=null))
|
||||
logger.debug("SIGAdmin/doGet operating on SIG \"" + sig.getName() + "\" ("
|
||||
+ String.valueOf(sig.getSIGID()) + ")");
|
||||
} // end if
|
||||
|
||||
if (content==null)
|
||||
{ // now decide what to do based on the "cmd" parameter
|
||||
String cmd = request.getParameter("cmd");
|
||||
if (cmd==null)
|
||||
cmd = "???"; // something pretty much guaranteed not to be used
|
||||
// construct the edit profile dialog and load it up for use
|
||||
EditSIGProfileDialog dlg = makeEditSIGProfileDialog();
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SIGAdmin/doGet command value = " + cmd);
|
||||
try
|
||||
{ // load the values for this dialog
|
||||
dlg.setupDialog(engine,sig);
|
||||
|
||||
if (cmd.equals("P"))
|
||||
{ // this is the profile editing screen
|
||||
if (sig.canModifyProfile())
|
||||
{ // construct the edit profile dialog and load it up for use
|
||||
EditSIGProfileDialog dlg = makeEditSIGProfileDialog();
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // we could not load the values because of a data exception
|
||||
logger.error("DB error loading SIG profile: " + de.getMessage(),de);
|
||||
return new ErrorBox("Database Error","Database error retrieving profile: " + de.getMessage(),on_error);
|
||||
|
||||
try
|
||||
{ // load the values for this dialog
|
||||
dlg.setupDialog(getVeniceEngine(),sig);
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we don't have enough privilege
|
||||
logger.error("Access error loading SIG profile: " + ae.getMessage(),ae);
|
||||
return new ErrorBox("Unauthorized","You do not have access to modify this SIG's profile.",on_error);
|
||||
|
||||
// prepare for display
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
} // end catch
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // we could not load the values because of a data exception
|
||||
page_title = "Database Error";
|
||||
logger.error("DB error loading SIG profile: " + de.getMessage(),de);
|
||||
content = new ErrorBox(page_title,"Database error retrieving profile: " + de.getMessage(),
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
return dlg; // display me!
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // we don't have enough privilege
|
||||
page_title = "Unauthorized";
|
||||
logger.error("Access error loading SIG profile: " + ae.getMessage(),ae);
|
||||
content = new ErrorBox(page_title,"You do not have access to modify this SIG's profile.",
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
} // end if ("P" command)
|
||||
|
||||
} // end catch
|
||||
if (cmd.equals("T"))
|
||||
{ // "T" = "Set Category"
|
||||
if (!(sig.canModifyProfile()))
|
||||
{ // no access - sorry man
|
||||
logger.error("tried to call up SIG category set screen without access...naughty naughty!");
|
||||
return new ErrorBox("Unauthorized","You do not have access to modify this SIG's profile.",on_error);
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // no access - sorry, dude
|
||||
page_title = "Unauthorized";
|
||||
logger.error("tried to call up SIG profile screen without access...naughty naughty!");
|
||||
content = new ErrorBox(page_title,"You do not have access to modify this SIG's profile.",
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
} // end else
|
||||
|
||||
} // end else
|
||||
// did they actually send a "set" parameter?
|
||||
String p = request.getParameter("set");
|
||||
if (!(StringUtil.isStringEmpty(p)))
|
||||
{ // OK, we're setting the category ID...
|
||||
try
|
||||
{ // get the new category ID and set it
|
||||
int catid = Integer.parseInt(p);
|
||||
if (!(engine.isValidCategoryID(catid)))
|
||||
throw new NumberFormatException(); // dump the category if it's not valid
|
||||
|
||||
} // end if (profile editing)
|
||||
else if (cmd.equals("T"))
|
||||
{ // this is the category set code!
|
||||
if (sig.canModifyProfile())
|
||||
{ // did they actually send a "set" parameter?
|
||||
String p = request.getParameter("set");
|
||||
if (!(StringUtil.isStringEmpty(p)))
|
||||
{ // OK, we're setting the category ID...
|
||||
try
|
||||
{ // get the new category ID and set it
|
||||
int catid = Integer.parseInt(p);
|
||||
if (!(getVeniceEngine().isValidCategoryID(catid)))
|
||||
throw new NumberFormatException(); // dump the category if it's not valid
|
||||
// change the category ID
|
||||
sig.setCategoryID(catid);
|
||||
|
||||
sig.setCategoryID(catid);
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // we got an invalid category value...
|
||||
return new ErrorBox("Invalid Input","Invalid category ID passed to category browser.",on_error);
|
||||
|
||||
// now that the category ID is set, go back to the admin menu
|
||||
String target = "sigadmin?sig=" + String.valueOf(sig.getSIGID());
|
||||
String url = response.encodeRedirectURL(rdat.getFullServletPath(target));
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // unable to update the SIG properly
|
||||
logger.error("DB error updating SIG: " + de.getMessage(),de);
|
||||
return new ErrorBox("Database Error","Database error updating SIG: " + de.getMessage(),on_error);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // we got an invalid category value...
|
||||
page_title = "Invalid Input";
|
||||
content = new ErrorBox(page_title,"Invalid category ID passed to category browser.",
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // database access error - display an error box
|
||||
logger.error("Access error updating SIG: " + ae.getMessage(),ae);
|
||||
return new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // unable to update the SIG properly
|
||||
page_title = "Database Error";
|
||||
logger.error("DB error updating SIG: " + de.getMessage(),de);
|
||||
content = new ErrorBox(page_title,"Database error updating SIG: " + de.getMessage(),
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
} // end catch
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // database access error - display an error box
|
||||
page_title = "Access Error";
|
||||
logger.error("Access error updating SIG: " + ae.getMessage(),ae);
|
||||
content = new ErrorBox(page_title,ae.getMessage(),
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
// now that it's set, go back to the admin menu
|
||||
throw new RedirectResult(on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if (actually setting the category
|
||||
} // end if (setting category ID)
|
||||
else
|
||||
{ // we're browsing - try and figure out what to display
|
||||
try
|
||||
{ // get the "go" parameter to see what the current category ID is
|
||||
p = request.getParameter("go");
|
||||
int curr_catid;
|
||||
if (StringUtil.isStringEmpty(p))
|
||||
curr_catid = sig.getCategoryID();
|
||||
else
|
||||
{ // we're browsing - try and figure out what to display
|
||||
try
|
||||
{ // get the "go" parameter to see what the current category ID is
|
||||
p = request.getParameter("go");
|
||||
int curr_catid;
|
||||
if (StringUtil.isStringEmpty(p))
|
||||
curr_catid = sig.getCategoryID();
|
||||
else
|
||||
curr_catid = Integer.parseInt(p);
|
||||
curr_catid = Integer.parseInt(p);
|
||||
|
||||
if (!(getVeniceEngine().isValidCategoryID(curr_catid)))
|
||||
throw new NumberFormatException(); // dump the category if it's not valid
|
||||
if (!(engine.isValidCategoryID(curr_catid)))
|
||||
throw new NumberFormatException(); // dump the category if it's not valid
|
||||
|
||||
// create the browser panel and let it rip
|
||||
content = new SIGCategoryBrowseData(user,sig,curr_catid);
|
||||
page_title = "Set SIG Category";
|
||||
// create the browser panel and let it rip
|
||||
return new SIGCategoryBrowseData(user,sig,curr_catid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // we got an invalid category value...
|
||||
page_title = "Invalid Input";
|
||||
content = new ErrorBox(page_title,"Invalid category ID passed to category browser.",
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // we got an invalid category value...
|
||||
return new ErrorBox("Invalid Input","Invalid category ID passed to category browser.",on_error);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // unable to get the categories properly
|
||||
page_title = "Database Error";
|
||||
logger.error("DB error browsing categories: " + de.getMessage(),de);
|
||||
content = new ErrorBox(page_title,"Database error browsing categories: " + de.getMessage(),
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // unable to get the categories properly
|
||||
logger.error("DB error browsing categories: " + de.getMessage(),de);
|
||||
return new ErrorBox("Database Error","Database error browsing categories: " + de.getMessage(),
|
||||
on_error);
|
||||
|
||||
} // end catch
|
||||
} // end catch
|
||||
|
||||
} // end else (browsing through categories)
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // no access - sorry man
|
||||
page_title = "Unauthorized";
|
||||
logger.error("tried to call up SIG category set screen without access...naughty naughty!");
|
||||
content = new ErrorBox(page_title,"You do not have access to modify this SIG's profile.",
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
} // end if ("T" command)
|
||||
|
||||
} // end else
|
||||
|
||||
} // end else if (category selector)
|
||||
else // other request
|
||||
{ // all unknown requests get turned into menu display requests
|
||||
if (sig.canAdministerSIG())
|
||||
{ // create a SIG administration menu
|
||||
SIGAdminTop menu = makeSIGAdminTop();
|
||||
menu.setSIG(sig);
|
||||
content = menu;
|
||||
page_title = "SIG Administration";
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // no access - sorry buddy
|
||||
page_title = "Access Error";
|
||||
logger.error("tried to call up SIG admin menu without access...naughty naughty!");
|
||||
content = new ErrorBox(page_title,"You do not have access to administer this SIG.",
|
||||
"sigprofile?sig=" + String.valueOf(sig.getSIGID()));
|
||||
|
||||
} // end else
|
||||
|
||||
} // end else (other request i.e. menu request)
|
||||
// all unknown requests get turned into menu display requests
|
||||
if (!(sig.canAdministerSIG()))
|
||||
{ // no access - sorry buddy
|
||||
logger.error("tried to call up SIG admin menu without access...naughty naughty!");
|
||||
return new ErrorBox("Access Error","You do not have access to administer this SIG.",on_error);
|
||||
|
||||
} // end if
|
||||
// else getting the SIG already caused problems
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"sigadmin?" + request.getQueryString(),content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
// create a SIG administration menu
|
||||
SIGAdminTop menu = makeSIGAdminTop();
|
||||
menu.setSIG(sig);
|
||||
return menu;
|
||||
|
||||
} // end doGet
|
||||
} // end doVeniceGet
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
ContentRender content = null;
|
||||
// get the SIG context
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
changeMenuSIG(request,sig);
|
||||
String on_error = "sigadmin?sig=" + sig.getSIGID();
|
||||
setMyLocation(request,on_error);
|
||||
|
||||
SIGContext sig = null;
|
||||
try
|
||||
{ // first get the SIG context we're working with
|
||||
int sigid = Integer.parseInt(request.getParameter("sig"));
|
||||
sig = user.getSIGContext(sigid);
|
||||
changeMenuSIG(request,sig);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // an improperly formatted SIGID brought us down!
|
||||
page_title = "Input Error";
|
||||
logger.error("Somebody fed 'sig=" + request.getParameter("sig") + "' to this page, that's bogus");
|
||||
content = new ErrorBox(page_title,"SIG ID not valid: " + request.getParameter("sig"),"top");
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SIGAdmin/doPost operating on SIG \"" + sig.getName() + "\" (" + sig.getSIGID() + ")");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // unable to pull SIG data out of the database
|
||||
page_title = "Database Error";
|
||||
logger.error("database error looking up SIGID " + request.getParameter("sig"));
|
||||
content = new ErrorBox(page_title,"Database error accessing SIG: " + de.getMessage(),"top");
|
||||
// now decide what to do based on the "cmd" parameter
|
||||
String cmd = getStandardCommandParam(request);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SIGAdmin/doPost command value = " + cmd);
|
||||
|
||||
} // end catch
|
||||
if (cmd.equals("P"))
|
||||
{ // "P" = "Edit Profile"
|
||||
if (!(sig.canModifyProfile()))
|
||||
{ // no access - sorry, dude
|
||||
logger.error("tried to call up SIG profile screen without access...naughty naughty!");
|
||||
return new ErrorBox("Unauthorized","You do not have access to modify this SIG's profile.",on_error);
|
||||
|
||||
if (logger.isDebugEnabled() && (sig!=null))
|
||||
logger.debug("SIGAdmin/doPost operating on SIG \"" + sig.getName() + "\" ("
|
||||
+ String.valueOf(sig.getSIGID()) + ")");
|
||||
} // end if
|
||||
|
||||
if (content==null)
|
||||
{ // now decide what to do based on the "cmd" parameter
|
||||
String cmd = request.getParameter("cmd");
|
||||
if (cmd==null)
|
||||
cmd = "???"; // something pretty much guaranteed not to be used
|
||||
// construct the edit profile dialog and load it up for use
|
||||
EditSIGProfileDialog dlg = makeEditSIGProfileDialog();
|
||||
dlg.setupDialogBasic(engine,sig);
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SIGAdmin/doPost command value = " + cmd);
|
||||
if (dlg.isButtonClicked(request,"cancel"))
|
||||
throw new RedirectResult(on_error); // go back - they canceled out
|
||||
|
||||
if (cmd.equals("P"))
|
||||
{ // we just finished editing the profile...
|
||||
if (sig.canModifyProfile())
|
||||
{ // construct the edit profile dialog and load it up for use
|
||||
EditSIGProfileDialog dlg = makeEditSIGProfileDialog();
|
||||
dlg.setupDialogBasic(getVeniceEngine(),sig);
|
||||
if (dlg.isButtonClicked(request,"update"))
|
||||
{ // begin updating the SIG's contents
|
||||
dlg.loadValues(request); // do value loading now
|
||||
|
||||
if (dlg.isButtonClicked(request,"cancel"))
|
||||
{ // go back to our desired location
|
||||
String target = "sigadmin?sig=" + String.valueOf(sig.getSIGID());
|
||||
String url = response.encodeRedirectURL(rdat.getFullServletPath(target));
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
try
|
||||
{ // attempt to change the SIG profile now...
|
||||
dlg.doDialog(sig);
|
||||
|
||||
} // end if ("cancel" button clicked)
|
||||
// now jump back to the main menu
|
||||
clearMenu(request);
|
||||
throw new RedirectResult(on_error);
|
||||
|
||||
if (dlg.isButtonClicked(request,"update"))
|
||||
{ // begin updating the SIG's contents
|
||||
dlg.loadValues(request); // do value loading now
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // simple validation exception
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("validation failure: " + ve.getMessage());
|
||||
dlg.resetOnError(sig,ve.getMessage() + " Please try again.");
|
||||
|
||||
try
|
||||
{ // attempt to change the SIG profile now...
|
||||
dlg.doDialog(sig);
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // database error updating the SIG values
|
||||
logger.error("DB error updating SIG: " + de.getMessage(),de);
|
||||
return new ErrorBox("Database Error","Database error updating SIG: " + de.getMessage(),on_error);
|
||||
|
||||
// go back to the Admin menu on success
|
||||
clearMenu(request); // menu title may have been invalidated
|
||||
String target = "sigadmin?sig=" + String.valueOf(sig.getSIGID());
|
||||
String url = response.encodeRedirectURL(rdat.getFullServletPath(target));
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // access error changing the SIG values
|
||||
logger.error("Access error updating SIG: " + ae.getMessage(),ae);
|
||||
return new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // simple validation exception
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("validation failure: " + ve.getMessage());
|
||||
dlg.resetOnError(sig,ve.getMessage() + " Please try again.");
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
} // end catch
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // database error updating the SIG values
|
||||
page_title = "Database Error";
|
||||
logger.error("DB error updating SIG: " + de.getMessage(),de);
|
||||
content = new ErrorBox(page_title,"Database error updating SIG: " + de.getMessage(),
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
return dlg;
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // access error changing the SIG values
|
||||
page_title = "Access Error";
|
||||
logger.error("Access error updating SIG: " + ae.getMessage(),ae);
|
||||
content = new ErrorBox(page_title,ae.getMessage(),
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
} // end if ("update" pressed)
|
||||
|
||||
} // end catch
|
||||
// what the hell was that button?
|
||||
logger.error("no known button click on SIGAdmin.doPost, cmd=P");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed",on_error);
|
||||
|
||||
} // end if ("update" button pressed);
|
||||
else
|
||||
{ // what the hell was that button?
|
||||
page_title = "Internal Error";
|
||||
logger.error("no known button click on SIGAdmin.doPost, cmd=P");
|
||||
content = new ErrorBox(page_title,"Unknown command button pressed",
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
} // end if ("P" command)
|
||||
|
||||
} // end else
|
||||
// on unknown command, redirect to the GET function
|
||||
return doVeniceGet(request,engine,user,rdat);
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // no access - sorry, dude
|
||||
page_title = "Unauthorized";
|
||||
logger.error("tried to edit SIG profile without access...naughty naughty!");
|
||||
content = new ErrorBox(page_title,"You do not have access to modify this SIG's profile.",
|
||||
"sigadmin?sig=" + String.valueOf(sig.getSIGID()));
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if (editing profile)
|
||||
else // unknown command
|
||||
{ // just use that to redirect to the GET url
|
||||
String target = "sigadmin?sig=" + String.valueOf(sig.getSIGID()) + "&cmd=" + cmd;
|
||||
String url = response.encodeRedirectURL(rdat.getFullServletPath(target));
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
|
||||
} // end else (unknown command)
|
||||
|
||||
} // end if
|
||||
// else getting the SIG already caused problems
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"sigadmin?sig=" + String.valueOf(sig.getSIGID()),content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doPost
|
||||
} // end doVenicePost
|
||||
|
||||
} // end class SIGAdmin
|
||||
|
|
|
@ -38,45 +38,42 @@ public class SIGFrontEnd extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
ContentRender content = null;
|
||||
// get the SIG alias name from the request path info
|
||||
String sigalias = request.getPathInfo().substring(1);
|
||||
|
||||
try
|
||||
{ // get the SIG alias name from the request path info
|
||||
String sigalias = request.getPathInfo().substring(1);
|
||||
|
||||
// get the SIG's context from the alias name
|
||||
{ // get the SIG's context from the alias name
|
||||
SIGContext sig = user.getSIGContext(sigalias);
|
||||
|
||||
// get the default servlet from the SIG context
|
||||
String def_applet = sig.getDefaultApplet();
|
||||
if (def_applet==null)
|
||||
throw new DataException("unable to get SIG default servlet");
|
||||
String def_servlet = sig.getDefaultApplet();
|
||||
if (def_servlet==null)
|
||||
{ // return the default servlet
|
||||
changeMenuTop(request);
|
||||
return new ErrorBox("Internal Error","unable to get SIG default servlet","top");
|
||||
|
||||
// redirect to the appropriate top-level page!
|
||||
String url = response.encodeRedirectURL(rdat.getFullServletPath(def_applet));
|
||||
response.sendRedirect(url);
|
||||
return;
|
||||
} // end if
|
||||
|
||||
// and go there
|
||||
throw new RedirectResult(def_servlet);
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // set up to display an ErrorBox
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),"top");
|
||||
changeMenuTop(request);
|
||||
return new ErrorBox("Database Error","Database error finding SIG: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
changeMenuTop(request);
|
||||
|
||||
// this code is only used if we have to display an ErrorBox
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"sig" + request.getPathInfo(),content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doGet
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end class SIGFrontEnd
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -42,32 +42,6 @@ public class SIGOperations extends VeniceServlet
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
|
||||
throws ValidationException, DataException
|
||||
{
|
||||
String str = request.getParameter("sig");
|
||||
if (str==null)
|
||||
{ // no SIG parameter - bail out now!
|
||||
logger.error("SIG parameter not specified!");
|
||||
throw new ValidationException("No SIG specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a SIGID, and thence to a SIGContext
|
||||
int sigid = Integer.parseInt(str);
|
||||
return user.getSIGContext(sigid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert SIG parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid SIG parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
private JoinKeyDialog makeJoinKeyDialog()
|
||||
{
|
||||
final String desired_name = "JoinKeyDialog";
|
||||
|
@ -115,342 +89,239 @@ public class SIGOperations extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
// get the command we want to use
|
||||
String cmd = request.getParameter("cmd");
|
||||
if (cmd==null)
|
||||
cmd = "???";
|
||||
String cmd = getStandardCommandParam(request);
|
||||
setMyLocation(request,"sigops?" + request.getQueryString());
|
||||
|
||||
if (cmd.equals("J"))
|
||||
{ // "J" = "Join" (requires SIG parameter)
|
||||
try
|
||||
{ // get the SIG parameter first!
|
||||
SIGContext sig = getSIGParameter(request,user);
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
|
||||
if (sig.canJoin())
|
||||
{ // OK, we can join the SIG, now, is it public or private?
|
||||
if (sig.isPublicSIG())
|
||||
{ // attempt to join right now! (no join key required)
|
||||
sig.join(null);
|
||||
if (!(sig.canJoin())) // not permitted to join!
|
||||
return new ErrorBox("SIG Error","You are not permitted to join this SIG.","top");
|
||||
|
||||
// success! display the "welcome" page
|
||||
content = new SIGWelcome(sig);
|
||||
page_title = "Welcome to " + sig.getName();
|
||||
clearMenu(request); // force the clear to regen the menus
|
||||
changeMenuSIG(request,sig);
|
||||
if (sig.isPublicSIG())
|
||||
{ // attempt to join right now! (no join key required)
|
||||
try
|
||||
{ // call down to join the SIG
|
||||
sig.join(null);
|
||||
|
||||
} // end if (public SIG)
|
||||
else
|
||||
{ // we need to prompt them for the join key...
|
||||
JoinKeyDialog dlg = makeJoinKeyDialog();
|
||||
dlg.setupDialog(sig);
|
||||
content = dlg;
|
||||
page_title = "Join SIG";
|
||||
changeMenuSIG(request,sig);
|
||||
// success! display the "welcome" page
|
||||
clearMenu(request); // force the clear to regen the menus
|
||||
changeMenuSIG(request,sig);
|
||||
return new SIGWelcome(sig);
|
||||
|
||||
} // end try
|
||||
catch (AccessError ae)
|
||||
{ // access error
|
||||
return new ErrorBox("Access Error","Unable to join SIG: " + ae.getMessage(),"top");
|
||||
|
||||
} // end else (private SIG)
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // data exception doing something
|
||||
return new ErrorBox("Database Error","Database error joining SIG: " + de.getMessage(),"top");
|
||||
|
||||
} // end if (allowed to join the SIG)
|
||||
else
|
||||
{ // throw an error
|
||||
page_title = "Error";
|
||||
content = new ErrorBox("SIG Error","You are not permitted to join this SIG.","top");
|
||||
} // end catch
|
||||
|
||||
} // end else
|
||||
} // end if (public SIG)
|
||||
else
|
||||
{ // we need to prompt them for the join key....
|
||||
JoinKeyDialog dlg = makeJoinKeyDialog();
|
||||
dlg.setupDialog(sig);
|
||||
changeMenuSIG(request,sig);
|
||||
return dlg;
|
||||
|
||||
} // end try
|
||||
catch (AccessError ae)
|
||||
{ // access error
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,"Unable to join SIG: " + ae.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // data exception doing something
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error joining SIG: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (ValidationException ve)
|
||||
{ // validation error - wrong parameters, likely
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
} // end else (private SIG)
|
||||
|
||||
} // end if ("J" command)
|
||||
else if (cmd.equals("U"))
|
||||
|
||||
if (cmd.equals("U"))
|
||||
{ // "U" = "Unjoin (requires SIG parameter)
|
||||
try
|
||||
{ // get the SIG parameter first!
|
||||
SIGContext sig = getSIGParameter(request,user);
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
|
||||
if (sig.canUnjoin())
|
||||
{ // OK, let's test for a confirmation...
|
||||
if (ConfirmBox.isConfirmed(request,UNJOIN_CONFIRM_ATTR,UNJOIN_CONFIRM_PARAM))
|
||||
{ // OK, if you say so, let's unjoin!
|
||||
sig.unjoin();
|
||||
if (!(sig.canUnjoin()))
|
||||
return new ErrorBox("SIG Error","You cannot unjoin this SIG.","top");
|
||||
|
||||
// OK, let's test for a confirmation...
|
||||
if (ConfirmBox.isConfirmed(request,UNJOIN_CONFIRM_ATTR,UNJOIN_CONFIRM_PARAM))
|
||||
{ // OK, if you say so, let's unjoin!
|
||||
try
|
||||
{ // do the unjoin now...
|
||||
sig.unjoin();
|
||||
|
||||
// after which, let's just go back to top
|
||||
clearMenu(request); // force the clear to regen the menus
|
||||
rdat.redirectTo("top");
|
||||
return;
|
||||
} // end try
|
||||
catch (AccessError ae)
|
||||
{ // access error
|
||||
return new ErrorBox("Access Error","Unable to unjoin SIG: " + ae.getMessage(),"top");
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // not a proper confirmation - better display one
|
||||
String message = "Are you sure you want to unjoin the '" + sig.getName() + "' SIG?";
|
||||
String confirm_url = "sigops?cmd=U&sig=" + String.valueOf(sig.getSIGID());
|
||||
String deny_url = "sig/" + sig.getAlias();
|
||||
page_title = "Unjoining SIG";
|
||||
content = new ConfirmBox(request,UNJOIN_CONFIRM_ATTR,UNJOIN_CONFIRM_PARAM,page_title,
|
||||
message,confirm_url,deny_url);
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // data exception doing something
|
||||
return new ErrorBox("Database Error","Database error unjoining SIG: " + de.getMessage(),"top");
|
||||
|
||||
} // end else
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // throw an error
|
||||
page_title = "Error";
|
||||
content = new ErrorBox("SIG Error","You cannot unjoin this SIG.","top");
|
||||
|
||||
} // end else
|
||||
|
||||
} // end try
|
||||
catch (AccessError ae)
|
||||
{ // access error
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,"Unable to unjoin SIG: " + ae.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // data exception doing something
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error unjoining SIG: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (ValidationException ve)
|
||||
{ // validation error - wrong parameters, likely
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if ("U" command)
|
||||
else if (cmd.equals("C"))
|
||||
{ // "C" - Create SIG (no parameters)
|
||||
if (user.canCreateSIG())
|
||||
{ // present the "Create New SIG" dialog
|
||||
CreateSIGDialog dlg = makeCreateSIGDialog();
|
||||
dlg.setupDialog(getVeniceEngine());
|
||||
|
||||
// prepare for display
|
||||
page_title = dlg.getTitle();
|
||||
content = dlg;
|
||||
changeMenuTop(request);
|
||||
// after which, redirect back to the top
|
||||
clearMenu(request);
|
||||
throw new RedirectResult("top");
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // the user isn't permitted to make new SIGs...
|
||||
page_title = "Error";
|
||||
content = new ErrorBox("SIG Error","You are not permitted to create SIGs.","top");
|
||||
{ // not a proper confirmation - display the confirm box
|
||||
String message = "Are you sure you want to unjoin the '" + sig.getName() + "' SIG?";
|
||||
return new ConfirmBox(request,UNJOIN_CONFIRM_ATTR,UNJOIN_CONFIRM_PARAM,"Unjoining SIG",
|
||||
message,"sigops?cmd=U&sig=" + sig.getSIGID(),"sig/" + sig.getAlias());
|
||||
|
||||
} // end else
|
||||
|
||||
} // end else if ("C" command)
|
||||
else
|
||||
{ // this is an error!
|
||||
page_title = "Internal Error";
|
||||
logger.error("invalid command to SIGOperations.doGet: " + cmd);
|
||||
content = new ErrorBox(page_title,"Invalid command to SIGOperations.doGet","top");
|
||||
} // end if ("U" command)
|
||||
|
||||
} // end else
|
||||
if (cmd.equals("C"))
|
||||
{ // "C" - Create SIG (no parameters)
|
||||
if (!(user.canCreateSIG()))
|
||||
return new ErrorBox("SIG Error","You are not permitted to create SIGs.","top");
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"sigops?" + request.getQueryString(),content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
// present the "Create New SIG" dialog
|
||||
CreateSIGDialog dlg = makeCreateSIGDialog();
|
||||
dlg.setupDialog(engine);
|
||||
changeMenuTop(request);
|
||||
return dlg;
|
||||
|
||||
} // end doGet
|
||||
} // end if ("C" command)
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
// this is an error!
|
||||
logger.error("invalid command to SIGOperations.doGet: " + cmd);
|
||||
return new ErrorBox("Internal Error","Invalid command to SIGOperations.doGet","top");
|
||||
|
||||
} // end doVeniceGet
|
||||
|
||||
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
|
||||
// get the command we want to use
|
||||
String cmd = request.getParameter("cmd");
|
||||
if (cmd==null)
|
||||
cmd = "???";
|
||||
String cmd = getStandardCommandParam(request);
|
||||
setMyLocation(request,"sigops?cmd=" + cmd);
|
||||
|
||||
if (cmd.equals("J"))
|
||||
{ // "J" = Join SIG (requires SIG parameter)
|
||||
try
|
||||
{ // get the SIG we're talking about
|
||||
SIGContext sig = getSIGParameter(request,user);
|
||||
JoinKeyDialog dlg = makeJoinKeyDialog();
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
JoinKeyDialog dlg = makeJoinKeyDialog();
|
||||
|
||||
if (dlg.isButtonClicked(request,"cancel"))
|
||||
{ // canceled join - return to SIG opening page
|
||||
rdat.redirectTo("sig/" + sig.getAlias());
|
||||
return;
|
||||
if (dlg.isButtonClicked(request,"cancel")) // cancel - go back to SIG opening page
|
||||
throw new RedirectResult("sig/" + sig.getAlias());
|
||||
|
||||
} // end if
|
||||
if (!(sig.canJoin())) // not permitted to join!
|
||||
return new ErrorBox("SIG Error","You are not permitted to join this SIG.","top");
|
||||
|
||||
if (dlg.isButtonClicked(request,"join"))
|
||||
{ // they clicked the "join" button
|
||||
if (sig.canJoin())
|
||||
{ // we are permitted to join this SIG...
|
||||
dlg.loadValues(request); // load the dialog
|
||||
if (dlg.isButtonClicked(request,"join"))
|
||||
{ // OK, go join the SIG
|
||||
dlg.loadValues(request); // load the dialog
|
||||
|
||||
try
|
||||
{ // attempt to join the SIG!
|
||||
dlg.doDialog(sig);
|
||||
|
||||
// success! display the "welcome" page
|
||||
clearMenu(request); // force the clear to regen the menus
|
||||
changeMenuSIG(request,sig);
|
||||
return new SIGWelcome(sig);
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // here, a validation exception causes us to recycle and retry
|
||||
dlg.resetOnError(ve.getMessage() + " Please try again.");
|
||||
changeMenuSIG(request,sig);
|
||||
|
||||
try
|
||||
{ // attempt to join the SIG!
|
||||
dlg.doDialog(sig);
|
||||
|
||||
// success! display the "welcome" page
|
||||
content = new SIGWelcome(sig);
|
||||
page_title = "Welcome to " + sig.getName();
|
||||
clearMenu(request); // force the clear to regen the menus
|
||||
changeMenuSIG(request,sig);
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve2)
|
||||
{ // here, a validation exception causes us to recycle and retry
|
||||
dlg.resetOnError(ve2.getMessage() + " Please try again.");
|
||||
content = dlg;
|
||||
page_title = "Join SIG";
|
||||
changeMenuSIG(request,sig);
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // this is probably a bogus key - let them retry
|
||||
dlg.resetOnError(ae.getMessage() + " Please try again.");
|
||||
changeMenuSIG(request,sig);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // this is probably a bogus key - let them retry
|
||||
dlg.resetOnError(ae.getMessage() + " Please try again.");
|
||||
content = dlg;
|
||||
page_title = "Join SIG";
|
||||
changeMenuSIG(request,sig);
|
||||
|
||||
} // end catch
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // database error joining something
|
||||
return new ErrorBox("Database Error","Database error joining SIG: " + de.getMessage(),"top");
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // throw an error
|
||||
page_title = "Error";
|
||||
content = new ErrorBox("SIG Error","You are not permitted to join this SIG.","top");
|
||||
} // end catch
|
||||
|
||||
} // end else
|
||||
return dlg; // recycle and try aagin
|
||||
|
||||
} // end if ("join" button clicked)
|
||||
else
|
||||
{ // error - don't know what button was clicked
|
||||
page_title = "Internal Error";
|
||||
logger.error("no known button click on SIGOperations.doPost, cmd=J");
|
||||
content = new ErrorBox(page_title,"Unknown command button pressed","top");
|
||||
} // end if ("join" clicked)
|
||||
|
||||
} // end else
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // database error joining something
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error joining SIG: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
catch (ValidationException ve)
|
||||
{ // validation error - bogus parameter, I think
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
// error - don't know what button was clicked
|
||||
logger.error("no known button click on SIGOperations.doPost, cmd=J");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed","top");
|
||||
|
||||
} // end if ("J" command)
|
||||
else if (cmd.equals("C"))
|
||||
|
||||
if (cmd.equals("C"))
|
||||
{ // "C" = Create New SIG
|
||||
if (user.canCreateSIG())
|
||||
{ // load the "Create SIG" dialog
|
||||
CreateSIGDialog dlg = makeCreateSIGDialog();
|
||||
dlg.setupDialog(getVeniceEngine());
|
||||
if (!(user.canCreateSIG()))
|
||||
return new ErrorBox("SIG Error","You are not permitted to create SIGs.","top");
|
||||
|
||||
if (dlg.isButtonClicked(request,"cancel"))
|
||||
{ // canceled create - return to top page
|
||||
rdat.redirectTo("top");
|
||||
return;
|
||||
// load the "Create SIG" dialog
|
||||
CreateSIGDialog dlg = makeCreateSIGDialog();
|
||||
dlg.setupDialog(engine);
|
||||
|
||||
} // end if
|
||||
if (dlg.isButtonClicked(request,"cancel")) // cancel - go back to top
|
||||
throw new RedirectResult("top");
|
||||
|
||||
if (dlg.isButtonClicked(request,"create"))
|
||||
{ // OK, they actually want to create the new SIG...
|
||||
dlg.loadValues(request); // load the form data
|
||||
if (dlg.isButtonClicked(request,"create"))
|
||||
{ // OK, they actually want to create the new SIG...
|
||||
dlg.loadValues(request); // load the form data
|
||||
|
||||
try
|
||||
{ // attempt to create the SIG!
|
||||
SIGContext sig = dlg.doDialog(user);
|
||||
try
|
||||
{ // attempt to create the SIG!
|
||||
SIGContext sig = dlg.doDialog(user);
|
||||
|
||||
// created successfully - display a "new SIG welcome" page
|
||||
content = new NewSIGWelcome(sig);
|
||||
page_title = "SIG Created";
|
||||
changeMenuSIG(request,sig); // display menus for the first time!
|
||||
// created successfully - display a "new SIG welcome" page
|
||||
changeMenuSIG(request,sig); // display menus for the first time!
|
||||
return new NewSIGWelcome(sig);
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve2)
|
||||
{ // here, a validation exception causes us to recycle and retry
|
||||
dlg.resetOnError(ve2.getMessage() + " Please try again.");
|
||||
content = dlg;
|
||||
page_title = dlg.getTitle();
|
||||
changeMenuTop(request);
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // here, a validation exception causes us to recycle and retry
|
||||
dlg.resetOnError(ve.getMessage() + " Please try again.");
|
||||
changeMenuTop(request);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // this is probably a bogus key - let them retry
|
||||
dlg.resetOnError(ae.getMessage() + " Please try again.");
|
||||
content = dlg;
|
||||
page_title = dlg.getTitle();
|
||||
changeMenuTop(request);
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // this is probably a bogus key - let them retry
|
||||
dlg.resetOnError(ae.getMessage() + " Please try again.");
|
||||
changeMenuTop(request);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // database error doing something
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error creating SIG: " + de.getMessage(),"top");
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // database error doing something
|
||||
return new ErrorBox("Database Error","Database error creating SIG: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // error - don't know what button was clicked
|
||||
page_title = "Internal Error";
|
||||
logger.error("no known button click on SIGOperations.doPost, cmd=C");
|
||||
content = new ErrorBox(page_title,"Unknown command button pressed","top");
|
||||
return dlg; // put the dialog back up
|
||||
|
||||
} // end else
|
||||
} // end if ("create" pressed)
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // the user isn't permitted to make new SIGs...
|
||||
page_title = "Error";
|
||||
content = new ErrorBox("SIG Error","You are not permitted to create SIGs.","top");
|
||||
// error - don't know what button was clicked
|
||||
logger.error("no known button click on SIGOperations.doPost, cmd=C");
|
||||
return new ErrorBox("Internal Error","Unknown command button pressed","top");
|
||||
|
||||
} // end else
|
||||
} // end if ("C" command)
|
||||
|
||||
} // end else if ("C" command)
|
||||
else
|
||||
{ // this is an error!
|
||||
page_title = "Internal Error";
|
||||
logger.error("invalid command to SIGOperations.doPost: " + cmd);
|
||||
content = new ErrorBox(page_title,"Invalid command to SIGOperations.doPost","top");
|
||||
// this is an error!
|
||||
logger.error("invalid command to SIGOperations.doPost: " + cmd);
|
||||
return new ErrorBox("Internal Error","Invalid command to SIGOperations.doPost","top");
|
||||
|
||||
} // end else
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"top",content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doPost
|
||||
} // end doVenicePost
|
||||
|
||||
} // end class SIGOperations
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -25,6 +25,11 @@ import com.silverwrist.venice.servlets.format.*;
|
|||
|
||||
public class SIGProfile extends VeniceServlet
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class HttpServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getServletInfo()
|
||||
{
|
||||
String rc = "SIGProfile servlet - Displays the profile of a SIG\n"
|
||||
|
@ -33,43 +38,31 @@ public class SIGProfile extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
// get the SIG
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
setMyLocation(request,"sigprofile?sig=" + sig.getSIGID());
|
||||
|
||||
try
|
||||
{ // get the ID of the SIG we want to see the profile of
|
||||
int sigid = Integer.parseInt(request.getParameter("sig"));
|
||||
|
||||
// get the SIG context for the user
|
||||
SIGContext sig = user.getSIGContext(sigid);
|
||||
|
||||
// create the profile display
|
||||
content = new SIGProfileData(getVeniceEngine(),user,sig);
|
||||
page_title = "SIG Profile: " + sig.getName();
|
||||
{ // create the profile display
|
||||
changeMenuSIG(request,sig);
|
||||
return new SIGProfileData(engine,user,sig);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // something as simple as an improper SIGID brought us down?!?!?
|
||||
page_title = "Input Error";
|
||||
content = new ErrorBox(page_title,"SIG ID not valid: " + request.getParameter("sig"),"top");
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // in this case, we had database trouble
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error accessing SIG: " + de.getMessage(),"top");
|
||||
return new ErrorBox("Database Error","Database error accessing SIG: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"sigprofile?" + request.getQueryString(),content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doGet
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end class SIGProfile
|
||||
|
|
61
src/com/silverwrist/venice/servlets/SendFileResult.java
Normal file
61
src/com/silverwrist/venice/servlets/SendFileResult.java
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* 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;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import com.silverwrist.venice.servlets.format.RenderData;
|
||||
|
||||
public class SendFileResult extends ExecuteResult
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private String type;
|
||||
private String filename;
|
||||
private int length;
|
||||
private InputStream data;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public SendFileResult(String type, String filename, int length, InputStream data)
|
||||
{
|
||||
this.type = type;
|
||||
this.filename = filename;
|
||||
this.length = length;
|
||||
this.data = data;
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class ExecuteResult
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public void execute(RenderData rdat) throws IOException
|
||||
{
|
||||
rdat.sendBinaryData(type,filename,length,data);
|
||||
|
||||
} // end execute
|
||||
|
||||
} // end class SendFileResult
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -27,6 +27,11 @@ import com.silverwrist.venice.servlets.format.*;
|
|||
|
||||
public class Top extends VeniceServlet
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class HttpServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public void init(ServletConfig config) throws ServletException
|
||||
{
|
||||
super.init(config); // required before we do anything else
|
||||
|
@ -36,7 +41,7 @@ public class Top extends VeniceServlet
|
|||
DOMConfigurator.configure(ctxt.getInitParameter("logging.config"));
|
||||
|
||||
// Initialize the Venice engine.
|
||||
VeniceEngine engine = getVeniceEngine(ctxt);
|
||||
VeniceEngine engine = Variables.getVeniceEngine(ctxt);
|
||||
|
||||
// Initialize the Venice rendering system.
|
||||
RenderConfig.getRenderConfig(ctxt);
|
||||
|
@ -52,36 +57,34 @@ public class Top extends VeniceServlet
|
|||
public String getServletInfo()
|
||||
{
|
||||
String rc = "Top applet - Displays the Venice front page\n"
|
||||
+ "Part of the Venice Web conferencing system\n";
|
||||
+ "Part of the Venice Web Communities System\n";
|
||||
return rc;
|
||||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
ContentRender content = null;
|
||||
String page_title = "My Front Page";
|
||||
changeMenuTop(request);
|
||||
setMyLocation(request,"top");
|
||||
|
||||
try
|
||||
{ // attempt to get the user content
|
||||
content = new TopContent(user);
|
||||
return new TopContent(user);
|
||||
|
||||
} // end try
|
||||
catch (DataException e)
|
||||
catch (DataException de)
|
||||
{ // there was a database error, whoops!
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Error loading front page: " + e.getMessage(),null);
|
||||
return new ErrorBox("Database Error","Error loading front page: " + de.getMessage(),null);
|
||||
|
||||
} // end catch
|
||||
|
||||
changeMenuTop(request);
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"top",content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doGet
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end class Top
|
||||
|
|
|
@ -38,89 +38,6 @@ public class TopicOperations extends VeniceServlet
|
|||
|
||||
private static Category logger = Category.getInstance(TopicOperations.class.getName());
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Internal functions
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static SIGContext getSIGParameter(ServletRequest request, UserContext user)
|
||||
throws ValidationException, DataException
|
||||
{
|
||||
String str = request.getParameter("sig");
|
||||
if (str==null)
|
||||
{ // no SIG parameter - bail out now!
|
||||
logger.error("SIG parameter not specified!");
|
||||
throw new ValidationException("No SIG specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a SIGID, and thence to a SIGContext
|
||||
int sigid = Integer.parseInt(str);
|
||||
return user.getSIGContext(sigid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert SIG parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid SIG parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
private static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
String str = request.getParameter("conf");
|
||||
if (str==null)
|
||||
{ // no conference parameter - bail out now!
|
||||
logger.error("Conference parameter not specified!");
|
||||
throw new ValidationException("No conference specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a ConfID, and thence to a ConferenceContext
|
||||
int confid = Integer.parseInt(str);
|
||||
return sig.getConferenceContext(confid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert conference parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid conference parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
private static TopicContext getTopicParameter(ServletRequest request, ConferenceContext conf)
|
||||
throws ValidationException, DataException, AccessError
|
||||
{
|
||||
String str = request.getParameter("top");
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
{ // no topic parameter - bail out now!
|
||||
logger.error("Topic parameter not specified!");
|
||||
throw new ValidationException("No topic specified.");
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // turn the string into a TopicID, and thence to a TopicContext
|
||||
short topicid = Short.parseShort(str);
|
||||
return conf.getTopic(topicid);
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert topic parameter '" + str + "'!");
|
||||
throw new ValidationException("Invalid topic parameter.");
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end getTopicParameter
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class HttpServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
|
@ -134,224 +51,142 @@ public class TopicOperations extends VeniceServlet
|
|||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String location = "top";
|
||||
String locator = null;
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
SIGContext sig = null; // SIG context
|
||||
ConferenceContext conf = null; // conference context
|
||||
TopicContext topic = null; // topic context
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
try
|
||||
{ // this outer try is to catch ValidationException
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
// get the SIG
|
||||
SIGContext sig = getSIGParameter(request,user,true,"top");
|
||||
changeMenuSIG(request,sig);
|
||||
String locator = "sig=" + sig.getSIGID();
|
||||
String location = "sigprofile?" + locator;
|
||||
|
||||
// get the conference
|
||||
ConferenceContext conf = getConferenceParameter(request,sig,true,location);
|
||||
locator += "&conf=" + conf.getConfID();
|
||||
location = "confdisp?" + locator;
|
||||
|
||||
// get the topic
|
||||
TopicContext topic = getTopicParameter(request,conf,true,location);
|
||||
locator += "&top=" + topic.getTopicNumber();
|
||||
location = "confdisp?" + locator;
|
||||
|
||||
// figure out what command we want to perform...
|
||||
String cmd = getStandardCommandParam(request);
|
||||
|
||||
if (cmd.equals("HY") || cmd.equals("HN"))
|
||||
{ // we want to set the hide status of the topic
|
||||
try
|
||||
{ // all commands require a SIG parameter
|
||||
sig = getSIGParameter(request,user);
|
||||
changeMenuSIG(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found SIG #" + String.valueOf(sig.getSIGID()));
|
||||
locator = "sig=" + String.valueOf(sig.getSIGID());
|
||||
location = "sigprofile?" + locator;
|
||||
{ // call down to set the topic!
|
||||
topic.setHidden(cmd.equals("HY"));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the SIG
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding SIG: " + de.getMessage(),location);
|
||||
{ // there was a database error
|
||||
return new ErrorBox("Database Error","Database error setting hide status: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // we got the SIG parameter OK
|
||||
// go back to the topic view
|
||||
throw new RedirectResult(location);
|
||||
|
||||
} // end if ("hide" or "show")
|
||||
|
||||
if (cmd.equals("FY") || cmd.equals("FN"))
|
||||
{ // we want to set the frozen status of the topic
|
||||
try
|
||||
{ // call down to set the topic!
|
||||
topic.setFrozen(cmd.equals("FY"));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
return new ErrorBox("Database Error","Database error setting freeze status: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
return new ErrorBox("Access Error",ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
// go back to the topic view
|
||||
throw new RedirectResult(location);
|
||||
|
||||
} // end if ("freeze" or "unfreeze")
|
||||
|
||||
if (cmd.equals("AY") || cmd.equals("AN"))
|
||||
{ // we want to change the archived status of the topic
|
||||
try
|
||||
{ // call down to set the topic!
|
||||
topic.setArchived(cmd.equals("AY"));
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
return new ErrorBox("Database Error","Database error setting archive status: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
return new ErrorBox("Access Error",ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
// go back to the topic view
|
||||
throw new RedirectResult(location);
|
||||
|
||||
} // end if ("archive" or "unarchive")
|
||||
|
||||
if (cmd.equals("DEL"))
|
||||
{ // Delete Topic requires a confirmation!
|
||||
if (ConfirmBox.isConfirmed(request,DELETE_CONFIRM_ATTR,DELETE_CONFIRM_PARAM))
|
||||
{ // OK, go ahead, delete the topic!
|
||||
location = "confdisp?sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
|
||||
|
||||
try
|
||||
{ // all commands require a conference parameter
|
||||
conf = getConferenceParameter(request,sig);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found conf #" + String.valueOf(conf.getConfID()));
|
||||
locator += "&conf=" + String.valueOf(conf.getConfID());
|
||||
location = "confdisp?" + locator;
|
||||
{ // delete the bloody topic!
|
||||
topic.delete();
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
return new ErrorBox("Database Error","Database error deleting topic: " + de.getMessage(),location);
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding conference: " + de.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
|
||||
if (content==null)
|
||||
{ // we got the conference parameter OK
|
||||
try
|
||||
{ // now we need a topic parameter
|
||||
topic = getTopicParameter(request,conf);
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found topic #" + String.valueOf(topic.getTopicID()));
|
||||
locator += "&top=" + String.valueOf(topic.getTopicNumber());
|
||||
location = "confdisp?" + locator;
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding topic: " + de.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
|
||||
} // end try
|
||||
catch (ValidationException ve)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Error";
|
||||
content = new ErrorBox(null,ve.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content==null)
|
||||
{ // figure out what command we want to perform...
|
||||
String cmd = request.getParameter("cmd");
|
||||
if (cmd==null)
|
||||
cmd = "???";
|
||||
|
||||
if (cmd.equals("HY") || cmd.equals("HN"))
|
||||
{ // we want to set the hide status of the topic
|
||||
try
|
||||
{ // call down to set the topic!
|
||||
topic.setHidden(cmd.equals("HY"));
|
||||
|
||||
// go back to the topic view
|
||||
rdat.redirectTo(location);
|
||||
return;
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error setting hide status: " + de.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if ("hide" or "show")
|
||||
else if (cmd.equals("FY") || cmd.equals("FN"))
|
||||
{ // we want to set the frozen status of the topic
|
||||
try
|
||||
{ // call down to set the topic!
|
||||
topic.setFrozen(cmd.equals("FY"));
|
||||
|
||||
// go back to the topic view
|
||||
rdat.redirectTo(location);
|
||||
return;
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error setting freeze status: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),location);
|
||||
return new ErrorBox("Access Error",ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if ("freeze" or "unfreeze")
|
||||
else if (cmd.equals("AY") || cmd.equals("AN"))
|
||||
{ // we want to change the archived status of the topic
|
||||
try
|
||||
{ // call down to set the topic!
|
||||
topic.setArchived(cmd.equals("AY"));
|
||||
|
||||
// go back to the topic view
|
||||
rdat.redirectTo(location);
|
||||
return;
|
||||
// go back to the conference view
|
||||
throw new RedirectResult(location);
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error setting archive status: " + de.getMessage(),
|
||||
location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end else if ("archive" or "unarchive")
|
||||
else if (cmd.equals("DEL"))
|
||||
{ // we need confirmation on this operation!
|
||||
if (ConfirmBox.isConfirmed(request,DELETE_CONFIRM_ATTR,DELETE_CONFIRM_PARAM))
|
||||
{ // OK, go ahead, delete the topic!
|
||||
location = "confdisp?sig=" + String.valueOf(sig.getSIGID()) + "&conf="
|
||||
+ String.valueOf(conf.getConfID());
|
||||
|
||||
try
|
||||
{ // delete the bloody topic!
|
||||
topic.delete();
|
||||
|
||||
// after which, redirect to conference view
|
||||
rdat.redirectTo(location);
|
||||
return;
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // there was a database error
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error deleting topic: " + de.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // naughty naughty = you can't do this!
|
||||
page_title = "Access Error";
|
||||
content = new ErrorBox(page_title,ae.getMessage(),location);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // not a proper confirmation - better display one
|
||||
String message = "You are about to delete topic " + String.valueOf(topic.getTopicNumber())
|
||||
+ " from the \"" + conf.getName() + "\" conference! Are you sure you want to do this?";
|
||||
String confirm_url = "topicops?" + locator + "&cmd=DEL";
|
||||
page_title = "Delete Topic";
|
||||
content = new ConfirmBox(request,DELETE_CONFIRM_ATTR,DELETE_CONFIRM_PARAM,page_title,
|
||||
message,confirm_url,location);
|
||||
|
||||
} // end else
|
||||
|
||||
} // end else if ("delete")
|
||||
} // end if (confirmed)
|
||||
else
|
||||
{ // unrecognized command
|
||||
page_title = "Internal Error";
|
||||
logger.error("invalid command to TopicOperations.doGet: " + cmd);
|
||||
content = new ErrorBox(page_title,"Invalid command to TopicOperations.doGet",location);
|
||||
{ // not a proper confirmation - better display one
|
||||
String message = "You are about to delete topic " + String.valueOf(topic.getTopicNumber())
|
||||
+ " from the \"" + conf.getName() + "\" conference! Are you sure you want to do this?";
|
||||
return new ConfirmBox(request,DELETE_CONFIRM_ATTR,DELETE_CONFIRM_PARAM,"Delete Topic",message,
|
||||
"topicops?" + locator + "&cmd=DEL",location);
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
} // end if (delete)
|
||||
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,location,content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
// unrecognized command
|
||||
logger.error("invalid command to TopicOperations.doGet: " + cmd);
|
||||
return new ErrorBox("Internal Error","Invalid command to TopicOperations.doGet",location);
|
||||
|
||||
} // end doGet
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end class TopicOperations
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -25,43 +25,43 @@ import com.silverwrist.venice.servlets.format.*;
|
|||
|
||||
public class UserDisplay extends VeniceServlet
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class HttpServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getServletInfo()
|
||||
{
|
||||
String rc = "UserDisplay servlet - Displays Venice user profiles\n"
|
||||
+ "Part of the Venice Web conferencing system\n";
|
||||
+ "Part of the Venice Web Communities System\n";
|
||||
return rc;
|
||||
|
||||
} // end getServletInfo
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
UserContext user = getUserContext(request);
|
||||
RenderData rdat = createRenderData(request,response);
|
||||
String page_title = null;
|
||||
Object content = null;
|
||||
String uname = request.getPathInfo().substring(1); // the username we're looking at
|
||||
|
||||
try
|
||||
{ // use the request path info to get the username to load the profile from
|
||||
String uname = request.getPathInfo().substring(1);
|
||||
{ // load the profile corresponding to that username and display it
|
||||
UserProfile prof = user.getProfile(uname);
|
||||
content = new UserProfileData(prof);
|
||||
page_title = "User Profile - " + prof.getUserName();
|
||||
changeMenuTop(request);
|
||||
return new UserProfileData(prof);
|
||||
|
||||
} // end try
|
||||
catch (DataException de)
|
||||
{ // unable to get the user name
|
||||
page_title = "Database Error";
|
||||
content = new ErrorBox(page_title,"Database error finding user: " + de.getMessage(),"top");
|
||||
return new ErrorBox("Database Error","Database error finding user: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
changeMenuTop(request);
|
||||
|
||||
// format and display the user
|
||||
BaseJSPData basedat = new BaseJSPData(page_title,"user" + request.getPathInfo(),content);
|
||||
basedat.transfer(getServletContext(),rdat);
|
||||
|
||||
} // end doGet
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end class UserDisplay
|
||||
|
|
|
@ -176,9 +176,9 @@ public class Variables
|
|||
|
||||
} // end getLanguageList
|
||||
|
||||
public static ContentRender getMenu(HttpSession session)
|
||||
public static ComponentRender getMenu(HttpSession session)
|
||||
{
|
||||
return (ContentRender)(session.getAttribute(MENU_ATTRIBUTE));
|
||||
return (ComponentRender)(session.getAttribute(MENU_ATTRIBUTE));
|
||||
|
||||
} // end getMenu
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -17,10 +17,14 @@
|
|||
*/
|
||||
package com.silverwrist.venice.servlets;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.*;
|
||||
import org.apache.log4j.*;
|
||||
import com.silverwrist.util.StringUtil;
|
||||
import com.silverwrist.util.ServletMultipartHandler;
|
||||
import com.silverwrist.util.ServletMultipartException;
|
||||
import com.silverwrist.venice.core.*;
|
||||
import com.silverwrist.venice.servlets.format.*;
|
||||
|
||||
|
@ -31,97 +35,628 @@ public abstract class VeniceServlet extends HttpServlet
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static final String LOCATION_ATTR = "com.silverwrist.venice.servlets.internal.Location";
|
||||
|
||||
private static Category logger = Category.getInstance(VeniceServlet.class.getName());
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Internal functions
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static final void notSupported(HttpServletRequest request, String message) throws ErrorResult
|
||||
{
|
||||
String protocol = request.getProtocol();
|
||||
if (protocol.endsWith("1.1"))
|
||||
throw new ErrorResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED,message);
|
||||
else
|
||||
throw new ErrorResult(HttpServletResponse.SC_BAD_REQUEST,message);
|
||||
|
||||
} // end notSupported
|
||||
|
||||
private static final SIGContext getSIGParameter(String str, UserContext user, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
{ // there's no SIG parameter
|
||||
if (required)
|
||||
{ // no SIG parameter - bail out now!
|
||||
logger.error("SIG parameter not specified!");
|
||||
throw new ErrorBox(null,"No SIG specified.",on_error);
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // a null SIGContext is permitted
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("no SIG specified");
|
||||
return null;
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
|
||||
SIGContext rc = null;
|
||||
try
|
||||
{ // turn the string into a SIGID, and thence to a SIGContext
|
||||
rc = user.getSIGContext(Integer.parseInt(str));
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found SIG #" + rc.getSIGID());
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert SIG parameter '" + str + "'!");
|
||||
throw new ErrorBox(null,"Invalid SIG parameter.",on_error);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error looking up the SIG
|
||||
throw new ErrorBox("Database Error","Database error finding SIG: " + de.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
return rc;
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
private static ConferenceContext getConferenceParameter(String str, SIGContext sig, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
{ // there's no conference parameter
|
||||
if (required)
|
||||
{ // no conference parameter - bail out now!
|
||||
logger.error("Conference parameter not specified!");
|
||||
throw new ErrorBox(null,"No conference specified.",on_error);
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // a null ConferenceContext is permitted
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("no conference specified");
|
||||
return null;
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
|
||||
ConferenceContext rc = null;
|
||||
try
|
||||
{ // turn the string into a ConfID, and thence to a ConferenceContext
|
||||
rc = sig.getConferenceContext(Integer.parseInt(str));
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found conf #" + rc.getConfID());
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert conference parameter '" + str + "'!");
|
||||
throw new ErrorBox(null,"Invalid conference parameter.",on_error);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
throw new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
throw new ErrorBox("Database Error","Database error finding conference: " + de.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
return rc;
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
private static TopicContext getTopicParameter(String str, ConferenceContext conf, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
{ // there's no topic parameter
|
||||
if (required)
|
||||
{ // no topic parameter - bail out now!
|
||||
logger.error("Topic parameter not specified!");
|
||||
throw new ErrorBox(null,"No topic specified.",on_error);
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // a null TopicContext is permitted
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("no topic specified");
|
||||
return null;
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
|
||||
TopicContext rc = null;
|
||||
try
|
||||
{ // turn the string into a TopicID, and thence to a TopicContext
|
||||
rc = conf.getTopic(Short.parseShort(str));
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found topic #" + rc.getTopicID());
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert topic parameter '" + str + "'!");
|
||||
throw new ErrorBox(null,"Invalid topic parameter.",on_error);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
throw new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error looking up the topic
|
||||
throw new ErrorBox("Database Error","Database error finding topic: " + de.getMessage(),"top");
|
||||
|
||||
} // end catch
|
||||
|
||||
return rc;
|
||||
|
||||
} // end getTopicParameter
|
||||
|
||||
private static TopicMessageContext getMessageParameter(String str, ConferenceContext conf, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
{ // there's no message parameter
|
||||
if (required)
|
||||
{ // no message parameter - bail out now!
|
||||
logger.error("Message parameter not specified!");
|
||||
throw new ErrorBox(null,"No message specified.",on_error);
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // a null TopicMessageContext is permitted
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("no message specified");
|
||||
return null;
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
|
||||
TopicMessageContext rc = null;
|
||||
try
|
||||
{ // turn the string into a postid, and thence to a TopicMessageContext
|
||||
rc = conf.getMessageByPostID(Long.parseLong(str));
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found post #" + rc.getPostID());
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert message parameter '" + str + "'!");
|
||||
throw new ErrorBox(null,"Invalid message parameter.",on_error);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
throw new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
throw new ErrorBox("Database Error","Database error finding message: " + de.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
return rc;
|
||||
|
||||
} // end getMessageParameter
|
||||
|
||||
private static TopicMessageContext getMessageParameter(String str, TopicContext topic, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
if (StringUtil.isStringEmpty(str))
|
||||
{ // there's no message parameter
|
||||
if (required)
|
||||
{ // no message parameter - bail out now!
|
||||
logger.error("Message parameter not specified!");
|
||||
throw new ErrorBox(null,"No message specified.",on_error);
|
||||
|
||||
} // end if
|
||||
else
|
||||
{ // a null TopicMessageContext is permitted
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("no message specified");
|
||||
return null;
|
||||
|
||||
} // end else
|
||||
|
||||
} // end if
|
||||
|
||||
TopicMessageContext rc = null;
|
||||
try
|
||||
{ // turn the string into a post number, and thence to a TopicMessageContext
|
||||
rc = topic.getMessage(Integer.parseInt(str));
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("found post #" + rc.getPostID());
|
||||
|
||||
} // end try
|
||||
catch (NumberFormatException nfe)
|
||||
{ // error in Integer.parseInt
|
||||
logger.error("Cannot convert message parameter '" + str + "'!");
|
||||
throw new ErrorBox(null,"Invalid message parameter.",on_error);
|
||||
|
||||
} // end catch
|
||||
catch (AccessError ae)
|
||||
{ // these all get handled in pretty much the same way
|
||||
throw new ErrorBox("Access Error",ae.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
catch (DataException de)
|
||||
{ // error looking up the conference
|
||||
throw new ErrorBox("Database Error","Database error finding message: " + de.getMessage(),on_error);
|
||||
|
||||
} // end catch
|
||||
|
||||
return rc;
|
||||
|
||||
} // end getMessageParameter
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Internal operations intended for use by derived classes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected static boolean isImageButtonClicked(ServletRequest request, String name)
|
||||
protected static final boolean isImageButtonClicked(ServletRequest request, String name)
|
||||
{
|
||||
String val = request.getParameter(name + ".x");
|
||||
return (val!=null);
|
||||
|
||||
} // end isImageButtonClicked
|
||||
|
||||
protected static VeniceEngine getVeniceEngine(ServletContext ctxt) throws ServletException
|
||||
/*
|
||||
protected static final VeniceEngine getVeniceEngine(ServletContext ctxt) throws ServletException
|
||||
{
|
||||
return Variables.getVeniceEngine(ctxt);
|
||||
|
||||
} // end getVeniceEngine
|
||||
|
||||
protected VeniceEngine getVeniceEngine() throws ServletException
|
||||
protected final VeniceEngine getVeniceEngine() throws ServletException
|
||||
{
|
||||
return Variables.getVeniceEngine(getServletContext());
|
||||
|
||||
} // end getVeniceEngine
|
||||
*/
|
||||
|
||||
protected UserContext getUserContext(HttpServletRequest request) throws ServletException
|
||||
/*
|
||||
protected final UserContext getUserContext(HttpServletRequest request) throws ServletException
|
||||
{
|
||||
return Variables.getUserContext(getServletContext(),request,request.getSession(true));
|
||||
|
||||
} // end getUserContext
|
||||
*/
|
||||
|
||||
protected void putUserContext(HttpServletRequest request, UserContext ctxt)
|
||||
protected final void putUserContext(HttpServletRequest request, UserContext ctxt)
|
||||
{
|
||||
Variables.putUserContext(request.getSession(true),ctxt);
|
||||
|
||||
} // end putUserContext
|
||||
|
||||
protected void clearUserContext(HttpServletRequest request)
|
||||
protected final void clearUserContext(HttpServletRequest request)
|
||||
{
|
||||
Variables.clearUserContext(request.getSession(true));
|
||||
|
||||
} // end clearUserContext
|
||||
|
||||
protected static List getCountryList(ServletContext ctxt) throws ServletException
|
||||
protected static final List getCountryList(ServletContext ctxt) throws ServletException
|
||||
{
|
||||
return Variables.getCountryList(ctxt);
|
||||
|
||||
} // end getCountryList
|
||||
|
||||
protected List getCountryList() throws ServletException
|
||||
protected final List getCountryList() throws ServletException
|
||||
{
|
||||
return Variables.getCountryList(getServletContext());
|
||||
|
||||
} // end getCountryList
|
||||
|
||||
protected List getLanguageList(ServletContext ctxt) throws ServletException
|
||||
protected final List getLanguageList(ServletContext ctxt) throws ServletException
|
||||
{
|
||||
return Variables.getLanguageList(ctxt);
|
||||
|
||||
} // end getLanguageList
|
||||
|
||||
protected List getLanguageList() throws ServletException
|
||||
protected final List getLanguageList() throws ServletException
|
||||
{
|
||||
return Variables.getLanguageList(getServletContext());
|
||||
|
||||
} // end getLanguageList
|
||||
|
||||
protected void changeMenuTop(HttpServletRequest request)
|
||||
protected final void changeMenuTop(HttpServletRequest request)
|
||||
{
|
||||
Variables.setMenuTop(getServletContext(),request.getSession(true));
|
||||
|
||||
} // end changeMenuTop
|
||||
|
||||
protected void changeMenuSIG(HttpServletRequest request, SIGContext sig)
|
||||
protected final void changeMenuSIG(HttpServletRequest request, SIGContext sig)
|
||||
{
|
||||
Variables.setMenuSIG(request.getSession(true),sig);
|
||||
|
||||
} // end changeMenuSIG
|
||||
|
||||
protected void clearMenu(HttpServletRequest request)
|
||||
protected final void clearMenu(HttpServletRequest request)
|
||||
{
|
||||
Variables.clearMenu(request.getSession(true));
|
||||
|
||||
} // end clearMenu
|
||||
|
||||
protected RenderData createRenderData(HttpServletRequest request, HttpServletResponse response)
|
||||
/*
|
||||
protected final RenderData createRenderData(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException
|
||||
{
|
||||
return RenderConfig.createRenderData(getServletContext(),request,response);
|
||||
|
||||
} // end createRenderData
|
||||
*/
|
||||
|
||||
protected final String getStandardCommandParam(ServletRequest request)
|
||||
{
|
||||
String foo = request.getParameter("cmd");
|
||||
if (foo==null)
|
||||
return "???";
|
||||
else
|
||||
return foo;
|
||||
|
||||
} // end getStandardCommandParam
|
||||
|
||||
protected final void setMyLocation(ServletRequest request, String loc)
|
||||
{
|
||||
request.setAttribute(LOCATION_ATTR,loc);
|
||||
|
||||
} // end setMyLocation
|
||||
|
||||
protected final static SIGContext getSIGParameter(ServletRequest request, UserContext user, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
return getSIGParameter(request.getParameter("sig"),user,required,on_error);
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
protected final static SIGContext getSIGParameter(ServletMultipartHandler mphandler, UserContext user,
|
||||
boolean required, String on_error) throws ErrorBox
|
||||
{
|
||||
if (mphandler.isFileParam("sig"))
|
||||
throw new ErrorBox(null,"Internal Error: SIG should be a normal param",on_error);
|
||||
return getSIGParameter(mphandler.getValue("sig"),user,required,on_error);
|
||||
|
||||
} // end getSIGParameter
|
||||
|
||||
protected final static ConferenceContext getConferenceParameter(ServletRequest request, SIGContext sig,
|
||||
boolean required, String on_error)
|
||||
throws ErrorBox
|
||||
{
|
||||
return getConferenceParameter(request.getParameter("conf"),sig,required,on_error);
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
protected final static ConferenceContext getConferenceParameter(ServletMultipartHandler mphandler,
|
||||
SIGContext sig, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
if (mphandler.isFileParam("conf"))
|
||||
throw new ErrorBox(null,"Internal Error: conference should be a normal param",on_error);
|
||||
return getConferenceParameter(mphandler.getValue("conf"),sig,required,on_error);
|
||||
|
||||
} // end getConferenceParameter
|
||||
|
||||
protected final static TopicContext getTopicParameter(ServletRequest request, ConferenceContext conf,
|
||||
boolean required, String on_error) throws ErrorBox
|
||||
{
|
||||
return getTopicParameter(request.getParameter("top"),conf,required,on_error);
|
||||
|
||||
} // end getTopicParameter
|
||||
|
||||
protected final static TopicContext getTopicParameter(ServletMultipartHandler mphandler,
|
||||
ConferenceContext conf, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
if (mphandler.isFileParam("top"))
|
||||
throw new ErrorBox(null,"Internal Error: topic should be a normal param",on_error);
|
||||
return getTopicParameter(mphandler.getValue("top"),conf,required,on_error);
|
||||
|
||||
} // end getTopicParameter
|
||||
|
||||
protected final static TopicMessageContext getMessageParameter(ServletRequest request,
|
||||
ConferenceContext conf, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
return getMessageParameter(request.getParameter("msg"),conf,required,on_error);
|
||||
|
||||
} // end getMessageParameter
|
||||
|
||||
protected final static TopicMessageContext getMessageParameter(ServletMultipartHandler mphandler,
|
||||
ConferenceContext conf, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
if (mphandler.isFileParam("msg"))
|
||||
throw new ErrorBox(null,"Internal Error: message should be a normal param",on_error);
|
||||
return getMessageParameter(mphandler.getValue("msg"),conf,required,on_error);
|
||||
|
||||
} // end getMessageParameter
|
||||
|
||||
protected final static TopicMessageContext getMessageParameter(ServletRequest request, TopicContext topic,
|
||||
boolean required, String on_error)
|
||||
throws ErrorBox
|
||||
{
|
||||
return getMessageParameter(request.getParameter("msg"),topic,required,on_error);
|
||||
|
||||
} // end getMessageParameter
|
||||
|
||||
protected final static TopicMessageContext getMessageParameter(ServletMultipartHandler mphandler,
|
||||
TopicContext topic, boolean required,
|
||||
String on_error) throws ErrorBox
|
||||
{
|
||||
if (mphandler.isFileParam("msg"))
|
||||
throw new ErrorBox(null,"Internal Error: message should be a normal param",on_error);
|
||||
return getMessageParameter(mphandler.getValue("msg"),topic,required,on_error);
|
||||
|
||||
} // end getMessageParameter
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrideable operations
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected String getMyLocation(HttpServletRequest request, VeniceEngine engine, UserContext user,
|
||||
RenderData rdat)
|
||||
{
|
||||
return (String)(request.getAttribute(LOCATION_ATTR));
|
||||
|
||||
} // end getMyLocation
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
notSupported(request,"GET method not supported");
|
||||
return null;
|
||||
|
||||
} // end doVeniceGet
|
||||
|
||||
protected VeniceContent doVenicePost(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
notSupported(request,"POST method not supported for normal form posts");
|
||||
return null;
|
||||
|
||||
} // end doVenicePost
|
||||
|
||||
protected VeniceContent doVenicePost(HttpServletRequest request, ServletMultipartHandler mphandler,
|
||||
VeniceEngine engine, UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
notSupported(request,"POST method not supported for multipart/form-data posts");
|
||||
return null;
|
||||
|
||||
} // end doVenicePost
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class HttpServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public final void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
ServletContext ctxt = getServletContext();
|
||||
VeniceEngine engine = Variables.getVeniceEngine(ctxt);
|
||||
UserContext user = Variables.getUserContext(ctxt,request,request.getSession(true));
|
||||
RenderData rdat = RenderConfig.createRenderData(ctxt,request,response);
|
||||
VeniceContent content = null;
|
||||
|
||||
try
|
||||
{ // run the actual "get" in the servlet
|
||||
content = doVeniceGet(request,engine,user,rdat);
|
||||
|
||||
} // end try
|
||||
catch (VeniceServletResult res)
|
||||
{ // special VeniceServletResult catch here - figure out what result it is
|
||||
if (res instanceof VeniceContent)
|
||||
content = (VeniceContent)res; // this is content
|
||||
else if (res instanceof ContentResult)
|
||||
{ // this contains content
|
||||
ContentResult cres = (ContentResult)res;
|
||||
content = cres.getContent();
|
||||
|
||||
} // end else if
|
||||
else if (res instanceof ExecuteResult)
|
||||
{ // direct-execution result
|
||||
ExecuteResult xres = (ExecuteResult)res;
|
||||
xres.execute(rdat);
|
||||
return;
|
||||
|
||||
} // end else if
|
||||
else // unrecognized VeniceServletResult
|
||||
content = null;
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content!=null)
|
||||
{ // display the content!
|
||||
BaseJSPData base = new BaseJSPData(getMyLocation(request,engine,user,rdat),content);
|
||||
base.transfer(ctxt,rdat);
|
||||
|
||||
} // end if
|
||||
else // there is no content - display the null response
|
||||
rdat.nullResponse();
|
||||
|
||||
} // end doGet
|
||||
|
||||
public final void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
ServletContext ctxt = getServletContext();
|
||||
VeniceEngine engine = Variables.getVeniceEngine(ctxt);
|
||||
UserContext user = Variables.getUserContext(ctxt,request,request.getSession(true));
|
||||
RenderData rdat = RenderConfig.createRenderData(ctxt,request,response);
|
||||
ServletMultipartHandler mphandler = null;
|
||||
VeniceContent content = null;
|
||||
|
||||
if (ServletMultipartHandler.canHandle(request))
|
||||
{ // if this is a multipart/form-data request, invoke our special handler code
|
||||
try
|
||||
{ // create the multipart handler
|
||||
mphandler = new ServletMultipartHandler(request);
|
||||
|
||||
} // end try
|
||||
catch (ServletMultipartException e)
|
||||
{ // this is an error message we need to generate and just bail out on
|
||||
BaseJSPData base = new BaseJSPData(getMyLocation(request,engine,user,rdat),
|
||||
new ErrorBox(null,"Internal Error: " + e.getMessage(),null));
|
||||
base.transfer(ctxt,rdat);
|
||||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
} // end if
|
||||
|
||||
try
|
||||
{ // call the appropriate doVenicePost method
|
||||
if (mphandler!=null)
|
||||
content = doVenicePost(request,mphandler,engine,user,rdat);
|
||||
else
|
||||
content = doVenicePost(request,engine,user,rdat);
|
||||
|
||||
} // end try
|
||||
catch (VeniceServletResult res)
|
||||
{ // special VeniceServletResult catch here - figure out what result it is
|
||||
if (res instanceof VeniceContent)
|
||||
content = (VeniceContent)res; // this is content
|
||||
else if (res instanceof ContentResult)
|
||||
{ // this contains content
|
||||
ContentResult cres = (ContentResult)res;
|
||||
content = cres.getContent();
|
||||
|
||||
} // end else if
|
||||
else if (res instanceof ExecuteResult)
|
||||
{ // direct-execution result
|
||||
ExecuteResult xres = (ExecuteResult)res;
|
||||
xres.execute(rdat);
|
||||
return;
|
||||
|
||||
} // end else if
|
||||
else // unrecognized VeniceServletResult
|
||||
content = null;
|
||||
|
||||
} // end catch
|
||||
|
||||
if (content!=null)
|
||||
{ // display the content!
|
||||
BaseJSPData base = new BaseJSPData(getMyLocation(request,engine,user,rdat),content);
|
||||
base.transfer(ctxt,rdat);
|
||||
|
||||
} // end if
|
||||
else // there is no content - display the null response
|
||||
rdat.nullResponse();
|
||||
|
||||
} // end doPost
|
||||
|
||||
} // end class VeniceServlet
|
||||
|
|
59
src/com/silverwrist/venice/servlets/VeniceServletResult.java
Normal file
59
src/com/silverwrist/venice/servlets/VeniceServletResult.java
Normal file
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* 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;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.PrintStream;
|
||||
|
||||
public class VeniceServletResult extends Throwable
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public VeniceServletResult()
|
||||
{
|
||||
super();
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class Throwable
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public final void printStackTrace()
|
||||
{ // do nothing - this isn't really an error
|
||||
} // end printStackTrace
|
||||
|
||||
public final void printStackTrace(PrintStream s)
|
||||
{ // do nothing - this isn't really an error
|
||||
} // end printStackTrace
|
||||
|
||||
public final void printStackTrace(PrintWriter s)
|
||||
{ // do nothing - this isn't really an error
|
||||
} // end printStackTrace
|
||||
|
||||
public final Throwable fillInStackTrace()
|
||||
{ // do nothing - this isn't really an error
|
||||
return this;
|
||||
|
||||
} // end fillInStackTrace
|
||||
|
||||
} // end class VeniceServletResult
|
|
@ -69,6 +69,17 @@ public class AttachmentForm implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Upload Attachment";
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -38,9 +38,8 @@ public class BaseJSPData
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private String title; // title string to use for this page
|
||||
private String location; // location string to use for this page
|
||||
private Object content; // the actual content
|
||||
private VeniceContent content; // the actual content
|
||||
private boolean login_links = true; // show login links up top?
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
|
@ -48,9 +47,8 @@ public class BaseJSPData
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public BaseJSPData(String title, String location, Object content)
|
||||
public BaseJSPData(String location, VeniceContent content)
|
||||
{
|
||||
this.title = title;
|
||||
this.location = location;
|
||||
this.content = content;
|
||||
|
||||
|
@ -78,12 +76,18 @@ public class BaseJSPData
|
|||
|
||||
} // end store
|
||||
|
||||
public String getTitle()
|
||||
public String getTitle(RenderData rdat)
|
||||
{
|
||||
return title;
|
||||
return content.getPageTitle(rdat);
|
||||
|
||||
} // end getTitle
|
||||
|
||||
public boolean locationSpecified()
|
||||
{
|
||||
return (location!=null);
|
||||
|
||||
} // end if
|
||||
|
||||
public String getLocation()
|
||||
{
|
||||
return location;
|
||||
|
@ -92,7 +96,7 @@ public class BaseJSPData
|
|||
|
||||
public boolean displayLoginLinks()
|
||||
{
|
||||
return login_links;
|
||||
return login_links && (location!=null);
|
||||
|
||||
} // end displayLoginLinks
|
||||
|
||||
|
@ -115,8 +119,7 @@ public class BaseJSPData
|
|||
{
|
||||
if (content==null)
|
||||
{ // there is no content!
|
||||
ErrorBox box = new ErrorBox(null,"Internal Error: There is no content available",null);
|
||||
box.renderHere(out,rdat);
|
||||
new ErrorBox(null,"Internal Error: There is no content available",null).renderHere(out,rdat);
|
||||
return;
|
||||
|
||||
} // end if
|
||||
|
@ -128,8 +131,7 @@ public class BaseJSPData
|
|||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
if (content instanceof JSPRender)
|
||||
else if (content instanceof JSPRender)
|
||||
{ // we have a JSP-rendered page - include it
|
||||
JSPRender jr = (JSPRender)content;
|
||||
rdat.storeJSPRender(jr);
|
||||
|
@ -141,10 +143,8 @@ public class BaseJSPData
|
|||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
// this is the fallback if we don't recognize the content
|
||||
ErrorBox box2 = new ErrorBox(null,"Internal Error: Content of invalid type",null);
|
||||
box2.renderHere(out,rdat);
|
||||
else // this is the fallback if we don't recognize the content
|
||||
new ErrorBox(null,"Internal Error: Content of invalid type",null).renderHere(out,rdat);
|
||||
|
||||
} // end renderContent
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
|
|
@ -19,7 +19,7 @@ package com.silverwrist.venice.servlets.format;
|
|||
|
||||
import javax.servlet.ServletRequest;
|
||||
|
||||
public interface CDCommandButton extends ContentRender
|
||||
public interface CDCommandButton extends ComponentRender
|
||||
{
|
||||
public abstract String getName();
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ package com.silverwrist.venice.servlets.format;
|
|||
|
||||
import com.silverwrist.venice.ValidationException;
|
||||
|
||||
public interface CDFormField extends ContentRender
|
||||
public interface CDFormField extends ComponentRender
|
||||
{
|
||||
public abstract String getName();
|
||||
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* 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.io.Writer;
|
||||
import java.io.IOException;
|
||||
|
||||
public interface ComponentRender
|
||||
{
|
||||
public abstract void renderHere(Writer out, RenderData rdat) throws IOException;
|
||||
|
||||
} // end interface ComponentRender
|
|
@ -66,6 +66,17 @@ public class ConferenceListing implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Conference Listing: " + sig.getName();
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -93,7 +93,18 @@ public class ConfirmBox implements ContentRender
|
|||
} // end doConfirm
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from class ContentRender
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return title;
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface ContentRender
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
|
|
@ -122,6 +122,17 @@ public class ContentDialog implements Cloneable, ContentRender
|
|||
{ // do nothing at this level
|
||||
} // end validateWholeForm
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return title;
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface ContentRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
@ -214,12 +225,6 @@ public class ContentDialog implements Cloneable, ContentRender
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
|
||||
} // end getTitle
|
||||
|
||||
public void setErrorMessage(String message)
|
||||
{
|
||||
this.error_message = message;
|
||||
|
|
|
@ -99,6 +99,17 @@ public class ContentMenuPanel implements Cloneable, ContentRender
|
|||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return title;
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface ContentRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -20,7 +20,7 @@ package com.silverwrist.venice.servlets.format;
|
|||
import java.io.Writer;
|
||||
import java.io.IOException;
|
||||
|
||||
public interface ContentRender
|
||||
public interface ContentRender extends VeniceContent
|
||||
{
|
||||
public abstract void renderHere(Writer out, RenderData rdat) throws IOException;
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -20,15 +20,27 @@ package com.silverwrist.venice.servlets.format;
|
|||
import java.io.Writer;
|
||||
import java.io.IOException;
|
||||
import com.silverwrist.util.StringUtil;
|
||||
import com.silverwrist.venice.servlets.VeniceServletResult;
|
||||
|
||||
public class ErrorBox implements ContentRender
|
||||
public class ErrorBox extends VeniceServletResult implements ContentRender
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private String title;
|
||||
private String message;
|
||||
private String back;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public ErrorBox(String title, String message, String back)
|
||||
{
|
||||
super();
|
||||
this.title = title;
|
||||
this.message = message;
|
||||
this.back = back;
|
||||
|
@ -38,6 +50,22 @@ public class ErrorBox implements ContentRender
|
|||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return title;
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface ContentRender
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public void renderHere(Writer out, RenderData rdat) throws IOException
|
||||
{
|
||||
out.write("<P><TABLE ALIGN=CENTER WIDTH=\"70%\" BORDER=1 CELLPADDING=2 CELLSPACING=1>");
|
||||
|
|
|
@ -138,6 +138,17 @@ public class FindData implements JSPRender, SearchMode
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Find";
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -19,7 +19,7 @@ package com.silverwrist.venice.servlets.format;
|
|||
|
||||
import javax.servlet.ServletRequest;
|
||||
|
||||
public interface JSPRender
|
||||
public interface JSPRender extends VeniceContent
|
||||
{
|
||||
public abstract void store(ServletRequest request);
|
||||
|
||||
|
|
130
src/com/silverwrist/venice/servlets/format/ManageConference.java
Normal file
130
src/com/silverwrist/venice/servlets/format/ManageConference.java
Normal file
|
@ -0,0 +1,130 @@
|
|||
/*
|
||||
* 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.venice.core.*;
|
||||
|
||||
public class ManageConference implements JSPRender
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Static data members
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
// Attribute name for request attribute
|
||||
protected static final String ATTR_NAME = "com.silverwrist.venice.content.ManageConference";
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private SIGContext sig; // the SIG we're in
|
||||
private ConferenceContext conf; // the conference being listed
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public ManageConference(SIGContext sig, ConferenceContext conf)
|
||||
{
|
||||
this.sig = sig;
|
||||
this.conf = conf;
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* External static functions
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public static ManageConference retrieve(ServletRequest request)
|
||||
{
|
||||
return (ManageConference)(request.getAttribute(ATTR_NAME));
|
||||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Manage Conference: " + conf.getName();
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public void store(ServletRequest request)
|
||||
{
|
||||
request.setAttribute(ATTR_NAME,this);
|
||||
|
||||
} // end store
|
||||
|
||||
public String getTargetJSPName()
|
||||
{
|
||||
return "manage_conf.jsp";
|
||||
|
||||
} // end getTargetJSPName
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* External operations
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public int getSIGID()
|
||||
{
|
||||
return sig.getSIGID();
|
||||
|
||||
} // end getSIGID
|
||||
|
||||
public int getConfID()
|
||||
{
|
||||
return conf.getConfID();
|
||||
|
||||
} // end getConfID
|
||||
|
||||
public String getConfName()
|
||||
{
|
||||
return conf.getName();
|
||||
|
||||
} // end getConfName
|
||||
|
||||
public String getLocator()
|
||||
{
|
||||
return "sig=" + sig.getSIGID() + "&conf=" + conf.getConfID();
|
||||
|
||||
} // end getLocator
|
||||
|
||||
public boolean displayAdminSection()
|
||||
{
|
||||
return conf.canChangeConference();
|
||||
// TODO: needs to have "delete" permission OR'ed in
|
||||
|
||||
} // end displayAdminSection
|
||||
|
||||
} // end class ManageConference
|
|
@ -23,7 +23,7 @@ import java.util.*;
|
|||
import com.silverwrist.util.StringUtil;
|
||||
import com.silverwrist.venice.core.*;
|
||||
|
||||
public class MenuSIG implements ContentRender
|
||||
public class MenuSIG implements ComponentRender
|
||||
{
|
||||
private String image_url;
|
||||
private boolean image_url_needs_fixup = false;
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -20,7 +20,7 @@ package com.silverwrist.venice.servlets.format;
|
|||
import java.io.Writer;
|
||||
import java.io.IOException;
|
||||
|
||||
public class MenuTop implements ContentRender
|
||||
public class MenuTop implements ComponentRender
|
||||
{
|
||||
public MenuTop()
|
||||
{ // constructor does nothing
|
||||
|
|
|
@ -61,6 +61,17 @@ public class NewSIGWelcome implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "New SIG Created";
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -70,6 +70,17 @@ public class NewTopicForm implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Create New Topic";
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -105,6 +105,17 @@ public class PostPreview implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Previewing Message";
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -98,6 +98,17 @@ public class PostSlippage implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Slippage or Double-Click Detected";
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -308,6 +308,18 @@ public class RenderData
|
|||
|
||||
} // end nullResponse
|
||||
|
||||
public void errorResponse(int code) throws IOException
|
||||
{
|
||||
response.sendError(code);
|
||||
|
||||
} // end errorResponse
|
||||
|
||||
public void errorResponse(int code, String msg) throws IOException
|
||||
{
|
||||
response.sendError(code,msg);
|
||||
|
||||
} // end errorResponse
|
||||
|
||||
public void sendBinaryData(String type, String filename, int length, InputStream data) throws IOException
|
||||
{
|
||||
response.setContentType(type);
|
||||
|
|
|
@ -71,6 +71,17 @@ public class SIGCategoryBrowseData implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Set SIG Category";
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -70,6 +70,17 @@ public class SIGProfileData implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "SIG Profile: " + sig.getName();
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -61,6 +61,17 @@ public class SIGWelcome implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Welcome to " + name;
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -26,7 +26,7 @@ import com.silverwrist.venice.core.DataException;
|
|||
|
||||
public abstract class TCStandardPanel extends TopContentPanel
|
||||
{
|
||||
class TCButton implements ContentRender
|
||||
class TCButton implements ComponentRender
|
||||
{
|
||||
private String image;
|
||||
private String alt_text;
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* 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 Community System.
|
||||
* 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
|
||||
|
@ -24,15 +24,28 @@ import com.silverwrist.venice.core.*;
|
|||
|
||||
public class TopContent implements ContentRender
|
||||
{
|
||||
// Static constants
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Static data members
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public static final int MAX_COLS = 2;
|
||||
|
||||
// Attributes
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private int actual_cols = MAX_COLS;
|
||||
private int[] col_sizes;
|
||||
private Vector panels = new Vector();
|
||||
private boolean display_configure;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public TopContent(UserContext uc) throws DataException
|
||||
{
|
||||
int i; // loop counter
|
||||
|
@ -74,6 +87,22 @@ public class TopContent implements ContentRender
|
|||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "My Front Page";
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface ContentRender
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public void renderHere(Writer out, RenderData rdat) throws IOException
|
||||
{
|
||||
out.write("<TABLE BORDER=0 ALIGN=CENTER WIDTH=\"100%\" CELLPADDING=4 CELLSPACING=0>\n");
|
||||
|
@ -108,6 +137,6 @@ public class TopContent implements ContentRender
|
|||
|
||||
rdat.writeFooter(out);
|
||||
|
||||
} /* end renderHere */
|
||||
} // end renderHere
|
||||
|
||||
} // end class TopContent
|
||||
|
|
|
@ -22,7 +22,7 @@ import java.io.IOException;
|
|||
import com.silverwrist.venice.core.UserContext;
|
||||
import com.silverwrist.venice.core.DataException;
|
||||
|
||||
public abstract class TopContentPanel implements ContentRender, Cloneable
|
||||
public abstract class TopContentPanel implements ComponentRender, Cloneable
|
||||
{
|
||||
protected TopContentPanel()
|
||||
{ // do nothing
|
||||
|
|
|
@ -72,6 +72,17 @@ public class TopicListing implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "Topics in " + conf.getName();
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -89,6 +89,18 @@ public class TopicPosts implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return topic.getName() + ": " + topic.getTotalMessages() + " Total; " + unread + " New; Last: "
|
||||
+ rdat.formatDateForDisplay(topic.getLastUpdateDate());
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -60,6 +60,17 @@ public class UserProfileData implements JSPRender
|
|||
|
||||
} // end retrieve
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface VeniceContent
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getPageTitle(RenderData rdat)
|
||||
{
|
||||
return "User Profile - " + prof.getUserName();
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface JSPRender
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* 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;
|
||||
|
||||
public interface VeniceContent
|
||||
{
|
||||
public abstract String getPageTitle(RenderData rdat);
|
||||
|
||||
} // end interface VeniceContent
|
|
@ -7,7 +7,7 @@
|
|||
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 Community System.
|
||||
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
|
||||
|
@ -22,9 +22,10 @@
|
|||
<%@ page import = "com.silverwrist.venice.servlets.format.*" %>
|
||||
<%!
|
||||
|
||||
private static void renderMenu(HttpSession session, java.io.Writer out, RenderData rdat) throws java.io.IOException
|
||||
private static void renderMenu(HttpSession session, java.io.Writer out, RenderData rdat)
|
||||
throws java.io.IOException
|
||||
{
|
||||
ContentRender menu = Variables.getMenu(session);
|
||||
ComponentRender menu = Variables.getMenu(session);
|
||||
if (menu==null)
|
||||
menu = new MenuTop();
|
||||
menu.renderHere(out,rdat);
|
||||
|
@ -33,14 +34,15 @@ private static void renderMenu(HttpSession session, java.io.Writer out, RenderDa
|
|||
|
||||
%>
|
||||
<%
|
||||
BaseJSPData basedat = BaseJSPData.retrieve(request);
|
||||
Variables.failIfNull(basedat);
|
||||
UserContext user = Variables.getUserContext(application,request,session);
|
||||
RenderData rdat = RenderConfig.createRenderData(application,request,response);
|
||||
BaseJSPData basedat = BaseJSPData.retrieve(request);
|
||||
%>
|
||||
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<%= rdat.getTitleTag(basedat.getTitle()) %>
|
||||
<%= rdat.getTitleTag(basedat.getTitle(rdat)) %>
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="#9999FF">
|
||||
|
|
|
@ -35,8 +35,7 @@
|
|||
<IMG SRC="<%= rdat.getFullImagePath("purple-ball.gif") %>" ALT="*" WIDTH=14 HEIGHT=14 BORDER=0>
|
||||
</TD>
|
||||
<TD ALIGN=LEFT><%= rdat.getStdFontTag(null,2) %>
|
||||
<% String path = "confdisp?sig=" + String.valueOf(data.getSIGID()) + "&conf="
|
||||
+ String.valueOf(data.getConferenceID(i)); %>
|
||||
<% String path = "confdisp?sig=" + data.getSIGID() + "&conf=" + data.getConferenceID(i); %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(path) %>"><%= StringUtil.encodeHTML(data.getConferenceName(i)) %></A> -
|
||||
Latest activity: <%= rdat.getActivityString(data.getLastUpdateDate(i)) %><BR>
|
||||
<% int count = data.getNumHosts(i); %>
|
||||
|
@ -59,7 +58,7 @@
|
|||
<% if (data.canCreateConference()) { %>
|
||||
<P>
|
||||
<DIV ALIGN="LEFT">
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?cmd=C&sig=" + String.valueOf(data.getSIGID())) %>"><IMG
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?cmd=C&sig=" + data.getSIGID()) %>"><IMG
|
||||
SRC="<%= rdat.getFullImagePath("bn_create_new.gif") %>" ALT="Create New" WIDTH=80 HEIGHT=24 BORDER=0></A>
|
||||
</DIV>
|
||||
<% } // end if %>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
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 Community System.
|
||||
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
|
||||
|
@ -105,8 +105,7 @@ private static String getActivityString(SIGContext sig, RenderData rdat)
|
|||
<%= rdat.getStdFontTag(null,2) %>
|
||||
Display all categories whose name
|
||||
|
||||
<% } else throw new InternalStateError("display parameter " + String.valueOf(data.getDisplayOption())
|
||||
+ " invalid"); %>
|
||||
<% } else throw new InternalStateError("display parameter " + data.getDisplayOption() + " invalid"); %>
|
||||
|
||||
<SELECT NAME="mode" SIZE=1>
|
||||
<OPTION VALUE="<%= SearchMode.SEARCH_PREFIX %>"
|
||||
|
|
59
web/format/manage_conf.jsp
Normal file
59
web/format/manage_conf.jsp
Normal file
|
@ -0,0 +1,59 @@
|
|||
<%--
|
||||
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.*" %>
|
||||
<%
|
||||
ManageConference data = ManageConference.retrieve(request);
|
||||
Variables.failIfNull(data);
|
||||
RenderData rdat = RenderConfig.createRenderData(application,request,response);
|
||||
%>
|
||||
<% if (rdat.useHTMLComments()) { %><!-- Managing conference #<%= data.getConfID() %> --><% } %>
|
||||
<% rdat.writeContentHeader(out,"Manage Conference:",data.getConfName()); %>
|
||||
|
||||
<%= rdat.getStdFontTag(null,2) %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator()) %>">Return to Topic List</A>
|
||||
</FONT><P>
|
||||
|
||||
<% if (rdat.useHTMLComments()) { %><!-- Set Default Pseud Form --><% } %>
|
||||
<FORM METHOD="POST" ACTION="<%= rdat.getEncodedServletPath("confops") %>">
|
||||
<INPUT TYPE="HIDDEN" NAME="sig" VALUE="<%= data.getSIGID() %>">
|
||||
<INPUT TYPE="HIDDEN" NAME="conf" VALUE="<%= data.getConfID() %>">
|
||||
<INPUT TYPE="HIDDEN" NAME="cmd" VALUE="P">
|
||||
<%= rdat.getStdFontTag(null,2) %>
|
||||
Set default pseud for conference:
|
||||
<INPUT TYPE="TEXT" NAME="pseud" VALUE="" SIZE=37 MAXLENGTH=255>
|
||||
<INPUT TYPE="IMAGE" SRC="<%= rdat.getFullImagePath("bn_set.gif") %>" NAME="set" ALT="Set"
|
||||
WIDTH=80 HEIGHT=24 BORDER=0>
|
||||
</FONT>
|
||||
</FORM><P>
|
||||
|
||||
<% if (rdat.useHTMLComments()) { %><!-- Fixseen Link --><% } %>
|
||||
<%= rdat.getStdFontTag(null,2) %><B>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?" + data.getLocator() + "&cmd=FX") %>">Mark
|
||||
entire conference as read (fixseen)</A>
|
||||
</B></FONT><P>
|
||||
|
||||
<% if (data.displayAdminSection()) { %>
|
||||
<% if (rdat.useHTMLComments()) { %><!-- Host Tools Section --><% } %>
|
||||
<%-- TODO: fill this in --%>
|
||||
<% } // end if (displaying admin section) %>
|
||||
|
||||
<% rdat.writeFooter(out); %>
|
|
@ -34,8 +34,8 @@
|
|||
tmp = "(Frozen) ";
|
||||
else
|
||||
tmp = "";
|
||||
rdat.writeContentHeader(out,data.getTopicName(),tmp + String.valueOf(data.getTotalMessages())
|
||||
+ " Total; " + String.valueOf(data.getNewMessages()) + " New; Last: "
|
||||
rdat.writeContentHeader(out,data.getTopicName(),tmp + data.getTotalMessages() + " Total; "
|
||||
+ data.getNewMessages() + " New; Last: "
|
||||
+ rdat.formatDateForDisplay(data.getLastUpdate()));
|
||||
%>
|
||||
<TABLE BORDER=0 WIDTH="100%" CELLPADDING=0 CELLSPACING=0>
|
||||
|
@ -162,7 +162,7 @@
|
|||
<% } // end if %>
|
||||
<%= rdat.getStdFontTag(null,2) %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&shac=1&p1="
|
||||
+ String.valueOf(msg.getPostNumber())) %>"><%= msg.getPostNumber() %></A> of
|
||||
+ msg.getPostNumber()) %>"><%= msg.getPostNumber() %></A> of
|
||||
<A HREF="<%= last_post %>"><%= data.getTotalMessages() - 1 %></A>
|
||||
<%= rdat.getStdFontTag(null,1) %><<%= data.getMessageReference(msg) %>></FONT>
|
||||
<% if (data.showAdvanced() && msg.isHidden()) { %>
|
||||
|
@ -176,7 +176,7 @@
|
|||
</EM>)
|
||||
<% if (msg.hasAttachment()) { %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("attachment?" + data.getConfLocator() + "&msg="
|
||||
+ String.valueOf(msg.getPostID())) %>"><IMG
|
||||
+ msg.getPostID()) %>"><IMG
|
||||
SRC="<%= rdat.getFullImagePath("attachment.gif") %>"
|
||||
ALT="(Attachment <%= msg.getAttachmentFilename() %> - <%= msg.getAttachmentLength() %> bytes)"
|
||||
WIDTH=16 HEIGHT=16 BORDER=0></A>
|
||||
|
@ -190,14 +190,14 @@
|
|||
<% } else if (msg.isHidden() && !(data.showAdvanced())) { %>
|
||||
<TT><EM><B>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&shac=1&p1="
|
||||
+ String.valueOf(msg.getPostNumber())) %>">(Hidden
|
||||
+ msg.getPostNumber()) %>">(Hidden
|
||||
Message: <%= msg.getNumLines() %> <% if (msg.getNumLines()==1) { %>Line<% } else { %>Lines<% } %>)</A>
|
||||
</B></EM></TT><P>
|
||||
<% } else { %>
|
||||
<PRE><%= rdat.rewritePostData(data.getMessageBodyText(msg)) %></PRE>
|
||||
<% } // end if %>
|
||||
<% if (data.showAdvanced()) { %>
|
||||
<% String po_loc = data.getLocator() + "&msg=" + String.valueOf(msg.getPostNumber()); %>
|
||||
<% String po_loc = data.getLocator() + "&msg=" + msg.getPostNumber(); %>
|
||||
</TD><TD NOWRAP ALIGN=RIGHT>
|
||||
<% if (!(msg.isScribbled())) { %>
|
||||
<% if (msg.canHide()) { %>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
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 Community System.
|
||||
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
|
||||
|
@ -51,9 +51,12 @@
|
|||
<% if (data.isUserLoggedIn()) { %>
|
||||
<DIV ALIGN="CENTER">
|
||||
<% if (sig.isMember()) { %>
|
||||
<A HREF="/TODO"><IMG SRC="<%= rdat.getFullImagePath("bn_invite.gif") %>" ALT="Invite" WIDTH=80 HEIGHT=24 BORDER=0></A>
|
||||
<A HREF="/TODO"><IMG SRC="<%= rdat.getFullImagePath("bn_invite.gif") %>" ALT="Invite"
|
||||
WIDTH=80 HEIGHT=24 BORDER=0></A>
|
||||
<% } else if (sig.canJoin()) { %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("sigops?cmd=J&sig=" + String.valueOf(sig.getSIGID())) %>"><IMG SRC="<%= rdat.getFullImagePath("bn_join_now.gif") %>" ALT="Join Now" WIDTH=80 HEIGHT=24 BORDER=0></A>
|
||||
<A HREF="<%= rdat.getEncodedServletPath("sigops?cmd=J&sig=" + sig.getSIGID()) %>"><IMG
|
||||
SRC="<%= rdat.getFullImagePath("bn_join_now.gif") %>" ALT="Join Now"
|
||||
WIDTH=80 HEIGHT=24 BORDER=0></A>
|
||||
<% } // end if %>
|
||||
</DIV>
|
||||
<% } // end if (user is logged in) %>
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<% rdat.writeContentHeader(out,"Topics in " + data.getConfName(),null); %>
|
||||
<%= rdat.getStdFontTag(null,2) %>
|
||||
<DIV ALIGN="LEFT">
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?sig=" + String.valueOf(data.getSIGID())) %>"><IMG
|
||||
<A HREF="<%= rdat.getEncodedServletPath("confops?sig=" + data.getSIGID()) %>"><IMG
|
||||
SRC="<%= rdat.getFullImagePath("bn_conference_list.gif") %>" ALT="Conference List" WIDTH=80 HEIGHT=24
|
||||
BORDER=0></A>
|
||||
<% if (data.canCreateTopic()) { %>
|
||||
|
@ -56,32 +56,32 @@
|
|||
<TR VALIGN=TOP>
|
||||
<TD ALIGN=LEFT WIDTH="1%"><%= rdat.getStdFontTag(null,2) %>
|
||||
<% tmp = self + "&sort="
|
||||
+ String.valueOf(data.isSort(ConferenceContext.SORT_NUMBER) ? -ConferenceContext.SORT_NUMBER
|
||||
: ConferenceContext.SORT_NUMBER); %>
|
||||
+ (data.isSort(ConferenceContext.SORT_NUMBER) ? -ConferenceContext.SORT_NUMBER
|
||||
: ConferenceContext.SORT_NUMBER); %>
|
||||
<B><A HREF="<%= rdat.getEncodedServletPath(tmp) %>">#</A></B>
|
||||
</FONT></TD>
|
||||
<TD ALIGN=LEFT><%= rdat.getStdFontTag(null,2) %>
|
||||
<% tmp = self + "&sort="
|
||||
+ String.valueOf(data.isSort(ConferenceContext.SORT_NAME) ? -ConferenceContext.SORT_NAME
|
||||
: ConferenceContext.SORT_NAME); %>
|
||||
+ (data.isSort(ConferenceContext.SORT_NAME) ? -ConferenceContext.SORT_NAME
|
||||
: ConferenceContext.SORT_NAME); %>
|
||||
<B><A HREF="<%= rdat.getEncodedServletPath(tmp) %>">Topic Name</A></B>
|
||||
</FONT></TD>
|
||||
<TD ALIGN=RIGHT><%= rdat.getStdFontTag(null,2) %>
|
||||
<% tmp = self + "&sort="
|
||||
+ String.valueOf(data.isSort(ConferenceContext.SORT_UNREAD) ? -ConferenceContext.SORT_UNREAD
|
||||
: ConferenceContext.SORT_UNREAD); %>
|
||||
+ (data.isSort(ConferenceContext.SORT_UNREAD) ? -ConferenceContext.SORT_UNREAD
|
||||
: ConferenceContext.SORT_UNREAD); %>
|
||||
<B><A HREF="<%= rdat.getEncodedServletPath(tmp) %>">New</A></B>
|
||||
</FONT></TD>
|
||||
<TD ALIGN=RIGHT><%= rdat.getStdFontTag(null,2) %>
|
||||
<% tmp = self + "&sort="
|
||||
+ String.valueOf(data.isSort(ConferenceContext.SORT_TOTAL) ? -ConferenceContext.SORT_TOTAL
|
||||
: ConferenceContext.SORT_TOTAL); %>
|
||||
+ (data.isSort(ConferenceContext.SORT_TOTAL) ? -ConferenceContext.SORT_TOTAL
|
||||
: ConferenceContext.SORT_TOTAL); %>
|
||||
<B><A HREF="<%= rdat.getEncodedServletPath(tmp) %>">Total</A></B>
|
||||
</FONT></TD>
|
||||
<TD ALIGN=LEFT><%= rdat.getStdFontTag(null,2) %>
|
||||
<% tmp = self + "&sort="
|
||||
+ String.valueOf(data.isSort(ConferenceContext.SORT_DATE) ? -ConferenceContext.SORT_DATE
|
||||
: ConferenceContext.SORT_DATE); %>
|
||||
+ (data.isSort(ConferenceContext.SORT_DATE) ? -ConferenceContext.SORT_DATE
|
||||
: ConferenceContext.SORT_DATE); %>
|
||||
<B><A HREF="<%= rdat.getEncodedServletPath(tmp) %>">Last Response</A></B>
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
|
@ -90,7 +90,7 @@
|
|||
<% while (it.hasNext()) { %>
|
||||
<%
|
||||
TopicContext topic = (TopicContext)(it.next());
|
||||
tmp = self + "&top=" + String.valueOf(topic.getTopicNumber()) + "&rnm=1";
|
||||
tmp = self + "&top=" + topic.getTopicNumber() + "&rnm=1";
|
||||
%>
|
||||
<TR VALIGN=TOP>
|
||||
<TD ALIGN=LEFT WIDTH="1%"><%= rdat.getStdFontTag(null,2) %>
|
||||
|
@ -108,7 +108,7 @@
|
|||
<A HREF="<%= rdat.getEncodedServletPath(tmp) %>"><%= topic.getUnreadMessages() %></A>
|
||||
</FONT></TD>
|
||||
<TD ALIGN=RIGHT><%= rdat.getStdFontTag(null,2) %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&top=" + String.valueOf(topic.getTopicNumber())
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&top=" + topic.getTopicNumber()
|
||||
+ "&p1=0&p2=-1") %>"><%= topic.getTotalMessages() %></A>
|
||||
</FONT></TD>
|
||||
<TD ALIGN=LEFT><%= rdat.getStdFontTag(null,2) %>
|
||||
|
@ -156,31 +156,34 @@
|
|||
<% if (data.isView(ConferenceContext.DISPLAY_NEW)) { %>
|
||||
<B>New</B>
|
||||
<% } else { %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + String.valueOf(ConferenceContext.DISPLAY_NEW)) %>">New</A>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + ConferenceContext.DISPLAY_NEW) %>">New</A>
|
||||
<% } // end if %>
|
||||
<B>|</B>
|
||||
<% if (data.isView(ConferenceContext.DISPLAY_ACTIVE)) { %>
|
||||
<B>Active</B>
|
||||
<% } else { %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + String.valueOf(ConferenceContext.DISPLAY_ACTIVE)) %>">Active</A>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&view="
|
||||
+ ConferenceContext.DISPLAY_ACTIVE) %>">Active</A>
|
||||
<% } // end if %>
|
||||
<B>|</B>
|
||||
<% if (data.isView(ConferenceContext.DISPLAY_ALL)) { %>
|
||||
<B>All</B>
|
||||
<% } else { %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + String.valueOf(ConferenceContext.DISPLAY_ALL)) %>">All</A>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + ConferenceContext.DISPLAY_ALL) %>">All</A>
|
||||
<% } // end if %>
|
||||
<B>|</B>
|
||||
<% if (data.isView(ConferenceContext.DISPLAY_HIDDEN)) { %>
|
||||
<B>Hidden</B>
|
||||
<% } else { %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + String.valueOf(ConferenceContext.DISPLAY_HIDDEN)) %>">Hidden</A>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&view="
|
||||
+ ConferenceContext.DISPLAY_HIDDEN) %>">Hidden</A>
|
||||
<% } // end if %>
|
||||
<B>|</B>
|
||||
<% if (data.isView(ConferenceContext.DISPLAY_ARCHIVED)) { %>
|
||||
<B>Archived</B>
|
||||
<% } else { %>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&view=" + String.valueOf(ConferenceContext.DISPLAY_ARCHIVED)) %>">Archived</A>
|
||||
<A HREF="<%= rdat.getEncodedServletPath(self + "&view="
|
||||
+ ConferenceContext.DISPLAY_ARCHIVED) %>">Archived</A>
|
||||
<% } // end if %>
|
||||
<B>]</B>
|
||||
</DIV>
|
||||
|
|
Loading…
Reference in New Issue
Block a user