added the Member List functionality to communities
This commit is contained in:
parent
98d949fd74
commit
5b17952eee
13
etc/web.xml
13
etc/web.xml
|
@ -254,6 +254,14 @@
|
||||||
<servlet-class>com.silverwrist.venice.servlets.Gateway</servlet-class>
|
<servlet-class>com.silverwrist.venice.servlets.Gateway</servlet-class>
|
||||||
</servlet>
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>memberredirect</servlet-name>
|
||||||
|
<description>
|
||||||
|
Displays the members list for a community (internal redirect to CommunityOperations).
|
||||||
|
</description>
|
||||||
|
<servlet-class>com.silverwrist.venice.servlets.MemberRedirect</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
<!-- the following are test servlets, they should go away -->
|
<!-- the following are test servlets, they should go away -->
|
||||||
|
|
||||||
<servlet>
|
<servlet>
|
||||||
|
@ -387,6 +395,11 @@
|
||||||
<url-pattern>/gw</url-pattern>
|
<url-pattern>/gw</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>memberredirect</servlet-name>
|
||||||
|
<url-pattern>/members</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
<!-- the following are test servlets, they should go away -->
|
<!-- the following are test servlets, they should go away -->
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet-name>testformdata</servlet-name>
|
<servlet-name>testformdata</servlet-name>
|
||||||
|
|
|
@ -1368,7 +1368,8 @@ INSERT INTO refsigftr (ftr_code, is_default, is_locked, is_hidden, require_read,
|
||||||
(0, 1, 1, 1, 0, 4900, 0, 'PROF', 'Profile', 'sigprofile'),
|
(0, 1, 1, 1, 0, 4900, 0, 'PROF', 'Profile', 'sigprofile'),
|
||||||
(1, 1, 1, 1, 0, 5000, 57000, 'ADMN', 'Administration', 'sigadmin'),
|
(1, 1, 1, 1, 0, 5000, 57000, 'ADMN', 'Administration', 'sigadmin'),
|
||||||
(2, 0, 1, 1, 0, 10000, 63000, 'SYSA', 'System Administration', 'sysadmin'),
|
(2, 0, 1, 1, 0, 10000, 63000, 'SYSA', 'System Administration', 'sysadmin'),
|
||||||
(3, 1, 0, 0, 1, 500, 0, 'CONF', 'Conferences', 'confops');
|
(3, 1, 0, 0, 1, 500, 0, 'CONF', 'Conferences', 'confops'),
|
||||||
|
(4, 1, 1, 0, 1, 4800, 0, 'MEMB', 'Members', 'members');
|
||||||
|
|
||||||
# Create the initial advertisements (quotes).
|
# Create the initial advertisements (quotes).
|
||||||
INSERT INTO adverts (imagepath) VALUES
|
INSERT INTO adverts (imagepath) VALUES
|
||||||
|
@ -1456,7 +1457,7 @@ INSERT INTO propcomm (cid, ndx, data) VALUES (1, 0, '');
|
||||||
|
|
||||||
# Insert the desired features for the 'Administration' SIG.
|
# Insert the desired features for the 'Administration' SIG.
|
||||||
INSERT INTO sigftrs (sigid, ftr_code)
|
INSERT INTO sigftrs (sigid, ftr_code)
|
||||||
VALUES (1, 0), (1, 1), (1, 2), (1, 3);
|
VALUES (1, 0), (1, 1), (1, 2), (1, 3), (1, 4);
|
||||||
|
|
||||||
# Make the 'Administrator' user the host of the 'Administration' SIG. Also, the Administrator
|
# Make the 'Administrator' user the host of the 'Administration' SIG. Also, the Administrator
|
||||||
# cannot unjoin the community.
|
# cannot unjoin the community.
|
||||||
|
@ -1490,7 +1491,7 @@ INSERT INTO propcomm (cid, ndx, data) VALUES (2, 0, '');
|
||||||
|
|
||||||
# Insert the desired features for La Piazza.
|
# Insert the desired features for La Piazza.
|
||||||
INSERT INTO sigftrs (sigid, ftr_code)
|
INSERT INTO sigftrs (sigid, ftr_code)
|
||||||
VALUES (2, 0), (2, 1), (2, 3);
|
VALUES (2, 0), (2, 1), (2, 3), (2, 4);
|
||||||
|
|
||||||
# Make 'Anonymous Honyak' a member of La Piazza. This is important because new users will
|
# Make 'Anonymous Honyak' a member of La Piazza. This is important because new users will
|
||||||
# have the membership list of Anonymous Honyak copied to their account on signup (but with
|
# have the membership list of Anonymous Honyak copied to their account on signup (but with
|
||||||
|
@ -1558,7 +1559,7 @@ INSERT INTO contacts (contactid, locality, country, owner_uid, owner_sigid)
|
||||||
VALUES (6, 'Anywhere', 'US', 2, 3);
|
VALUES (6, 'Anywhere', 'US', 2, 3);
|
||||||
INSERT INTO propcomm (cid, ndx, data) VALUES (3, 0, '');
|
INSERT INTO propcomm (cid, ndx, data) VALUES (3, 0, '');
|
||||||
INSERT INTO sigftrs (sigid, ftr_code)
|
INSERT INTO sigftrs (sigid, ftr_code)
|
||||||
VALUES (3, 0), (3, 1), (3, 3);
|
VALUES (3, 0), (3, 1), (3, 3), (3, 4);
|
||||||
INSERT INTO sigmember (sigid, uid, granted_lvl, locked)
|
INSERT INTO sigmember (sigid, uid, granted_lvl, locked)
|
||||||
VALUES (3, 2, 58500, 1);
|
VALUES (3, 2, 58500, 1);
|
||||||
|
|
||||||
|
@ -1573,6 +1574,6 @@ INSERT INTO contacts (contactid, locality, country, owner_uid, owner_sigid)
|
||||||
VALUES (7, 'Anywhere', 'US', 2, 4);
|
VALUES (7, 'Anywhere', 'US', 2, 4);
|
||||||
INSERT INTO propcomm (cid, ndx, data) VALUES (4, 0, '');
|
INSERT INTO propcomm (cid, ndx, data) VALUES (4, 0, '');
|
||||||
INSERT INTO sigftrs (sigid, ftr_code)
|
INSERT INTO sigftrs (sigid, ftr_code)
|
||||||
VALUES (4, 0), (4, 1), (4, 3);
|
VALUES (4, 0), (4, 1), (4, 3), (4, 4);
|
||||||
INSERT INTO sigmember (sigid, uid, granted_lvl, locked)
|
INSERT INTO sigmember (sigid, uid, granted_lvl, locked)
|
||||||
VALUES (4, 2, 58500, 1);
|
VALUES (4, 2, 58500, 1);
|
||||||
|
|
|
@ -213,6 +213,29 @@ public class CommunityOperations extends VeniceServlet
|
||||||
|
|
||||||
} // end if ("I" command)
|
} // 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!
|
// this is an error!
|
||||||
logger.error("invalid command to CommunityOperations.doGet: " + cmd);
|
logger.error("invalid command to CommunityOperations.doGet: " + cmd);
|
||||||
return new ErrorBox("Internal Error","Invalid command to CommunityOperations.doGet","top");
|
return new ErrorBox("Internal Error","Invalid command to CommunityOperations.doGet","top");
|
||||||
|
@ -230,6 +253,7 @@ public class CommunityOperations extends VeniceServlet
|
||||||
if (cmd.equals("J"))
|
if (cmd.equals("J"))
|
||||||
{ // "J" = Join Community (requires community parameter)
|
{ // "J" = Join Community (requires community parameter)
|
||||||
CommunityContext comm = getCommunityParameter(request,user,true,"top");
|
CommunityContext comm = getCommunityParameter(request,user,true,"top");
|
||||||
|
setMyLocation(request,"sigops?cmd=J&sig=" + comm.getCommunityID());
|
||||||
JoinKeyDialog dlg = makeJoinKeyDialog();
|
JoinKeyDialog dlg = makeJoinKeyDialog();
|
||||||
|
|
||||||
if (dlg.isButtonClicked(request,"cancel")) // cancel - go back to community opening page
|
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"))
|
if (cmd.equals("I"))
|
||||||
{ // "I" = Send invitation (requires community parameter)
|
{ // "I" = Send invitation (requires community parameter)
|
||||||
CommunityContext comm = getCommunityParameter(request,user,true,"top");
|
CommunityContext comm = getCommunityParameter(request,user,true,"top");
|
||||||
|
setMyLocation(request,"sigops?cmd=I&sig=" + comm.getCommunityID());
|
||||||
String on_error = "sig/" + comm.getAlias();
|
String on_error = "sig/" + comm.getAlias();
|
||||||
|
|
||||||
if (isImageButtonClicked(request,"cancel")) // cancel - go back to community opening page
|
if (isImageButtonClicked(request,"cancel")) // cancel - go back to community opening page
|
||||||
|
@ -376,6 +401,37 @@ public class CommunityOperations extends VeniceServlet
|
||||||
|
|
||||||
} // end if ("I" command)
|
} // 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!
|
// this is an error!
|
||||||
logger.error("invalid command to CommunityOperations.doPost: " + cmd);
|
logger.error("invalid command to CommunityOperations.doPost: " + cmd);
|
||||||
return new ErrorBox("Internal Error","Invalid command to CommunityOperations.doPost","top");
|
return new ErrorBox("Internal Error","Invalid command to CommunityOperations.doPost","top");
|
||||||
|
@ -383,3 +439,6 @@ public class CommunityOperations extends VeniceServlet
|
||||||
} // end doVenicePost
|
} // end doVenicePost
|
||||||
|
|
||||||
} // end class CommunityOperations
|
} // end class CommunityOperations
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
63
src/com/silverwrist/venice/servlets/MemberRedirect.java
Normal file
63
src/com/silverwrist/venice/servlets/MemberRedirect.java
Normal 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
|
|
@ -34,6 +34,9 @@ public class TopicPosts implements JSPRender
|
||||||
|
|
||||||
private static Category logger = Category.getInstance(TopicPosts.class);
|
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
|
// Attribute name for request attribute
|
||||||
protected static final String ATTR_NAME = "com.silverwrist.venice.content.TopicPosts";
|
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();
|
HashSet saw_users = new HashSet();
|
||||||
if (conf.displayPostPictures() && user.displayPostPictures())
|
if (conf.displayPostPictures() && user.displayPostPictures())
|
||||||
{ // build up the mapping of UIDs to photo URLs
|
{ // 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();
|
photo_size = engine.getUserPhotoSize();
|
||||||
uid_photos = new HashMap();
|
uid_photos = new HashMap();
|
||||||
|
|
||||||
|
|
|
@ -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
|
143
web/format/view_member.jsp
Normal file
143
web/format/view_member.jsp
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
<%--
|
||||||
|
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.security.Capability" %>
|
||||||
|
<%@ page import = "com.silverwrist.venice.servlets.Variables" %>
|
||||||
|
<%@ page import = "com.silverwrist.venice.servlets.format.*" %>
|
||||||
|
<%
|
||||||
|
ViewCommunityMembers data = ViewCommunityMembers.retrieve(request);
|
||||||
|
Variables.failIfNull(data);
|
||||||
|
RenderData rdat = RenderConfig.createRenderData(application,request,response);
|
||||||
|
%>
|
||||||
|
<% rdat.writeContentHeader(out,"Members of Community:",data.getCommunityName()); %>
|
||||||
|
|
||||||
|
<%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,3) %><B>Find members of community
|
||||||
|
"<%= data.getCommunityName() %>":</B></FONT><P>
|
||||||
|
<FORM METHOD="POST" ACTION="<%= rdat.getEncodedServletPath("sigops") %>"><DIV CLASS="content">
|
||||||
|
<INPUT TYPE="HIDDEN" NAME="sig" VALUE="<%= data.getCommunityID() %>">
|
||||||
|
<INPUT TYPE="HIDDEN" NAME="cmd" VALUE="M">
|
||||||
|
<INPUT TYPE="HIDDEN" NAME="sl" VALUE="0">
|
||||||
|
<INPUT TYPE="HIDDEN" NAME="ofs" VALUE="0">
|
||||||
|
<%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>
|
||||||
|
Display all community members whose
|
||||||
|
<SELECT NAME="field" SIZE=1>
|
||||||
|
<OPTION VALUE="<%= SearchMode.FIELD_USER_NAME %>"
|
||||||
|
<% if (data.searchFieldIs(SearchMode.FIELD_USER_NAME)) { %>SELECTED<% } %> >user name</OPTION>
|
||||||
|
<OPTION VALUE="<%= SearchMode.FIELD_USER_DESCRIPTION %>"
|
||||||
|
<% if (data.searchFieldIs(SearchMode.FIELD_USER_DESCRIPTION)) { %>SELECTED<% } %> >description</OPTION>
|
||||||
|
<OPTION VALUE="<%= SearchMode.FIELD_USER_GIVEN_NAME %>"
|
||||||
|
<% if (data.searchFieldIs(SearchMode.FIELD_USER_GIVEN_NAME)) { %>SELECTED<% } %> >first name</OPTION>
|
||||||
|
<OPTION VALUE="<%= SearchMode.FIELD_USER_FAMILY_NAME %>"
|
||||||
|
<% if (data.searchFieldIs(SearchMode.FIELD_USER_FAMILY_NAME)) { %>SELECTED<% } %> >last name</OPTION>
|
||||||
|
</SELECT><BR>
|
||||||
|
|
||||||
|
<SELECT NAME="mode" SIZE=1>
|
||||||
|
<OPTION VALUE="<%= SearchMode.SEARCH_PREFIX %>"
|
||||||
|
<% if (data.searchModeIs(SearchMode.SEARCH_PREFIX)) { %>SELECTED<% } %> >starts with the string</OPTION>
|
||||||
|
<OPTION VALUE="<%= SearchMode.SEARCH_SUBSTRING %>"
|
||||||
|
<% if (data.searchModeIs(SearchMode.SEARCH_SUBSTRING)) { %>SELECTED<% } %> >contains the string</OPTION>
|
||||||
|
<OPTION VALUE="<%= SearchMode.SEARCH_REGEXP %>"
|
||||||
|
<% if (data.searchModeIs(SearchMode.SEARCH_REGEXP)) { %>SELECTED<% } %> >matches the regular
|
||||||
|
expression</OPTION>
|
||||||
|
</SELECT>
|
||||||
|
<SPAN CLASS="cinput"><INPUT TYPE=TEXT CLASS="cinput" NAME="term" SIZE=32 MAXLENGTH=255
|
||||||
|
VALUE="<%= data.getSearchTerm() %>"></SPAN><BR>
|
||||||
|
<INPUT TYPE=IMAGE NAME="search" SRC="<%= rdat.getFullImagePath("bn_search.gif") %>"
|
||||||
|
ALT="Search" WIDTH=80 HEIGHT=24 BORDER=0><BR>
|
||||||
|
</FONT>
|
||||||
|
</DIV></FORM>
|
||||||
|
|
||||||
|
<% if (data.displayList()) { %>
|
||||||
|
<HR>
|
||||||
|
<%
|
||||||
|
int dcount = data.getSize();
|
||||||
|
// Determine the number of results to display and whether to display a "next" button
|
||||||
|
boolean go_next = false;
|
||||||
|
if (dcount>data.getNumResultsDisplayed())
|
||||||
|
{ // there's a "next"
|
||||||
|
dcount = data.getNumResultsDisplayed();
|
||||||
|
go_next = true;
|
||||||
|
|
||||||
|
} // end if
|
||||||
|
%>
|
||||||
|
<TABLE WIDTH="100%" BORDER=0 ALIGN=CENTER><TR VALIGN=MIDDLE>
|
||||||
|
<TD WIDTH="50%" ALIGN=LEFT CLASS="content"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>
|
||||||
|
<%-- The community members/search results header --%>
|
||||||
|
<FONT SIZE=+1><B><% if (data.getSimpleList()) { %>Community Members:<% } else { %>Search Results:<% } %></B></FONT>
|
||||||
|
(Displaying <%= data.getOffset() + 1 %>-<%= data.getOffset() + dcount %> of
|
||||||
|
<%= data.getFindCount() %>)
|
||||||
|
</FONT></TD>
|
||||||
|
<TD WIDTH="50%" ALIGN=RIGHT CLASS="content">
|
||||||
|
<% if (go_next || (data.getOffset()>0)) { %>
|
||||||
|
<%-- The navigational form that allows us to page through the results --%>
|
||||||
|
<% if (rdat.useHTMLComments()) { %><!-- Navigational Form --><% } %>
|
||||||
|
<FORM METHOD="POST" ACTION="<%= rdat.getEncodedServletPath("sigops") %>"><DIV CLASS="content">
|
||||||
|
<INPUT TYPE=HIDDEN NAME="sig" VALUE="<%= data.getCommunityID() %>">
|
||||||
|
<INPUT TYPE=HIDDEN NAME="cmd" VALUE="M">
|
||||||
|
<INPUT TYPE=HIDDEN NAME="sl" VALUE="<%= data.getSimpleListParam() %>">
|
||||||
|
<INPUT TYPE=HIDDEN NAME="ofs" VALUE="<%= data.getOffset() %>">
|
||||||
|
<INPUT TYPE=HIDDEN NAME="field" VALUE="<%= data.getSearchField() %>">
|
||||||
|
<INPUT TYPE=HIDDEN NAME="mode" VALUE="<%= data.getSearchMode() %>">
|
||||||
|
<INPUT TYPE=HIDDEN NAME="term" VALUE="<%= data.getSearchTerm() %>">
|
||||||
|
<INPUT TYPE=HIDDEN NAME="fcount" VALUE="<%= data.getFindCount() %>">
|
||||||
|
<% if (data.getOffset()>0) { %>
|
||||||
|
<INPUT TYPE=IMAGE NAME="previous" SRC="<%= rdat.getFullImagePath("bn_ar_previous.gif") %>"
|
||||||
|
ALT="Previous" WIDTH=80 HEIGHT=24 BORDER=0>
|
||||||
|
<% } else { %>
|
||||||
|
<IMG SRC="<%= rdat.getFullImagePath("bn_transparent.gif") %>" WIDTH=80 HEIGHT=24 BORDER=0>
|
||||||
|
<% } // end if %>
|
||||||
|
|
||||||
|
<% if (go_next) { %>
|
||||||
|
<INPUT TYPE=IMAGE NAME="next" SRC="<%= rdat.getFullImagePath("bn_ar_next.gif") %>"
|
||||||
|
ALT="Next" WIDTH=80 HEIGHT=24 BORDER=0>
|
||||||
|
<% } else { %>
|
||||||
|
<IMG SRC="<%= rdat.getFullImagePath("bn_transparent.gif") %>" WIDTH=80 HEIGHT=24 BORDER=0>
|
||||||
|
<% } // end if %>
|
||||||
|
|
||||||
|
</DIV></FORM>
|
||||||
|
<% } else { %> <% } %>
|
||||||
|
</TD>
|
||||||
|
</TR></TABLE><BR>
|
||||||
|
|
||||||
|
<%-- Display the results of the search --%>
|
||||||
|
<TABLE BORDER=0 ALIGN=LEFT CELLPADDING=0 CELLSPACING=4>
|
||||||
|
<% for (int i=0; i<dcount; i++) { %>
|
||||||
|
<TR VALIGN=TOP>
|
||||||
|
<TD ALIGN=CENTER WIDTH=14>
|
||||||
|
<IMG SRC="<%= rdat.getFullImagePath("purple-ball.gif") %>" ALT="*" WIDTH=14 HEIGHT=14 BORDER=0>
|
||||||
|
</TD>
|
||||||
|
<TD ALIGN=LEFT CLASS="content"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>
|
||||||
|
<% UserFound uf = data.getItem(i); %>
|
||||||
|
<A HREF="<%= rdat.getEncodedServletPath("user/" + uf.getName()) %>"><%= uf.getName() %></A><BR>
|
||||||
|
<%= StringUtil.encodeHTML(uf.getGivenName()) %> <%= StringUtil.encodeHTML(uf.getFamilyName()) %>,
|
||||||
|
from <%= StringUtil.encodeHTML(uf.getLocality()) %>, <%= StringUtil.encodeHTML(uf.getRegion()) %>
|
||||||
|
<%= uf.getCountry() %>
|
||||||
|
<% if (Capability.isCommunityAdmin(uf.getLevel())) { %>
|
||||||
|
<IMG SRC="<%= rdat.getFullImagePath("tag_host.gif") %>" ALT="Host!" HSPACE=2 VSPACE=0 BORDER=0
|
||||||
|
WIDTH=40 HEIGHT=20 ALIGN=BOTTOM>
|
||||||
|
<% } // end if %>
|
||||||
|
<% if (uf.getDescription()!=null) { %><BR><EM><%= StringUtil.encodeHTML(uf.getDescription()) %></EM><% } %>
|
||||||
|
</FONT></TD>
|
||||||
|
</TR>
|
||||||
|
<% } // end for %>
|
||||||
|
</TABLE><BR CLEAR=LEFT>
|
||||||
|
<% } // end if %>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user