added user session list and user list sidebox
This commit is contained in:
		
							parent
							
								
									9e5d4f9f57
								
							
						
					
					
						commit
						aa186601a4
					
				@ -10,9 +10,9 @@
 | 
			
		||||
 | 
			
		||||
    The Original Code is the Venice Web Communities System.
 | 
			
		||||
 | 
			
		||||
    The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 | 
			
		||||
    The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
    for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
    Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
    Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 | 
			
		||||
    Contributor(s): 
 | 
			
		||||
-->
 | 
			
		||||
@ -40,6 +40,14 @@
 | 
			
		||||
    <new-image width="40" height="20" alt="New!" fixup="true">tag_new.gif</new-image>
 | 
			
		||||
  </sidebox>
 | 
			
		||||
 | 
			
		||||
  <sidebox id="3">
 | 
			
		||||
    <title>Users Logged In</title>
 | 
			
		||||
    <factory-class>com.silverwrist.venice.ui.sidebox.UserListBox</factory-class>
 | 
			
		||||
    <bullet width="14" height="14" fixup="true">purple-ball.gif</bullet>
 | 
			
		||||
    <summary>${cur} total (max ${max})</summary>
 | 
			
		||||
    <anon-label>Not logged in</anon-label>
 | 
			
		||||
  </sidebox>
 | 
			
		||||
 | 
			
		||||
  <!-- test sidebox only, do not use -->
 | 
			
		||||
  <!--
 | 
			
		||||
  <sidebox id="-1">
 | 
			
		||||
 | 
			
		||||
@ -935,7 +935,7 @@ INSERT INTO contacts (contactid, given_name, family_name, locality, region, pcod
 | 
			
		||||
# Provide the default view for Anonymous Honyak.  This view will be copied to all
 | 
			
		||||
# new users.
 | 
			
		||||
INSERT INTO sideboxes (uid, boxid, sequence, param)
 | 
			
		||||
    VALUES (1, 1, 100, NULL), (1, 2, 200, NULL);
 | 
			
		||||
    VALUES (1, 1, 100, NULL), (1, 2, 200, NULL), (1, 3, 300, NULL);
 | 
			
		||||
INSERT INTO confhotlist (uid, sequence, sigid, confid)
 | 
			
		||||
    VALUES (1, 100, 2, 2);
 | 
			
		||||
 | 
			
		||||
@ -950,7 +950,7 @@ INSERT INTO contacts (contactid, given_name, family_name, locality, region, pcod
 | 
			
		||||
 | 
			
		||||
# Create the default view for Administrator.
 | 
			
		||||
INSERT INTO sideboxes (uid, boxid, sequence, param)
 | 
			
		||||
    VALUES (2, 1, 100, NULL), (2, 2, 200, NULL);
 | 
			
		||||
    VALUES (2, 1, 100, NULL), (2, 2, 200, NULL), (2, 3, 300, NULL);
 | 
			
		||||
INSERT INTO confhotlist (uid, sequence, sigid, confid)
 | 
			
		||||
    VALUES (2, 100, 2, 2);
 | 
			
		||||
 | 
			
		||||
@ -1053,7 +1053,7 @@ INSERT INTO propuser (uid, ndx, data) VALUES (3, 0, '');
 | 
			
		||||
INSERT INTO contacts (contactid, given_name, family_name, locality, region, pcode, country, email, owner_uid)
 | 
			
		||||
    VALUES (5, 'Test', 'User', 'Denver', 'CO', '80231', 'US', 'testuser@example.com', 3);
 | 
			
		||||
INSERT INTO sideboxes (uid, boxid, sequence, param)
 | 
			
		||||
    VALUES (3, 1, 100, NULL), (3, 2, 200, NULL);
 | 
			
		||||
    VALUES (3, 1, 100, NULL), (3, 2, 200, NULL), (3, 3, 300, NULL);
 | 
			
		||||
INSERT INTO confhotlist (uid, sequence, sigid, confid)
 | 
			
		||||
    VALUES (3, 100, 2, 2);
 | 
			
		||||
INSERT INTO sigmember (sigid, uid, granted_lvl, locked)
 | 
			
		||||
 | 
			
		||||
@ -9,9 +9,9 @@
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
@ -23,12 +23,12 @@ public interface Content
 | 
			
		||||
  public static final int MENU_SELECTOR_TOP = 0;
 | 
			
		||||
  public static final int MENU_SELECTOR_COMMUNITY = 1;
 | 
			
		||||
 | 
			
		||||
  public abstract boolean needFrame();
 | 
			
		||||
  public boolean needFrame();
 | 
			
		||||
 | 
			
		||||
  public abstract int getMenuSelector();
 | 
			
		||||
  public int getMenuSelector();
 | 
			
		||||
 | 
			
		||||
  public abstract String getPageTitle(RequestOutput ro);
 | 
			
		||||
  public String getPageTitle(RequestOutput ro);
 | 
			
		||||
 | 
			
		||||
  public abstract String getPageQID();
 | 
			
		||||
  public String getPageQID();
 | 
			
		||||
 | 
			
		||||
} // end interface Content
 | 
			
		||||
 | 
			
		||||
@ -9,9 +9,9 @@
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
@ -21,6 +21,6 @@ import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
public interface ContentDirect extends Content
 | 
			
		||||
{
 | 
			
		||||
  public abstract void render(RequestOutput out) throws IOException;
 | 
			
		||||
  public void render(RequestOutput out) throws IOException;
 | 
			
		||||
 | 
			
		||||
} // end interface ContentDirect
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										32
									
								
								src/com/silverwrist/venice/ui/VeniceUISessionList.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/com/silverwrist/venice/ui/VeniceUISessionList.java
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
/*
 | 
			
		||||
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 | 
			
		||||
 * (the "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
 | 
			
		||||
 * 
 | 
			
		||||
 * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
 | 
			
		||||
 * WARRANTY OF ANY KIND, either express or implied. See the License for the specific
 | 
			
		||||
 * language governing rights and limitations under the License.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
package com.silverwrist.venice.ui;
 | 
			
		||||
 | 
			
		||||
import java.util.Iterator;
 | 
			
		||||
 | 
			
		||||
public interface VeniceUISessionList
 | 
			
		||||
{
 | 
			
		||||
  public static final String APP_ATTR_NAME = "session.list";
 | 
			
		||||
 | 
			
		||||
  public int getSessionCount();
 | 
			
		||||
 | 
			
		||||
  public int getMaxSessionCount();
 | 
			
		||||
 | 
			
		||||
  public Iterator listSessions();
 | 
			
		||||
 | 
			
		||||
} // end interface VeniceUISessionList
 | 
			
		||||
@ -9,9 +9,9 @@
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
@ -25,6 +25,7 @@ import com.silverwrist.venice.core.VeniceEngine;
 | 
			
		||||
import com.silverwrist.venice.core.UserContext;
 | 
			
		||||
import com.silverwrist.venice.except.*;
 | 
			
		||||
import com.silverwrist.venice.ui.Content;
 | 
			
		||||
import com.silverwrist.venice.ui.RequestInput;
 | 
			
		||||
import com.silverwrist.venice.ui.sidebox.SideBoxFactory;
 | 
			
		||||
import com.silverwrist.venice.util.XMLLoader;
 | 
			
		||||
 | 
			
		||||
@ -115,13 +116,12 @@ public class SideBoxManager
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  public final Content createSideBox(int id, VeniceEngine engine, UserContext uc)
 | 
			
		||||
      throws AccessError, DataException
 | 
			
		||||
  public final Content createSideBox(int id, RequestInput ri) throws AccessError, DataException
 | 
			
		||||
  {
 | 
			
		||||
    SideBoxFactory fact = (SideBoxFactory)(factories.get(new Integer(id)));
 | 
			
		||||
    if (fact==null)
 | 
			
		||||
      throw new DataException("invalid sidebox ID!");
 | 
			
		||||
    return fact.create(engine,uc);
 | 
			
		||||
    return fact.create(ri);
 | 
			
		||||
 | 
			
		||||
  } // end createSideBox
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -9,9 +9,9 @@
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2002 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 2002-2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
@ -28,7 +28,7 @@ import com.silverwrist.venice.ui.*;
 | 
			
		||||
import com.silverwrist.venice.ui.helpers.*;
 | 
			
		||||
import com.silverwrist.venice.ui.script.*;
 | 
			
		||||
 | 
			
		||||
class HttpVeniceUISession implements VeniceUISession
 | 
			
		||||
class HttpVeniceUISession implements VeniceUISession, HttpSessionBindingListener
 | 
			
		||||
{
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * Static data members
 | 
			
		||||
@ -47,6 +47,7 @@ class HttpVeniceUISession implements VeniceUISession
 | 
			
		||||
  private HttpSession session;         // HTTP session value
 | 
			
		||||
  private UserContext user;            // user context associated with this session
 | 
			
		||||
  private boolean new_session = true;  // is this a new session?
 | 
			
		||||
  private HttpVeniceUISessionList m_session_list = null;
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * Constructor
 | 
			
		||||
@ -200,6 +201,10 @@ class HttpVeniceUISession implements VeniceUISession
 | 
			
		||||
 | 
			
		||||
      } // end finally
 | 
			
		||||
 | 
			
		||||
      // add this session to the global list
 | 
			
		||||
      m_session_list = HttpVeniceUISessionList.get(ri);
 | 
			
		||||
      m_session_list.joinSession(this);
 | 
			
		||||
 | 
			
		||||
    } // end if
 | 
			
		||||
 | 
			
		||||
  } // end preprocess
 | 
			
		||||
@ -215,6 +220,9 @@ class HttpVeniceUISession implements VeniceUISession
 | 
			
		||||
 | 
			
		||||
  public void valueUnbound(HttpSessionBindingEvent event)
 | 
			
		||||
  {
 | 
			
		||||
    if (m_session_list!=null)
 | 
			
		||||
      m_session_list.partSession(this);
 | 
			
		||||
    m_session_list = null;
 | 
			
		||||
    this.session = null;
 | 
			
		||||
    this.user = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,103 @@
 | 
			
		||||
/*
 | 
			
		||||
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 | 
			
		||||
 * (the "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
 | 
			
		||||
 * 
 | 
			
		||||
 * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
 | 
			
		||||
 * WARRANTY OF ANY KIND, either express or implied. See the License for the specific
 | 
			
		||||
 * language governing rights and limitations under the License.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
package com.silverwrist.venice.ui.servlet;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import com.silverwrist.venice.ui.*;
 | 
			
		||||
 | 
			
		||||
class HttpVeniceUISessionList implements VeniceUISessionList
 | 
			
		||||
{
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * Attributes
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  private int m_max = 0;                  // maximum session count
 | 
			
		||||
  private HashSet m_set = new HashSet();  // hash set
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * Constructor
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  private HttpVeniceUISessionList(RequestInput ri)
 | 
			
		||||
  {
 | 
			
		||||
    ri.setAppAttribute(APP_ATTR_NAME,this);
 | 
			
		||||
 | 
			
		||||
  } // end constructor
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * Implementations from interface VeniceUISessionList
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  public synchronized int getSessionCount()
 | 
			
		||||
  {
 | 
			
		||||
    return m_set.size();
 | 
			
		||||
 | 
			
		||||
  } // end getSessionCount
 | 
			
		||||
 | 
			
		||||
  public synchronized int getMaxSessionCount()
 | 
			
		||||
  {
 | 
			
		||||
    return m_max;
 | 
			
		||||
 | 
			
		||||
  } // end getMaxSessionCount
 | 
			
		||||
 | 
			
		||||
  public synchronized Iterator listSessions()
 | 
			
		||||
  {
 | 
			
		||||
    if (m_set.isEmpty())
 | 
			
		||||
      return Collections.EMPTY_LIST.iterator();
 | 
			
		||||
    ArrayList tmp = new ArrayList(m_set);
 | 
			
		||||
    return Collections.unmodifiableList(tmp).iterator();
 | 
			
		||||
 | 
			
		||||
  } // end listSessions
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * External operations
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  synchronized void joinSession(VeniceUISession session)
 | 
			
		||||
  {
 | 
			
		||||
    m_set.add(session);
 | 
			
		||||
    if (m_set.size()>m_max)
 | 
			
		||||
      m_max = m_set.size();
 | 
			
		||||
 | 
			
		||||
  } // end joinSession
 | 
			
		||||
 | 
			
		||||
  synchronized void partSession(VeniceUISession session)
 | 
			
		||||
  {
 | 
			
		||||
    m_set.remove(session);
 | 
			
		||||
 | 
			
		||||
  } // end partSession
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * External static operations
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  static synchronized HttpVeniceUISessionList get(RequestInput ri)
 | 
			
		||||
  {
 | 
			
		||||
    HttpVeniceUISessionList rc = (HttpVeniceUISessionList)(ri.getAppAttribute(APP_ATTR_NAME));
 | 
			
		||||
    if (rc==null)
 | 
			
		||||
      rc = new HttpVeniceUISessionList(ri);
 | 
			
		||||
    return rc;
 | 
			
		||||
 | 
			
		||||
  } // end get
 | 
			
		||||
 | 
			
		||||
} // end class HttpVeniceUISessionList
 | 
			
		||||
@ -9,9 +9,9 @@
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2001-04 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
@ -1409,7 +1409,7 @@ public class RequestImpl implements RequestInput
 | 
			
		||||
    for (int i=0; i<descrs.size(); i++)
 | 
			
		||||
    { // get all the sideboxes created
 | 
			
		||||
      SideBoxDescriptor d = (SideBoxDescriptor)(descrs.get(i));
 | 
			
		||||
      rc[i] = sbmgr.createSideBox(d.getID(),engine,user);
 | 
			
		||||
      rc[i] = sbmgr.createSideBox(d.getID(),this);
 | 
			
		||||
 | 
			
		||||
    } // end for
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -9,9 +9,9 @@
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
@ -34,11 +34,21 @@ public class CommunityBox implements SideBoxFactory
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  class CommunityBoxImpl implements ContentDirect
 | 
			
		||||
  private class CommunityBoxImpl implements ContentDirect
 | 
			
		||||
  {
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Attributes
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    private UserContext uc;
 | 
			
		||||
    private List comm_list;
 | 
			
		||||
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Constructor
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    CommunityBoxImpl(UserContext uc) throws DataException
 | 
			
		||||
    {
 | 
			
		||||
      this.uc = uc;
 | 
			
		||||
@ -46,6 +56,11 @@ public class CommunityBox implements SideBoxFactory
 | 
			
		||||
 | 
			
		||||
    } // end constructor
 | 
			
		||||
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Implementations from interface Content
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    public boolean needFrame()
 | 
			
		||||
    {
 | 
			
		||||
      return false;
 | 
			
		||||
@ -81,6 +96,11 @@ public class CommunityBox implements SideBoxFactory
 | 
			
		||||
 | 
			
		||||
    } // end getPageQID
 | 
			
		||||
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Implementations from interface ContentDirect
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    public void render(RequestOutput out) throws IOException
 | 
			
		||||
    {
 | 
			
		||||
      HTMLRendering html = (HTMLRendering)(out.queryService(HTMLRendering.class));
 | 
			
		||||
@ -207,9 +227,9 @@ public class CommunityBox implements SideBoxFactory
 | 
			
		||||
 | 
			
		||||
  } // end setConfiguration
 | 
			
		||||
 | 
			
		||||
  public Content create(VeniceEngine engine, UserContext uc) throws DataException
 | 
			
		||||
  public Content create(RequestInput ri) throws DataException
 | 
			
		||||
  {
 | 
			
		||||
    return new CommunityBoxImpl(uc);
 | 
			
		||||
    return new CommunityBoxImpl(ri.getUser());
 | 
			
		||||
 | 
			
		||||
  } // end create
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
@ -9,9 +9,9 @@
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2001-02 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
@ -34,11 +34,21 @@ public class ConferenceBox implements SideBoxFactory
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  class ConferenceBoxImpl implements ContentDirect
 | 
			
		||||
  private class ConferenceBoxImpl implements ContentDirect
 | 
			
		||||
  {
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Attributes
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    private UserContext uc;     // current user context
 | 
			
		||||
    private List hotlist;       // current conference hotlist
 | 
			
		||||
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Constructor
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    ConferenceBoxImpl(UserContext uc) throws DataException
 | 
			
		||||
    {
 | 
			
		||||
      this.uc = uc;
 | 
			
		||||
@ -46,6 +56,11 @@ public class ConferenceBox implements SideBoxFactory
 | 
			
		||||
 | 
			
		||||
    } // end constructor
 | 
			
		||||
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Implementations from interface Content
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    public boolean needFrame()
 | 
			
		||||
    {
 | 
			
		||||
      return false;
 | 
			
		||||
@ -81,6 +96,11 @@ public class ConferenceBox implements SideBoxFactory
 | 
			
		||||
 | 
			
		||||
    } // end getPageQID
 | 
			
		||||
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Implementations from interface ContentDirect
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    public void render(RequestOutput out) throws IOException
 | 
			
		||||
    {
 | 
			
		||||
      HTMLRendering html = (HTMLRendering)(out.queryService(HTMLRendering.class));
 | 
			
		||||
@ -205,9 +225,9 @@ public class ConferenceBox implements SideBoxFactory
 | 
			
		||||
 | 
			
		||||
  } // end setConfiguration
 | 
			
		||||
 | 
			
		||||
  public Content create(VeniceEngine engine, UserContext uc) throws DataException
 | 
			
		||||
  public Content create(RequestInput ri) throws DataException
 | 
			
		||||
  {
 | 
			
		||||
    return new ConferenceBoxImpl(uc);
 | 
			
		||||
    return new ConferenceBoxImpl(ri.getUser());
 | 
			
		||||
 | 
			
		||||
  } // end create
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -9,9 +9,9 @@
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
@ -153,9 +153,9 @@ public class JSPSideBoxFactory implements SideBoxFactory
 | 
			
		||||
 | 
			
		||||
  } // end setConfiguration
 | 
			
		||||
 | 
			
		||||
  public Content create(VeniceEngine engine, UserContext uc)
 | 
			
		||||
  public Content create(RequestInput ri)
 | 
			
		||||
  {
 | 
			
		||||
    return new JSPSideBox(this,engine,uc);
 | 
			
		||||
    return new JSPSideBox(this,ri.getEngine(),ri.getUser());
 | 
			
		||||
 | 
			
		||||
  } // end create
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -9,24 +9,23 @@
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 2001-2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
package com.silverwrist.venice.ui.sidebox;
 | 
			
		||||
 | 
			
		||||
import org.w3c.dom.*;
 | 
			
		||||
import com.silverwrist.venice.core.VeniceEngine;
 | 
			
		||||
import com.silverwrist.venice.core.UserContext;
 | 
			
		||||
import com.silverwrist.venice.except.*;
 | 
			
		||||
import com.silverwrist.venice.ui.Content;
 | 
			
		||||
import com.silverwrist.venice.ui.RequestInput;
 | 
			
		||||
 | 
			
		||||
public interface SideBoxFactory
 | 
			
		||||
{
 | 
			
		||||
  public abstract void setConfiguration(Element cfg) throws ConfigException;
 | 
			
		||||
  public void setConfiguration(Element cfg) throws ConfigException;
 | 
			
		||||
 | 
			
		||||
  public abstract Content create(VeniceEngine engine, UserContext uc) throws AccessError, DataException;
 | 
			
		||||
  public Content create(RequestInput ri) throws AccessError, DataException;
 | 
			
		||||
 | 
			
		||||
} // end interface SideBoxFactory
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										237
									
								
								src/com/silverwrist/venice/ui/sidebox/UserListBox.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										237
									
								
								src/com/silverwrist/venice/ui/sidebox/UserListBox.java
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,237 @@
 | 
			
		||||
/*
 | 
			
		||||
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 | 
			
		||||
 * (the "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
 | 
			
		||||
 * 
 | 
			
		||||
 * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
 | 
			
		||||
 * WARRANTY OF ANY KIND, either express or implied. See the License for the specific
 | 
			
		||||
 * language governing rights and limitations under the License.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Original Code is the Venice Web Communities System.
 | 
			
		||||
 * 
 | 
			
		||||
 * The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
 | 
			
		||||
 * for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
 | 
			
		||||
 * Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Contributor(s): 
 | 
			
		||||
 */
 | 
			
		||||
package com.silverwrist.venice.ui.sidebox;
 | 
			
		||||
 | 
			
		||||
import java.io.*;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import org.w3c.dom.*;
 | 
			
		||||
import com.silverwrist.util.*;
 | 
			
		||||
import com.silverwrist.venice.core.*;
 | 
			
		||||
import com.silverwrist.venice.except.*;
 | 
			
		||||
import com.silverwrist.venice.ui.*;
 | 
			
		||||
import com.silverwrist.venice.ui.helpers.HTMLRendering;
 | 
			
		||||
import com.silverwrist.venice.ui.helpers.ImageHandler;
 | 
			
		||||
 | 
			
		||||
public class UserListBox implements SideBoxFactory
 | 
			
		||||
{
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * Internal class that implements the actual sidebox
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  private class UserListBoxImpl implements ContentDirect
 | 
			
		||||
  {
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Attributes
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    private boolean m_logged_in;
 | 
			
		||||
    private int m_total_count;
 | 
			
		||||
    private int m_max_count;
 | 
			
		||||
    private int m_anon_count = 0;
 | 
			
		||||
    private TreeSet m_users = new TreeSet();
 | 
			
		||||
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Constructor
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    UserListBoxImpl(boolean logged_in, VeniceUISessionList slist)
 | 
			
		||||
    {
 | 
			
		||||
      m_logged_in = logged_in;
 | 
			
		||||
      Iterator it = null;
 | 
			
		||||
      synchronized (slist)
 | 
			
		||||
      { // get user information
 | 
			
		||||
	m_total_count = slist.getSessionCount();
 | 
			
		||||
	m_max_count = slist.getMaxSessionCount();
 | 
			
		||||
	it = slist.listSessions();
 | 
			
		||||
 | 
			
		||||
      } // end synchronized block
 | 
			
		||||
 | 
			
		||||
      while (it.hasNext())
 | 
			
		||||
      { // build the user list and the anon user count
 | 
			
		||||
	UserContext uc = ((VeniceUISession)(it.next())).getUser();
 | 
			
		||||
	if (uc.isLoggedIn())
 | 
			
		||||
	  m_users.add(uc.getUserName());
 | 
			
		||||
	else
 | 
			
		||||
	  m_anon_count++;
 | 
			
		||||
 | 
			
		||||
      } // end while
 | 
			
		||||
 | 
			
		||||
    } // end constructor
 | 
			
		||||
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Implementations from interface Content
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    public boolean needFrame()
 | 
			
		||||
    {
 | 
			
		||||
      return false;
 | 
			
		||||
 | 
			
		||||
    } // end needFrame
 | 
			
		||||
 | 
			
		||||
    public int getMenuSelector()
 | 
			
		||||
    {
 | 
			
		||||
      return MENU_SELECTOR_NOCHANGE;
 | 
			
		||||
 | 
			
		||||
    } // end getMenuSelector
 | 
			
		||||
 | 
			
		||||
    public String getPageTitle(RequestOutput ro)
 | 
			
		||||
    {
 | 
			
		||||
      if (m_title_image!=null)
 | 
			
		||||
      { // return an image rendering
 | 
			
		||||
	ImageHandler ih = (m_logged_in ? m_title_image : m_anon_title_image);
 | 
			
		||||
	return ih.getRendering(ro);
 | 
			
		||||
 | 
			
		||||
      } // end if
 | 
			
		||||
      else
 | 
			
		||||
      { // return a title string
 | 
			
		||||
	String rc = (m_logged_in ? m_title : m_anon_title);
 | 
			
		||||
	return StringUtil.encodeHTML(rc);
 | 
			
		||||
 | 
			
		||||
      } // end else
 | 
			
		||||
 | 
			
		||||
    } // end getPageTitle
 | 
			
		||||
 | 
			
		||||
    public String getPageQID()
 | 
			
		||||
    {
 | 
			
		||||
      return null;
 | 
			
		||||
 | 
			
		||||
    } // end getPageQID
 | 
			
		||||
 | 
			
		||||
    /*====================================================================
 | 
			
		||||
     * Implementations from interface ContentDirect
 | 
			
		||||
     *====================================================================
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    public void render(RequestOutput out) throws IOException
 | 
			
		||||
    {
 | 
			
		||||
      HTMLRendering html = (HTMLRendering)(out.queryService(HTMLRendering.class));
 | 
			
		||||
      String norm_font = html.getFontTag(html.SIDEBOX_CONTENT_FOREGROUND,"sidebox");
 | 
			
		||||
      String hilite = html.getFontTag(html.SIDEBOX_CONTENT_LINK,"sidebox");
 | 
			
		||||
 | 
			
		||||
      out.write("<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"2\"><tr valign=\"middle\">"
 | 
			
		||||
		+ "<td align=\"left\" class=\"sidebox\" colspan=\"2\">" + norm_font + "<b>");
 | 
			
		||||
      HashMap m = new HashMap();
 | 
			
		||||
      m.put("cur",String.valueOf(m_total_count));
 | 
			
		||||
      m.put("max",String.valueOf(m_max_count));
 | 
			
		||||
      out.write(StringUtil.replaceAllVariables(m_summary,m) + "</b></FONT></td></tr>");
 | 
			
		||||
      if (m_anon_count>0)
 | 
			
		||||
      { // write the anonymous user count
 | 
			
		||||
	out.write("<tr valign=\"middle\"><td align=\"center\" width=\"" + m_bullet.getWidth() + "\">");
 | 
			
		||||
	m_bullet.render(out);
 | 
			
		||||
	out.write("</td><td align=\"left\" class=\"sidebox\">" + norm_font + m_anon_label + " (" + m_anon_count
 | 
			
		||||
		  + ")</FONT></td></tr>");
 | 
			
		||||
 | 
			
		||||
      } // end if
 | 
			
		||||
 | 
			
		||||
      for (Iterator it=m_users.iterator(); it.hasNext(); )
 | 
			
		||||
      { // get user name and write it out to the list
 | 
			
		||||
	String uname = (String)(it.next());
 | 
			
		||||
	out.write("<tr valign=\"middle\"><td align=\"center\" width=\"" + m_bullet.getWidth() + "\">");
 | 
			
		||||
	m_bullet.render(out);
 | 
			
		||||
	out.write("</td><td align=\"left\" class=\"sidebox\"><a class=\"sidebox\" target=\"_blank\" href=\"");
 | 
			
		||||
	out.write(html.formatURL("user/" + uname,html.SERVLET));
 | 
			
		||||
	out.write("\">" + hilite + uname + "</FONT></a></td></tr>");
 | 
			
		||||
 | 
			
		||||
      } // end for
 | 
			
		||||
 | 
			
		||||
      out.write("</table>\n");
 | 
			
		||||
 | 
			
		||||
    } // end render
 | 
			
		||||
 | 
			
		||||
  } // end class UserListBoxImpl
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * Attributes
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  private ImageHandler m_title_image;       // title image for sidebox for logged-in users
 | 
			
		||||
  private ImageHandler m_anon_title_image;  // title image for sidebox for not-logged-in users
 | 
			
		||||
  private String m_title;                   // title of sidebox for logged-in users
 | 
			
		||||
  private String m_anon_title;              // title of sidebox for not-logged-in users
 | 
			
		||||
  private ImageHandler m_bullet;            // bullet image
 | 
			
		||||
  private String m_summary;                 // summary message
 | 
			
		||||
  private String m_anon_label;              // anonymous label
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * Constructor
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  public UserListBox()
 | 
			
		||||
  { // do nothing
 | 
			
		||||
  } // end constructor
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------------
 | 
			
		||||
   * Implementations from interface SideBoxFactory
 | 
			
		||||
   *--------------------------------------------------------------------------------
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  public void setConfiguration(Element cfg) throws ConfigException
 | 
			
		||||
  {
 | 
			
		||||
    DOMElementHelper cfg_h = new DOMElementHelper(cfg);
 | 
			
		||||
    m_title_image = new ImageHandler(cfg_h.getSubElement("title-image"));
 | 
			
		||||
    if (m_title_image.isDefined())
 | 
			
		||||
    { // we're using image titles...
 | 
			
		||||
      m_title = m_anon_title = null;
 | 
			
		||||
      m_anon_title_image = new ImageHandler(cfg_h.getSubElement("anon-title-image"));
 | 
			
		||||
      if (!(m_anon_title_image.isDefined()))
 | 
			
		||||
	m_anon_title_image = m_title_image;
 | 
			
		||||
 | 
			
		||||
    } // end if
 | 
			
		||||
    else
 | 
			
		||||
    { // standard textual title
 | 
			
		||||
      m_title_image = m_anon_title_image = null;
 | 
			
		||||
      m_title = cfg_h.getSubElementText("title");
 | 
			
		||||
      if (m_title==null)
 | 
			
		||||
	throw new ConfigException("no <title/> specified for conference list sidebox",cfg);
 | 
			
		||||
      m_title += ":";
 | 
			
		||||
      m_anon_title = cfg_h.getSubElementText("anon-title");
 | 
			
		||||
      if (m_anon_title==null)
 | 
			
		||||
	m_anon_title = m_title;
 | 
			
		||||
      else
 | 
			
		||||
	m_anon_title += ":";
 | 
			
		||||
 | 
			
		||||
    } // end else
 | 
			
		||||
 | 
			
		||||
    m_bullet = new ImageHandler(cfg_h.getSubElement("bullet"),"purple-ball.gif","*",14,14);
 | 
			
		||||
 | 
			
		||||
    m_summary = cfg_h.getSubElementText("summary");
 | 
			
		||||
    if (m_summary==null)
 | 
			
		||||
      m_summary = "${cur} total (max ${max})";
 | 
			
		||||
 | 
			
		||||
    m_anon_label = cfg_h.getSubElementText("anon-label");
 | 
			
		||||
    if (m_anon_label==null)
 | 
			
		||||
      m_anon_label = "Anonymous";
 | 
			
		||||
 | 
			
		||||
  } // end setConfiguration
 | 
			
		||||
 | 
			
		||||
  public Content create(RequestInput ri) throws AccessError, DataException
 | 
			
		||||
  {
 | 
			
		||||
    VeniceUISessionList slist = (VeniceUISessionList)(ri.getAppAttribute(VeniceUISessionList.APP_ATTR_NAME));
 | 
			
		||||
    if (slist==null)
 | 
			
		||||
      throw new DataException("session list object not found");
 | 
			
		||||
    return new UserListBoxImpl(ri.getUser().isLoggedIn(),slist);
 | 
			
		||||
 | 
			
		||||
  } // end create
 | 
			
		||||
 | 
			
		||||
} // end class UserListBox
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user