ccm-ldn-portal nach ccm-portalworkspace verschoben und so geändert, dass es

gleichzeitig mit ccm-portalserver installiert werden kann.

Update scrippt (ccm-portalserver  6.6.0 -> 6.6.1) erforderlich. 

Das Standard APLAWS Theme wird im Moment nicht genutzt, sondern das
ursprüngliche Red Hat / CCM Theme. Damit werden Funktionen sichtbar,
die das APLAWS Theme nicht nutzt.




git-svn-id: https://svn.libreccm.org/ccm/trunk@818 8810af33-2d31-482b-a856-94f89814c4df
master
pb 2011-04-03 13:55:03 +00:00
parent 8b5474a42a
commit 5353924e2b
255 changed files with 925 additions and 799 deletions

View File

@ -5,7 +5,7 @@ ccm-cms
# Content assets # Content assets
ccm-cms-assets-fileattachment ccm-cms-assets-fileattachment
ccm-cms-assets-imagestep # ccm-cms-assets-imagestep
ccm-cms-assets-notes ccm-cms-assets-notes
ccm-cms-assets-relatedlink ccm-cms-assets-relatedlink
# is ccm-ldn-dublin really an asset? # is ccm-ldn-dublin really an asset?
@ -33,7 +33,7 @@ ccm-cms-types-member
ccm-cms-types-mparticle ccm-cms-types-mparticle
ccm-cms-types-newsitem ccm-cms-types-newsitem
# -- ccm-cms-types-organization # -- ccm-cms-types-organization
ccm-cms-types-person # ccm-cms-types-person
# -- ccm-cms-types-pressrelease # -- ccm-cms-types-pressrelease
# -- ccm-cms-types-researchnetwork # -- ccm-cms-types-researchnetwork
# -- ccm-cms-types-service # -- ccm-cms-types-service
@ -48,9 +48,9 @@ ccm-cms-types-person
# -- ccm-docmngr ## temp., produces errors in build # -- ccm-docmngr ## temp., produces errors in build
# -- ccm-formbuilder-pdf # -- ccm-formbuilder-pdf
ccm-forum ccm-forum
ccm-forum-categorised # ccm-forum-categorised
# -- ccm-simplesurvey # -- ccm-simplesurvey
ccm-themedirector # ccm-themedirector
ccm-user-preferences ccm-user-preferences
# -- ccm-weblog # -- ccm-weblog
# -- ccm-webpage # -- ccm-webpage
@ -63,9 +63,9 @@ ccm-user-preferences
# -- ccm-ldn-exporter # -- ccm-ldn-exporter
# -- ccm-ldn-freeform # -- ccm-ldn-freeform
# -- ccm-ldn-importer # -- ccm-ldn-importer
ccm-ldn-navigation # ccm-ldn-navigation
ccm-ldn-portal ccm-ldn-portal
ccm-ldn-rss # ccm-ldn-rss
ccm-ldn-search ccm-ldn-search
ccm-ldn-shortcuts ccm-ldn-shortcuts
ccm-ldn-subsite ccm-ldn-subsite

View File

@ -21,8 +21,8 @@ package com.arsdigita.aplaws;
import com.arsdigita.london.navigation.Template; import com.arsdigita.london.navigation.Template;
import com.arsdigita.london.terms.Domain; import com.arsdigita.london.terms.Domain;
import com.arsdigita.london.terms.importer.Parser; import com.arsdigita.london.terms.importer.Parser;
import com.arsdigita.london.portal.PageLayout; import com.arsdigita.portalworkspace.PageLayout;
import com.arsdigita.london.portal.Workspace; import com.arsdigita.portalworkspace.Workspace;
import com.arsdigita.categorization.Category; import com.arsdigita.categorization.Category;
import com.arsdigita.categorization.RootCategoryCollection; import com.arsdigita.categorization.RootCategoryCollection;

View File

@ -30,8 +30,8 @@ import com.arsdigita.categorization.Category;
import com.arsdigita.util.Assert; import com.arsdigita.util.Assert;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.london.portal.Workspace; import com.arsdigita.portalworkspace.Workspace;
import com.arsdigita.london.portal.ui.WorkspaceSelectionModel; import com.arsdigita.portalworkspace.ui.WorkspaceSelectionModel;
public class CategoryPortalSelectionModel extends WorkspaceSelectionModel { public class CategoryPortalSelectionModel extends WorkspaceSelectionModel {

View File

@ -16,8 +16,8 @@
package com.arsdigita.aplaws.ui; package com.arsdigita.aplaws.ui;
import com.arsdigita.bebop.AbstractSingleSelectionModel; import com.arsdigita.bebop.AbstractSingleSelectionModel;
import com.arsdigita.london.portal.ui.PortalSelectionModel; import com.arsdigita.portalworkspace.ui.PortalSelectionModel;
import com.arsdigita.london.portal.WorkspacePage; import com.arsdigita.portalworkspace.WorkspacePage;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.parameters.ParameterModel; import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.domain.DomainObject; import com.arsdigita.domain.DomainObject;

View File

@ -20,11 +20,11 @@ import com.arsdigita.bebop.ActionLink;
import com.arsdigita.bebop.Page; import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.event.ActionEvent; import com.arsdigita.bebop.event.ActionEvent;
import com.arsdigita.bebop.event.ActionListener; import com.arsdigita.bebop.event.ActionListener;
import com.arsdigita.london.portal.ui.PersistentPortal; import com.arsdigita.portalworkspace.ui.PersistentPortal;
import com.arsdigita.london.portal.Workspace; import com.arsdigita.portalworkspace.Workspace;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import com.arsdigita.london.portal.ui.PortalConstants; import com.arsdigita.portalworkspace.ui.PortalConstants;
import com.arsdigita.kernel.permissions.PermissionService; import com.arsdigita.kernel.permissions.PermissionService;
import com.arsdigita.kernel.permissions.PermissionDescriptor; import com.arsdigita.kernel.permissions.PermissionDescriptor;
import com.arsdigita.kernel.permissions.PrivilegeDescriptor; import com.arsdigita.kernel.permissions.PrivilegeDescriptor;

View File

@ -27,9 +27,9 @@ import com.arsdigita.kernel.permissions.PermissionService;
import com.arsdigita.kernel.permissions.PermissionDescriptor; import com.arsdigita.kernel.permissions.PermissionDescriptor;
import com.arsdigita.kernel.permissions.PrivilegeDescriptor; import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
import com.arsdigita.london.portal.Workspace; import com.arsdigita.portalworkspace.Workspace;
import com.arsdigita.london.portal.WorkspacePage; import com.arsdigita.portalworkspace.WorkspacePage;
import com.arsdigita.london.portal.WorkspacePageCollection; import com.arsdigita.portalworkspace.WorkspacePageCollection;
import com.arsdigita.london.subsite.Subsite; import com.arsdigita.london.subsite.Subsite;

View File

@ -1,35 +0,0 @@
model com.arsdigita.london.portal;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.web.Application;
// @author Jim Parsons (jparsons@arsdigita.com)
object type WorkspaceThemeApplication extends Application {
reference key (themeapplications.theme_app_id);
}
object type WorkspaceTheme extends ACSObject {
String[0..1] theme_name = workspace_themes.theme_name VARCHAR(4000);
String[0..1] theme_desc = workspace_themes.theme_desc VARCHAR(4000);
String[0..1] ctx_bar_color = workspace_themes.ctx_bar_color VARCHAR(100);
String[0..1] ctx_bar_text_color = workspace_themes.ctx_bar_text_color VARCHAR(100);
String[0..1] active_tab_color = workspace_themes.active_tab_color VARCHAR(100);
String[0..1] active_tab_text_color = workspace_themes.active_tab_text_color VARCHAR(100);
String[0..1] inactive_tab_color = workspace_themes.inactive_tab_color VARCHAR(100);
String[0..1] inactive_tab_text_color = workspace_themes.inactive_tab_text_color VARCHAR(100);
String[0..1] top_rule = workspace_themes.top_rule VARCHAR(100);
String[0..1] bottom_rule = workspace_themes.bottom_rule VARCHAR(100);
String[0..1] portlet_head = workspace_themes.portlet_head VARCHAR(100);
String[0..1] portlet_icon = workspace_themes.portlet_icon VARCHAR(100);
String[0..1] portlet_border_color = workspace_themes.portlet_border_color VARCHAR(100);
String[0..1] portlet_border_style = workspace_themes.portlet_border_style VARCHAR(100);
String[0..1] portlet_header_text_color = workspace_themes.portlet_header_text_color VARCHAR(100);
String[0..1] page_bg_color = workspace_themes.page_bg_color VARCHAR(100);
String[0..1] page_bg_image = workspace_themes.page_bg_image VARCHAR(100);
String[0..1] narrow_bg_color = workspace_themes.narrow_bg_color VARCHAR(100);
String[0..1] body_text_color = workspace_themes.body_text_color VARCHAR(100);
reference key (workspace_themes.theme_id);
}

View File

@ -1 +0,0 @@
create index workspaces_party_id_idx on workspaces(party_id);

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<registry>
<config class="com.arsdigita.london.portal.WorkspaceConfig"
storage="ccm-ldn-portal/portal.properties"/>
</registry>

View File

@ -1,15 +0,0 @@
com.arsdigita.london.portal.default_url.title=Portal URL
com.arsdigita.london.portal.default_url.purpose=The URL on which to mount the portal workspace
com.arsdigita.london.portal.default_url.example=/portal/
com.arsdigita.london.portal.default_url.format=[url]
com.arsdigita.london.portal.default_title.title=Portal Worksapce Title
com.arsdigita.london.portal.default_title.purpose=The title of the portal workspace
com.arsdigita.london.portal.default_title.example=Portal Homepage
com.arsdigita.london.portal.default_title.format=[string]
com.arsdigita.london.portal.default_is_public.title=Is the portal workspace public?
com.arsdigita.london.portal.default_is_public.purpose=Indicate whether or not the Portal Workspace is available to the public
com.arsdigita.london.portal.default_is_public.example=true
com.arsdigita.london.portal.default_is_public.format=true|false

View File

@ -1,189 +0,0 @@
/*
* Copyright (C) 2001 ArsDigita Corporation. All Rights Reserved.
*
* The contents of this file are subject to the ArsDigita Public
* License (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.arsdigita.com/ADPL.txt
*
* 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.
*
*/
package com.arsdigita.london.portal;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel;
import com.arsdigita.bebop.SimpleContainer;
import com.arsdigita.bebop.SingleSelectionModel;
import com.arsdigita.bebop.parameters.IntegerParameter;
import com.arsdigita.bebop.portal.Portal;
import com.arsdigita.bebop.portal.PortalModel;
import com.arsdigita.bebop.portal.PortalModelBuilder;
import com.arsdigita.bebop.portal.PortletRenderer;
import com.arsdigita.london.portal.ui.PortalConstants;
import com.arsdigita.london.portal.ui.PortalSelectionModel;
import com.arsdigita.london.portal.ui.PortletSelectionModel;
import com.arsdigita.london.portal.ui.PortletTypeSelectionModel;
import com.arsdigita.london.portal.ui.WorkspaceSelectionModel;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.persistence.metadata.ObjectType;
import com.arsdigita.portal.Portlet;
import com.arsdigita.portal.PortletType;
import com.arsdigita.portal.PortletTypeCollection;
import com.arsdigita.xml.Element;
/**
*
* @author cgyg9330 &lt;chris.gilbert@westsussex.gov.uk&gt
* @version $Id: StatefulPersistentPortal.java 1271 2006-07-18 13:36:43Z cgyg9330 $
*
* Dynamically render the portlets for the current portal. If any
* portlets are stateful, retrieve a renderer from cache so that the page can
* manage the state of the portlet.
*
* ONLY VALID FOR BROWSE MODE, use com.arsdigita.portal.ui.PersistentPortal for edit mode
*
*
*/
public class StatefulPersistentPortal extends SimpleContainer {
private static final Logger s_log =
Logger.getLogger(StatefulPersistentPortal.class);
private WorkspaceSelectionModel m_workspace;
private PortletSelectionModel m_portlet;
private PortalModelBuilder m_portalModelBuilder;
private PortalSelectionModel m_portal;
/**
* maps portlet type to list of empty renderers
*/
private static Map m_stateful;
public StatefulPersistentPortal(PortalSelectionModel portal) {
this(portal, "portal");
}
/**
* Constructor is invoked when the page component hierarchy is recreated. This occurs
* a) when the first person goes to the homepage after a server restart
* b) when someone adds a stateful portlet to one of the homepage portals, which increases the
* maximum number of that portlet type that appears on any portal
* @param portal the portalSelectionModel used by the Dynamic PortalModelBuilder
* @param name
*/
public StatefulPersistentPortal(
PortalSelectionModel portal,
String name) {
s_log.debug("IN constructor" + name );
m_portal = portal;
setTag("portal:portal");
setNamespace(PortalConstants.PORTAL_XML_NS);
// retrieve empty renderers for any stateful portlets and add them to the component hierarchy
PortletTypeCollection types = PortletType.retrieveAllPortletTypes();
m_stateful = new HashMap();
while (types.next()) {
PortletType type = types.getPortletType();
s_log.debug("checking portlet type " + type.getDescription());
String portletObjectType = type.getResourceObjectType();
StatefulPortletRendererFactory factory = StatefulPortlet.getRendererFactory(portletObjectType);
if (null != factory ) {
DataQuery findMaxInstances = SessionManager.getSession().retrieveQuery("com.arsdigita.london.portal.MaxPortletInstances");
findMaxInstances.setParameter("portletType", type.getID());
int requiredRenderers = 0;
while (findMaxInstances.next()) {
requiredRenderers = ((Integer)findMaxInstances.get("maxCount")).intValue();
}
s_log.debug("stateful portlet - I am going to instantiate " + requiredRenderers + " renderers");
List renderers = new ArrayList();
for (int i = 0; i < requiredRenderers; i++) {
StatefulPortletRenderer renderer = factory.getRenderer();
renderers.add(renderer);
// and add it to the page
add(renderer);
s_log.debug("renderer added to page");
}
m_stateful.put(type.getResourceObjectType(), renderers);
}
}
m_portalModelBuilder =
new StatefulPersistentPortalModelBuilder(portal, m_stateful);
}
// copied almost directly from PersistentPortal
public void generateXML(PageState state,
Element parent) {
Element content = generateParent(parent);
WorkspacePage page = m_portal.getSelectedPortal(state);
content.addAttribute("layout", page.getLayout().getFormat());
content.addAttribute("title", page.getTitle());
content.addAttribute("description", page.getDescription());
PortalModel pm = m_portalModelBuilder.buildModel(state);
Iterator portlets = pm.getPortletRenderers();
while (portlets.hasNext()) {
Object entry = portlets.next();
if (entry instanceof Object[]) {
PortletRenderer renderer = (PortletRenderer)((Object[])entry)[0];
BigDecimal portlet = (BigDecimal)((Object[])entry)[1];
// We want the root element created by the portlet
// but the crap generateXML signature doesn't let
// us get at it :-( And the bebop portlet isn't
// any more helpful either :-(
Element hack = new Element("hack");
renderer.generateXML(state, hack);
Iterator elements = hack.getChildren().iterator();
while (elements.hasNext()) {
Element child = (Element)elements.next();
content.addContent(child);
}
} else {
PortletRenderer renderer = (PortletRenderer)entry;
renderer.generateXML(state, content);
}
}
}
/**
* return the number of renderers for the given portlet type currently registered on the page
* @param portletType
* @return
*/
public static int getCurrentPortletRendererInstances (String portletType) {
int count = 0;
List renderers = (List)m_stateful.get(portletType);
if (renderers != null) {
count = renderers.size();
}
return count;
}
}

View File

@ -1,39 +0,0 @@
com.arsdigita.london.portal.traversal_adapters.title=XML renderer rules
com.arsdigita.london.portal.traversal_adapters.purpose=Name of File with rules for configuring information in generated XML
com.arsdigita.london.portal.traversal_adapters.format=[string]
com.arsdigita.london.portal.traversal_adapters.example=/WEB-INF/resources/portal-adapters.xml
com.arsdigita.london.portal.default_layout.title=Default workspace layout
com.arsdigita.london.portal.default_layout.purpose=Default column layout for workspace portals
com.arsdigita.london.portal.default_layout.format=[layout]
com.arsdigita.london.portal.default_layout.example=25%,25%,25%,25%
com.arsdigita.london.portal.create_user_workspaces.title=Create user workspaces
com.arsdigita.london.portal.create_user_workspaces.purpose=Whether non-admin users should have their own custom workspaces
com.arsdigita.london.portal.create_user_workspaces.format=[boolean]
com.arsdigita.london.portal.create_user_workspaces.example=false
com.arsdigita.london.portal.excluded_portlet_types.title=Portlet types not available on this site
com.arsdigita.london.portal.excluded_portlet_types.purpose=Prevent these type appearing in the drop down list of portlets to add to the page
com.arsdigita.london.portal.excluded_portlet_types.format=[string,string,string]
com.arsdigita.london.portal.excluded_portlet_types.example=com.arsdigita.london.portal.portlet.ApplicationDirectoryPortlet,com.arsdigita.london.portal.portlet.TimeOfDayPortlet
com.arsdigita.london.portal.admin_only_portlet_types.title=Portlet types only available to page admin
com.arsdigita.london.portal.admin_only_portlet_types.purpose=Only available to administrator of homepage, or subsite frontpage
com.arsdigita.london.portal.admin_only_portlet_types.format=[string,string,string]
com.arsdigita.london.portal.admin_only_portlet_types.example=com.arsdigita.london.portal.portlet.ApplicationDirectoryPortlet,com.arsdigita.london.portal.portlet.TimeOfDayPortlet
com.arsdigita.london.portal.portlet.freeform_html_editor.title=use wysiwyg editor for freeform html portlet
com.arsdigita.london.portal.portlet.freeform_html_editor.purpose=If true, use editor specified by waf.bebop.dhtml_editor when user edits freeform html portlet
com.arsdigita.london.portal.portlet.freeform_html_editor.format=[boolean]
com.arsdigita.london.portal.portlet.freeform_html_editor.example=false
com.arsdigita.london.portal.workspacePartyPrivilege.title=Privilege granted to the workspace party
com.arsdigita.london.portal.workspacePartyPrivilege.purpose=Specify which privilege is granted to the workspace party. Should be "read" or "edit".
com.arsdigita.london.portal.workspacePartyPrivilege.format=[string]
com.arsdigita.london.portal.workspacePartyPrivilege.example=edit
com.arsdigita.london.portal.checkWorkspaceReadPermissions.title=Check READ permissions when viewing Workspaces
com.arsdigita.london.portal.checkWorkspaceReadPermissions.purpose=Specify whether we should check READ permissions when viewing workspaces. By default we don't, which is odd.
com.arsdigita.london.portal.checkWorkspaceReadPermissions.format=[boolean]
com.arsdigita.london.portal.checkWorkspaceReadPermissions.example=false

View File

@ -1,19 +1,14 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project" <ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
name="ccm-ldn-portal" name="ccm-portalworkspace"
prettyName="Portal" prettyName="Portal Workspace"
version="6.6.0" version="6.6.1"
release="1" release="1"
webapp="ROOT"> webapp="ROOT">
<ccm:dependencies> <ccm:dependencies>
<ccm:requires name="ccm-core" version="6.6.0" relation="ge"/> <ccm:requires name="ccm-core" version="6.6.0" relation="ge"/>
<ccm:requires name="ccm-cms" version="6.6.0" relation="ge"/> <ccm:requires name="ccm-cms" version="6.6.0" relation="ge"/>
<ccm:requires name="ccm-ldn-subsite" version="6.6.0" relation="ge"/> <ccm:requires name="ccm-ldn-subsite" version="6.6.0" relation="ge"/>
<!-- <ccm:requires name="ccm-forum" version="6.6.0" relation="ge"/> -->
<ccm:requires name="ccm-ldn-navigation" version="6.6.0" relation="ge"/>
<!-- TEST, workspace portlet relocated
<ccm:requires name="ccm-ldn-rss" version="6.6.0" relation="ge"/>
-->
<ccm:requires name="ccm-ldn-util" version="6.6.0" relation="ge"/> <ccm:requires name="ccm-ldn-util" version="6.6.0" relation="ge"/>
</ccm:dependencies> </ccm:dependencies>
<ccm:contacts> <ccm:contacts>

View File

@ -15,15 +15,15 @@
// License along with this library; if not, write to the Free Software // License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
model com.arsdigita.london.portal; model com.arsdigita.portalworkspace;
object type PageLayout { object type PageLayout {
BigDecimal[1..1] id = workspace_page_layouts.layout_id INTEGER; BigDecimal[1..1] id = pw_workspace_page_layouts.layout_id INTEGER;
String[1..1] title = workspace_page_layouts.title VARCHAR(200); String[1..1] title = pw_workspace_page_layouts.title VARCHAR(200);
String[0..1] description = workspace_page_layouts.description VARCHAR(4000); String[0..1] description = pw_workspace_page_layouts.description VARCHAR(4000);
unique String[1..1] format = workspace_page_layouts.format VARCHAR(50); unique String[1..1] format = pw_workspace_page_layouts.format VARCHAR(50);
object key(id); object key(id);
} }

View File

@ -1,4 +1,4 @@
model com.arsdigita.london.portal; model com.arsdigita.portalworkspace;
query MaxPortletInstances { query MaxPortletInstances {
Integer maxCount; Integer maxCount;

View File

@ -1,4 +1,4 @@
model com.arsdigita.london.portal; model com.arsdigita.portalworkspace;
query MaxPortletInstances { query MaxPortletInstances {
Integer maxCount; Integer maxCount;

View File

@ -12,13 +12,13 @@
// rights and limitations under the License. // rights and limitations under the License.
// //
model com.arsdigita.london.portal; model com.arsdigita.portalworkspace;
query WorkspaceParticipantsWithInitial { query WorkspaceParticipantsWithInitial {
BigDecimal participantID; BigDecimal participantID;
do { do {
select u.user_id as participant_id select u.user_id as participant_id
from workspaces w, group_member_map m, users u, person_names pn from pw_workspaces w, group_member_map m, users u, person_names pn
where w.workspace_id = :workspaceID and where w.workspace_id = :workspaceID and
w.party_id = m.group_id and w.party_id = m.group_id and
m.member_id = u.user_id and m.member_id = u.user_id and
@ -35,7 +35,7 @@ query WorkspaceParticipantInitials {
select name_initial select name_initial
from ( select distinct upper(substr(pn.family_name, 1, 1)) from ( select distinct upper(substr(pn.family_name, 1, 1))
as name_initial as name_initial
from workspaces w, group_member_map m, users u, person_names pn from pw_workspaces w, group_member_map m, users u, person_names pn
where w.workspace_id = :workspaceID and where w.workspace_id = :workspaceID and
w.party_id = m.group_id and w.party_id = m.group_id and
m.member_id = u.user_id and m.member_id = u.user_id and
@ -50,7 +50,7 @@ query WorkspaceParticipantIDs {
BigDecimal id; BigDecimal id;
do { do {
select m.member_id as participant_id select m.member_id as participant_id
from workspaces w, group_member_map m from pw_workspaces w, group_member_map m
where w.workspace_id = :workspaceID and where w.workspace_id = :workspaceID and
w.party_id = m.group_id w.party_id = m.group_id
} map { } map {

View File

@ -12,30 +12,30 @@
// rights and limitations under the License. // rights and limitations under the License.
// //
model com.arsdigita.london.portal; model com.arsdigita.portalworkspace;
import com.arsdigita.kernel.Party; import com.arsdigita.kernel.Party;
import com.arsdigita.kernel.User; import com.arsdigita.kernel.User;
import com.arsdigita.web.Application; import com.arsdigita.web.Application;
object type Workspace extends Application { object type Workspace extends Application {
Party[1..1] party = join workspaces.party_id to parties.party_id; Party[1..1] party = join pw_workspaces.party_id to parties.party_id;
component WorkspacePage[0..n] pages = join workspaces.workspace_id component WorkspacePage[0..n] pages = join pw_workspaces.workspace_id
to workspace_pages.workspace_id; to pw_workspace_pages.workspace_id;
PageLayout[1..1] defaultLayout = join workspaces.default_layout_id PageLayout[1..1] defaultLayout = join pw_workspaces.default_layout_id
to workspace_page_layouts.layout_id; to pw_workspace_page_layouts.layout_id;
WorkspaceTheme[0..1] theme = join workspaces.theme_id to workspace_themes.theme_id; WorkspaceTheme[0..1] theme = join pw_workspaces.theme_id to pw_workspace_themes.theme_id;
User[0..1] owner = join workspaces.owner_id to users.user_id; User[0..1] owner = join pw_workspaces.owner_id to users.user_id;
Workspace[0..n] relatedWorkspace = Workspace[0..n] relatedWorkspace =
join workspaces.workspace_id join pw_workspaces.workspace_id
to workspace_workspace_map.referencing_workspace_id, to pw_workspace_workspace_map.referencing_workspace_id,
join workspace_workspace_map.referenced_workspace_id join pw_workspace_workspace_map.referenced_workspace_id
to workspaces.workspace_id; to pw_workspaces.workspace_id;
// String description = applications.description VARCHAR(4000); // String description = applications.description VARCHAR(4000);
reference key (workspaces.workspace_id); reference key (pw_workspaces.workspace_id);
aggressive load (party.id); aggressive load (party.id);
} }
@ -62,7 +62,7 @@ query childWorkspacesForApplicationID {
from from
acs_objects, acs_objects,
applications, applications,
workspaces pw_workspaces
where where
applications.parent_application_id = :applicationID applications.parent_application_id = :applicationID
-- joins -- joins

View File

@ -15,18 +15,18 @@
// License along with this library; if not, write to the Free Software // License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
model com.arsdigita.london.portal; model com.arsdigita.portalworkspace;
import com.arsdigita.portal.Portal; import com.arsdigita.portal.Portal;
object type WorkspacePage extends Portal { object type WorkspacePage extends Portal {
Integer[1..1] sortKey = applications.sort_key INTEGER; Integer[1..1] sortKey = applications.sort_key INTEGER;
PageLayout[1..1] layout = join workspace_pages.layout_id PageLayout[1..1] layout = join pw_workspace_pages.layout_id
to workspace_page_layouts.layout_id; to pw_workspace_page_layouts.layout_id;
composite Workspace[1..1] workspace = join workspace_pages.workspace_id composite Workspace[1..1] workspace = join pw_workspace_pages.workspace_id
to workspaces.workspace_id; to pw_workspaces.workspace_id;
reference key (workspace_pages.page_id); reference key (pw_workspace_pages.page_id);
aggressive load (layout.id, layout.title, layout.description, layout.format); aggressive load (layout.id, layout.title, layout.description, layout.format);
} }

View File

@ -0,0 +1,35 @@
model com.arsdigita.portalworkspace;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.web.Application;
// @author Jim Parsons (jparsons@arsdigita.com)
object type WorkspaceThemeApplication extends Application {
reference key (pw_workspace_themeapplications.theme_app_id);
}
object type WorkspaceTheme extends ACSObject {
String[0..1] theme_name = pw_workspace_themes.theme_name VARCHAR(4000);
String[0..1] theme_desc = pw_workspace_themes.theme_desc VARCHAR(4000);
String[0..1] ctx_bar_color = pw_workspace_themes.ctx_bar_color VARCHAR(100);
String[0..1] ctx_bar_text_color = pw_workspace_themes.ctx_bar_text_color VARCHAR(100);
String[0..1] active_tab_color = pw_workspace_themes.active_tab_color VARCHAR(100);
String[0..1] active_tab_text_color = pw_workspace_themes.active_tab_text_color VARCHAR(100);
String[0..1] inactive_tab_color = pw_workspace_themes.inactive_tab_color VARCHAR(100);
String[0..1] inactive_tab_text_color = pw_workspace_themes.inactive_tab_text_color VARCHAR(100);
String[0..1] top_rule = pw_workspace_themes.top_rule VARCHAR(100);
String[0..1] bottom_rule = pw_workspace_themes.bottom_rule VARCHAR(100);
String[0..1] portlet_head = pw_workspace_themes.portlet_head VARCHAR(100);
String[0..1] portlet_icon = pw_workspace_themes.portlet_icon VARCHAR(100);
String[0..1] portlet_border_color = pw_workspace_themes.portlet_border_color VARCHAR(100);
String[0..1] portlet_border_style = pw_workspace_themes.portlet_border_style VARCHAR(100);
String[0..1] portlet_header_text_color = pw_workspace_themes.portlet_header_text_color VARCHAR(100);
String[0..1] page_bg_color = pw_workspace_themes.page_bg_color VARCHAR(100);
String[0..1] page_bg_image = pw_workspace_themes.page_bg_image VARCHAR(100);
String[0..1] narrow_bg_color = pw_workspace_themes.narrow_bg_color VARCHAR(100);
String[0..1] body_text_color = pw_workspace_themes.body_text_color VARCHAR(100);
reference key (pw_workspace_themes.theme_id);
}

View File

@ -12,7 +12,7 @@
// rights and limitations under the License. // rights and limitations under the License.
// //
model com.arsdigita.london.portal.portlet; model com.arsdigita.portalworkspace.portlet;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;

View File

@ -15,7 +15,7 @@
// License along with this library; if not, write to the Free Software // License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
model com.arsdigita.london.portal.portlet; model com.arsdigita.portalworkspace.portlet;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;
import com.arsdigita.categorization.Category; import com.arsdigita.categorization.Category;

View File

@ -14,7 +14,7 @@
// License along with this library; if not, write to the Free Software // License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
model com.arsdigita.london.portal.portlet; model com.arsdigita.portalworkspace.portlet;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;

View File

@ -12,7 +12,7 @@
// rights and limitations under the License. // rights and limitations under the License.
// //
model com.arsdigita.london.portal.portlet; model com.arsdigita.portalworkspace.portlet;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;

View File

@ -12,7 +12,7 @@
// rights and limitations under the License. // rights and limitations under the License.
// //
model com.arsdigita.london.portal.portlet; model com.arsdigita.portalworkspace.portlet;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;

View File

@ -1,4 +1,4 @@
model com.arsdigita.london.portal.portlet; model com.arsdigita.portalworkspace.portlet;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;
@ -18,7 +18,7 @@ query MyWorkspaces {
upper(a.title) as sort_key upper(a.title) as sort_key
from from
group_member_trans_index gmti, group_member_trans_index gmti,
workspaces w, pw_workspaces w,
group_subgroup_map m, group_subgroup_map m,
applications a applications a
where where
@ -34,7 +34,7 @@ query MyWorkspaces {
a.primary_url, a.primary_url,
upper(a.title) as sort_key upper(a.title) as sort_key
from from
workspaces w, pw_workspaces w,
group_member_map m, group_member_map m,
applications a applications a
where where

View File

@ -12,7 +12,7 @@
// rights and limitations under the License. // rights and limitations under the License.
// //
model com.arsdigita.london.portal.portlet; model com.arsdigita.portalworkspace.portlet;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;

View File

@ -12,7 +12,7 @@
// rights and limitations under the License. // rights and limitations under the License.
// //
model com.arsdigita.london.portal.portlet; model com.arsdigita.portalworkspace.portlet;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;

View File

@ -1,4 +1,4 @@
model com.arsdigita.london.portal.portlet; model com.arsdigita.portalworkspace.portlet;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;

View File

@ -1,4 +1,4 @@
model com.arsdigita.london.portal.portlet; model com.arsdigita.portalworkspace.portlet;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;

View File

@ -0,0 +1 @@
create index pw_workspaces_party_id_idx on pw_workspaces(party_id);

View File

@ -1,15 +1,15 @@
insert into workspace_page_layouts (layout_id, title, description, format) insert into pw_workspace_page_layouts (layout_id, title, description, format)
values (nextval('acs_object_id_seq'), '1 Column', 'One column', '100%'); values (nextval('acs_object_id_seq'), '1 Column', 'One column', '100%');
insert into workspace_page_layouts (layout_id, title, description, format) insert into pw_workspace_page_layouts (layout_id, title, description, format)
values (nextval('acs_object_id_seq'), '2 Column', 'Two columns, equal size', '50%,50%'); values (nextval('acs_object_id_seq'), '2 Column', 'Two columns, equal size', '50%,50%');
insert into workspace_page_layouts (layout_id, title, description, format) insert into pw_workspace_page_layouts (layout_id, title, description, format)
values (nextval('acs_object_id_seq'), '3 Column', 'Three columns, equal size', '30%,40%,30%'); values (nextval('acs_object_id_seq'), '3 Column', 'Three columns, equal size', '30%,40%,30%');
insert into workspace_page_layouts (layout_id, title, description, format) insert into pw_workspace_page_layouts (layout_id, title, description, format)
values (nextval('acs_object_id_seq'), '4 Column', 'Four columns, equal size', '25%,25%,25%,25%'); values (nextval('acs_object_id_seq'), '4 Column', 'Four columns, equal size', '25%,25%,25%,25%');
insert into workspace_page_layouts (layout_id, title, description, format) insert into pw_workspace_page_layouts (layout_id, title, description, format)
values (nextval('acs_object_id_seq'), '5 Column', 'Five columns, equal size', '20%,20%,20%,20%,20%'); values (nextval('acs_object_id_seq'), '5 Column', 'Five columns, equal size', '20%,20%,20%,20%,20%');

View File

@ -1,14 +1,14 @@
insert into workspace_page_layouts (layout_id, title, description, format) insert into pw_workspace_page_layouts (layout_id, title, description, format)
values (acs_object_id_seq.nextval, '1 Column', 'One column', '100%'); values (acs_object_id_seq.nextval, '1 Column', 'One column', '100%');
insert into workspace_page_layouts (layout_id, title, description, format) insert into pw_workspace_page_layouts (layout_id, title, description, format)
values (acs_object_id_seq.nextval, '2 Column', 'Two columns, equal size', '50%,50%'); values (acs_object_id_seq.nextval, '2 Column', 'Two columns, equal size', '50%,50%');
insert into workspace_page_layouts (layout_id, title, description, format) insert into pw_workspace_page_layouts (layout_id, title, description, format)
values (acs_object_id_seq.nextval, '3 Column', 'Three columns, equal size', '30%,40%,30%'); values (acs_object_id_seq.nextval, '3 Column', 'Three columns, equal size', '30%,40%,30%');
insert into workspace_page_layouts (layout_id, title, description, format) insert into pw_workspace_page_layouts (layout_id, title, description, format)
values (acs_object_id_seq.nextval, '4 Column', 'Four columns, equal size', '25%,25%,25%,25%'); values (acs_object_id_seq.nextval, '4 Column', 'Four columns, equal size', '25%,25%,25%,25%');
insert into workspace_page_layouts (layout_id, title, description, format) insert into pw_workspace_page_layouts (layout_id, title, description, format)
values (acs_object_id_seq.nextval, '5 Column', 'Five columns, equal size', '20%,20%,20%,20%,20%'); values (acs_object_id_seq.nextval, '5 Column', 'Five columns, equal size', '20%,20%,20%,20%,20%');

View File

@ -4,8 +4,8 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://rhea.redhat.com/schemas/waf/xml-renderer-rules xml-renderer-rules.xsd"> xsi:schemaLocation="http://rhea.redhat.com/schemas/waf/xml-renderer-rules xml-renderer-rules.xsd">
<xrd:context name="com.arsdigita.london.portal.ui.PortalList"> <xrd:context name="com.arsdigita.portalworkspace.ui.PortalList">
<xrd:adapter objectType="com.arsdigita.london.portal.WorkspacePage"> <xrd:adapter objectType="com.arsdigita.portalworkspace.WorkspacePage">
<xrd:attributes rule="exclude"> <xrd:attributes rule="exclude">
<xrd:property name="/object/id"/> <xrd:property name="/object/id"/>
<xrd:property name="/object/defaultDomainClass"/> <xrd:property name="/object/defaultDomainClass"/>
@ -17,8 +17,8 @@
</xrd:adapter> </xrd:adapter>
</xrd:context> </xrd:context>
<xrd:context name="com.arsdigita.london.portal.ui.WorkspaceDetails"> <xrd:context name="com.arsdigita.portalworkspace.ui.WorkspaceDetails">
<xrd:adapter objectType="com.arsdigita.london.portal.Workspace"> <xrd:adapter objectType="com.arsdigita.portalworkspace.Workspace">
<xrd:attributes rule="exclude"> <xrd:attributes rule="exclude">
<xrd:property name="/object/id"/> <xrd:property name="/object/id"/>
<xrd:property name="/object/defaultDomainClass"/> <xrd:property name="/object/defaultDomainClass"/>
@ -27,7 +27,7 @@
</xrd:adapter> </xrd:adapter>
</xrd:context> </xrd:context>
<xrd:context name="com.arsdigita.london.portal.ui.admin.ApplicationList"> <xrd:context name="com.arsdigita.portalworkspace.ui.admin.ApplicationList">
<xrd:adapter objectType="com.arsdigita.web.Application"> <xrd:adapter objectType="com.arsdigita.web.Application">
<xrd:attributes rule="include"> <xrd:attributes rule="include">
<xrd:property name="/object/primaryURL"/> <xrd:property name="/object/primaryURL"/>
@ -37,7 +37,7 @@
</xrd:adapter> </xrd:adapter>
</xrd:context> </xrd:context>
<xrd:context name="com.arsdigita.london.portal.ui.admin.ApplicationDetails"> <xrd:context name="com.arsdigita.portalworkspace.ui.admin.ApplicationDetails">
<xrd:adapter objectType="com.arsdigita.web.Application"> <xrd:adapter objectType="com.arsdigita.web.Application">
<xrd:attributes rule="exclude"> <xrd:attributes rule="exclude">
<xrd:property name="/object/id"/> <xrd:property name="/object/id"/>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<registry>
<config class="com.arsdigita.portalworkspace.WorkspaceConfig"
storage="ccm-portalworkspace/portal.properties"/>
</registry>

View File

@ -6,19 +6,18 @@
<table name="cms_items"/> <table name="cms_items"/>
<initializer class="com.arsdigita.cms.Initializer"/> <initializer class="com.arsdigita.cms.Initializer"/>
<initializer class="com.arsdigita.london.util.Initializer"/> <initializer class="com.arsdigita.london.util.Initializer"/>
<initializer class="com.arsdigita.london.navigation.Initializer"/>
<!-- <!-- <initializer class="com.arsdigita.london.navigation.Initializer"/> -->
<initializer class="com.arsdigita.london.rss.Initializer"/> <!-- <initializer class="com.arsdigita.london.rss.Initializer"/> -->
-->
</requires> </requires>
<provides> <provides>
<!-- <!--
<table name=""/> <table name=""/>
--> -->
<initializer class="com.arsdigita.london.portal.Initializer"/> <initializer class="com.arsdigita.portalworkspace.Initializer"/>
</provides> </provides>
<scripts> <scripts>
<schema directory="ccm-ldn-portal"/> <schema directory="ccm-portalworkspace"/>
<data class="com.arsdigita.london.portal.Loader"/> <data class="com.arsdigita.portalworkspace.Loader"/>
</scripts> </scripts>
</load> </load>

View File

@ -19,4 +19,7 @@
<script sql="ccm-ldn-portal/upgrade/::database::-6.5.2-6.5.3.sql"/> <script sql="ccm-ldn-portal/upgrade/::database::-6.5.2-6.5.3.sql"/>
<script class="com.arsdigita.london.portal.upgrade.CreateFlashPortlet"/> <script class="com.arsdigita.london.portal.upgrade.CreateFlashPortlet"/>
</version> </version>
<version from="6.6.0" to="6.6.1">
<script sql="ccm-portalworkspace/upgrade/::database::-6.6.0-6.6.1.sql"/>
</version>
</upgrade> </upgrade>

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -30,25 +30,21 @@ import com.arsdigita.kernel.ResourceType;
import com.arsdigita.kernel.ResourceTypeConfig; import com.arsdigita.kernel.ResourceTypeConfig;
import com.arsdigita.kernel.ui.ResourceConfigComponent; import com.arsdigita.kernel.ui.ResourceConfigComponent;
import com.arsdigita.kernel.ui.ResourceConfigFormSection; import com.arsdigita.kernel.ui.ResourceConfigFormSection;
// unused import import com.arsdigita.portalworkspace.portlet.ApplicationDirectoryPortlet;
// import com.arsdigita.london.navigation.ApplicationNavigationModel; import com.arsdigita.portalworkspace.portlet.ContentDirectoryPortlet;
// import com.arsdigita.london.navigation.DefaultNavigationModel; import com.arsdigita.portalworkspace.portlet.FlashPortletInitializer;
import com.arsdigita.london.portal.portlet.ApplicationDirectoryPortlet; import com.arsdigita.portalworkspace.portlet.FreeformHTMLPortlet;
import com.arsdigita.london.portal.portlet.ContentDirectoryPortlet; import com.arsdigita.portalworkspace.portlet.LoginPortlet;
import com.arsdigita.london.portal.portlet.FlashPortletInitializer; import com.arsdigita.portalworkspace.portlet.RSSFeedPortlet;
import com.arsdigita.london.portal.portlet.FreeformHTMLPortlet; import com.arsdigita.portalworkspace.portlet.TimeOfDayPortlet;
import com.arsdigita.london.portal.portlet.LoginPortlet; import com.arsdigita.portalworkspace.portlet.MyWorkspacesPortlet;
// import com.arsdigita.london.navigation.portlet.NavigationDirectoryPortlet; import com.arsdigita.portalworkspace.portlet.WorkspaceNavigatorPortlet;
import com.arsdigita.london.portal.portlet.RSSFeedPortlet; import com.arsdigita.portalworkspace.portlet.WorkspaceSummaryPortlet;
import com.arsdigita.london.portal.portlet.TimeOfDayPortlet; import com.arsdigita.portalworkspace.ui.admin.WorkspaceConfigFormSection;
import com.arsdigita.london.portal.portlet.MyWorkspacesPortlet; import com.arsdigita.portalworkspace.ui.portlet.ContentDirectoryPortletEditor;
import com.arsdigita.london.portal.portlet.WorkspaceNavigatorPortlet; import com.arsdigita.portalworkspace.ui.portlet.FreeformHTMLPortletEditor;
import com.arsdigita.london.portal.portlet.WorkspaceSummaryPortlet; import com.arsdigita.portalworkspace.ui.portlet.RSSFeedPortletEditor;
import com.arsdigita.london.portal.ui.admin.WorkspaceConfigFormSection; import com.arsdigita.portalworkspace.ui.portlet.RSSFeedPortletEditorForm;
import com.arsdigita.london.portal.ui.portlet.ContentDirectoryPortletEditor;
import com.arsdigita.london.portal.ui.portlet.FreeformHTMLPortletEditor;
import com.arsdigita.london.portal.ui.portlet.RSSFeedPortletEditor;
import com.arsdigita.london.portal.ui.portlet.RSSFeedPortletEditorForm;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.pdl.ManifestSource; import com.arsdigita.persistence.pdl.ManifestSource;
import com.arsdigita.persistence.pdl.NameFilter; import com.arsdigita.persistence.pdl.NameFilter;
@ -58,11 +54,9 @@ import com.arsdigita.runtime.PDLInitializer;
import com.arsdigita.runtime.RuntimeConfig; import com.arsdigita.runtime.RuntimeConfig;
import com.arsdigita.xml.XML; import com.arsdigita.xml.XML;
// import com.arsdigita.london.rss.portlet.WorkspaceDirectoryPortlet;
/** /**
* Initializes the Portal system * Initializes the Portal Workspace system
* *
* @version $Id: Initializer.java 2070 2010-01-28 08:47:41Z pboy $ * @version $Id: Initializer.java 2070 2010-01-28 08:47:41Z pboy $
*/ */
@ -78,7 +72,7 @@ public class Initializer extends CompoundInitializer {
final String url = RuntimeConfig.getConfig().getJDBCURL(); final String url = RuntimeConfig.getConfig().getJDBCURL();
final int database = DbHelper.getDatabaseFromURL(url); final int database = DbHelper.getDatabaseFromURL(url);
add(new PDLInitializer(new ManifestSource("ccm-ldn-portal.pdl.mf", add(new PDLInitializer(new ManifestSource("ccm-portalworkspace.pdl.mf",
new NameFilter(DbHelper.getDatabaseSuffix(database), new NameFilter(DbHelper.getDatabaseSuffix(database),
"pdl")))); "pdl"))));
} }
@ -123,8 +117,9 @@ public class Initializer extends CompoundInitializer {
e.getFactory().registerInstantiator( e.getFactory().registerInstantiator(
ApplicationDirectoryPortlet.BASE_DATA_OBJECT_TYPE, ApplicationDirectoryPortlet.BASE_DATA_OBJECT_TYPE,
new ACSObjectInstantiator() { new ACSObjectInstantiator() {
@Override
public DomainObject doNewInstance(DataObject dataObject) { public DomainObject doNewInstance(DataObject dataObject) {
return new ApplicationDirectoryPortlet(dataObject); return new ApplicationDirectoryPortlet(dataObject);
} }
@ -149,6 +144,7 @@ public class Initializer extends CompoundInitializer {
e.getFactory().registerInstantiator( e.getFactory().registerInstantiator(
LoginPortlet.BASE_DATA_OBJECT_TYPE, LoginPortlet.BASE_DATA_OBJECT_TYPE,
new ACSObjectInstantiator() { new ACSObjectInstantiator() {
@Override
public DomainObject doNewInstance(DataObject dataObject) { public DomainObject doNewInstance(DataObject dataObject) {
return new LoginPortlet(dataObject); return new LoginPortlet(dataObject);
} }
@ -157,6 +153,7 @@ public class Initializer extends CompoundInitializer {
e.getFactory().registerInstantiator( e.getFactory().registerInstantiator(
MyWorkspacesPortlet.BASE_DATA_OBJECT_TYPE, MyWorkspacesPortlet.BASE_DATA_OBJECT_TYPE,
new ACSObjectInstantiator() { new ACSObjectInstantiator() {
@Override
public DomainObject doNewInstance(DataObject dataObject) { public DomainObject doNewInstance(DataObject dataObject) {
return new MyWorkspacesPortlet(dataObject); return new MyWorkspacesPortlet(dataObject);
} }
@ -165,6 +162,7 @@ public class Initializer extends CompoundInitializer {
e.getFactory().registerInstantiator( e.getFactory().registerInstantiator(
RSSFeedPortlet.BASE_DATA_OBJECT_TYPE, RSSFeedPortlet.BASE_DATA_OBJECT_TYPE,
new ACSObjectInstantiator() { new ACSObjectInstantiator() {
@Override
public DomainObject doNewInstance(DataObject dataObject) { public DomainObject doNewInstance(DataObject dataObject) {
return new RSSFeedPortlet(dataObject); return new RSSFeedPortlet(dataObject);
} }
@ -206,6 +204,7 @@ public class Initializer extends CompoundInitializer {
}); });
new ResourceTypeConfig(Workspace.BASE_DATA_OBJECT_TYPE) { new ResourceTypeConfig(Workspace.BASE_DATA_OBJECT_TYPE) {
@Override
public ResourceConfigFormSection getCreateFormSection( public ResourceConfigFormSection getCreateFormSection(
final ResourceType resType, final ResourceType resType,
final RequestLocal parentAppRL) { final RequestLocal parentAppRL) {
@ -214,6 +213,7 @@ public class Initializer extends CompoundInitializer {
return config; return config;
} }
@Override
public ResourceConfigFormSection getModifyFormSection( public ResourceConfigFormSection getModifyFormSection(
final RequestLocal application) { final RequestLocal application) {
final ResourceConfigFormSection config = final ResourceConfigFormSection config =
@ -223,6 +223,7 @@ public class Initializer extends CompoundInitializer {
}; };
new ResourceTypeConfig(ContentDirectoryPortlet.BASE_DATA_OBJECT_TYPE) { new ResourceTypeConfig(ContentDirectoryPortlet.BASE_DATA_OBJECT_TYPE) {
@Override
public ResourceConfigFormSection getCreateFormSection( public ResourceConfigFormSection getCreateFormSection(
final ResourceType resType, final ResourceType resType,
final RequestLocal parentAppRL) { final RequestLocal parentAppRL) {
@ -232,6 +233,7 @@ public class Initializer extends CompoundInitializer {
return config; return config;
} }
@Override
public ResourceConfigFormSection getModifyFormSection( public ResourceConfigFormSection getModifyFormSection(
final RequestLocal application) { final RequestLocal application) {
final ContentDirectoryPortletEditor config = final ContentDirectoryPortletEditor config =
@ -241,6 +243,7 @@ public class Initializer extends CompoundInitializer {
}; };
new ResourceTypeConfig(RSSFeedPortlet.BASE_DATA_OBJECT_TYPE) { new ResourceTypeConfig(RSSFeedPortlet.BASE_DATA_OBJECT_TYPE) {
@Override
public ResourceConfigFormSection getCreateFormSection( public ResourceConfigFormSection getCreateFormSection(
final ResourceType resType, final ResourceType resType,
final RequestLocal parentAppRL) { final RequestLocal parentAppRL) {
@ -266,6 +269,7 @@ public class Initializer extends CompoundInitializer {
return config; return config;
} }
@Override
public ResourceConfigComponent getModifyComponent( public ResourceConfigComponent getModifyComponent(
final RequestLocal application) { final RequestLocal application) {
final RSSFeedPortletEditor config = final RSSFeedPortletEditor config =
@ -293,13 +297,13 @@ public class Initializer extends CompoundInitializer {
} }
}; };
// NavigationDirectoryPortlet.registerInstantiator();
// NavigationDirectoryPortlet.registerResourceTypeConfig();
FlashPortletInitializer.initialize(); FlashPortletInitializer.initialize();
// import from london.navigation required // import from london.navigation required
// causes horizontal dependency between portal and navigation // causes horizontal dependency between portal and navigation
// required by NavigationTreePortlet (formerly NavigationDirectroryPortlet)
// now moved to ldn-navigation ??
// ApplicationNavigationModel.register(Workspace.class.getName(), // ApplicationNavigationModel.register(Workspace.class.getName(),
// new DefaultNavigationModel()); // new DefaultNavigationModel());
} }

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -24,13 +24,15 @@ import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.KernelExcursion; import com.arsdigita.kernel.KernelExcursion;
import com.arsdigita.kernel.ResourceType; import com.arsdigita.kernel.ResourceType;
import com.arsdigita.loader.PackageLoader; import com.arsdigita.loader.PackageLoader;
import com.arsdigita.london.portal.portlet.ApplicationDirectoryPortlet; import com.arsdigita.portalworkspace.portlet.ApplicationDirectoryPortlet;
import com.arsdigita.london.portal.portlet.ContentDirectoryPortlet; import com.arsdigita.portalworkspace.portlet.ContentDirectoryPortlet;
import com.arsdigita.london.portal.portlet.FreeformHTMLPortlet; import com.arsdigita.portalworkspace.portlet.FreeformHTMLPortlet;
import com.arsdigita.london.portal.portlet.LoginPortlet; import com.arsdigita.portalworkspace.portlet.LoginPortlet;
// import com.arsdigita.london.navigation.portlet.NavigationDirectoryPortlet; import com.arsdigita.portalworkspace.portlet.MyWorkspacesPortlet ;
import com.arsdigita.london.portal.portlet.RSSFeedPortlet; import com.arsdigita.portalworkspace.portlet.RSSFeedPortlet;
import com.arsdigita.london.portal.portlet.TimeOfDayPortlet; import com.arsdigita.portalworkspace.portlet.TimeOfDayPortlet;
import com.arsdigita.portalworkspace.portlet.WorkspaceNavigatorPortlet;
import com.arsdigita.portalworkspace.portlet.WorkspaceSummaryPortlet;
import com.arsdigita.portal.PortletType; import com.arsdigita.portal.PortletType;
import com.arsdigita.runtime.ScriptContext; import com.arsdigita.runtime.ScriptContext;
import com.arsdigita.util.Assert; import com.arsdigita.util.Assert;
@ -42,7 +44,8 @@ import com.arsdigita.web.ApplicationType;
/** /**
* Executes nonrecurring at install time and loads (and configures ) a default * Executes nonrecurring at install time and loads (and configures ) a default
* workspace instance (i.e. instance of ccm-ldn-portal) in a default configuration. * workspace instance (i.e. instance of ccm-portalworkspace) in a default
* configuration.
* *
* Configuration can be modified by configuration parameters before processing, * Configuration can be modified by configuration parameters before processing,
* otherwise hardcoded default values take effect. A set of portlets, part of * otherwise hardcoded default values take effect. A set of portlets, part of
@ -59,15 +62,18 @@ public class Loader extends PackageLoader {
private static final Logger s_log = Logger.getLogger(Loader.class); private static final Logger s_log = Logger.getLogger(Loader.class);
private StringParameter m_url = new StringParameter( private StringParameter m_url = new StringParameter(
"com.arsdigita.london.portal.default_url", Parameter.REQUIRED, "com.arsdigita.portalworkspace.default_url", Parameter.REQUIRED,
"/portal/"); "/portal/");
private StringParameter m_title = new StringParameter( private StringParameter m_title = new StringParameter(
"com.arsdigita.london.portal.default_title", Parameter.REQUIRED, "com.arsdigita.portalworkspace.default_title", Parameter.REQUIRED,
"Portal Homepage"); "Portal Homepage");
private BooleanParameter m_isPublic = new BooleanParameter( /** Actually a kind of misnomer. In the creation process it is used to
"com.arsdigita.london.portal.default_is_public", * indicate whether a Containergroup should be created.
*/
private BooleanParameter m_isPublic = new BooleanParameter(
"com.arsdigita.portalworkspace.default_is_public",
Parameter.REQUIRED, Boolean.TRUE); Parameter.REQUIRED, Boolean.TRUE);
/** /**
@ -99,9 +105,11 @@ public class Loader extends PackageLoader {
loadContentDirectoryPortlet(); loadContentDirectoryPortlet();
loadFreeformHTMLPortlet(); loadFreeformHTMLPortlet();
loadLoginPortlet(); loadLoginPortlet();
loadMyWorkspacesPortlet();
loadRSSFeedPortlet(); loadRSSFeedPortlet();
loadTimeOfDayPortlet(); loadTimeOfDayPortlet();
// NavigationDirectoryPortlet.loadPortletType(); loadWorkspaceNavigatorPortlet();
loadWorkspaceSummaryPortlet();
} }
}.run(); }.run();
} }
@ -161,7 +169,8 @@ public class Loader extends PackageLoader {
// The first string is a key parameter used to create a // The first string is a key parameter used to create a
// legacy package type to back the new application type. // legacy package type to back the new application type.
ApplicationType type = ApplicationType.createApplicationType( ApplicationType type = ApplicationType.createApplicationType(
"workspace", "Portal Workspace", "portalworkspace",
"Portal Workspace",
Workspace.BASE_DATA_OBJECT_TYPE); Workspace.BASE_DATA_OBJECT_TYPE);
type.setDescription("Portal based collaborative workspaces"); type.setDescription("Portal based collaborative workspaces");
type.createGroup(); type.createGroup();
@ -171,7 +180,7 @@ public class Loader extends PackageLoader {
/** /**
* Setup WorkspacePage type. * Setup WorkspacePage type.
* *
* Creates an entry for class (=type) c.ad.ldn.portal.WorkspacePage in * Creates an entry for class (=type) c.ad.portalworkspace.WorkspacePage in
* table application_types, but not in apm_package_types. * table application_types, but not in apm_package_types.
* @return * @return
*/ */
@ -191,7 +200,7 @@ public class Loader extends PackageLoader {
PortletType type = PortletType.createPortletType( PortletType type = PortletType.createPortletType(
"Application Directory", PortletType.WIDE_PROFILE, "Application Directory", PortletType.WIDE_PROFILE,
ApplicationDirectoryPortlet.BASE_DATA_OBJECT_TYPE); ApplicationDirectoryPortlet.BASE_DATA_OBJECT_TYPE);
type.setDescription("Displays a list of applications"); type.setDescription("Displays a list of portal workspace applications");
} }
private void loadContentDirectoryPortlet() { private void loadContentDirectoryPortlet() {
@ -214,6 +223,12 @@ public class Loader extends PackageLoader {
type.setDescription("Display a login form or user details"); type.setDescription("Display a login form or user details");
} }
private void loadMyWorkspacesPortlet() {
PortletType type = PortletType.createPortletType("My Workspaces",
PortletType.WIDE_PROFILE, MyWorkspacesPortlet.BASE_DATA_OBJECT_TYPE);
type.setDescription("MyWorkspaces: Display ????");
}
private void loadRSSFeedPortlet() { private void loadRSSFeedPortlet() {
PortletType type = PortletType.createPortletType("RSS Feed", PortletType type = PortletType.createPortletType("RSS Feed",
PortletType.WIDE_PROFILE, RSSFeedPortlet.BASE_DATA_OBJECT_TYPE); PortletType.WIDE_PROFILE, RSSFeedPortlet.BASE_DATA_OBJECT_TYPE);
@ -229,4 +244,19 @@ public class Loader extends PackageLoader {
TimeOfDayPortlet.BASE_DATA_OBJECT_TYPE); TimeOfDayPortlet.BASE_DATA_OBJECT_TYPE);
type.setDescription("Displays the current date and time"); type.setDescription("Displays the current date and time");
} }
private void loadWorkspaceNavigatorPortlet() {
PortletType type = PortletType.createPortletType(
"Workspace Navigator Portlet", PortletType.WIDE_PROFILE,
WorkspaceNavigatorPortlet.BASE_DATA_OBJECT_TYPE);
type.setDescription("Displays ??");
}
private void loadWorkspaceSummaryPortlet() {
PortletType type = PortletType.createPortletType(
"Workspace Summary Portlet", PortletType.WIDE_PROFILE,
WorkspaceSummaryPortlet.BASE_DATA_OBJECT_TYPE);
type.setDescription("Displays ???");
}
} }

View File

@ -0,0 +1,15 @@
com.arsdigita.portalworkspace.default_url.title=Portal URL
com.arsdigita.portalworkspace.default_url.purpose=The URL on which to mount the portal workspace
com.arsdigita.portalworkspace.default_url.example=/portal/
com.arsdigita.portalworkspace.default_url.format=[url]
com.arsdigita.portalworkspace.default_title.title=Portal Worksapce Title
com.arsdigita.portalworkspace.default_title.purpose=The title of the portal workspace
com.arsdigita.portalworkspace.default_title.example=Portal Homepage
com.arsdigita.portalworkspace.default_title.format=[string]
com.arsdigita.portalworkspace.default_is_public.title=Is the portal workspace public?
com.arsdigita.portalworkspace.default_is_public.purpose=Indicate whether or not the Portal Workspace is available to the public
com.arsdigita.portalworkspace.default_is_public.example=true
com.arsdigita.portalworkspace.default_is_public.format=true|false

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.SQLException; import java.sql.SQLException;
@ -49,7 +49,8 @@ public class PageLayout extends DomainObject {
public static final String FORMAT_FOUR_COLUMNS = "25%,25%,25%,25%"; public static final String FORMAT_FOUR_COLUMNS = "25%,25%,25%,25%";
public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.london.portal.PageLayout"; public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.portalworkspace.PageLayout";
public PageLayout() { public PageLayout() {
this(BASE_DATA_OBJECT_TYPE); this(BASE_DATA_OBJECT_TYPE);

View File

@ -0,0 +1,202 @@
/*
* Copyright (C) 2001 ArsDigita Corporation. All Rights Reserved.
*
* The contents of this file are subject to the ArsDigita Public
* License (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.arsdigita.com/ADPL.txt
*
* 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.
*
*/
package com.arsdigita.portalworkspace;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import com.arsdigita.bebop.PageState;
// import com.arsdigita.bebop.ParameterSingleSelectionModel;
import com.arsdigita.bebop.SimpleContainer;
// import com.arsdigita.bebop.SingleSelectionModel;
// import com.arsdigita.bebop.parameters.IntegerParameter;
// import com.arsdigita.bebop.portal.Portal;
import com.arsdigita.bebop.portal.PortalModel;
import com.arsdigita.bebop.portal.PortalModelBuilder;
import com.arsdigita.bebop.portal.PortletRenderer;
import com.arsdigita.portalworkspace.ui.PortalConstants;
import com.arsdigita.portalworkspace.ui.PortalSelectionModel;
import com.arsdigita.portalworkspace.ui.PortletSelectionModel;
// import com.arsdigita.portalworkspace.ui.PortletTypeSelectionModel;
import com.arsdigita.portalworkspace.ui.WorkspaceSelectionModel;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.SessionManager;
// import com.arsdigita.persistence.metadata.ObjectType;
// import com.arsdigita.portal.Portlet;
import com.arsdigita.portal.PortletType;
import com.arsdigita.portal.PortletTypeCollection;
import com.arsdigita.xml.Element;
/**
* Dynamically render the portlets for the current portal. If any
* portlets are stateful, retrieve a renderer from cache so that the page can
* manage the state of the portlet.
*
* ONLY VALID FOR BROWSE MODE, use com.arsdigita.portal.ui.PersistentPortal
* for edit mode!
*
* @author cgyg9330 &lt;chris.gilbert@westsussex.gov.uk&gt
* @version $Id: StatefulPersistentPortal.java 1271 2006-07-18 13:36:43Z cgyg9330 $
*/
public class StatefulPersistentPortal extends SimpleContainer {
private static final Logger s_log =
Logger.getLogger(StatefulPersistentPortal.class);
private WorkspaceSelectionModel m_workspace;
private PortletSelectionModel m_portlet;
private PortalModelBuilder m_portalModelBuilder;
private PortalSelectionModel m_portal;
/** maps portlet type to list of empty renderers */
private static Map m_stateful;
public StatefulPersistentPortal(PortalSelectionModel portal) {
this(portal, "portal");
}
/**
* Constructor is invoked when the page component hierarchy is recreated.
* This occurs
* a) when the first person goes to the homepage after a server restart
* b) when someone adds a stateful portlet to one of the homepage portals,
* which increases the maximum number of that portlet type that appears
* on any portal.
*
* @param portal the portalSelectionModel used by the Dynamic PortalModelBuilder
* @param name
*/
public StatefulPersistentPortal(
PortalSelectionModel portal,
String name) {
s_log.debug("IN constructor" + name );
m_portal = portal;
setTag("portal:portal");
setNamespace(PortalConstants.PORTAL_XML_NS);
// retrieve empty renderers for any stateful portlets and add them
// to the component hierarchy
PortletTypeCollection types = PortletType.retrieveAllPortletTypes();
m_stateful = new HashMap();
while (types.next()) {
PortletType type = types.getPortletType();
s_log.debug("checking portlet type " + type.getDescription());
String portletObjectType = type.getResourceObjectType();
StatefulPortletRendererFactory factory = StatefulPortlet
.getRendererFactory(
portletObjectType);
if (null != factory ) {
DataQuery findMaxInstances =
SessionManager.getSession().retrieveQuery(
"com.arsdigita.portalserver.MaxPortletInstances");
findMaxInstances.setParameter("portletType", type.getID());
int requiredRenderers = 0;
while (findMaxInstances.next()) {
requiredRenderers = ((Integer)findMaxInstances
.get("maxCount")).intValue();
}
s_log.debug("stateful portlet - I am going to instantiate " +
requiredRenderers + " renderers");
List renderers = new ArrayList();
for (int i = 0; i < requiredRenderers; i++) {
StatefulPortletRenderer renderer = factory.getRenderer();
renderers.add(renderer);
// and add it to the page
add(renderer);
s_log.debug("renderer added to page");
}
m_stateful.put(type.getResourceObjectType(), renderers);
}
}
m_portalModelBuilder =
new StatefulPersistentPortalModelBuilder(portal, m_stateful);
}
// copied almost directly from PersistentPortal
/**
*
* @param state
* @param parent
*/
@Override
public void generateXML(PageState state,
Element parent) {
Element content = generateParent(parent);
WorkspacePage page = m_portal.getSelectedPortal(state);
content.addAttribute("layout", page.getLayout().getFormat());
content.addAttribute("title", page.getTitle());
content.addAttribute("description", page.getDescription());
PortalModel pm = m_portalModelBuilder.buildModel(state);
Iterator portlets = pm.getPortletRenderers();
while (portlets.hasNext()) {
Object entry = portlets.next();
if (entry instanceof Object[]) {
PortletRenderer renderer = (PortletRenderer)((Object[])entry)[0];
BigDecimal portlet = (BigDecimal)((Object[])entry)[1];
// We want the root element created by the portlet
// but the crap generateXML signature doesn't let
// us get at it :-( And the bebop portlet isn't
// any more helpful either :-(
Element hack = new Element("hack");
renderer.generateXML(state, hack);
Iterator elements = hack.getChildren().iterator();
while (elements.hasNext()) {
Element child = (Element)elements.next();
content.addContent(child);
}
} else {
PortletRenderer renderer = (PortletRenderer)entry;
renderer.generateXML(state, content);
}
}
}
/**
* return the number of renderers for the given portlet type currently registered on the page
* @param portletType
* @return
*/
public static int getCurrentPortletRendererInstances (String portletType) {
int count = 0;
List renderers = (List)m_stateful.get(portletType);
if (renderers != null) {
count = renderers.size();
}
return count;
}
}

View File

@ -14,7 +14,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -24,40 +24,49 @@ import java.util.Map;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.arsdigita.bebop.Component; // import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.portal.PortalModel; import com.arsdigita.bebop.portal.PortalModel;
import com.arsdigita.bebop.portal.PortalModelBuilder; import com.arsdigita.bebop.portal.PortalModelBuilder;
import com.arsdigita.bebop.portal.PortletRenderer; import com.arsdigita.bebop.portal.PortletRenderer;
import com.arsdigita.london.portal.ui.PortalSelectionModel; import com.arsdigita.portalworkspace.ui.PortalSelectionModel;
import com.arsdigita.london.portal.ui.SimplePortlet; // import com.arsdigita.portalworkspace.ui.SimplePortlet;
import com.arsdigita.portal.Portal; import com.arsdigita.portal.Portal;
import com.arsdigita.portal.PortletCollection; import com.arsdigita.portal.PortletCollection;
import com.arsdigita.util.LockableImpl; import com.arsdigita.util.LockableImpl;
/** /**
* Portal Model Builder that should only be applied to portal in browse mode,
* as it does not allow for editing.
* Portal in edit mode should have a
* com.arsdigita.london.portal.ui.PersistentPortalModelBuilder.
*
* For stateless portlets, this builder creates a renderer with a reference to
* its portlet data object. For stateful portlets the builder retrieves one
* of the empty renderers registered to the page and puts the portlet data
* object in a requestlocal.
*
* @author cgyg9330 * @author cgyg9330
*
* portal model builder that should only be applied to portal in browse mode, as it does not allow for editing.
* portal in edit mode should have a com.arsdigita.london.portal.ui.PersistentPortalModelBuilder.
*
* For stateless portlets, this builder creates a renderer with a reference to its portlet data object. For stateful portlets
* the builder retrieves one of the empty renderers registered to the page and puts the portlet data object in
* a requestlocal.
*/ */
public class StatefulPersistentPortalModelBuilder public class StatefulPersistentPortalModelBuilder
extends LockableImpl extends LockableImpl
implements PortalModelBuilder { implements PortalModelBuilder {
private Logger s_log = Logger.getLogger(StatefulPersistentPortalModelBuilder.class); /** Logging instace for debugging purpose. */
private Logger s_log =
Logger.getLogger(StatefulPersistentPortalModelBuilder.class);
/** /** Hashmap that maps portlet types to a list of empty renderers that
* hashmap that maps portlet types to a list of empty renderers that have been registered on the page have been registered on the page */
*/
private Map statefulCollections; private Map statefulCollections;
private PortalSelectionModel portalModel; private PortalSelectionModel portalModel;
public StatefulPersistentPortalModelBuilder( /**
* Constructor
* @param portal
* @param stateful
*/
public StatefulPersistentPortalModelBuilder(
PortalSelectionModel portal, PortalSelectionModel portal,
Map stateful) { Map stateful) {
this.portalModel = portal; this.portalModel = portal;
@ -66,16 +75,17 @@ public class StatefulPersistentPortalModelBuilder
} }
public PortalModel buildModel(PageState state) { public PortalModel buildModel(PageState state) {
// aim of this method is to get hold of a list of renderers for this particular portal // aim of this method is to get hold of a list of renderers for
// and use them to make a PortalModel // this particular portal and use them to make a PortalModel
s_log.debug("START - buildModel"); s_log.debug("START - buildModel");
List portletRenderers = new ArrayList(); List portletRenderers = new ArrayList();
HashMap statefulIterators = new HashMap(); HashMap statefulIterators = new HashMap();
// get iterators for all the renderer lists (this means that each
// get iterators for all the renderer lists (this means that each instance of the portlet has it's own renderer) // instance of the portlet has it's own renderer)
// getting iterators in the buildmodel method means that each time model is built, we start at the beginning of the list // getting iterators in the buildmodel method means that each time
// model is built, we start at the beginning of the list
Iterator it = statefulCollections.entrySet().iterator(); Iterator it = statefulCollections.entrySet().iterator();
while (it.hasNext()) { while (it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next(); Map.Entry entry = (Map.Entry)it.next();
@ -87,10 +97,13 @@ public class StatefulPersistentPortalModelBuilder
PortletCollection portlets = portal.getPortlets(); PortletCollection portlets = portal.getPortlets();
while (portlets.next()) { while (portlets.next()) {
com.arsdigita.portal.Portlet portlet = portlets.getPortlet(); com.arsdigita.portal.Portlet portlet = portlets.getPortlet();
s_log.debug("portlet " + portlet.getPortletType().getDescription() + " " + portlet.getTitle()); s_log.debug("portlet " + portlet.getPortletType().getDescription() +
" " + portlet.getTitle());
if (portlet instanceof StatefulPortlet) { if (portlet instanceof StatefulPortlet) {
StatefulPortletRenderer statefulRenderer = (StatefulPortletRenderer)((Iterator) statefulIterators.get( StatefulPortletRenderer statefulRenderer =
portlet.getPortletType().getResourceObjectType())).next(); (StatefulPortletRenderer)((Iterator) statefulIterators
.get(portlet.getPortletType()
.getResourceObjectType())).next();
statefulRenderer.setPortlet(portlet, state); statefulRenderer.setPortlet(portlet, state);
portletRenderers.add(statefulRenderer); portletRenderers.add(statefulRenderer);

View File

@ -14,31 +14,31 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.portal.AbstractPortletRenderer; import com.arsdigita.bebop.portal.AbstractPortletRenderer;
import com.arsdigita.london.portal.ui.PortalConstants; import com.arsdigita.portalworkspace.ui.PortalConstants;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
/** /**
* @author cgyg9330 &lt;chris.gilbert@westsussex.gov.uk&gt * In order to register stateful components with the page, stateful portlets
* @version $Id: StatefulPortlet.java 1271 2006-07-18 13:36:43Z cgyg9330 $ * must have the ability to supply renderers that are not tied to any particular
* portlet data object.
* *
* In order to register stateful components with the page, stateful portlets must have the ability * This abstract class provides a means of registering a
* to supply renderers that are not tied to any particular portlet data object. * StatefulPortletRendererFactory that is used when the page is being built,
* and provides a final implementation of doGetPortletRenderer that is used
* by a portal page in edit mode.
* *
* This abstract class provides a means of registering a StatefulPortletRendererFactory that is used * The framework allows the empty renderers that are registered to a page to be
* when the page is being built, and provides a final implementation of doGetPortletRenderer that * populated via RequestLocals with actual Portlet data objects ready for
* is used by a portal page in edit mode. * rendering
*
* The framework allows the empty renderers that are registered to a page to be populated via
* RequestLocals with actual Portlet data objects ready for rendering
* *
* To create a stateful portlet:- * To create a stateful portlet:-
* *
@ -48,7 +48,8 @@ import com.arsdigita.xml.Element;
* *
* <pre> * <pre>
* *
* public class StatefulExamplePortletRendererFactory implements StatefulPortletRendererFactory { * public class StatefulExamplePortletRendererFactory
* implements StatefulPortletRendererFactory {
* *
* public StatefulPortletRenderer getRenderer() { * public StatefulPortletRenderer getRenderer() {
* return new StatefulExamplePortletRenderer(); * return new StatefulExamplePortletRenderer();
@ -63,12 +64,13 @@ import com.arsdigita.xml.Element;
* public void init(DomainInitEvent e) { * public void init(DomainInitEvent e) {
* super.init(e); * super.init(e);
* *
* StatefulPortlet.registerRendererFactory(StatefulExamplePortlet.BASE_DATA_OBJECT_TYPE, new StatefulExamplePortletRendererFactory()); * StatefulPortlet.registerRendererFactory(
* StatefulExamplePortlet.BASE_DATA_OBJECT_TYPE,
* new StatefulExamplePortletRendererFactory());
* *
* *
* * ensure that your portlet class extends StatefulPortlet, but apart from that
* * treat is as any other domain object
* ensure that your portlet class extends StatefulPortlet, but apart from that treat is as any other domain object
* <pre> * <pre>
* *
* *
@ -110,7 +112,8 @@ import com.arsdigita.xml.Element;
* label1.addPrintListener (new PrintListener() { * label1.addPrintListener (new PrintListener() {
* public void prepare(PrintEvent event) { * public void prepare(PrintEvent event) {
* PageState state = event.getState(); * PageState state = event.getState();
* StatefulExamplePortlet thisPortlet = (StatefulExamplePortlet)portlet.get(state); * StatefulExamplePortlet thisPortlet =
* (StatefulExamplePortlet)portlet.get(state);
* Label label = event.getTarget(); * Label label = event.getTarget();
* label.setLabel(thisPortlet.getLabel1()); * label.setLabel(thisPortlet.getLabel1());
* } * }
@ -122,7 +125,8 @@ import com.arsdigita.xml.Element;
* label2.addPrintListener (new PrintListener() { * label2.addPrintListener (new PrintListener() {
* public void prepare(PrintEvent event) { * public void prepare(PrintEvent event) {
* PageState state = event.getState(); * PageState state = event.getState();
* StatefulExamplePortlet thisPortlet = (StatefulExamplePortlet)portlet.get(state); * StatefulExamplePortlet thisPortlet =
* (StatefulExamplePortlet)portlet.get(state);
* Label label = event.getTarget(); * Label label = event.getTarget();
* label.setLabel(thisPortlet.getLabel2()); * label.setLabel(thisPortlet.getLabel2());
* } * }
@ -159,7 +163,8 @@ import com.arsdigita.xml.Element;
*</pre> *</pre>
* *
* *
* * @author cgyg9330 &lt;chris.gilbert@westsussex.gov.uk&gt
* @version $Id: StatefulPortlet.java 1271 2006-07-18 13:36:43Z cgyg9330 $
*/ */
public abstract class StatefulPortlet extends Portlet { public abstract class StatefulPortlet extends Portlet {
@ -169,11 +174,14 @@ public abstract class StatefulPortlet extends Portlet {
super(dataObject); super(dataObject);
} }
public static void registerRendererFactory(String portletType, StatefulPortletRendererFactory factory) { public static void registerRendererFactory(
String portletType,
StatefulPortletRendererFactory factory) {
rendererFactories.put(portletType, factory); rendererFactories.put(portletType, factory);
} }
public static StatefulPortletRendererFactory getRendererFactory(String portletType) { public static StatefulPortletRendererFactory getRendererFactory(
String portletType) {
return (StatefulPortletRendererFactory)rendererFactories.get(portletType); return (StatefulPortletRendererFactory)rendererFactories.get(portletType);
} }

View File

@ -14,7 +14,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -29,11 +29,13 @@ import com.arsdigita.xml.Element;
* @author chris gilbert * @author chris gilbert
* *
* Renderer that stores reference to portlet data object in a request local. * Renderer that stores reference to portlet data object in a request local.
* When the page is built, enough StatefulPortletRenderers are added to the page as might * When the page is built, enough StatefulPortletRenderers are added to the
* be needed by any one portal. Hence all portals share the same stateful portlets and so * page as might be needed by any one portal. Hence all portals share the same
* portlet data object cannot be stored as an instane variable. * stateful portlets and so portlet data object cannot be stored as an instane
* variable.
* *
* StatefulPortletModelBuilder sets value of requestlocal when the portlet model is built. * StatefulPortletModelBuilder sets value of requestlocal when the portlet
* model is built.
*/ */
public abstract class StatefulPortletRenderer extends AbstractPortletRenderer { public abstract class StatefulPortletRenderer extends AbstractPortletRenderer {
@ -54,11 +56,12 @@ public abstract class StatefulPortletRenderer extends AbstractPortletRenderer {
} }
/** /**
* implementation of abstract method that does nothing. Any components that have been added to the container * Implementation of abstract method that does nothing. Any components
* will be rendered by AbstractPortletRenderer within the bebop:portlet element * that have been added to the container will be rendered by
* AbstractPortletRenderer within the bebop:portlet element
* *
* if you want to include other information within bebop:portlet, override this method * If you want to include other information within bebop:portlet, override
* otherwise leave it * this method otherwise leave it.
*/ */
protected void generateBodyXML( protected void generateBodyXML(
PageState pageState, PageState pageState,

View File

@ -4,17 +4,16 @@
* To change the template for this generated file go to * To change the template for this generated file go to
* Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
/** /**
* @author cgyg9330 *Implementers of Stateful Portlets must implement a factory to retrieve the
* correct renderer.
* *
*Implementers of Stateful Portlets must implement a factory to retrieve the correct renderer. * @author cgyg9330
*/ */
public interface StatefulPortletRendererFactory { public interface StatefulPortletRendererFactory {
public StatefulPortletRenderer getRenderer();
public StatefulPortletRenderer getRenderer();
} }

View File

@ -12,9 +12,7 @@
* rights and limitations under the License. * rights and limitations under the License.
* *
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import org.apache.log4j.Logger;
import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.domain.DomainObjectFactory;
@ -32,8 +30,8 @@ import com.arsdigita.kernel.permissions.PermissionDescriptor;
import com.arsdigita.kernel.permissions.PermissionManager; import com.arsdigita.kernel.permissions.PermissionManager;
import com.arsdigita.kernel.permissions.PermissionService; import com.arsdigita.kernel.permissions.PermissionService;
import com.arsdigita.kernel.permissions.PrivilegeDescriptor; import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
import com.arsdigita.london.portal.ui.PersonalPortalPage; import com.arsdigita.portalworkspace.ui.PersonalPortalPage;
import com.arsdigita.london.portal.ui.WorkspaceTheme; import com.arsdigita.portalworkspace.ui.WorkspaceTheme;
import com.arsdigita.persistence.DataAssociation; import com.arsdigita.persistence.DataAssociation;
import com.arsdigita.persistence.DataAssociationCursor; import com.arsdigita.persistence.DataAssociationCursor;
import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataCollection;
@ -52,6 +50,9 @@ import com.arsdigita.web.Web;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import org.apache.log4j.Logger;
/** /**
* Workspace domain class. * Workspace domain class.
* A workspace represents an area containing 0...n portals each arranged * A workspace represents an area containing 0...n portals each arranged
@ -69,7 +70,7 @@ public class Workspace extends Application {
return s_config; return s_config;
} }
public static final String BASE_DATA_OBJECT_TYPE = public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.london.portal.Workspace"; "com.arsdigita.portalworkspace.Workspace";
public static final String PARTY = "party"; public static final String PARTY = "party";
public static final String PARTY_ID = PARTY + "." + ACSObject.ID; public static final String PARTY_ID = PARTY + "." + ACSObject.ID;
public static final String DEFAULT_LAYOUT = "defaultLayout"; public static final String DEFAULT_LAYOUT = "defaultLayout";
@ -99,8 +100,9 @@ public class Workspace extends Application {
} }
/* /*
* public String getContextPath() { return "ccm-ldn-portal"; } * public String getContextPath() { return "ccm-portalworkspace"; }
*/ */
/** /**
* *
* @return ServletPath (constant) probably should be synchron with web.xml * @return ServletPath (constant) probably should be synchron with web.xml
@ -109,7 +111,7 @@ public class Workspace extends Application {
@Override @Override
public String getServletPath() { public String getServletPath() {
// return "/files"; // return "/files";
return "/ccm-ldn-portal/files"; return "/ccm-portalworkspace/files";
} }
/** /**
@ -466,9 +468,9 @@ public class Workspace extends Application {
SessionManager.getSession().retrieve( SessionManager.getSession().retrieve(
"com.arsdigita.kernel.User"); "com.arsdigita.kernel.User");
// .retrieve("com.arsdigita.kernel.Party"); // .retrieve("com.arsdigita.kernel.Party");
Filter f = Filter f = dc.addNotInSubqueryFilter(
dc.addNotInSubqueryFilter("id", "id",
"com.arsdigita.london.portal.WorkspaceParticipantIDs"); "com.arsdigita.london.portal.WorkspaceParticipantIDs");
f.set("workspaceID", getID()); f.set("workspaceID", getID());
return new PartyCollection(dc); return new PartyCollection(dc);
} }
@ -521,8 +523,9 @@ public class Workspace extends Application {
SessionManager.getSession().retrieve( SessionManager.getSession().retrieve(
"com.arsdigita.kernel.User"); "com.arsdigita.kernel.User");
Filter f = Filter f =
dc.addInSubqueryFilter("id", dc.addInSubqueryFilter(
"com.arsdigita.london.portal.WorkspaceParticipantsWithInitial"); "id",
"com.arsdigita.portalworkspace.WorkspaceParticipantsWithInitial");
f.set("workspaceID", getID()); f.set("workspaceID", getID());
f.set("nameInitial", initial); f.set("nameInitial", initial);
@ -750,7 +753,8 @@ public class Workspace extends Application {
personalWorkspaces.addEqualsFilter("owner", owner.getID()); personalWorkspaces.addEqualsFilter("owner", owner.getID());
if (personalWorkspaces.next()) { if (personalWorkspaces.next()) {
Workspace workspace = (Workspace) Application.retrieveApplication(personalWorkspaces. Workspace workspace = (Workspace) Application
.retrieveApplication(personalWorkspaces.
getDataObject()); getDataObject());
if (personalWorkspaces.next()) { if (personalWorkspaces.next()) {
s_log.error("more than one personal workspaces for this user!!"); s_log.error("more than one personal workspaces for this user!!");

View File

@ -13,7 +13,7 @@
* *
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import com.arsdigita.domain.DomainCollection; import com.arsdigita.domain.DomainCollection;
import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataCollection;

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import com.arsdigita.kernel.permissions.PrivilegeDescriptor; import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.runtime.AbstractConfig;
@ -61,52 +61,52 @@ public class WorkspaceConfig extends AbstractConfig {
/** File with rules for configuring information in generated XML */ /** File with rules for configuring information in generated XML */
private final Parameter m_adapters = private final Parameter m_adapters =
new ResourceParameter( new ResourceParameter(
"com.arsdigita.london.portal.traversal_adapters", "com.arsdigita.portalworkspace.traversal_adapters",
Parameter.REQUIRED, Parameter.REQUIRED,
"/WEB-INF/resources/portal-adapters.xml"); "/WEB-INF/resources/portalworkspace-adapters.xml");
/** Default column layout for workspace portals */ /** Default column layout for workspace portals */
private final Parameter m_defaultLayout = private final Parameter m_defaultLayout =
new StringParameter( new StringParameter(
"com.arsdigita.london.portal.default_layout", "com.arsdigita.portalworkspace.default_layout",
Parameter.REQUIRED, PageLayout.FORMAT_THREE_COLUMNS); Parameter.REQUIRED, PageLayout.FORMAT_THREE_COLUMNS);
/** Whether non-admin users should have their own custom workspaces */ /** Whether non-admin users should have their own custom workspaces */
private final Parameter m_createUserWorkspaces = private final Parameter m_createUserWorkspaces =
new BooleanParameter( new BooleanParameter(
"com.arsdigita.portal.create_user_workspaces", "com.arsdigita.portalworkspace.create_user_workspaces",
Parameter.REQUIRED, Boolean.TRUE); Parameter.REQUIRED, Boolean.TRUE);
/** Types not to be included in the drop down list of portlets to add to a page*/ /** Types not to be included in the drop down list of portlets to add to a page*/
private final Parameter m_excludedPortletTypes = private final Parameter m_excludedPortletTypes =
new StringArrayParameter( new StringArrayParameter(
"com.arsdigita.london.portal.excluded_portlet_types", "com.arsdigita.portalworkspace.excluded_portlet_types",
Parameter.OPTIONAL, new String[0]); Parameter.OPTIONAL, new String[0]);
/** Types only available to administrator of homepage, or subsite frontpage*/ /** Types only available to administrator of homepage, or subsite frontpage*/
private final Parameter m_adminPortletTypes = private final Parameter m_adminPortletTypes =
new StringArrayParameter( new StringArrayParameter(
"com.arsdigita.london.portal.admin_only_portlet_types", "com.arsdigita.portalworkspace.admin_only_portlet_types",
Parameter.OPTIONAL, new String[0]); Parameter.OPTIONAL, new String[0]);
/** Whether to use editor specified by waf.bebop.dhtml_editor for editing /** Whether to use editor specified by waf.bebop.dhtml_editor for editing
freeform html portlet*/ freeform html portlet*/
private final Parameter m_htmlPortletWysiwygEditor = private final Parameter m_htmlPortletWysiwygEditor =
new BooleanParameter( new BooleanParameter(
"com.arsdigita.london.portal.portlet.freeform_html_editor", "com.arsdigita.portalworkspace.portlet.freeform_html_editor",
Parameter.REQUIRED, Boolean.FALSE); Parameter.REQUIRED, Boolean.FALSE);
/** Which privilege ("read" or "edit") is granted to the workspace party. */ /** Which privilege ("read" or "edit") is granted to the workspace party. */
private final Parameter m_workspacePartyPrivilege = private final Parameter m_workspacePartyPrivilege =
new StringParameter( new StringParameter(
"com.arsdigita.london.portal.workspacePartyPrivilege", "com.arsdigita.portalworkspace.workspacePartyPrivilege",
Parameter.OPTIONAL, "read"); Parameter.OPTIONAL, "read");
/** Whether READ permissions will be checked when viewing workspaces. /** Whether READ permissions will be checked when viewing workspaces.
By default we don't, which is odd. */ By default we don't, which is odd. */
private final Parameter m_checkWorkspaceReadPermissions = private final Parameter m_checkWorkspaceReadPermissions =
new BooleanParameter( new BooleanParameter(
"com.arsdigita.london.portal.checkWorkspaceReadPermissions", "com.arsdigita.portalworkspace.checkWorkspaceReadPermissions",
Parameter.OPTIONAL, Boolean.FALSE); Parameter.OPTIONAL, Boolean.FALSE);
public WorkspaceConfig() { public WorkspaceConfig() {

View File

@ -0,0 +1,39 @@
com.arsdigita.portalworkspace.traversal_adapters.title=XML renderer rules
com.arsdigita.portalworkspace.traversal_adapters.purpose=Name of File with rules for configuring information in generated XML
com.arsdigita.portalworkspace.traversal_adapters.format=[string]
com.arsdigita.portalworkspace.traversal_adapters.example=/WEB-INF/resources/portalworkspace-adapters.xml
com.arsdigita.portalworkspace.default_layout.title=Default workspace layout
com.arsdigita.portalworkspace.default_layout.purpose=Default column layout for workspace portals
com.arsdigita.portalworkspace.default_layout.format=[layout]
com.arsdigita.portalworkspace.default_layout.example=25%,25%,25%,25%
com.arsdigita.portalworkspace.create_user_workspaces.title=Create user workspaces
com.arsdigita.portalworkspace.create_user_workspaces.purpose=Whether non-admin users should have their own custom workspaces
com.arsdigita.portalworkspace.create_user_workspaces.format=[boolean]
com.arsdigita.portalworkspace.create_user_workspaces.example=false
com.arsdigita.portalworkspace.excluded_portlet_types.title=Portlet types not available on this site
com.arsdigita.portalworkspace.excluded_portlet_types.purpose=Prevent these type appearing in the drop down list of portlets to add to the page
com.arsdigita.portalworkspace.excluded_portlet_types.format=[string,string,string]
com.arsdigita.portalworkspace.excluded_portlet_types.example=com.arsdigita.london.portal.portlet.ApplicationDirectoryPortlet,com.arsdigita.london.portal.portlet.TimeOfDayPortlet
com.arsdigita.portalworkspace.admin_only_portlet_types.title=Portlet types only available to page admin
com.arsdigita.portalworkspace.admin_only_portlet_types.purpose=Only available to administrator of homepage, or subsite frontpage
com.arsdigita.portalworkspace.admin_only_portlet_types.format=[string,string,string]
com.arsdigita.portalworkspace.admin_only_portlet_types.example=com.arsdigita.london.portal.portlet.ApplicationDirectoryPortlet,com.arsdigita.london.portal.portlet.TimeOfDayPortlet
com.arsdigita.portalworkspace.portlet.freeform_html_editor.title=use wysiwyg editor for freeform html portlet
com.arsdigita.portalworkspace.portlet.freeform_html_editor.purpose=If true, use editor specified by waf.bebop.dhtml_editor when user edits freeform html portlet
com.arsdigita.portalworkspace.portlet.freeform_html_editor.format=[boolean]
com.arsdigita.portalworkspace.portal.portlet.freeform_html_editor.example=false
com.arsdigita.portalworkspace.workspacePartyPrivilege.title=Privilege granted to the workspace party
com.arsdigita.portalworkspace.workspacePartyPrivilege.purpose=Specify which privilege is granted to the workspace party. Should be "read" or "edit".
com.arsdigita.portalworkspace.workspacePartyPrivilege.format=[string]
com.arsdigita.portalworkspace.workspacePartyPrivilege.example=edit
com.arsdigita.portalworkspace.checkWorkspaceReadPermissions.title=Check READ permissions when viewing Workspaces
com.arsdigita.portalworkspace.checkWorkspaceReadPermissions.purpose=Specify whether we should check READ permissions when viewing workspaces. By default we don't, which is odd.
com.arsdigita.portalworkspace.checkWorkspaceReadPermissions.format=[boolean]
com.arsdigita.portalworkspace.checkWorkspaceReadPermissions.example=false

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.kernel.Resource; import com.arsdigita.kernel.Resource;
@ -24,6 +24,10 @@ import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.portal.Portal; import com.arsdigita.portal.Portal;
/**
*
*
*/
public class WorkspacePage extends Portal { public class WorkspacePage extends Portal {
public static final String SORT_KEY = "sortKey"; public static final String SORT_KEY = "sortKey";
@ -33,7 +37,7 @@ public class WorkspacePage extends Portal {
public static final String WORKSPACE = "workspace"; public static final String WORKSPACE = "workspace";
public static final String BASE_DATA_OBJECT_TYPE = public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.london.portal.WorkspacePage"; "com.arsdigita.portalworkspace.WorkspacePage";
public WorkspacePage() { public WorkspacePage() {
this(BASE_DATA_OBJECT_TYPE); this(BASE_DATA_OBJECT_TYPE);

View File

@ -13,7 +13,7 @@
* *
*/ */
package com.arsdigita.london.portal; package com.arsdigita.portalworkspace;
import com.arsdigita.persistence.DataAssociationCursor; import com.arsdigita.persistence.DataAssociationCursor;
import com.arsdigita.portal.PortalCollection; import com.arsdigita.portal.PortalCollection;

View File

@ -13,10 +13,10 @@
* *
*/ */
package com.arsdigita.london.portal.portlet; package com.arsdigita.portalworkspace.portlet;
import com.arsdigita.bebop.portal.AbstractPortletRenderer; import com.arsdigita.bebop.portal.AbstractPortletRenderer;
import com.arsdigita.london.portal.ui.portlet.ApplicationDirectoryPortletRenderer; import com.arsdigita.portalworkspace.ui.portlet.ApplicationDirectoryPortletRenderer;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;
@ -28,7 +28,7 @@ import com.arsdigita.portal.Portlet;
public class ApplicationDirectoryPortlet extends Portlet { public class ApplicationDirectoryPortlet extends Portlet {
public static final String BASE_DATA_OBJECT_TYPE = public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.london.portal.portlet.ApplicationDirectoryPortlet"; "com.arsdigita.portalworkspace.portlet.ApplicationDirectoryPortlet";
public static final String CONTENT = "content"; public static final String CONTENT = "content";
@ -36,10 +36,12 @@ public class ApplicationDirectoryPortlet extends Portlet {
super(dataObject); super(dataObject);
} }
@Override
protected String getBaseDataObjectType() { protected String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE; return BASE_DATA_OBJECT_TYPE;
} }
@Override
protected AbstractPortletRenderer doGetPortletRenderer() { protected AbstractPortletRenderer doGetPortletRenderer() {
return new ApplicationDirectoryPortletRenderer(this); return new ApplicationDirectoryPortletRenderer(this);
} }

View File

@ -16,12 +16,12 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal.portlet; package com.arsdigita.portalworkspace.portlet;
import com.arsdigita.bebop.portal.AbstractPortletRenderer; import com.arsdigita.bebop.portal.AbstractPortletRenderer;
import com.arsdigita.categorization.Category; import com.arsdigita.categorization.Category;
import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.london.portal.ui.portlet.ContentDirectoryPortletRenderer; import com.arsdigita.portalworkspace.ui.portlet.ContentDirectoryPortletRenderer;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;
@ -35,7 +35,7 @@ import com.arsdigita.portal.Portlet;
public class ContentDirectoryPortlet extends Portlet { public class ContentDirectoryPortlet extends Portlet {
public static final String BASE_DATA_OBJECT_TYPE = public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.london.portal.portlet.ContentDirectoryPortlet"; "com.arsdigita.portalworkspace.portlet.ContentDirectoryPortlet";
public static final String ROOT = "root"; public static final String ROOT = "root";
@ -51,10 +51,12 @@ public class ContentDirectoryPortlet extends Portlet {
super(dataObject); super(dataObject);
} }
@Override
protected String getBaseDataObjectType() { protected String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE; return BASE_DATA_OBJECT_TYPE;
} }
@Override
protected AbstractPortletRenderer doGetPortletRenderer() { protected AbstractPortletRenderer doGetPortletRenderer() {
return new ContentDirectoryPortletRenderer(this); return new ContentDirectoryPortletRenderer(this);
} }

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal.portlet; package com.arsdigita.portalworkspace.portlet;
import java.io.IOException; import java.io.IOException;
import java.io.StringBufferInputStream; import java.io.StringBufferInputStream;
@ -24,7 +24,7 @@ import java.util.Map;
import java.util.Properties; import java.util.Properties;
import com.arsdigita.bebop.portal.AbstractPortletRenderer; import com.arsdigita.bebop.portal.AbstractPortletRenderer;
import com.arsdigita.london.portal.ui.portlet.FlashPortletRenderer; import com.arsdigita.portalworkspace.ui.portlet.FlashPortletRenderer;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;
@ -37,7 +37,7 @@ import com.arsdigita.portal.Portlet;
public class FlashPortlet extends Portlet public class FlashPortlet extends Portlet
{ {
public static final String BASE_DATA_OBJECT_TYPE = public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.london.portal.portlet.FlashPortlet"; "com.arsdigita.portalworkspace.portlet.FlashPortlet";
public static final String BACKGROUND_COLOUR = "backgroundColour"; public static final String BACKGROUND_COLOUR = "backgroundColour";
@ -66,11 +66,13 @@ public class FlashPortlet extends Portlet
super(dataObject); super(dataObject);
} }
@Override
protected String getBaseDataObjectType() protected String getBaseDataObjectType()
{ {
return BASE_DATA_OBJECT_TYPE; return BASE_DATA_OBJECT_TYPE;
} }
@Override
protected AbstractPortletRenderer doGetPortletRenderer() protected AbstractPortletRenderer doGetPortletRenderer()
{ {
return new FlashPortletRenderer(this); return new FlashPortletRenderer(this);

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.london.portal.portlet; package com.arsdigita.portalworkspace.portlet;
import com.arsdigita.bebop.RequestLocal; import com.arsdigita.bebop.RequestLocal;
import com.arsdigita.domain.DomainObject; import com.arsdigita.domain.DomainObject;
@ -25,7 +25,7 @@ import com.arsdigita.kernel.ACSObjectInstantiator;
import com.arsdigita.kernel.ResourceType; import com.arsdigita.kernel.ResourceType;
import com.arsdigita.kernel.ResourceTypeConfig; import com.arsdigita.kernel.ResourceTypeConfig;
import com.arsdigita.kernel.ui.ResourceConfigFormSection; import com.arsdigita.kernel.ui.ResourceConfigFormSection;
import com.arsdigita.london.portal.ui.portlet.FlashPortletEditor; import com.arsdigita.portalworkspace.ui.portlet.FlashPortletEditor;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.portal.PortletType; import com.arsdigita.portal.PortletType;
@ -56,6 +56,7 @@ public final class FlashPortletInitializer
DomainObjectFactory.registerInstantiator( DomainObjectFactory.registerInstantiator(
FlashPortlet.BASE_DATA_OBJECT_TYPE, new ACSObjectInstantiator() FlashPortlet.BASE_DATA_OBJECT_TYPE, new ACSObjectInstantiator()
{ {
@Override
public DomainObject doNewInstance(DataObject dataObject) public DomainObject doNewInstance(DataObject dataObject)
{ {
return new FlashPortlet(dataObject); return new FlashPortlet(dataObject);
@ -64,6 +65,7 @@ public final class FlashPortletInitializer
new ResourceTypeConfig(FlashPortlet.BASE_DATA_OBJECT_TYPE) new ResourceTypeConfig(FlashPortlet.BASE_DATA_OBJECT_TYPE)
{ {
@Override
public ResourceConfigFormSection getCreateFormSection( public ResourceConfigFormSection getCreateFormSection(
final ResourceType resType, final ResourceType resType,
final RequestLocal parentAppRL) final RequestLocal parentAppRL)
@ -71,6 +73,7 @@ public final class FlashPortletInitializer
return new FlashPortletEditor(resType, parentAppRL); return new FlashPortletEditor(resType, parentAppRL);
} }
@Override
public ResourceConfigFormSection getModifyFormSection( public ResourceConfigFormSection getModifyFormSection(
final RequestLocal application) final RequestLocal application)
{ {

View File

@ -13,10 +13,10 @@
* *
*/ */
package com.arsdigita.london.portal.portlet; package com.arsdigita.portalworkspace.portlet;
import com.arsdigita.bebop.portal.AbstractPortletRenderer; import com.arsdigita.bebop.portal.AbstractPortletRenderer;
import com.arsdigita.london.portal.ui.portlet.FreeformHTMLPortletRenderer; import com.arsdigita.portalworkspace.ui.portlet.FreeformHTMLPortletRenderer;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;
@ -28,7 +28,7 @@ import com.arsdigita.portal.Portlet;
public class FreeformHTMLPortlet extends Portlet { public class FreeformHTMLPortlet extends Portlet {
public static final String BASE_DATA_OBJECT_TYPE = public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.london.portal.portlet.FreeformHTMLPortlet"; "com.arsdigita.portalworkspace.portlet.FreeformHTMLPortlet";
public static final String CONTENT = "content"; public static final String CONTENT = "content";
@ -36,6 +36,7 @@ public class FreeformHTMLPortlet extends Portlet {
super(dataObject); super(dataObject);
} }
@Override
protected String getBaseDataObjectType() { protected String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE; return BASE_DATA_OBJECT_TYPE;
} }
@ -48,6 +49,7 @@ public class FreeformHTMLPortlet extends Portlet {
set(CONTENT, text); set(CONTENT, text);
} }
@Override
protected AbstractPortletRenderer doGetPortletRenderer() { protected AbstractPortletRenderer doGetPortletRenderer() {
return new FreeformHTMLPortletRenderer(this); return new FreeformHTMLPortletRenderer(this);
} }

View File

@ -13,10 +13,10 @@
* *
*/ */
package com.arsdigita.london.portal.portlet; package com.arsdigita.portalworkspace.portlet;
import com.arsdigita.bebop.portal.AbstractPortletRenderer; import com.arsdigita.bebop.portal.AbstractPortletRenderer;
import com.arsdigita.london.portal.ui.portlet.LoginPortletRenderer; import com.arsdigita.portalworkspace.ui.portlet.LoginPortletRenderer;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.portal.Portlet; import com.arsdigita.portal.Portlet;
@ -27,7 +27,7 @@ import com.arsdigita.portal.Portlet;
public class LoginPortlet extends Portlet { public class LoginPortlet extends Portlet {
public static final String BASE_DATA_OBJECT_TYPE = public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.london.portal.portlet.LoginPortlet"; "com.arsdigita.portalworkspace.portlet.LoginPortlet";
/** /**
@ -44,6 +44,7 @@ public class LoginPortlet extends Portlet {
* *
* @return String BaseDataObjectType * @return String BaseDataObjectType
*/ */
@Override
protected String getBaseDataObjectType() { protected String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE; return BASE_DATA_OBJECT_TYPE;
} }
@ -52,6 +53,7 @@ public class LoginPortlet extends Portlet {
* *
* @return * @return
*/ */
@Override
protected AbstractPortletRenderer doGetPortletRenderer() { protected AbstractPortletRenderer doGetPortletRenderer() {
return new LoginPortletRenderer(this); return new LoginPortletRenderer(this);
} }

Some files were not shown because too many files have changed in this diff Show More