Update Forum ergänzt, verschiedene Kleinigkeiten.
git-svn-id: https://svn.libreccm.org/ccm/trunk@806 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
1da79e6098
commit
d15c09b82d
|
|
@ -43,11 +43,10 @@ import java.util.Iterator;
|
||||||
* Represents a group.
|
* Represents a group.
|
||||||
*
|
*
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
|
* @version $Id: Group.java 287 2005-02-22 00:29:02Z sskracic $
|
||||||
**/
|
**/
|
||||||
public class Group extends Party {
|
public class Group extends Party {
|
||||||
|
|
||||||
public static final String versionId = "$Id: Group.java 287 2005-02-22 00:29:02Z sskracic $ by $Author: sskracic $, $DateTime: 2004/08/16 18:10:38 $";
|
|
||||||
|
|
||||||
private Collection m_roles = new ArrayList();
|
private Collection m_roles = new ArrayList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ public class ResourceType extends DomainObject {
|
||||||
public static final String BASE_DATA_OBJECT_TYPE =
|
public static final String BASE_DATA_OBJECT_TYPE =
|
||||||
"com.arsdigita.kernel.ResourceType";
|
"com.arsdigita.kernel.ResourceType";
|
||||||
|
|
||||||
|
@Override
|
||||||
protected String getBaseDataObjectType() {
|
protected String getBaseDataObjectType() {
|
||||||
return BASE_DATA_OBJECT_TYPE;
|
return BASE_DATA_OBJECT_TYPE;
|
||||||
}
|
}
|
||||||
|
|
@ -336,13 +337,13 @@ public class ResourceType extends DomainObject {
|
||||||
|
|
||||||
static final Map s_configMap = Collections.synchronizedMap(new HashMap());
|
static final Map s_configMap = Collections.synchronizedMap(new HashMap());
|
||||||
|
|
||||||
public static final void registerResourceTypeConfig
|
public static void registerResourceTypeConfig
|
||||||
(final String resourceObjectType,
|
(final String resourceObjectType,
|
||||||
final ResourceTypeConfig config) {
|
final ResourceTypeConfig config) {
|
||||||
s_configMap.put(resourceObjectType, config);
|
s_configMap.put(resourceObjectType, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Iterator getConfigs() {
|
public static Iterator getConfigs() {
|
||||||
return s_configMap.entrySet().iterator();
|
return s_configMap.entrySet().iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,68 +102,78 @@ public class Application extends Resource {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create (new style / legacy free) application without parent, and without
|
* Convenient class for creation of a new style / legacy free application
|
||||||
* an associated container group
|
* just based on its type and title,
|
||||||
|
* without parent, no explicit URL fragment, no associated container group
|
||||||
*/
|
*/
|
||||||
public static Application createRootApplication(final ApplicationType type,
|
public static Application createRootApplication(final ApplicationType type,
|
||||||
final String title) {
|
final String title) {
|
||||||
return Application.createRootApplication(type, title, false);
|
return Application.createRootApplication(type, title, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create (new style / legacy free) application without parent and with
|
* Convenient class for creation of a new style / legacy free application
|
||||||
* an associated container group
|
* just based on its type and title and whether to associate a container
|
||||||
|
* group,
|
||||||
|
* without parent and without an explicit URL fragment
|
||||||
*/
|
*/
|
||||||
public static Application createRootApplication(final ApplicationType type,
|
public static Application createRootApplication(
|
||||||
final String title,
|
final ApplicationType type,
|
||||||
final boolean createContainerGroup) {
|
final String title,
|
||||||
|
final boolean createContainerGroup) {
|
||||||
if (Assert.isEnabled()) {
|
if (Assert.isEnabled()) {
|
||||||
Assert.exists(type, ApplicationType.class);
|
Assert.exists(type, ApplicationType.class);
|
||||||
Assert.exists(title, String.class);
|
Assert.exists(title, String.class);
|
||||||
Assert.isTrue(type.m_legacyFree);
|
Assert.isTrue(type.m_legacyFree);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Application.make(type, null, title, null, createContainerGroup);
|
return Application.make(type, null, title, null, createContainerGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper class to create a new application using a limited set of parameters,
|
||||||
|
* here: createContainerGroup is false.
|
||||||
|
*
|
||||||
|
* @param type
|
||||||
|
* @param fragment URL fragment of the application
|
||||||
|
* @param title
|
||||||
|
* @param parent parent Application
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static Application createApplication(final ApplicationType type,
|
public static Application createApplication(final ApplicationType type,
|
||||||
final String fragment,
|
final String fragment,
|
||||||
final String title,
|
final String title,
|
||||||
final Application parent) {
|
final Application parent) {
|
||||||
s_log.debug("Create Application");
|
s_log.debug("Create Application");
|
||||||
return Application.createApplication(type,fragment,title,parent,false);
|
return Application.createApplication(type,fragment,title,parent,false);
|
||||||
}
|
|
||||||
|
|
||||||
public static Application createApplication(final ApplicationType type,
|
|
||||||
final String fragment,
|
|
||||||
final String title,
|
|
||||||
final Application parent,
|
|
||||||
final boolean createContainerGroup) {
|
|
||||||
if (Assert.isEnabled()) {
|
|
||||||
Assert.exists(type, ApplicationType.class);
|
|
||||||
Assert.exists(fragment, String.class);
|
|
||||||
Assert.exists(title, String.class);
|
|
||||||
Assert.isTrue(!fragment.equals(""),
|
|
||||||
"The URL fragment must not be the empty string");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type.m_legacyFree) {
|
|
||||||
return Application.make(type,fragment,title,parent,createContainerGroup);
|
|
||||||
} else {
|
|
||||||
s_log.debug("Creating legacy compatible app");
|
|
||||||
return Application.legacyMake(type,fragment,title,parent,createContainerGroup);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// For convenience.
|
// For convenience.
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param typeName
|
||||||
|
* @param fragment URL fragment of the application
|
||||||
|
* @param title
|
||||||
|
* @param parent
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static Application createApplication(final String typeName,
|
public static Application createApplication(final String typeName,
|
||||||
final String fragment,
|
final String fragment,
|
||||||
final String title,
|
final String title,
|
||||||
final Application parent) {
|
final Application parent) {
|
||||||
|
|
||||||
return Application.createApplication(typeName,fragment,title,parent,false);
|
return Application.createApplication(typeName,fragment,title,parent,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param typeName
|
||||||
|
* @param fragment
|
||||||
|
* @param title
|
||||||
|
* @param parent
|
||||||
|
* @param createContainerGroup
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static Application createApplication(final String typeName,
|
public static Application createApplication(final String typeName,
|
||||||
final String fragment,
|
final String fragment,
|
||||||
final String title,
|
final String title,
|
||||||
|
|
@ -180,6 +190,42 @@ public class Application extends Resource {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Prepares the actual creation of an application either as a legacy free or
|
||||||
|
* as a legacy compatible type, depending on the style of its applicationType.
|
||||||
|
* (A legacy compatible app creates the corresponding entries in deprecated
|
||||||
|
* kernel Package and Sitenode stuff as well, in parallel.)
|
||||||
|
*
|
||||||
|
* @param type application class (class name)
|
||||||
|
* @param fragment URL fragment og the application
|
||||||
|
* @param title
|
||||||
|
* @param parent parent application
|
||||||
|
* @param createContainerGroup
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Application createApplication(
|
||||||
|
final ApplicationType type,
|
||||||
|
final String fragment,
|
||||||
|
final String title,
|
||||||
|
final Application parent,
|
||||||
|
final boolean createContainerGroup) {
|
||||||
|
if (Assert.isEnabled()) {
|
||||||
|
Assert.exists(type, ApplicationType.class);
|
||||||
|
Assert.exists(fragment, String.class);
|
||||||
|
Assert.exists(title, String.class);
|
||||||
|
Assert.isTrue(!fragment.equals(""),
|
||||||
|
"The URL fragment must not be the empty string");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type.m_legacyFree) {
|
||||||
|
return Application.make(type,fragment,title,parent,createContainerGroup);
|
||||||
|
} else {
|
||||||
|
s_log.debug("Creating legacy compatible app");
|
||||||
|
return Application.legacyMake(type,fragment,title,parent,createContainerGroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates (makes) a legacy free application.
|
||||||
*
|
*
|
||||||
* @param type application type
|
* @param type application type
|
||||||
* @param fragment last part of the applications URL
|
* @param fragment last part of the applications URL
|
||||||
|
|
@ -217,7 +263,16 @@ public class Application extends Resource {
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actually does the work.
|
/**
|
||||||
|
* Creates (makes) a legacy compatible application (using deprecated kernel
|
||||||
|
* packageType and sitenode stuff).
|
||||||
|
* @param type
|
||||||
|
* @param fragment
|
||||||
|
* @param title
|
||||||
|
* @param parent
|
||||||
|
* @param createContainerGroup
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private static Application legacyMake(final ApplicationType type,
|
private static Application legacyMake(final ApplicationType type,
|
||||||
final String fragment,
|
final String fragment,
|
||||||
final String title,
|
final String title,
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ public class ApplicationType extends ResourceType {
|
||||||
// (to be honest I can't remember the problem that was
|
// (to be honest I can't remember the problem that was
|
||||||
// causing, but it did cause a problem in some
|
// causing, but it did cause a problem in some
|
||||||
// circumstances)
|
// circumstances)
|
||||||
// Method overwrtes a (overwritable) method provided by the super class to
|
// Method overwrites a (overwritable) method provided by the super class to
|
||||||
// process a created (empty) data object.
|
// process a created (empty) data object.
|
||||||
@Override
|
@Override
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
|
|
|
||||||
|
|
@ -12,4 +12,7 @@
|
||||||
<version from="6.5.1" to="6.5.2">
|
<version from="6.5.1" to="6.5.2">
|
||||||
<script class="com.arsdigita.forum.upgrade.CreateContainerGroups"/>
|
<script class="com.arsdigita.forum.upgrade.CreateContainerGroups"/>
|
||||||
</version>
|
</version>
|
||||||
|
<version from="6.6.0" to="6.6.1">
|
||||||
|
<script sql="ccm-forum/upgrade/::database::-6.6.0-6.6.1.sql"/>
|
||||||
|
</version>
|
||||||
</upgrade>
|
</upgrade>
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,9 @@ package com.arsdigita.aplaws;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Central entry point for the london APLAWS integration and configuration
|
||||||
|
* module.
|
||||||
|
* Provides just a handle into config file.
|
||||||
* @version "$Id: Aplaws.java 1297 2006-08-25 18:17:50Z apevec $
|
* @version "$Id: Aplaws.java 1297 2006-08-25 18:17:50Z apevec $
|
||||||
*/
|
*/
|
||||||
public class Aplaws {
|
public class Aplaws {
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
*
|
*
|
||||||
* @param e
|
* @param e
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void init(DomainInitEvent e) {
|
public void init(DomainInitEvent e) {
|
||||||
|
|
||||||
super.init(e);
|
super.init(e);
|
||||||
|
|
@ -97,6 +98,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
e.getFactory().registerInstantiator(
|
e.getFactory().registerInstantiator(
|
||||||
Workspace.BASE_DATA_OBJECT_TYPE,
|
Workspace.BASE_DATA_OBJECT_TYPE,
|
||||||
new ACSObjectInstantiator() {
|
new ACSObjectInstantiator() {
|
||||||
|
@Override
|
||||||
public DomainObject doNewInstance(DataObject dataObject) {
|
public DomainObject doNewInstance(DataObject dataObject) {
|
||||||
return new Workspace(dataObject);
|
return new Workspace(dataObject);
|
||||||
}
|
}
|
||||||
|
|
@ -105,6 +107,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
e.getFactory().registerInstantiator(
|
e.getFactory().registerInstantiator(
|
||||||
WorkspacePage.BASE_DATA_OBJECT_TYPE,
|
WorkspacePage.BASE_DATA_OBJECT_TYPE,
|
||||||
new ACSObjectInstantiator() {
|
new ACSObjectInstantiator() {
|
||||||
|
@Override
|
||||||
public DomainObject doNewInstance(DataObject dataObject) {
|
public DomainObject doNewInstance(DataObject dataObject) {
|
||||||
return new WorkspacePage(dataObject);
|
return new WorkspacePage(dataObject);
|
||||||
}
|
}
|
||||||
|
|
@ -187,6 +190,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
e.getFactory().registerInstantiator(
|
e.getFactory().registerInstantiator(
|
||||||
WorkspaceNavigatorPortlet.BASE_DATA_OBJECT_TYPE,
|
WorkspaceNavigatorPortlet.BASE_DATA_OBJECT_TYPE,
|
||||||
new ACSObjectInstantiator() {
|
new ACSObjectInstantiator() {
|
||||||
|
@Override
|
||||||
public DomainObject doNewInstance(DataObject dataObject) {
|
public DomainObject doNewInstance(DataObject dataObject) {
|
||||||
return new WorkspaceNavigatorPortlet(dataObject);
|
return new WorkspaceNavigatorPortlet(dataObject);
|
||||||
}
|
}
|
||||||
|
|
@ -195,6 +199,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
e.getFactory().registerInstantiator(
|
e.getFactory().registerInstantiator(
|
||||||
WorkspaceSummaryPortlet.BASE_DATA_OBJECT_TYPE,
|
WorkspaceSummaryPortlet.BASE_DATA_OBJECT_TYPE,
|
||||||
new ACSObjectInstantiator() {
|
new ACSObjectInstantiator() {
|
||||||
|
@Override
|
||||||
public DomainObject doNewInstance(DataObject dataObject) {
|
public DomainObject doNewInstance(DataObject dataObject) {
|
||||||
return new WorkspaceSummaryPortlet(dataObject);
|
return new WorkspaceSummaryPortlet(dataObject);
|
||||||
}
|
}
|
||||||
|
|
@ -244,6 +249,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ResourceConfigFormSection getModifyFormSection(
|
public ResourceConfigFormSection getModifyFormSection(
|
||||||
final RequestLocal application) {
|
final RequestLocal application) {
|
||||||
final RSSFeedPortletEditorForm config =
|
final RSSFeedPortletEditorForm config =
|
||||||
|
|
@ -251,6 +257,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ResourceConfigComponent getCreateComponent(
|
public ResourceConfigComponent getCreateComponent(
|
||||||
final ResourceType resType,
|
final ResourceType resType,
|
||||||
final RequestLocal parentAppRL) {
|
final RequestLocal parentAppRL) {
|
||||||
|
|
@ -268,6 +275,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
};
|
};
|
||||||
|
|
||||||
new ResourceTypeConfig(FreeformHTMLPortlet.BASE_DATA_OBJECT_TYPE) {
|
new ResourceTypeConfig(FreeformHTMLPortlet.BASE_DATA_OBJECT_TYPE) {
|
||||||
|
@Override
|
||||||
public ResourceConfigFormSection getCreateFormSection(
|
public ResourceConfigFormSection getCreateFormSection(
|
||||||
final ResourceType resType,
|
final ResourceType resType,
|
||||||
final RequestLocal parentAppRL) {
|
final RequestLocal parentAppRL) {
|
||||||
|
|
@ -276,6 +284,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ResourceConfigFormSection getModifyFormSection(
|
public ResourceConfigFormSection getModifyFormSection(
|
||||||
final RequestLocal application) {
|
final RequestLocal application) {
|
||||||
final FreeformHTMLPortletEditor config =
|
final FreeformHTMLPortletEditor config =
|
||||||
|
|
|
||||||
|
|
@ -114,6 +114,7 @@ public class Loader extends PackageLoader {
|
||||||
*/
|
*/
|
||||||
private void createApplication(String url, Boolean isPublic, String title) {
|
private void createApplication(String url, Boolean isPublic, String title) {
|
||||||
|
|
||||||
|
// First create an application type for portal Workspace
|
||||||
ApplicationType type = setupWorkspaceType();
|
ApplicationType type = setupWorkspaceType();
|
||||||
|
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
|
|
@ -151,6 +152,9 @@ public class Loader extends PackageLoader {
|
||||||
*
|
*
|
||||||
* No localization here because it is an invariant configuration.
|
* No localization here because it is an invariant configuration.
|
||||||
*
|
*
|
||||||
|
* Creates an entry in table application_types and a corresponding entry in
|
||||||
|
* apm_package_types
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private ApplicationType setupWorkspaceType() {
|
private ApplicationType setupWorkspaceType() {
|
||||||
|
|
@ -165,7 +169,10 @@ public class Loader extends PackageLoader {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Setup WorkspacePage type.
|
||||||
*
|
*
|
||||||
|
* Creates an entry for class (=type) c.ad.ldn.portal.WorkspacePage in
|
||||||
|
* table application_types, but not in apm_package_types.
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private ResourceType setupWorkspacePageType() {
|
private ResourceType setupWorkspacePageType() {
|
||||||
|
|
|
||||||
|
|
@ -53,21 +53,17 @@ import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Workspace domain class, a workspace represents an area containing 0...n portals
|
* Workspace domain class.
|
||||||
* each arranged as a pane of page. Each portal (or pane) manages a number of portlets.
|
* A workspace represents an area containing 0...n portals each arranged
|
||||||
*
|
* as a pane of page. Each portal (or pane) manages a number of portlets.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class Workspace extends Application {
|
public class Workspace extends Application {
|
||||||
|
|
||||||
|
/** Private logger instance for debugging purpose */
|
||||||
private static final Logger s_log = Logger.getLogger(Workspace.class);
|
private static final Logger s_log = Logger.getLogger(Workspace.class);
|
||||||
private static final WorkspaceConfig s_config = new WorkspaceConfig();
|
|
||||||
|
|
||||||
static {
|
private static final WorkspaceConfig s_config = WorkspaceConfig.getConfig();
|
||||||
s_log.debug("Static initalizer starting...");
|
|
||||||
s_config.load();
|
|
||||||
s_log.debug("Static initalizer finished.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static WorkspaceConfig getConfig() {
|
public static WorkspaceConfig getConfig() {
|
||||||
return s_config;
|
return s_config;
|
||||||
|
|
@ -78,6 +74,7 @@ public class Workspace extends Application {
|
||||||
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";
|
||||||
public static final String PAGES = "pages";
|
public static final String PAGES = "pages";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* store this as a static variable as it cannot change during the lifetime
|
* store this as a static variable as it cannot change during the lifetime
|
||||||
* of the ccm service
|
* of the ccm service
|
||||||
|
|
@ -115,12 +112,15 @@ public class Workspace extends Application {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapper class to handle a limited set of parameters,
|
* Wrapper class to create a new workspace using a limited set of parameters,
|
||||||
* here: page layout is set to default layout.
|
* here: page layout is set to default layout.
|
||||||
*
|
*
|
||||||
|
* NOTE: Parameter isPublic may be a misnomer, the actual usage of it in the
|
||||||
|
* process of application creation uses it as createGroupContainer
|
||||||
|
*
|
||||||
* @param url
|
* @param url
|
||||||
* @param title
|
* @param title
|
||||||
* @param parent
|
* @param parent parent application
|
||||||
* @param isPublic
|
* @param isPublic
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
@ -131,6 +131,8 @@ public class Workspace extends Application {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Wrapper class to create a new workspace using a limited set of parameters,
|
||||||
|
* here: page layout is set to default layout.
|
||||||
*
|
*
|
||||||
* @param url
|
* @param url
|
||||||
* @param title
|
* @param title
|
||||||
|
|
@ -147,11 +149,14 @@ public class Workspace extends Application {
|
||||||
/**
|
/**
|
||||||
* Does the real work to create a workspace in the storage (db)
|
* Does the real work to create a workspace in the storage (db)
|
||||||
*
|
*
|
||||||
|
* NOTE: Parameter isPublic may be a misnomer, the actual usage of it in the
|
||||||
|
* process of application creation uses it as createGroupContainer
|
||||||
|
*
|
||||||
* @param url
|
* @param url
|
||||||
* @param title
|
* @param title
|
||||||
* @param layout
|
* @param layout
|
||||||
* @param parent
|
* @param parent
|
||||||
* @param isPublic
|
* @param isPublic whether to create a workspace group
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Workspace createWorkspace(String url, String title,
|
public static Workspace createWorkspace(String url, String title,
|
||||||
|
|
@ -198,8 +203,7 @@ public class Workspace extends Application {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Retrieve the workspace that is created during loading of the
|
||||||
* retrieve the workspace that is created during loading of the
|
|
||||||
* ccm-ldn-portal application and is set as the defaultworkspace for the
|
* ccm-ldn-portal application and is set as the defaultworkspace for the
|
||||||
* site.
|
* site.
|
||||||
*
|
*
|
||||||
|
|
@ -207,7 +211,7 @@ public class Workspace extends Application {
|
||||||
* case, ccm-ldn-portal hasn't been loaded and so I don't know how you are
|
* case, ccm-ldn-portal hasn't been loaded and so I don't know how you are
|
||||||
* invoking this method!)
|
* invoking this method!)
|
||||||
*
|
*
|
||||||
* @return
|
* @return default workspace instance (created during load)
|
||||||
*/
|
*/
|
||||||
public static Workspace getDefaultHomepageWorkspace() {
|
public static Workspace getDefaultHomepageWorkspace() {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,59 +34,83 @@ import org.apache.log4j.Logger;
|
||||||
|
|
||||||
public class WorkspaceConfig extends AbstractConfig {
|
public class WorkspaceConfig extends AbstractConfig {
|
||||||
|
|
||||||
|
/** A logger instance. */
|
||||||
private static final Logger s_log = Logger.getLogger(WorkspaceConfig.class);
|
private static final Logger s_log = Logger.getLogger(WorkspaceConfig.class);
|
||||||
|
|
||||||
private ResourceParameter m_adapters;
|
/** Singelton config object. */
|
||||||
|
private static WorkspaceConfig s_conf;
|
||||||
|
|
||||||
private StringParameter m_defaultLayout;
|
/**
|
||||||
|
* Gain a WorkspaceConfig object.
|
||||||
|
*
|
||||||
|
* Singelton pattern, don't instantiate a config object using the
|
||||||
|
* constructor directly!
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static synchronized WorkspaceConfig getConfig() {
|
||||||
|
if (s_conf == null) {
|
||||||
|
s_conf = new WorkspaceConfig();
|
||||||
|
s_conf.load();
|
||||||
|
}
|
||||||
|
|
||||||
private BooleanParameter m_createUserWorkspaces;
|
return s_conf;
|
||||||
|
}
|
||||||
|
|
||||||
private Parameter m_excludedPortletTypes;
|
|
||||||
|
|
||||||
private Parameter m_adminPortletTypes;
|
// set of configuration parameters
|
||||||
|
/** File with rules for configuring information in generated XML */
|
||||||
|
private final Parameter m_adapters =
|
||||||
|
new ResourceParameter(
|
||||||
|
"com.arsdigita.london.portal.traversal_adapters",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
"/WEB-INF/resources/portal-adapters.xml");
|
||||||
|
|
||||||
private BooleanParameter m_htmlPortletWysiwygEditor;
|
/** Default column layout for workspace portals */
|
||||||
|
private final Parameter m_defaultLayout =
|
||||||
|
new StringParameter(
|
||||||
|
"com.arsdigita.london.portal.default_layout",
|
||||||
|
Parameter.REQUIRED, PageLayout.FORMAT_THREE_COLUMNS);
|
||||||
|
|
||||||
private StringParameter m_workspacePartyPrivilege;
|
/** Whether non-admin users should have their own custom workspaces */
|
||||||
|
private final Parameter m_createUserWorkspaces =
|
||||||
|
new BooleanParameter(
|
||||||
|
"com.arsdigita.portal.create_user_workspaces",
|
||||||
|
Parameter.REQUIRED, Boolean.TRUE);
|
||||||
|
|
||||||
private BooleanParameter m_checkWorkspaceReadPermissions;
|
/** Types not to be included in the drop down list of portlets to add to a page*/
|
||||||
|
private final Parameter m_excludedPortletTypes =
|
||||||
|
new StringArrayParameter(
|
||||||
|
"com.arsdigita.london.portal.excluded_portlet_types",
|
||||||
|
Parameter.OPTIONAL, new String[0]);
|
||||||
|
|
||||||
|
/** Types only available to administrator of homepage, or subsite frontpage*/
|
||||||
|
private final Parameter m_adminPortletTypes =
|
||||||
|
new StringArrayParameter(
|
||||||
|
"com.arsdigita.london.portal.admin_only_portlet_types",
|
||||||
|
Parameter.OPTIONAL, new String[0]);
|
||||||
|
|
||||||
|
/** Whether to use editor specified by waf.bebop.dhtml_editor for editing
|
||||||
|
freeform html portlet*/
|
||||||
|
private final Parameter m_htmlPortletWysiwygEditor =
|
||||||
|
new BooleanParameter(
|
||||||
|
"com.arsdigita.london.portal.portlet.freeform_html_editor",
|
||||||
|
Parameter.REQUIRED, Boolean.FALSE);
|
||||||
|
|
||||||
|
/** Which privilege ("read" or "edit") is granted to the workspace party. */
|
||||||
|
private final Parameter m_workspacePartyPrivilege =
|
||||||
|
new StringParameter(
|
||||||
|
"com.arsdigita.london.portal.workspacePartyPrivilege",
|
||||||
|
Parameter.OPTIONAL, "read");
|
||||||
|
|
||||||
|
/** Whether READ permissions will be checked when viewing workspaces.
|
||||||
|
By default we don't, which is odd. */
|
||||||
|
private final Parameter m_checkWorkspaceReadPermissions =
|
||||||
|
new BooleanParameter(
|
||||||
|
"com.arsdigita.london.portal.checkWorkspaceReadPermissions",
|
||||||
|
Parameter.OPTIONAL, Boolean.FALSE);
|
||||||
|
|
||||||
public WorkspaceConfig() {
|
public WorkspaceConfig() {
|
||||||
|
|
||||||
m_adapters = new ResourceParameter(
|
|
||||||
"com.arsdigita.london.portal.traversal_adapters",
|
|
||||||
Parameter.REQUIRED,
|
|
||||||
"/WEB-INF/resources/portal-adapters.xml");
|
|
||||||
|
|
||||||
m_defaultLayout = new StringParameter(
|
|
||||||
"com.arsdigita.london.portal.default_layout",
|
|
||||||
Parameter.REQUIRED, PageLayout.FORMAT_THREE_COLUMNS);
|
|
||||||
|
|
||||||
m_createUserWorkspaces = new BooleanParameter(
|
|
||||||
"com.arsdigita.portal.create_user_workspaces",
|
|
||||||
Parameter.REQUIRED, Boolean.TRUE);
|
|
||||||
|
|
||||||
m_excludedPortletTypes = new StringArrayParameter(
|
|
||||||
"com.arsdigita.london.portal.excluded_portlet_types",
|
|
||||||
Parameter.OPTIONAL, new String[0]);
|
|
||||||
|
|
||||||
m_adminPortletTypes = new StringArrayParameter(
|
|
||||||
"com.arsdigita.london.portal.admin_only_portlet_types",
|
|
||||||
Parameter.OPTIONAL, new String[0]);
|
|
||||||
|
|
||||||
m_htmlPortletWysiwygEditor = new BooleanParameter(
|
|
||||||
"com.arsdigita.london.portal.portlet.freeform_html.wysiwyg_editor",
|
|
||||||
Parameter.REQUIRED, Boolean.FALSE);
|
|
||||||
|
|
||||||
m_workspacePartyPrivilege = new StringParameter(
|
|
||||||
"com.arsdigita.london.portal.workspacePartyPrivilege",
|
|
||||||
Parameter.OPTIONAL, "read");
|
|
||||||
|
|
||||||
m_checkWorkspaceReadPermissions = new BooleanParameter(
|
|
||||||
"com.arsdigita.london.portal.checkWorkspaceReadPermissions",
|
|
||||||
Parameter.OPTIONAL, Boolean.FALSE);
|
|
||||||
|
|
||||||
register(m_adapters);
|
register(m_adapters);
|
||||||
register(m_defaultLayout);
|
register(m_defaultLayout);
|
||||||
register(m_createUserWorkspaces);
|
register(m_createUserWorkspaces);
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,10 @@ com.arsdigita.london.portal.admin_only_portlet_types.purpose=Only available to a
|
||||||
com.arsdigita.london.portal.admin_only_portlet_types.format=[string,string,string]
|
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.admin_only_portlet_types.example=com.arsdigita.london.portal.portlet.ApplicationDirectoryPortlet,com.arsdigita.london.portal.portlet.TimeOfDayPortlet
|
||||||
|
|
||||||
com.arsdigita.london.portal.portlet.freeform_html.wysiwyg_editor.title=use wysiwyg editor for freeform html portlet
|
com.arsdigita.london.portal.portlet.freeform_html_editor.title=use wysiwyg editor for freeform html portlet
|
||||||
com.arsdigita.london.portal.portlet.freeform_html.wysiwyg_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.purpose=If true, use editor specified by waf.bebop.dhtml_editor when user edits freeform html portlet
|
||||||
com.arsdigita.london.portal.portlet.freeform_html.wysiwyg_editor.format=[boolean]
|
com.arsdigita.london.portal.portlet.freeform_html_editor.format=[boolean]
|
||||||
com.arsdigita.london.portal.portlet.freeform_html.wysiwyg_editor.example=false
|
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.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.purpose=Specify which privilege is granted to the workspace party. Should be "read" or "edit".
|
||||||
|
|
|
||||||
|
|
@ -19,25 +19,49 @@ import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.RequestLocal;
|
import com.arsdigita.bebop.RequestLocal;
|
||||||
import com.arsdigita.london.portal.Workspace;
|
import com.arsdigita.london.portal.Workspace;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
public abstract class WorkspaceSelectionModel {
|
public abstract class WorkspaceSelectionModel {
|
||||||
|
|
||||||
private RequestLocal m_workspace;
|
/** Workspace. Bound to the current HTTP request. */
|
||||||
|
private RequestLocal m_workspace;
|
||||||
|
|
||||||
public WorkspaceSelectionModel() {
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*/
|
||||||
|
public WorkspaceSelectionModel() {
|
||||||
m_workspace = new RequestLocal() {
|
m_workspace = new RequestLocal() {
|
||||||
|
@Override
|
||||||
public Object initialValue(PageState state) {
|
public Object initialValue(PageState state) {
|
||||||
return getDefaultWorkspace(state);
|
return getDefaultWorkspace(state);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract Workspace getDefaultWorkspace(PageState state);
|
/**
|
||||||
|
*
|
||||||
|
* @param state
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected abstract Workspace getDefaultWorkspace(PageState state);
|
||||||
|
|
||||||
public Workspace getSelectedWorkspace(PageState state) {
|
/**
|
||||||
|
*
|
||||||
|
* @param state
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Workspace getSelectedWorkspace(PageState state) {
|
||||||
return (Workspace) m_workspace.get(state);
|
return (Workspace) m_workspace.get(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectedWorkspace(PageState state, Workspace workspace) {
|
/**
|
||||||
|
*
|
||||||
|
* @param state
|
||||||
|
* @param workspace
|
||||||
|
*/
|
||||||
|
public void setSelectedWorkspace(PageState state, Workspace workspace) {
|
||||||
m_workspace.set(state, workspace);
|
m_workspace.set(state, workspace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ import com.arsdigita.persistence.DataCollection;
|
||||||
import com.arsdigita.persistence.SessionManager;
|
import com.arsdigita.persistence.SessionManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempts to create new term in the proper terms domain
|
* Attempts to create new term in the proper terms domain
|
||||||
* whenever a new category is created through CMS interface.
|
* whenever a new category is created through CMS interface.
|
||||||
*/
|
*/
|
||||||
public class TermCategoryListener implements CategoryListener {
|
public class TermCategoryListener implements CategoryListener {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue