added the Member List functionality to communities

This commit is contained in:
Eric J. Bowersox
2001-11-12 20:18:07 +00:00
parent 98d949fd74
commit 5b17952eee
7 changed files with 622 additions and 5 deletions

View File

@@ -213,6 +213,29 @@ public class CommunityOperations extends VeniceServlet
} // end if ("I" command)
if (cmd.equals("M"))
{ // "M" = List Members
CommunityContext comm = getCommunityParameter(request,user,true,"top");
if (logger.isDebugEnabled())
logger.debug("Member list for community: " + comm.getName());
try
{ // return the view dialog
ViewCommunityMembers view = new ViewCommunityMembers(engine,comm);
view.doInitialList();
changeMenuCommunity(request,comm);
return view;
} // end try
catch (DataException de)
{ // unable to get community members list
return new ErrorBox("Database Error","Database error getting community members list: "
+ de.getMessage(),"top");
} // end catch
} // end if ("M" command)
// this is an error!
logger.error("invalid command to CommunityOperations.doGet: " + cmd);
return new ErrorBox("Internal Error","Invalid command to CommunityOperations.doGet","top");
@@ -230,6 +253,7 @@ public class CommunityOperations extends VeniceServlet
if (cmd.equals("J"))
{ // "J" = Join Community (requires community parameter)
CommunityContext comm = getCommunityParameter(request,user,true,"top");
setMyLocation(request,"sigops?cmd=J&sig=" + comm.getCommunityID());
JoinKeyDialog dlg = makeJoinKeyDialog();
if (dlg.isButtonClicked(request,"cancel")) // cancel - go back to community opening page
@@ -336,6 +360,7 @@ public class CommunityOperations extends VeniceServlet
if (cmd.equals("I"))
{ // "I" = Send invitation (requires community parameter)
CommunityContext comm = getCommunityParameter(request,user,true,"top");
setMyLocation(request,"sigops?cmd=I&sig=" + comm.getCommunityID());
String on_error = "sig/" + comm.getAlias();
if (isImageButtonClicked(request,"cancel")) // cancel - go back to community opening page
@@ -376,6 +401,37 @@ public class CommunityOperations extends VeniceServlet
} // end if ("I" command)
if (cmd.equals("M"))
{ // "M" = Display Members List
CommunityContext comm = getCommunityParameter(request,user,true,"top");
setMyLocation(request,"sigops?cmd=M&sig=" + comm.getCommunityID());
String on_error = "sig/" + comm.getAlias();
if (logger.isDebugEnabled())
logger.debug("Member list for community: " + comm.getName());
try
{ // generate the members list
ViewCommunityMembers view = new ViewCommunityMembers(engine,comm);
view.doSearch(request);
changeMenuCommunity(request,comm);
return view;
} // end try
catch (ValidationException ve)
{ // validation error - throw it back to the user
return new ErrorBox(null,ve.getMessage() + " Please try again.",
"sigops?cmd=M&sig=" + comm.getCommunityID());
} // end catch
catch (DataException de)
{ // unable to get community members list
return new ErrorBox("Database Error","Database error getting community members list: "
+ de.getMessage(),on_error);
} // end catch
} // end if ("M" command)
// this is an error!
logger.error("invalid command to CommunityOperations.doPost: " + cmd);
return new ErrorBox("Internal Error","Invalid command to CommunityOperations.doPost","top");
@@ -383,3 +439,6 @@ public class CommunityOperations extends VeniceServlet
} // end doVenicePost
} // end class CommunityOperations

View File

@@ -0,0 +1,63 @@
/*
* 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.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.log4j.*;
import com.silverwrist.venice.servlets.format.RenderConfig;
import com.silverwrist.venice.servlets.format.RenderData;
public class MemberRedirect extends HttpServlet
{
/*--------------------------------------------------------------------------------
* Static data members
*--------------------------------------------------------------------------------
*/
private static Category logger = Category.getInstance(MemberRedirect.class);
/*--------------------------------------------------------------------------------
* Overrides from class HttpServlet
*--------------------------------------------------------------------------------
*/
public String getServletInfo()
{
String rc = "MemberRedirect servlet - Generates the member list for the community\n"
+ "Part of the Venice Web Communities System\n";
return rc;
} // end getServletInfo
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
if (logger.isDebugEnabled())
logger.debug("Hit MemberRedirect");
ServletContext ctxt = getServletContext();
RenderData rdat = RenderConfig.createRenderData(ctxt,request,response);
String url = "sigops?cmd=M&sig=" + request.getParameter("sig");
if (logger.isDebugEnabled())
logger.debug("Bouncing to URL: " + url);
rdat.redirectTo(url);
} // end doGet
} // end class MemberRedirect

View File

@@ -34,6 +34,9 @@ public class TopicPosts implements JSPRender
private static Category logger = Category.getInstance(TopicPosts.class);
private static int SCALING_NUM = 1;
private static int SCALING_DENOM = 2;
// Attribute name for request attribute
protected static final String ATTR_NAME = "com.silverwrist.venice.content.TopicPosts";
@@ -98,6 +101,9 @@ public class TopicPosts implements JSPRender
HashSet saw_users = new HashSet();
if (conf.displayPostPictures() && user.displayPostPictures())
{ // build up the mapping of UIDs to photo URLs
Dimension psz = engine.getUserPhotoSize();
photo_size = new Dimension((psz.width * SCALING_NUM) / SCALING_DENOM,
(psz.height * SCALING_NUM) / SCALING_DENOM);
photo_size = engine.getUserPhotoSize();
uid_photos = new HashMap();

View File

@@ -0,0 +1,332 @@
/*
* 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.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.silverwrist.venice.ValidationException;
import com.silverwrist.venice.core.*;
public class ViewCommunityMembers implements JSPRender, SearchMode
{
/*--------------------------------------------------------------------------------
* Static data members
*--------------------------------------------------------------------------------
*/
// Attribute name for request attribute
protected static final String ATTR_NAME = "com.silverwrist.venice.content.ViewCommunityMembers";
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private VeniceEngine engine; // engine context
private CommunityContext comm; // community context
private List display_list = null; // list of members to display
private boolean simple_list = false; // simple list?
private int field = -1; // search field
private int mode = -1; // search mode
private String term = null; // search term
private int offset = 0; // search result offset
private int find_count = -1; // search results count
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
public ViewCommunityMembers(VeniceEngine engine, CommunityContext comm)
{
this.engine = engine;
this.comm = comm;
} // end constructor
/*--------------------------------------------------------------------------------
* Internal functions
*--------------------------------------------------------------------------------
*/
private static int getParamInt(ServletRequest request, String name, int default_val)
{
String str = request.getParameter(name);
if (str==null)
return -1;
try
{ // parse the integer value
return Integer.parseInt(str);
} // end try
catch (NumberFormatException nfe)
{ // in case of conversion error, return default
return default_val;
} // end catch
} // end getParamInt
private static boolean isImageButtonClicked(ServletRequest request, String name)
{
String val = request.getParameter(name + ".x");
return (val!=null);
} // end isImageButtonClicked
/*--------------------------------------------------------------------------------
* External static functions
*--------------------------------------------------------------------------------
*/
public static ViewCommunityMembers retrieve(ServletRequest request)
{
return (ViewCommunityMembers)(request.getAttribute(ATTR_NAME));
} // end retrieve
/*--------------------------------------------------------------------------------
* Implementations from interface VeniceContent
*--------------------------------------------------------------------------------
*/
public String getPageTitle(RenderData rdat)
{
return "Members of Community " + comm.getName();
} // end getPageTitle
public String getPageQID()
{
return null;
} // end getPageQID
/*--------------------------------------------------------------------------------
* Implementations from interface JSPRender
*--------------------------------------------------------------------------------
*/
public void store(ServletRequest request)
{
request.setAttribute(ATTR_NAME,this);
} // end store
public String getTargetJSPName()
{
return "view_member.jsp";
} // end getTargetJSPName
/*--------------------------------------------------------------------------------
* External operations
*--------------------------------------------------------------------------------
*/
public void doInitialList() throws DataException
{
display_list = comm.getMemberList();
simple_list = true;
term = "";
offset = 0;
find_count = display_list.size();
} // end doInitialList
public void doSearch(ServletRequest request) throws ValidationException, DataException
{
// Get the "simple list" parameter.
int slp = getParamInt(request,"sl",1);
simple_list = (slp==1);
if (simple_list)
{ // Retrieve the offset and find count parameters.
offset = getParamInt(request,"ofs",0);
find_count = getParamInt(request,"fcount",-1);
// Adjust the search return offset based on the command button click.
int count = getNumResultsDisplayed();
if (isImageButtonClicked(request,"search"))
throw new ValidationException("Invalid button click."); // this can't happen
else if (isImageButtonClicked(request,"previous"))
{ // adjust the offset in the reverse direction
offset -= count;
if (offset<0)
offset = 0;
} // end else if
else if (isImageButtonClicked(request,"next"))
offset += count; // go forwards instead
else
throw new ValidationException("Unable to determine what action triggered the form.");
// Get the member list and offset it if necessary.
List tmp = comm.getMemberList();
if (find_count<0)
find_count = tmp.size();
if (offset>0)
display_list = tmp.subList(offset,tmp.size());
else
display_list = tmp;
term = ""; // null out the search term
} // end if
else
{ // Validate the search field parameter.
field = getParamInt(request,"field",FIELD_USER_NAME);
if ( (field!=FIELD_USER_NAME) && (field!=FIELD_USER_DESCRIPTION) && (field!=FIELD_USER_GIVEN_NAME)
&& (field!=FIELD_USER_FAMILY_NAME))
throw new ValidationException("The field search parameter is not valid.");
// Validate the search mode parameter.
mode = getParamInt(request,"mode",SEARCH_PREFIX);
if ((mode!=SEARCH_PREFIX) && (mode!=SEARCH_SUBSTRING) && (mode!=SEARCH_REGEXP))
throw new ValidationException("The search mode parameter is not valid.");
// Retrieve the search term parameter.
term = request.getParameter("term");
if (term==null)
term = "";
// Retrieve the offset and find count parameters.
offset = getParamInt(request,"ofs",0);
find_count = getParamInt(request,"fcount",-1);
// Adjust the search return offset based on the command button click.
int count = getNumResultsDisplayed();
if (isImageButtonClicked(request,"search"))
offset = 0;
else if (isImageButtonClicked(request,"previous"))
{ // adjust the offset in the reverse direction
offset -= count;
if (offset<0)
offset = 0;
} // end else if
else if (isImageButtonClicked(request,"next"))
offset += count; // go forwards instead
else
throw new ValidationException("Unable to determine what action triggered the form.");
// Perform the search!
display_list = comm.searchForMembers(field,mode,term,offset,count);
if (find_count<0)
find_count = comm.getSearchMemberCount(field,mode,term);
} // end else
} // end doSearch
public int getNumResultsDisplayed()
{
return engine.getStdNumSearchResults();
} // end getNumResultsDisplayed
public String getCommunityName()
{
return comm.getName();
} // end getCommunityName
public int getCommunityID()
{
return comm.getCommunityID();
} // end getCommunityID
public boolean getSimpleList()
{
return simple_list;
} // end getSimpleList
public int getSimpleListParam()
{
return (simple_list ? 1 : 0);
} // end getSimpleListParam
public int getSearchField()
{
return field;
} // end getSearchField
public int getSearchMode()
{
return mode;
} // end getSearchMode
public boolean searchFieldIs(int value)
{
return (field==value);
} // end searchFieldIs
public boolean searchModeIs(int value)
{
return (mode==value);
} // end searchModeIs
public String getSearchTerm()
{
return term;
} // end getSearchTerm
public int getFindCount()
{
return find_count;
} // end getFindCount
public int getOffset()
{
return offset;
} // end getOffset
public int getSize()
{
return display_list.size();
} // end getSize
public boolean displayList()
{
if ((display_list==null) || (display_list.size()==0))
return false;
return true;
} // end displayList
public UserFound getItem(int ndx)
{
return (UserFound)(display_list.get(ndx));
} // end getItem
} // end class ViewCommunityMembers