added high-level "macro" classes for modules to use to install menu entries

This commit is contained in:
Eric J. Bowersox 2003-06-21 03:24:42 +00:00
parent 5ef3ea1681
commit 386f2a1fb6
6 changed files with 262 additions and 0 deletions

View File

@ -1465,6 +1465,17 @@ INSERT INTO menuitems (menuid, sequence, itemtype, text, linktype, link, perm_ns
(9, 65000, 'MARKER', 'end-module-sysadmin', NULL, NULL, NULL, (9, 65000, 'MARKER', 'end-module-sysadmin', NULL, NULL, NULL,
NULL ); NULL );
# Create the community service admin menu. (ID #10)
INSERT INTO menus (menuid, menu_nsid, menu_name, title, subtitle)
VALUES (10, 16, 'community.admin.service', 'Manage Community Services:', '${name}');
INSERT INTO menuvars (menuid, var_name, default_val) VALUES
(10, 'name', NULL),
(10, 'cid', NULL);
INSERT INTO menuitems (menuid, sequence, itemtype, text, linktype, link, perm_nsid, perm_name) VALUES
(10, 0, 'TEXT', 'Return to Previous Menu', 'SERVLET', 'comm/admin/main.js?cc=${cid}', NULL, NULL),
(10, 100, 'MARKER', 'begin-service-admin', NULL, NULL, NULL, NULL),
(10, 65000, 'MARKER', 'end-service-admin', NULL, NULL, NULL, NULL);
# Create the sideboxes tables. # Create the sideboxes tables.
INSERT INTO sbox_master (sbid, sb_nsid, sb_name, type_nsid, type_name, descr) VALUES INSERT INTO sbox_master (sbid, sb_nsid, sb_name, type_nsid, type_name, descr) VALUES
(1, 19, 'community.list', 19, 'community.list', 'Community Membership List'), (1, 19, 'community.list', 19, 'community.list', 'Community Membership List'),

View File

@ -48,6 +48,8 @@ public interface MenuEditObject
public MenuEditItemObject getItemByTypeText(String type, String text); public MenuEditItemObject getItemByTypeText(String type, String text);
public MenuEditItemObject getItemContainingLinkText(String text);
public MenuEditItemObject getNextItem(MenuEditItemObject obj); public MenuEditItemObject getNextItem(MenuEditItemObject obj);
public MenuEditItemObject getPreviousItem(MenuEditItemObject obj); public MenuEditItemObject getPreviousItem(MenuEditItemObject obj);

View File

@ -164,6 +164,15 @@ class MenuEditImpl implements MenuEditObject
} // end getItemByTypeText } // end getItemByTypeText
public MenuEditItemObject getItemContainingLinkText(String text)
{
if (m_mdef==null)
return null;
int ndx = m_mdef.getItemContainingLinkText(text);
return (ndx<0) ? null : this.getItem(ndx);
} // end getItemContainingLinkText
public MenuEditItemObject getNextItem(MenuEditItemObject obj) public MenuEditItemObject getNextItem(MenuEditItemObject obj)
{ {
return this.getItem(obj.getIndexOfItem() + 1); return this.getItem(obj.getIndexOfItem() + 1);

View File

@ -91,6 +91,8 @@ class MenuEditItemImpl implements MenuEditItemObject
public void setSequence(int seq) throws DatabaseException public void setSequence(int seq) throws DatabaseException
{ {
baleeted(); baleeted();
if (m_item.getSequence()==seq)
return;
m_ops.setItemSequence(m_mdef.getID(),m_item.getSequence(),seq); m_ops.setItemSequence(m_mdef.getID(),m_item.getSequence(),seq);
m_item.setSequence(seq); m_item.setSequence(seq);
m_mdef.resequence(); m_mdef.resequence();
@ -106,6 +108,8 @@ class MenuEditItemImpl implements MenuEditItemObject
public void setEnabled(boolean flag) throws DatabaseException public void setEnabled(boolean flag) throws DatabaseException
{ {
baleeted(); baleeted();
if (m_item.isEnabled()==flag)
return;
m_ops.setItemEnable(m_mdef.getID(),m_item.getSequence(),flag); m_ops.setItemEnable(m_mdef.getID(),m_item.getSequence(),flag);
m_item.setEnabled(flag); m_item.setEnabled(flag);
@ -122,6 +126,8 @@ class MenuEditItemImpl implements MenuEditItemObject
baleeted(); baleeted();
if (indent<0) if (indent<0)
throw new IllegalArgumentException("indent must be >= 0"); throw new IllegalArgumentException("indent must be >= 0");
if (indent==m_item.getIndentLevel())
return;
m_ops.setItemIndent(m_mdef.getID(),m_item.getSequence(),indent); m_ops.setItemIndent(m_mdef.getID(),m_item.getSequence(),indent);
m_item.setIndentLevel(indent); m_item.setIndentLevel(indent);

View File

@ -0,0 +1,137 @@
/*
* 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) 2003 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.util;
import com.silverwrist.dynamo.except.*;
import com.silverwrist.dynamo.iface.*;
import com.silverwrist.venice.VeniceNamespaces;
import com.silverwrist.venice.iface.*;
public class CommunityMenuInstaller
{
/*--------------------------------------------------------------------------------
* Static data members
*--------------------------------------------------------------------------------
*/
private static final int STD_GAP = 100;
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private MenuProvider m_provider;
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
CommunityMenuInstaller(ServiceProvider services)
{
m_provider = (MenuProvider)(services.queryService(MenuProvider.class));
} // end constructor
/*--------------------------------------------------------------------------------
* External operations
*--------------------------------------------------------------------------------
*/
public void installCommunityServiceEntry(DynamoUser caller, String text, String linktype, String link,
String shortvar) throws DatabaseException, DynamoSecurityException
{
MenuEditObject menu = m_provider.getEditMenu(caller,VeniceNamespaces.COMMUNITY_GLOBALS_NAMESPACE,"community.menu");
MenuEditItemObject end_marker = menu.getItemByTypeText("MARKER","end-services");
MenuEditItemObject insert_after = menu.getPreviousItem(end_marker);
int new_sequence = insert_after.getSequence() + STD_GAP;
if (new_sequence>=end_marker.getSequence())
{ // need to renumber the menu items
MenuEditItemObject item = menu.getItemByTypeText("MARKER","begin-services");
new_sequence = item.getSequence();
item = menu.getNextItem(item);
new_sequence += STD_GAP;
while (!(item.getItemType().equals("MARKER")))
{ // reset the numbers for the sequence
item.setSequence(new_sequence);
item = menu.getNextItem(item);
new_sequence += STD_GAP;
} // end while
} // end if
MenuEditItemObject new_object = menu.addItem("TEXT",new_sequence,text,linktype,link);
new_object.setIfDefVar(shortvar);
} // end installCommunityServiceEntry
public void removeCommunityServiceEntry(DynamoUser caller, String link_text)
throws DatabaseException, DynamoSecurityException
{
MenuEditObject menu = m_provider.getEditMenu(caller,VeniceNamespaces.COMMUNITY_GLOBALS_NAMESPACE,"community.menu");
MenuEditItemObject item = menu.getItemContainingLinkText(link_text);
if (item!=null)
item.delete();
} // end removeCommunityServiceEntry
public void installCommunityServiceAdminEntry(DynamoUser caller, String text, String linktype, String link,
String perm_nsid, String perm_name, String shortvar)
throws DatabaseException, DynamoSecurityException
{
MenuEditObject menu = m_provider.getEditMenu(caller,VeniceNamespaces.COMMUNITY_GLOBALS_NAMESPACE,
"community.admin.service");
MenuEditItemObject end_marker = menu.getItemByTypeText("MARKER","end-service-admin");
MenuEditItemObject insert_after = menu.getPreviousItem(end_marker);
int new_sequence = insert_after.getSequence() + STD_GAP;
if (new_sequence>=end_marker.getSequence())
{ // need to renumber the menu items
MenuEditItemObject item = menu.getItemByTypeText("MARKER","begin-service-admin");
new_sequence = item.getSequence();
item = menu.getNextItem(item);
new_sequence += STD_GAP;
while (!(item.getItemType().equals("MARKER")))
{ // reset the numbers for the sequence
item.setSequence(new_sequence);
item = menu.getNextItem(item);
new_sequence += STD_GAP;
} // end while
} // end if
MenuEditItemObject new_object = menu.addItem("TEXT",new_sequence,text,linktype,link);
new_object.setPermission(perm_nsid,perm_name);
new_object.setIfDefVar(shortvar);
} // end installCommunityServiceAdminEntry
public void removeCommunityServiceAdminEntry(DynamoUser caller, String link_text)
throws DatabaseException, DynamoSecurityException
{
MenuEditObject menu = m_provider.getEditMenu(caller,VeniceNamespaces.COMMUNITY_GLOBALS_NAMESPACE,
"community.admin.service");
MenuEditItemObject item = menu.getItemContainingLinkText(link_text);
if (item!=null)
item.delete();
} // end removeCommunityServiceAdminEntry
} // end class CommunityMenuInstaller

View File

@ -0,0 +1,97 @@
/*
* 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) 2003 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.util;
import com.silverwrist.dynamo.except.*;
import com.silverwrist.dynamo.iface.*;
import com.silverwrist.venice.VeniceNamespaces;
import com.silverwrist.venice.iface.*;
public class SystemAdminMenuInstaller
{
/*--------------------------------------------------------------------------------
* Static data members
*--------------------------------------------------------------------------------
*/
private static final int STD_GAP = 100;
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private MenuProvider m_provider;
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
SystemAdminMenuInstaller(ServiceProvider services)
{
m_provider = (MenuProvider)(services.queryService(MenuProvider.class));
} // end constructor
/*--------------------------------------------------------------------------------
* External operations
*--------------------------------------------------------------------------------
*/
public void installSystemAdminEntry(DynamoUser caller, String text, String linktype, String link, String perm_nsid,
String perm_name) throws DatabaseException, DynamoSecurityException
{
MenuEditObject menu = m_provider.getEditMenu(caller,VeniceNamespaces.SYSTEM_PERMS_NAMESPACE,
"system.admin.module");
MenuEditItemObject end_marker = menu.getItemByTypeText("MARKER","end-module-sysadmin");
MenuEditItemObject insert_after = menu.getPreviousItem(end_marker);
int new_sequence = insert_after.getSequence() + STD_GAP;
if (new_sequence>=end_marker.getSequence())
{ // need to renumber the menu items
MenuEditItemObject item = menu.getItemByTypeText("MARKER","begin-module-sysadmin");
new_sequence = item.getSequence();
item = menu.getNextItem(item);
new_sequence += STD_GAP;
while (!(item.getItemType().equals("MARKER")))
{ // reset the numbers for the sequence
item.setSequence(new_sequence);
item = menu.getNextItem(item);
new_sequence += STD_GAP;
} // end while
} // end if
MenuEditItemObject new_object = menu.addItem("TEXT",new_sequence,text,linktype,link);
new_object.setPermission(perm_nsid,perm_name);
} // end installSystemAdminEntry
public void removeSystemAdminEntry(DynamoUser caller, String link_text)
throws DatabaseException, DynamoSecurityException
{
MenuEditObject menu = m_provider.getEditMenu(caller,VeniceNamespaces.SYSTEM_PERMS_NAMESPACE,
"system.admin.module");
MenuEditItemObject item = menu.getItemContainingLinkText(link_text);
if (item!=null)
item.delete();
} // end removeSystemAdminEntry
} // end class SystemAdminMenuInstaller