diff --git a/ccm-cms/src/com/arsdigita/cms/CMSConfig.java b/ccm-cms/src/com/arsdigita/cms/CMSConfig.java
index 69954ddc9..379de2365 100755
--- a/ccm-cms/src/com/arsdigita/cms/CMSConfig.java
+++ b/ccm-cms/src/com/arsdigita/cms/CMSConfig.java
@@ -61,1194 +61,1224 @@ import org.apache.log4j.Logger;
*/
public final class CMSConfig extends AbstractConfig {
- /**
- * Private Logger instance for debugging purpose.
- */
- private static final Logger s_log = Logger.getLogger(CMSConfig.class);
- /**
- * Private Object to hold one's own instance to return to users.
- */
- private static CMSConfig s_config;
+ /**
+ * Private Logger instance for debugging purpose.
+ */
+ private static final Logger s_log = Logger.getLogger(CMSConfig.class);
+ /**
+ * Private Object to hold one's own instance to return to users.
+ */
+ private static CMSConfig s_config;
- /**
- * Returns the singleton configuration record for the content section
- * environment.
- *
- * @return The CMSConfig record; it cannot be null
- */
- public static synchronized CMSConfig getInstance() {
- if (s_config == null) {
- s_config = new CMSConfig();
- s_config.load();
- }
+ /**
+ * Returns the singleton configuration record for the content section
+ * environment.
+ *
+ * @return The CMSConfig record; it cannot be null
+ */
+ public static synchronized CMSConfig getInstance() {
+ if (s_config == null) {
+ s_config = new CMSConfig();
+ s_config.load();
+ }
- return s_config;
- }
-
- /**
- * Storage (map) for method getAssetStepsToSkip(ContentType type) to store
- * mapping of steps that are deemed irrelevant for the passid in type.
- */
- private static Map s_skipAssetSteps = null;
- /**
- * Item category add form specifies Subclass of ItemCategoryForm to use for
- * the assign categories step. Used in
- * c.ad.cms.ui.authoring.ItemCategoryStep
- */
- private final Parameter m_categoryAuthoringAddForm =
- new SpecificClassParameter(
- "com.arsdigita.cms.category_authoring_add_form",
- Parameter.REQUIRED,
- ItemCategoryForm.class,
- SimpleComponent.class);
- /**
- * Path for the default item template. Path is relative to the Template Root
- * path.
- */
- private final Parameter m_defaultItemTemplatePath =
- new StringParameter(
- "com.arsdigita.cms.default_item_template_path",
- Parameter.REQUIRED,
- "/default/item.jsp");
- /**
- * Path for the default folder template. Path is relative to the Template
- * Root path.
- */
- private final Parameter m_defaultFolderTemplatePath =
- new StringParameter(
- "com.arsdigita.cms.default_folder_template_path",
- Parameter.REQUIRED,
- "/default/folder.jsp");
- /**
- * Path or the root folter for template folders. Path is relative to webapp
- * root. Modify with care! Usually modified by developers only!
- */
- private final Parameter m_templateRootPath =
- new StringParameter(
- "com.arsdigita.cms.template_root_path",
- Parameter.REQUIRED,
- "/templates/ccm-cms/content-section");
- // up to version 6.6.4
- // "/packages/content-section/templates");
- // URL resource: protocol handler removal: START
- // remove:
- // try {
- // m_itemAdapters = new URLParameter
- // ("com.arsdigita.cms.item_adapters",
- // Parameter.REQUIRED,
- // new URL("resource:WEB-INF/resources/cms-item-adapters.xml"));
- // } catch (MalformedURLException ex) {
- // throw new UncheckedWrapperException("Cannot parse URL", ex);
- // }
- // ADD:
- /**
- * Item Adapters File, path to an XML resource containing adapter
- * specifications. Path is relative to webapp root.
- */
- private final Parameter m_itemAdapters =
- new ResourceParameter(
- "com.arsdigita.cms.item_adapters",
- Parameter.REQUIRED,
- "/WEB-INF/resources/cms-item-adapters.xml");
- // URL resource: protocol handler removal: END
- /**
- * Use streamlined content creation: upon item creation, automatically open
- * authoring steps and forward to the next step
- */
- private final Parameter m_useStreamlinedCreation = new BooleanParameter(
- "com.arsdigita.cms.use_streamlined_creation",
- Parameter.REQUIRED,
- Boolean.TRUE);
- /**
- * DHTML Editor Configuration for use in CMS module, lists the config object
- * name and Javascript source location for its definition.
- */
- private final Parameter m_dhtmlEditorConfig =
- new DHTMLEditorConfigParameter(
- "com.arsdigita.cms.dhtml_editor_config",
- Parameter.REQUIRED,
- new DHTMLEditor.Config("Xinha.Config",
- "/assets/xinha/CCMcmsXinhaConfig.js"));
- // previous parameter definition:
- // > DHTMLEditor.Config.STANDARD); <
- // didn't work because of broken unmarshalling (cf. similiar problem
- // with ResourceParameter and patch provided by Brad). It work for
- // HTMLArea, because configuration was hard coded into xsl(!).
- // Additionally, we would like to use a specific configuration for cms
- // to include cms specific functions (like access to internal .
- // content items for links and internal image assets, which may not
- // be accessable by other modules which use DHTMLeditor.
- // Would be bad style to configure a cms specific parameter in core.
- /**
- * Defines which plugins to use, e.g.TableOperations,CSS Format:
- * [string,string,string]
- */
- private final Parameter m_dhtmlEditorPlugins = new StringArrayParameter(
- "com.arsdigita.cms.dhtml_editor_plugins",
- Parameter.OPTIONAL,
- null);
- /**
- * Prevent undesirable functions from being made available, eg images should
- * only be added through the cms methods.
- */
- private final Parameter m_dhtmlEditorHiddenButtons =
- new StringArrayParameter(
- "com.arsdigita.cms.dhtml_editor_hidden_buttons",
- Parameter.OPTIONAL,
- null);
- /**
- * Hide section admin tabs from users without administrative rights.
- */
- private final Parameter m_hideAdminTabs = new BooleanParameter(
- "com.arsdigita.cms.hide_admin_tabs",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Hide Folder Index Checkbox from folder view
- */
- private final Parameter m_hideFolderIndexCheckbox = new BooleanParameter(
- "com.arsdigita.cms.hide_folder_index_checkbox",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Hide launch date parameter on all forms and displays where it's used.
- */
- private final Parameter m_hideLaunchDate = new BooleanParameter(
- "com.arsdigita.cms.hide_launch_date",
- Parameter.REQUIRED,
- Boolean.TRUE);
- /**
- * Require the launch date parameter to be set by the content author.
- */
- private final Parameter m_requireLaunchDate = new BooleanParameter(
- "com.arsdigita.cms.require_launch_date",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Hide the templates tab on the item admin page.
- */
- private final Parameter m_hideTemplatesTab = new BooleanParameter(
- "com.arsdigita.cms.hide_templates_tab",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Hide the upload file link in the editing of a text asset.
- */
- private final Parameter m_hideTextAssetUploadFile = new BooleanParameter(
- "com.arsdigita.cms.hide_text_asset_upload_file",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Hide timezone labels (if, for example, all users will be in the same
- * timezone and such information would be unnecessary)
- */
- private final Parameter m_hideTimezone = new BooleanParameter(
- "com.arsdigita.cms.hide_timezone",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Hide User Defined Content Types UI
- */
- private final Parameter m_hideUDCTUI = new BooleanParameter(
- "com.arsdigita.cms.hide_udct_ui",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Specifies the name of the class to use as a PublishLifecycleListener
- */
- private final Parameter m_publishLifecycleListenerClass =
- new StringParameter(
- "com.arsdigita.cms.publish_lifecycle_listener_class",
- Parameter.OPTIONAL,
- PublishLifecycleListener.class.getName());
- /**
- * Wether the Wysiwyg editor should clear the text of MSWord tags, everytime
- * the user clicks on 'Save'
- */
- private final Parameter m_saveTextCleansWordTags = new BooleanParameter(
- "com.arsdigita.cms.save_text_cleans_word_tags",
- Parameter.OPTIONAL,
- Boolean.FALSE);
- /**
- * Get the search indexing not to process FileAssets, eg to avoid PDF
- * slowdowns
- */
- private final Parameter m_disableFileAssetExtraction = new BooleanParameter(
- "com.arsdigita.cms.search.disableFileAssetExtraction",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Whether an item's workflow should be deleted, once the item has been
- * (re)published
- */
- private final Parameter m_deleteWorkflowAfterPublication =
- new BooleanParameter(
- "com.arsdigita.cms.delete_workflow_after_publication",
- Parameter.REQUIRED,
- Boolean.TRUE);
- /**
- * Defines the number of days ahead that are covered in the 'Soon Expired'
- * tab
- */
- private final Parameter m_soonExpiredTimespanDays = new IntegerParameter(
- "com.arsdigita.cms.soon_expired_timespan_days",
- Parameter.REQUIRED,
- new Integer(14));
- /**
- * Defines the number of months ahead that are covered in the 'Soon Expired'
- * tab
- */
- private final Parameter m_soonExpiredTimespanMonths = new IntegerParameter(
- "com.arsdigita.cms.soon_expired_timespan_months",
- Parameter.REQUIRED,
- new Integer(1));
- /**
- * Does a redirect to the unpublished item generate not found error?
- */
- private final Parameter m_unpublishedNotFound = new BooleanParameter(
- "com.arsdigita.cms.unpublished_not_found",
- Parameter.REQUIRED,
- Boolean.TRUE);
- /**
- * Links created through browse interfaces should only be within the same
- * subsite
- */
- private final Parameter m_linksOnlyInSameSubsite = new BooleanParameter(
- "com.arsdigita.cms.browse_links_in_same_subsite_only",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Item category step extension hook: Subclass of ItemCategoryExtension
- * which adds extension actions for the category authoring step
- */
- private final Parameter m_categoryAuthoringExtension =
- new SpecificClassParameter(
- "com.arsdigita.cms.category_authoring_extension",
- Parameter.REQUIRED,
- ItemCategoryExtension.class,
- ItemCategoryExtension.class);
- /**
- * Link available to reset lifecycle on republish. If false don't display
- * the link otherwise display.
- */
- private final Parameter m_hideResetLifecycleLink = new BooleanParameter(
- "com.arsdigita.cms.hide_reset_lifecycle_link",
- Parameter.OPTIONAL,
- Boolean.TRUE);
- /**
- * Whether to include INPATH operators to contains clause in intermedia
- * search
- */
- private final Parameter m_scoreTitleAndKeywords =
- new BooleanParameter(
- "com.arsdigita.cms.search.score_title_and_keywords",
- Parameter.OPTIONAL,
- Boolean.FALSE);
- /**
- * Title Weight, the relative weight given to title element within cms:item
- * when ranking search results (only used by interMedia)
- */
- private final Parameter m_titleWeight = new IntegerParameter(
- "com.arsdigita.cms.search.intermedia.title_weight",
- Parameter.OPTIONAL,
- new Integer(1));
- /**
- * Keyword Weight, the relative weight given to the dcKeywords element
- * within dublinCore element within cms:item element when ranking search
- * results (only used by interMedia)
- */
- private final Parameter m_keywordWeight =
- new IntegerParameter(
- "com.arsdigita.cms.search.intermedia.keyword_weight",
- Parameter.OPTIONAL,
- new Integer(1));
- /**
- * Limit the item search to current content section
- */
- private final Parameter m_limitToContentSection =
- new BooleanParameter(
- "com.arsdigita.cms.search.limitToContentSection",
- Parameter.OPTIONAL,
- Boolean.TRUE);
- /**
- * Asset steps to skip, specify asset steps that are not relevant for
- * specific content types. Each entry in the list is a : separated pair. The
- * first string is the className for the type (refer to classname column in
- * contenttypes table eg com.arsdigita.cms.contenttypes.MultiPartArticle
- * Second string is the name of the bebop step component eg
- * com.arsdigita.cms.contenttypes.ui.ImageStep
- */
- private final Parameter m_skipAssetSteps = new StringArrayParameter(
- "com.arsdigita.cms.skip_asset_steps",
- Parameter.OPTIONAL,
- null);
- /**
- * Mandatory Descriptions Content types may refer to this to decide whether
- * to validate against empty descriptions
- */
- private final Parameter m_mandatoryDescriptions = new BooleanParameter(
- "com.arsdigita.cms.mandatory_descriptions",
- Parameter.OPTIONAL,
- Boolean.FALSE);
- /**
- * Delete Finished Lifecycles. Decide whether lifecycles and their phases
- * should be deleted from the system when finished.
- */
- private final Parameter m_deleteLifecycleWhenComplete =
- new BooleanParameter(
- "com.arsdigita.cms.delete_lifecycle_when_complete",
- Parameter.OPTIONAL,
- Boolean.FALSE);
- /**
- * Contacts for content items. Allows you to add a Contact authoring step to
- * all items
- */
- private final Parameter m_hasContactsAuthoringStep = new BooleanParameter(
- "com.arsdigita.cms.has_contacts_authoring_step",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Ordering for nodes in assign category tree. Decide whether entries should
- * be ordered alphabetically or according to sort key (maintained in
- * category admin tab in content centre) SortKey|Alphabetical is initialized
- * in constructor! See below.
- */
- private final Parameter m_categoryTreeOrdering =
- new EnumerationParameter(
- "com.arsdigita.cms.category_tree_order",
- Parameter.OPTIONAL,
- Category.SORT_KEY);
- /**
- * Allow creation of a new Use Context in category tab of content sections.
- * "Use Context" is the construct to constitute a category hierarchy
- * implementet in core. It is superseded by the construct "Category Domain"
- * in Terms (ccm-ldn-terms).
- * Global parameter for all content sections. Default is false because all
- * installation bundles use Terms.
- */
- private final Parameter m_allowCategoryCreateUseContext =
- new BooleanParameter(
- "com.arsdigita.cms.allow_category_create_use_context",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Allow content creation in Workspace (content center) section listing.
- * Allows you to turn off the ability to create content in the section
- * listing
- */
- private final Parameter m_allowContentCreateInSectionListing =
- new BooleanParameter(
- "com.arsdigita.cms.allow_content_create_in_section_listing",
- Parameter.REQUIRED,
- Boolean.TRUE);
- /**
- * Hide the legacy public site link in Workspace (content center) section
- * listing. Legacy public site display is replaced by navigation based
- * presentation (or by portlets) and should be hidden in the admin ui by
- * default now.
- */
- private final Parameter m_hideLegacyPublicSiteLink =
- new BooleanParameter(
- "com.arsdigita.cms.hide_legacy_public_site_link",
- Parameter.REQUIRED,
- Boolean.TRUE);
- // ///////////////////////////////////////////
- // Notification related parameters
- // ///////////////////////////////////////////
- /**
- * Delete Sent Workflow Notifications. Decide whether successfully sent
- * notifications and messages should be deleted from the system
- */
- private final Parameter m_deleteWorkflowNotificationsWhenSent =
- new BooleanParameter(
- "com.arsdigita.cms.delete_workflow_notification_when_sent",
- Parameter.OPTIONAL,
- Boolean.FALSE);
- /**
- * Decide whether successfully sent notifications and messages should be
- * deleted from the system
- */
- private final Parameter m_deleteExpiryNotificationsWhenSent =
- new BooleanParameter(
- "com.arsdigita.cms.delete_expiry_notification_when_sent",
- Parameter.OPTIONAL,
- Boolean.FALSE);
- /**
- * Amount of time (in hours) before the expiration of a content item that
- * users in the Alert Recipient role are alerted via email
- */
- private final Parameter m_defaultNotificationTime = new IntegerParameter(
- "com.arsdigita.cms.default_notification_time",
- Parameter.REQUIRED,
- new Integer(0));
- /**
- * Wether a content item's author should be notified by the item's
- * LifecycleListener; defaults to true
- */
- private final Parameter m_notifyAuthorOnLifecycle = new BooleanParameter(
- "com.arsdigita.cms.notify_author_on_lifecycle",
- Parameter.OPTIONAL,
- Boolean.TRUE);
- // ////////////////////////////////////////////////////
- // Content Center (Workspace) config related parameters
- // ////////////////////////////////////////////////////
- /**
- * XML Mapping of the content center tabs to URLs, see
- * {@link ContentCenterDispatcher}
- */
- private final StringParameter m_contentCenterMap = new StringParameter(
- "com.arsdigita.cms.loader.content_center_map",
- Parameter.REQUIRED,
- "/WEB-INF/resources/content-center-map.xml");
- // ///////////////////////////////////////////
- // Content Section config related parameters
- // ///////////////////////////////////////////
+ return s_config;
+ }
+ /**
+ * Storage (map) for method getAssetStepsToSkip(ContentType type) to
+ * store mapping of steps that are deemed irrelevant for the passid in
+ * type.
+ */
+ private static Map s_skipAssetSteps = null;
+ /**
+ * Item category add form specifies Subclass of ItemCategoryForm to use
+ * for the assign categories step. Used in
+ * c.ad.cms.ui.authoring.ItemCategoryStep
+ */
+ private final Parameter m_categoryAuthoringAddForm =
+ new SpecificClassParameter(
+ "com.arsdigita.cms.category_authoring_add_form",
+ Parameter.REQUIRED,
+ ItemCategoryForm.class,
+ SimpleComponent.class);
+ /**
+ * Path for the default item template. Path is relative to the Template
+ * Root path.
+ */
+ private final Parameter m_defaultItemTemplatePath =
+ new StringParameter(
+ "com.arsdigita.cms.default_item_template_path",
+ Parameter.REQUIRED,
+ "/default/item.jsp");
+ /**
+ * Path for the default folder template. Path is relative to the
+ * Template Root path.
+ */
+ private final Parameter m_defaultFolderTemplatePath =
+ new StringParameter(
+ "com.arsdigita.cms.default_folder_template_path",
+ Parameter.REQUIRED,
+ "/default/folder.jsp");
+ /**
+ * Path or the root folter for template folders. Path is relative to
+ * webapp root. Modify with care! Usually modified by developers only!
+ */
+ private final Parameter m_templateRootPath =
+ new StringParameter(
+ "com.arsdigita.cms.template_root_path",
+ Parameter.REQUIRED,
+ "/templates/ccm-cms/content-section");
+ // up to version 6.6.4
+ // "/packages/content-section/templates");
+ // URL resource: protocol handler removal: START
+ // remove:
+ // try {
+ // m_itemAdapters = new URLParameter
+ // ("com.arsdigita.cms.item_adapters",
+ // Parameter.REQUIRED,
+ // new URL("resource:WEB-INF/resources/cms-item-adapters.xml"));
+ // } catch (MalformedURLException ex) {
+ // throw new UncheckedWrapperException("Cannot parse URL", ex);
+ // }
+ // ADD:
+ /**
+ * Item Adapters File, path to an XML resource containing adapter
+ * specifications. Path is relative to webapp root.
+ */
+ private final Parameter m_itemAdapters =
+ new ResourceParameter(
+ "com.arsdigita.cms.item_adapters",
+ Parameter.REQUIRED,
+ "/WEB-INF/resources/cms-item-adapters.xml");
+ // URL resource: protocol handler removal: END
+ /**
+ * Use streamlined content creation: upon item creation, automatically
+ * open authoring steps and forward to the next step
+ */
+ private final Parameter m_useStreamlinedCreation = new BooleanParameter(
+ "com.arsdigita.cms.use_streamlined_creation",
+ Parameter.REQUIRED,
+ Boolean.TRUE);
+ /**
+ * DHTML Editor Configuration for use in CMS module, lists the config
+ * object name and Javascript source location for its definition.
+ */
+ private final Parameter m_dhtmlEditorConfig =
+ new DHTMLEditorConfigParameter(
+ "com.arsdigita.cms.dhtml_editor_config",
+ Parameter.REQUIRED,
+ new DHTMLEditor.Config("Xinha.Config",
+ "/assets/xinha/CCMcmsXinhaConfig.js"));
+ // previous parameter definition:
+ // > DHTMLEditor.Config.STANDARD); <
+ // didn't work because of broken unmarshalling (cf. similiar problem
+ // with ResourceParameter and patch provided by Brad). It work for
+ // HTMLArea, because configuration was hard coded into xsl(!).
+ // Additionally, we would like to use a specific configuration for cms
+ // to include cms specific functions (like access to internal .
+ // content items for links and internal image assets, which may not
+ // be accessable by other modules which use DHTMLeditor.
+ // Would be bad style to configure a cms specific parameter in core.
+ /**
+ * Defines which plugins to use, e.g.TableOperations,CSS Format:
+ * [string,string,string]
+ */
+ private final Parameter m_dhtmlEditorPlugins = new StringArrayParameter(
+ "com.arsdigita.cms.dhtml_editor_plugins",
+ Parameter.OPTIONAL,
+ null);
+ /**
+ * Prevent undesirable functions from being made available, eg images
+ * should only be added through the cms methods.
+ */
+ private final Parameter m_dhtmlEditorHiddenButtons =
+ new StringArrayParameter(
+ "com.arsdigita.cms.dhtml_editor_hidden_buttons",
+ Parameter.OPTIONAL,
+ null);
+ /**
+ * Hide section admin tabs from users without administrative rights.
+ */
+ private final Parameter m_hideAdminTabs = new BooleanParameter(
+ "com.arsdigita.cms.hide_admin_tabs",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Hide Folder Index Checkbox from folder view
+ */
+ private final Parameter m_hideFolderIndexCheckbox = new BooleanParameter(
+ "com.arsdigita.cms.hide_folder_index_checkbox",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Hide launch date parameter on all forms and displays where it's used.
+ */
+ private final Parameter m_hideLaunchDate = new BooleanParameter(
+ "com.arsdigita.cms.hide_launch_date",
+ Parameter.REQUIRED,
+ Boolean.TRUE);
+ /**
+ * Require the launch date parameter to be set by the content author.
+ */
+ private final Parameter m_requireLaunchDate = new BooleanParameter(
+ "com.arsdigita.cms.require_launch_date",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Hide the templates tab on the item admin page.
+ */
+ private final Parameter m_hideTemplatesTab = new BooleanParameter(
+ "com.arsdigita.cms.hide_templates_tab",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Hide the upload file link in the editing of a text asset.
+ */
+ private final Parameter m_hideTextAssetUploadFile = new BooleanParameter(
+ "com.arsdigita.cms.hide_text_asset_upload_file",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Hide timezone labels (if, for example, all users will be in the same
+ * timezone and such information would be unnecessary)
+ */
+ private final Parameter m_hideTimezone = new BooleanParameter(
+ "com.arsdigita.cms.hide_timezone",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Hide User Defined Content Types UI
+ */
+ private final Parameter m_hideUDCTUI = new BooleanParameter(
+ "com.arsdigita.cms.hide_udct_ui",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Specifies the name of the class to use as a PublishLifecycleListener
+ */
+ private final Parameter m_publishLifecycleListenerClass =
+ new StringParameter(
+ "com.arsdigita.cms.publish_lifecycle_listener_class",
+ Parameter.OPTIONAL,
+ PublishLifecycleListener.class.getName());
+ /**
+ * Wether the Wysiwyg editor should clear the text of MSWord tags,
+ * everytime the user clicks on 'Save'
+ */
+ private final Parameter m_saveTextCleansWordTags = new BooleanParameter(
+ "com.arsdigita.cms.save_text_cleans_word_tags",
+ Parameter.OPTIONAL,
+ Boolean.FALSE);
+ /**
+ * Get the search indexing not to process FileAssets, eg to avoid PDF
+ * slowdowns
+ */
+ private final Parameter m_disableFileAssetExtraction = new BooleanParameter(
+ "com.arsdigita.cms.search.disableFileAssetExtraction",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Whether an item's workflow should be deleted, once the item has been
+ * (re)published
+ */
+ private final Parameter m_deleteWorkflowAfterPublication =
+ new BooleanParameter(
+ "com.arsdigita.cms.delete_workflow_after_publication",
+ Parameter.REQUIRED,
+ Boolean.TRUE);
+ /**
+ * Defines the number of days ahead that are covered in the 'Soon
+ * Expired' tab
+ */
+ private final Parameter m_soonExpiredTimespanDays = new IntegerParameter(
+ "com.arsdigita.cms.soon_expired_timespan_days",
+ Parameter.REQUIRED,
+ new Integer(14));
+ /**
+ * Defines the number of months ahead that are covered in the 'Soon
+ * Expired' tab
+ */
+ private final Parameter m_soonExpiredTimespanMonths = new IntegerParameter(
+ "com.arsdigita.cms.soon_expired_timespan_months",
+ Parameter.REQUIRED,
+ new Integer(1));
+ /**
+ * Does a redirect to the unpublished item generate not found error?
+ */
+ private final Parameter m_unpublishedNotFound = new BooleanParameter(
+ "com.arsdigita.cms.unpublished_not_found",
+ Parameter.REQUIRED,
+ Boolean.TRUE);
+ /**
+ * Links created through browse interfaces should only be within the
+ * same subsite
+ */
+ private final Parameter m_linksOnlyInSameSubsite = new BooleanParameter(
+ "com.arsdigita.cms.browse_links_in_same_subsite_only",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Item category step extension hook: Subclass of ItemCategoryExtension
+ * which adds extension actions for the category authoring step
+ */
+ private final Parameter m_categoryAuthoringExtension =
+ new SpecificClassParameter(
+ "com.arsdigita.cms.category_authoring_extension",
+ Parameter.REQUIRED,
+ ItemCategoryExtension.class,
+ ItemCategoryExtension.class);
+ /**
+ * Link available to reset lifecycle on republish. If false don't
+ * display the link otherwise display.
+ */
+ private final Parameter m_hideResetLifecycleLink = new BooleanParameter(
+ "com.arsdigita.cms.hide_reset_lifecycle_link",
+ Parameter.OPTIONAL,
+ Boolean.TRUE);
+ /**
+ * Whether to include INPATH operators to contains clause in intermedia
+ * search
+ */
+ private final Parameter m_scoreTitleAndKeywords =
+ new BooleanParameter(
+ "com.arsdigita.cms.search.score_title_and_keywords",
+ Parameter.OPTIONAL,
+ Boolean.FALSE);
+ /**
+ * Title Weight, the relative weight given to title element within
+ * cms:item when ranking search results (only used by interMedia)
+ */
+ private final Parameter m_titleWeight = new IntegerParameter(
+ "com.arsdigita.cms.search.intermedia.title_weight",
+ Parameter.OPTIONAL,
+ new Integer(1));
+ /**
+ * Keyword Weight, the relative weight given to the dcKeywords element
+ * within dublinCore element within cms:item element when ranking search
+ * results (only used by interMedia)
+ */
+ private final Parameter m_keywordWeight =
+ new IntegerParameter(
+ "com.arsdigita.cms.search.intermedia.keyword_weight",
+ Parameter.OPTIONAL,
+ new Integer(1));
+ /**
+ * Limit the item search to current content section
+ */
+ private final Parameter m_limitToContentSection =
+ new BooleanParameter(
+ "com.arsdigita.cms.search.limitToContentSection",
+ Parameter.OPTIONAL,
+ Boolean.TRUE);
+ /**
+ * Asset steps to skip, specify asset steps that are not relevant for
+ * specific content types. Each entry in the list is a : separated pair.
+ * The first string is the className for the type (refer to classname
+ * column in contenttypes table eg
+ * com.arsdigita.cms.contenttypes.MultiPartArticle Second string is the
+ * name of the bebop step component eg
+ * com.arsdigita.cms.contenttypes.ui.ImageStep
+ */
+ private final Parameter m_skipAssetSteps = new StringArrayParameter(
+ "com.arsdigita.cms.skip_asset_steps",
+ Parameter.OPTIONAL,
+ null);
+ /**
+ * Mandatory Descriptions Content types may refer to this to decide
+ * whether to validate against empty descriptions
+ */
+ private final Parameter m_mandatoryDescriptions = new BooleanParameter(
+ "com.arsdigita.cms.mandatory_descriptions",
+ Parameter.OPTIONAL,
+ Boolean.FALSE);
+ /**
+ * Delete Finished Lifecycles. Decide whether lifecycles and their
+ * phases should be deleted from the system when finished.
+ */
+ private final Parameter m_deleteLifecycleWhenComplete =
+ new BooleanParameter(
+ "com.arsdigita.cms.delete_lifecycle_when_complete",
+ Parameter.OPTIONAL,
+ Boolean.FALSE);
+ /**
+ * Contacts for content items. Allows you to add a Contact authoring
+ * step to all items
+ */
+ private final Parameter m_hasContactsAuthoringStep = new BooleanParameter(
+ "com.arsdigita.cms.has_contacts_authoring_step",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Ordering for nodes in assign category tree. Decide whether entries
+ * should be ordered alphabetically or according to sort key (maintained
+ * in category admin tab in content centre) SortKey|Alphabetical is
+ * initialized in constructor! See below.
+ */
+ private final Parameter m_categoryTreeOrdering =
+ new EnumerationParameter(
+ "com.arsdigita.cms.category_tree_order",
+ Parameter.OPTIONAL,
+ Category.SORT_KEY);
+ /**
+ * Allow creation of a new Use Context in category tab of content
+ * sections. "Use Context" is the construct to constitute a category
+ * hierarchy implementet in core. It is superseded by the construct
+ * "Category Domain" in Terms (ccm-ldn-terms). Global parameter for all
+ * content sections. Default is false because all installation bundles
+ * use Terms.
+ */
+ private final Parameter m_allowCategoryCreateUseContext =
+ new BooleanParameter(
+ "com.arsdigita.cms.allow_category_create_use_context",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Allow content creation in Workspace (content center) section listing.
+ * Allows you to turn off the ability to create content in the section
+ * listing
+ */
+ private final Parameter m_allowContentCreateInSectionListing =
+ new BooleanParameter(
+ "com.arsdigita.cms.allow_content_create_in_section_listing",
+ Parameter.REQUIRED,
+ Boolean.TRUE);
+ /**
+ * Hide the legacy public site link in Workspace (content center)
+ * section listing. Legacy public site display is replaced by navigation
+ * based presentation (or by portlets) and should be hidden in the admin
+ * ui by default now.
+ */
+ private final Parameter m_hideLegacyPublicSiteLink =
+ new BooleanParameter(
+ "com.arsdigita.cms.hide_legacy_public_site_link",
+ Parameter.REQUIRED,
+ Boolean.TRUE);
+ // ///////////////////////////////////////////
+ // Notification related parameters
+ // ///////////////////////////////////////////
+ /**
+ * Delete Sent Workflow Notifications. Decide whether successfully sent
+ * notifications and messages should be deleted from the system
+ */
+ private final Parameter m_deleteWorkflowNotificationsWhenSent =
+ new BooleanParameter(
+ "com.arsdigita.cms.delete_workflow_notification_when_sent",
+ Parameter.OPTIONAL,
+ Boolean.FALSE);
+ /**
+ * Decide whether successfully sent notifications and messages should be
+ * deleted from the system
+ */
+ private final Parameter m_deleteExpiryNotificationsWhenSent =
+ new BooleanParameter(
+ "com.arsdigita.cms.delete_expiry_notification_when_sent",
+ Parameter.OPTIONAL,
+ Boolean.FALSE);
+ /**
+ * Amount of time (in hours) before the expiration of a content item
+ * that users in the Alert Recipient role are alerted via email
+ */
+ private final Parameter m_defaultNotificationTime = new IntegerParameter(
+ "com.arsdigita.cms.default_notification_time",
+ Parameter.REQUIRED,
+ new Integer(0));
+ /**
+ * Wether a content item's author should be notified by the item's
+ * LifecycleListener; defaults to true
+ */
+ private final Parameter m_notifyAuthorOnLifecycle = new BooleanParameter(
+ "com.arsdigita.cms.notify_author_on_lifecycle",
+ Parameter.OPTIONAL,
+ Boolean.TRUE);
+ // ////////////////////////////////////////////////////
+ // Content Center (Workspace) config related parameters
+ // ////////////////////////////////////////////////////
+ /**
+ * XML Mapping of the content center tabs to URLs, see
+ * {@link ContentCenterDispatcher}
+ */
+ private final StringParameter m_contentCenterMap = new StringParameter(
+ "com.arsdigita.cms.loader.content_center_map",
+ Parameter.REQUIRED,
+ "/WEB-INF/resources/content-center-map.xml");
+ // ///////////////////////////////////////////
+ // Content Section config related parameters
+ // ///////////////////////////////////////////
// Nolonger used,
// replaced by c.ad.cms.ContentSection.getDefaultSection().getName()
// private final Parameter m_defaultSection = new StringParameter(
// "com.arsdigita.cms.default_content_section",
// Parameter.REQUIRED,
// "content");
- // ///////////////////////////////////////////
- // Content Section creation parameters
- // XXX these are probably temporary parameters, as the
- // item/template resolvers will be determined by the successor
- // to SectionInitializer. However, it still may be useful to
- // keep these for the default values.
- // ///////////////////////////////////////////
- private final Parameter m_defaultItemResolverClass =
- new SpecificClassParameter(
- "com.arsdigita.cms.default_item_resolver_class",
- Parameter.REQUIRED,
- MultilingualItemResolver.class,
- ItemResolver.class);
- private final Parameter m_defaultTemplateResolverClass =
- new SpecificClassParameter(
- "com.arsdigita.cms.default_template_resolver_class",
- Parameter.REQUIRED,
- DefaultTemplateResolver.class,
- TemplateResolver.class);
- /////////////////////////////////////////////
- // ItemSearchWidget
- /////////////////////////////////////////////
- private final Parameter m_itemSearchDefaultTab =
- new StringParameter(
- "com.arsdigita.cms.item_search.default_tab",
- Parameter.REQUIRED, "flatBrowse");
+ // ///////////////////////////////////////////
+ // Content Section creation parameters
+ // XXX these are probably temporary parameters, as the
+ // item/template resolvers will be determined by the successor
+ // to SectionInitializer. However, it still may be useful to
+ // keep these for the default values.
+ // ///////////////////////////////////////////
+ private final Parameter m_defaultItemResolverClass =
+ new SpecificClassParameter(
+ "com.arsdigita.cms.default_item_resolver_class",
+ Parameter.REQUIRED,
+ MultilingualItemResolver.class,
+ ItemResolver.class);
+ private final Parameter m_defaultTemplateResolverClass =
+ new SpecificClassParameter(
+ "com.arsdigita.cms.default_template_resolver_class",
+ Parameter.REQUIRED,
+ DefaultTemplateResolver.class,
+ TemplateResolver.class);
+ /////////////////////////////////////////////
+ // ItemSearchWidget
+ /////////////////////////////////////////////
+ private final Parameter m_itemSearchDefaultTab =
+ new StringParameter(
+ "com.arsdigita.cms.item_search.default_tab",
+ Parameter.REQUIRED, "flatBrowse");
// private final Parameter m_itemSearchFlatBrowsePaneEnable = new BooleanParameter(
// "com.arsdigita.cms.item_search.flat_browse_pane.enable",
// Parameter.REQUIRED,
// true);
- private final Parameter m_itemSearchFlatBrowsePanePageSize = new IntegerParameter(
- "com.arsdigita.cms.item_search.flat_browse_pane.page_size",
- Parameter.REQUIRED,
- 20);
- /////////////////////////////////////////////
- // FolderBrowse
- /////////////////////////////////////////////
- private final Parameter m_folderBrowseListSize = new IntegerParameter(
- "com.arsdigita.cms.folder_browse_list_size",
- Parameter.REQUIRED,
- 20);
- /////////////////////////////////////////////
- // Folder A to Z show limit: Display a A to Z filter bar when a folder has more than x items
- /////////////////////////////////////////////
- private final Parameter m_folderAtoZShowLimit = new IntegerParameter(
- "com.arsdigita.cms.folder_atoz_show_limit",
- Parameter.REQUIRED,
- 100);
- //////////////////////////////////////////////
- //If set to true the old style ItemLifecycleItemPane (allows you to
- //republish and withdraw items) is used. Otherwise the new style form is
- //used, which is more secure against wrong clicks.
- //////////////////////////////////////////////
- private final Parameter m_useOldStyleItemLifecycleItemPane =
- new BooleanParameter(
- "com.arsdigita.cms.lifecycle.use_old_style_item_lifecycle_item_pane",
- Parameter.REQUIRED,
- false);
- ////////////////////////////////////////////////
- //Actives threaded publishing. If active, the publish process for
- //content items will run in a separate thread. May useful if you have
- //large objects.
- ////////////////////////////////////////////////////
- private final Parameter m_threadPublishing = new BooleanParameter(
- "com.arsdigita.cms.lifecycle.threaded_publishing",
- Parameter.REQUIRED,
- true);
- private final Parameter m_publishingFailureSender = new StringParameter(
- "cms.arsdigita.cms.lifecycle.threaded_publishing.notify_on_error.from",
- Parameter.REQUIRED,
- "");
- private final Parameter m_publishingFailureReceiver = new StringParameter(
- "cms.arsdigita.cms.lifecycle.threaded_publishing.notify_on_error.to",
- Parameter.REQUIRED,
- "");
- /////////////////////////////////////////////////
- // ImageBrowser Parameter
- /////////////////////////////////////////////////
- private final Parameter m_imageBrowserThumbnailMaxWidth = new IntegerParameter(
- "com.arsdigita.cms.image_browser.thumbnail_max_width",
- Parameter.REQUIRED,
- 50);
- private final Parameter m_imageBrowserThumbnailMaxHeight = new IntegerParameter(
- "com.arsdigita.cms.image_browser.thumbnail_max_height",
- Parameter.REQUIRED,
- 50);
- /////////////////////////////////////////////////
- // ImageCache Parameter
- /////////////////////////////////////////////////
- private final Parameter m_imageCacheEnabled = new BooleanParameter(
- "com.arsdigita.cms.image_cache.enable",
- Parameter.REQUIRED,
- true);
- private final Parameter m_imageCachePrefetchEnabled = new BooleanParameter(
- "com.arsdigita.cms.image_cache.prefetch_enable",
- Parameter.REQUIRED,
- false);
- private final Parameter m_imageCacheMaxSize = new IntegerParameter(
- "com.arsdigita.cms.image_cache.max_size",
- Parameter.REQUIRED,
- 100);
- private final Parameter m_imageCacheMaxAge = new IntegerParameter(
- "com.arsdigita.cms.image_cache.max_age",
- Parameter.REQUIRED,
- 300);
- /**
- * Enable the PersonOrgaUnitsStep?
- */
- private final Parameter m_attachPersonOrgaUnitsStep = new BooleanParameter(
- "com.arsdigita.cms.contenttypes.genericperson.attach_person_orgaunits_step",
- Parameter.REQUIRED,
- Boolean.TRUE);
-
- private final Parameter m_personOrgaUnitsStepSortKey = new BooleanParameter(
- "com.arsdigita.cms.contenttypes.genericperson.person_orgaunits_step_sortkey",
- Parameter.REQUIRED,
- 20);
-
- /**
- * Enable or disable the XML cache in {@link SimpleXMLGenerator}
- */
- private final Parameter m_enableXmlCache = new BooleanParameter(
- "com.arsdigita.cms.xml.cache.enable",
- Parameter.REQUIRED,
- Boolean.FALSE);
- /**
- * Maximum number of items stored in the XML cache
- *
- */
- private final Parameter m_xmlCacheSize = new IntegerParameter(
- "com.arsdigita.cms.xml.cache.size",
- Parameter.REQUIRED,
- 2500);
- /**
- * Maximum age of cache entry for the XML cache
- *
- */
- private final Parameter m_xmlCacheAge = new IntegerParameter(
- "com.arsdigita.cms.xml.cache.age",
- Parameter.REQUIRED,
- 60 * 60 * 24);
+ private final Parameter m_itemSearchFlatBrowsePanePageSize = new IntegerParameter(
+ "com.arsdigita.cms.item_search.flat_browse_pane.page_size",
+ Parameter.REQUIRED,
+ 20);
+ /////////////////////////////////////////////
+ // FolderBrowse
+ /////////////////////////////////////////////
+ private final Parameter m_folderBrowseListSize = new IntegerParameter(
+ "com.arsdigita.cms.folder_browse_list_size",
+ Parameter.REQUIRED,
+ 20);
+ /////////////////////////////////////////////
+ // Folder A to Z show limit: Display a A to Z filter bar when a folder has more than x items
+ /////////////////////////////////////////////
+ private final Parameter m_folderAtoZShowLimit = new IntegerParameter(
+ "com.arsdigita.cms.folder_atoz_show_limit",
+ Parameter.REQUIRED,
+ 100);
+ //////////////////////////////////////////////
+ //If set to true the old style ItemLifecycleItemPane (allows you to
+ //republish and withdraw items) is used. Otherwise the new style form is
+ //used, which is more secure against wrong clicks.
+ //////////////////////////////////////////////
+ private final Parameter m_useOldStyleItemLifecycleItemPane =
+ new BooleanParameter(
+ "com.arsdigita.cms.lifecycle.use_old_style_item_lifecycle_item_pane",
+ Parameter.REQUIRED,
+ false);
+ ////////////////////////////////////////////////
+ //Actives threaded publishing. If active, the publish process for
+ //content items will run in a separate thread. May useful if you have
+ //large objects.
+ ////////////////////////////////////////////////////
+ private final Parameter m_threadPublishing = new BooleanParameter(
+ "com.arsdigita.cms.lifecycle.threaded_publishing",
+ Parameter.REQUIRED,
+ true);
+ private final Parameter m_publishingFailureSender = new StringParameter(
+ "cms.arsdigita.cms.lifecycle.threaded_publishing.notify_on_error.from",
+ Parameter.REQUIRED,
+ "");
+ private final Parameter m_publishingFailureReceiver = new StringParameter(
+ "cms.arsdigita.cms.lifecycle.threaded_publishing.notify_on_error.to",
+ Parameter.REQUIRED,
+ "");
+ /////////////////////////////////////////////////
+ // ImageBrowser Parameter
+ /////////////////////////////////////////////////
+ private final Parameter m_imageBrowserThumbnailMaxWidth = new IntegerParameter(
+ "com.arsdigita.cms.image_browser.thumbnail_max_width",
+ Parameter.REQUIRED,
+ 50);
+ private final Parameter m_imageBrowserThumbnailMaxHeight = new IntegerParameter(
+ "com.arsdigita.cms.image_browser.thumbnail_max_height",
+ Parameter.REQUIRED,
+ 50);
+ private final Parameter m_imageBrowserCaptionSize = new IntegerParameter(
+ "com.arsdigita.cms.image_browser.caption_size",
+ Parameter.REQUIRED,
+ 100);
+ private final Parameter m_imageBrowserDescriptionSize = new IntegerParameter(
+ "com.arsdigita.cms.image_browser.description_size",
+ Parameter.REQUIRED,
+ 400);
+ private final Parameter m_imageBrowserTitleSize = new IntegerParameter(
+ "com.arsdigita.cms.image_browser.title_size",
+ Parameter.REQUIRED,
+ 200);
+ /////////////////////////////////////////////////
+ // ImageCache Parameter
+ /////////////////////////////////////////////////
+ private final Parameter m_imageCacheEnabled = new BooleanParameter(
+ "com.arsdigita.cms.image_cache.enable",
+ Parameter.REQUIRED,
+ true);
+ private final Parameter m_imageCachePrefetchEnabled = new BooleanParameter(
+ "com.arsdigita.cms.image_cache.prefetch_enable",
+ Parameter.REQUIRED,
+ false);
+ private final Parameter m_imageCacheMaxSize = new IntegerParameter(
+ "com.arsdigita.cms.image_cache.max_size",
+ Parameter.REQUIRED,
+ 100);
+ private final Parameter m_imageCacheMaxAge = new IntegerParameter(
+ "com.arsdigita.cms.image_cache.max_age",
+ Parameter.REQUIRED,
+ 300);
+ /**
+ * Enable the PersonOrgaUnitsStep?
+ */
+ private final Parameter m_attachPersonOrgaUnitsStep = new BooleanParameter(
+ "com.arsdigita.cms.contenttypes.genericperson.attach_person_orgaunits_step",
+ Parameter.REQUIRED,
+ Boolean.TRUE);
+ private final Parameter m_personOrgaUnitsStepSortKey = new BooleanParameter(
+ "com.arsdigita.cms.contenttypes.genericperson.person_orgaunits_step_sortkey",
+ Parameter.REQUIRED,
+ 20);
+ /**
+ * Enable or disable the XML cache in {@link SimpleXMLGenerator}
+ */
+ private final Parameter m_enableXmlCache = new BooleanParameter(
+ "com.arsdigita.cms.xml.cache.enable",
+ Parameter.REQUIRED,
+ Boolean.FALSE);
+ /**
+ * Maximum number of items stored in the XML cache
+ *
+ */
+ private final Parameter m_xmlCacheSize = new IntegerParameter(
+ "com.arsdigita.cms.xml.cache.size",
+ Parameter.REQUIRED,
+ 2500);
+ /**
+ * Maximum age of cache entry for the XML cache
+ *
+ */
+ private final Parameter m_xmlCacheAge = new IntegerParameter(
+ "com.arsdigita.cms.xml.cache.age",
+ Parameter.REQUIRED,
+ 60 * 60 * 24);
- // ///////////////////////////////////////////
- // publishToFile package related parameter
- // ///////////////////////////////////////////
- // Moved to publishToFile.PublishToFileConfig as of version 6.0.2
- // private final Parameter m_disableItemPfs;
- // private final Parameter m_publishToFileClass;
- /**
- * Constructor, but do NOT instantiate this class directly.
- *
- * @see ContentSection#getConfig()
- *
- */
- public CMSConfig() {
+ // ///////////////////////////////////////////
+ // publishToFile package related parameter
+ // ///////////////////////////////////////////
+ // Moved to publishToFile.PublishToFileConfig as of version 6.0.2
+ // private final Parameter m_disableItemPfs;
+ // private final Parameter m_publishToFileClass;
+ /**
+ * Constructor, but do NOT instantiate this class directly.
+ *
+ * @see ContentSection#getConfig()
+ *
+ */
+ public CMSConfig() {
- // Initialize m_categoryTreeOrdering parameter here!
- // 2 valid values at the moment - enumeration used rather than boolean
- // in case other possible orders are deemed valid
- ((EnumerationParameter) m_categoryTreeOrdering).put("SortKey",
- Category.SORT_KEY);
- ((EnumerationParameter) m_categoryTreeOrdering).put("Alphabetical",
- Category.NAME);
+ // Initialize m_categoryTreeOrdering parameter here!
+ // 2 valid values at the moment - enumeration used rather than boolean
+ // in case other possible orders are deemed valid
+ ((EnumerationParameter) m_categoryTreeOrdering).put("SortKey",
+ Category.SORT_KEY);
+ ((EnumerationParameter) m_categoryTreeOrdering).put("Alphabetical",
+ Category.NAME);
- register(m_templateRootPath);
- register(m_defaultItemTemplatePath);
- register(m_defaultFolderTemplatePath);
- register(m_categoryAuthoringAddForm);
- register(m_itemAdapters);
- register(m_useStreamlinedCreation);
- register(m_dhtmlEditorConfig);
- register(m_dhtmlEditorPlugins);
- register(m_dhtmlEditorHiddenButtons);
- register(m_hideTemplatesTab);
- register(m_hideAdminTabs);
- register(m_hideTimezone);
- register(m_hideLaunchDate);
- register(m_requireLaunchDate);
- register(m_hideUDCTUI);
- register(m_hideFolderIndexCheckbox);
- register(m_defaultNotificationTime);
- register(m_publishLifecycleListenerClass);
- register(m_notifyAuthorOnLifecycle);
- register(m_saveTextCleansWordTags);
- register(m_disableFileAssetExtraction);
- register(m_deleteWorkflowAfterPublication);
- register(m_soonExpiredTimespanMonths);
- register(m_soonExpiredTimespanDays);
- register(m_unpublishedNotFound);
- register(m_linksOnlyInSameSubsite);
- register(m_categoryAuthoringExtension);
- register(m_hideResetLifecycleLink);
- register(m_keywordWeight);
- register(m_limitToContentSection);
- register(m_titleWeight);
- register(m_scoreTitleAndKeywords);
- register(m_skipAssetSteps);
- register(m_mandatoryDescriptions);
- register(m_deleteLifecycleWhenComplete);
- register(m_deleteExpiryNotificationsWhenSent);
- register(m_deleteWorkflowNotificationsWhenSent);
- register(m_categoryTreeOrdering);
- register(m_hasContactsAuthoringStep);
- register(m_hideTextAssetUploadFile);
- register(m_allowCategoryCreateUseContext);
- register(m_allowContentCreateInSectionListing);
- register(m_hideLegacyPublicSiteLink);
+ register(m_templateRootPath);
+ register(m_defaultItemTemplatePath);
+ register(m_defaultFolderTemplatePath);
+ register(m_categoryAuthoringAddForm);
+ register(m_itemAdapters);
+ register(m_useStreamlinedCreation);
+ register(m_dhtmlEditorConfig);
+ register(m_dhtmlEditorPlugins);
+ register(m_dhtmlEditorHiddenButtons);
+ register(m_hideTemplatesTab);
+ register(m_hideAdminTabs);
+ register(m_hideTimezone);
+ register(m_hideLaunchDate);
+ register(m_requireLaunchDate);
+ register(m_hideUDCTUI);
+ register(m_hideFolderIndexCheckbox);
+ register(m_defaultNotificationTime);
+ register(m_publishLifecycleListenerClass);
+ register(m_notifyAuthorOnLifecycle);
+ register(m_saveTextCleansWordTags);
+ register(m_disableFileAssetExtraction);
+ register(m_deleteWorkflowAfterPublication);
+ register(m_soonExpiredTimespanMonths);
+ register(m_soonExpiredTimespanDays);
+ register(m_unpublishedNotFound);
+ register(m_linksOnlyInSameSubsite);
+ register(m_categoryAuthoringExtension);
+ register(m_hideResetLifecycleLink);
+ register(m_keywordWeight);
+ register(m_limitToContentSection);
+ register(m_titleWeight);
+ register(m_scoreTitleAndKeywords);
+ register(m_skipAssetSteps);
+ register(m_mandatoryDescriptions);
+ register(m_deleteLifecycleWhenComplete);
+ register(m_deleteExpiryNotificationsWhenSent);
+ register(m_deleteWorkflowNotificationsWhenSent);
+ register(m_categoryTreeOrdering);
+ register(m_hasContactsAuthoringStep);
+ register(m_hideTextAssetUploadFile);
+ register(m_allowCategoryCreateUseContext);
+ register(m_allowContentCreateInSectionListing);
+ register(m_hideLegacyPublicSiteLink);
- // Content Center (Workspace) config related parameters
- register(m_contentCenterMap);
+ // Content Center (Workspace) config related parameters
+ register(m_contentCenterMap);
- // Content Section config related parameters
- // register(m_defaultSection);
+ // Content Section config related parameters
+ // register(m_defaultSection);
- // Content Section creation parameters
- register(m_defaultItemResolverClass);
- register(m_defaultTemplateResolverClass);
+ // Content Section creation parameters
+ register(m_defaultItemResolverClass);
+ register(m_defaultTemplateResolverClass);
- register(m_itemSearchDefaultTab);
+ register(m_itemSearchDefaultTab);
- register(m_folderBrowseListSize);
- register(m_folderAtoZShowLimit);
+ register(m_folderBrowseListSize);
+ register(m_folderAtoZShowLimit);
- register(m_useOldStyleItemLifecycleItemPane);
- register(m_threadPublishing);
- register(m_publishingFailureSender);
- register(m_publishingFailureReceiver);
+ register(m_useOldStyleItemLifecycleItemPane);
+ register(m_threadPublishing);
+ register(m_publishingFailureSender);
+ register(m_publishingFailureReceiver);
- // ImageBrowser
- register(m_imageBrowserThumbnailMaxWidth);
- register(m_imageBrowserThumbnailMaxHeight);
+ // ImageBrowser
+ register(m_imageBrowserThumbnailMaxWidth);
+ register(m_imageBrowserThumbnailMaxHeight);
+ register(m_imageBrowserCaptionSize);
+ register(m_imageBrowserDescriptionSize);
+ register(m_imageBrowserTitleSize);
- // ImageCache Parameter
- register(m_imageCacheEnabled);
- register(m_imageCachePrefetchEnabled);
- register(m_imageCacheMaxSize);
- register(m_imageCacheMaxAge);
+ // ImageCache Parameter
+ register(m_imageCacheEnabled);
+ register(m_imageCachePrefetchEnabled);
+ register(m_imageCacheMaxSize);
+ register(m_imageCacheMaxAge);
- // publishToFile package related parameter
- // Moved to publishToFile.PublishToFileConfig as of version 6.0.2
- // register(m_disableItemPfs);
- // register(m_publishToFileClass);
+ // publishToFile package related parameter
+ // Moved to publishToFile.PublishToFileConfig as of version 6.0.2
+ // register(m_disableItemPfs);
+ // register(m_publishToFileClass);
// register(m_itemSearchFlatBrowsePaneEnable);
- register(m_itemSearchFlatBrowsePanePageSize);
-
- register(m_attachPersonOrgaUnitsStep);
- register(m_personOrgaUnitsStepSortKey);
-
- register(m_enableXmlCache);
- register(m_xmlCacheSize);
- register(m_xmlCacheAge);
-
- loadInfo();
- }
-
- /**
- * Retrieve path of the root folter for template folders. Path is relative
- * to webapp root.
- */
- public final String getTemplateRoot() {
- return (String) get(m_templateRootPath);
- }
-
- public final String getDefaultItemTemplatePath() {
- return (String) get(m_defaultItemTemplatePath);
- }
-
- public final String getDefaultFolderTemplatePath() {
- return (String) get(m_defaultFolderTemplatePath);
- }
-
- public final Class getDefaultItemResolverClass() {
- return (Class) get(m_defaultItemResolverClass);
- }
-
- public final Class getDefaultTemplateResolverClass() {
- return (Class) get(m_defaultTemplateResolverClass);
- }
-
- public final Class getCategoryAuthoringAddForm() {
- return (Class) get(m_categoryAuthoringAddForm);
- }
-
- public final InputStream getItemAdapters() {
- // URL resource: protocol handler removal: START
- // remove:
- // try {
- // return ((URL)get(m_itemAdapters)).openStream();
- // } catch (IOException ex) {
- // throw new UncheckedWrapperException("Cannot read stream", ex);
- // }
- // ADD:
- return (InputStream) get(m_itemAdapters);
- }
-
- /**
- *
- * @deprecated use
- * com.arsdigita.cms.ContentSection.getDefaultSection().getName() instead
- */
- public final String getDefaultContentSection() {
- // return (String) get(m_defaultSection);
- return (String) ContentSection.getDefaultSection().getName();
- }
-
- public final boolean getUseStreamlinedCreation() {
- return ((Boolean) get(m_useStreamlinedCreation)).booleanValue();
- }
-
- public final DHTMLEditor.Config getDHTMLEditorConfig() {
- return (DHTMLEditor.Config) get(m_dhtmlEditorConfig);
- }
-
- public final String[] getDHTMLEditorPlugins() {
- return (String[]) get(m_dhtmlEditorPlugins);
- }
-
- public final String[] getDHTMLEditorHiddenButtons() {
- return (String[]) get(m_dhtmlEditorHiddenButtons);
- }
-
- public final boolean getHideTemplatesTab() {
- return ((Boolean) get(m_hideTemplatesTab)).booleanValue();
- }
-
- public final boolean getHideAdminTabs() {
- return ((Boolean) get(m_hideAdminTabs)).booleanValue();
- }
-
- public final boolean getHideTimezone() {
- return ((Boolean) get(m_hideTimezone)).booleanValue();
- }
-
- public final boolean getHideLaunchDate() {
- return ((Boolean) get(m_hideLaunchDate)).booleanValue();
- }
-
- public final boolean getRequireLaunchDate() {
- return ((Boolean) get(m_requireLaunchDate)).booleanValue();
- }
-
- public final boolean getHideUDCTUI() {
- return ((Boolean) get(m_hideUDCTUI)).booleanValue();
- }
-
- public final boolean getHideFolderIndexCheckbox() {
- return ((Boolean) get(m_hideFolderIndexCheckbox)).booleanValue();
- }
-
- public final int getDefaultNotificationTime() {
- return ((Integer) get(m_defaultNotificationTime)).intValue();
- }
-
- public final String getPublishLifecycleListenerClass() {
- return (String) get(m_publishLifecycleListenerClass);
- }
-
- public final boolean getNotifyAuthorOnLifecycle() {
- return ((Boolean) get(m_notifyAuthorOnLifecycle)).booleanValue();
- }
-
- public final boolean getSaveTextCleansWordTags() {
- return ((Boolean) get(m_saveTextCleansWordTags)).booleanValue();
- }
-
- public final boolean getDisableFileAssetExtraction() {
- return ((Boolean) get(m_disableFileAssetExtraction)).booleanValue();
- }
-
- public final boolean getDeleteWorkflowAfterPublication() {
- return ((Boolean) get(m_deleteWorkflowAfterPublication)).booleanValue();
- }
-
- public final boolean getLinksOnlyInSameSubsite() {
- return ((Boolean) get(m_linksOnlyInSameSubsite)).booleanValue();
- }
-
- public final int getSoonExpiredMonths() {
- return ((Integer) get(m_soonExpiredTimespanMonths)).intValue();
- }
-
- public final int getSoonExpiredDays() {
- return ((Integer) get(m_soonExpiredTimespanDays)).intValue();
- }
-
- public final boolean isUnpublishedNotFound() {
- return ((Boolean) get(m_unpublishedNotFound)).booleanValue();
- }
-
- public final Class getCategoryAuthoringExtension() {
- return (Class) get(m_categoryAuthoringExtension);
- }
-
- // ///////////////////////////////////////////
- // publishToFile package related configuration
- // ///////////////////////////////////////////
- // Moved to publishToFile.PublishToFileConfig! Temporarily retained here
- // for backwards compatibility
- public final boolean getDisableItemPfs() {
- // return ((Boolean) get(m_disableItemPfs)).booleanValue();
- return PublishToFileConfig.getConfig().isItemPfsDisabled();
- }
-
- public final Class getPublishToFileClass() {
- // return (Class) get(m_publishToFileClass);
- return PublishToFileConfig.getConfig().getPublishListenerClass();
- }
-
- /**
- * Fetch the file name contaning XML Mapping of the content center tabs to
- * URLs
- *
- * @return String containig file name including path component.
- */
- public String getContentCenterMap() {
- return (String) get(m_contentCenterMap);
- }
-
- /**
- * Internal class representing a DHTMLEditor configuration parameter. It
- * creates a new DHMTLEditor Config object (internal class in DHTMLEditor).
- *
- * XXX Method unmarshal is broken and currently does not work correctly. It
- * does not process default values provided by using
- * DHTMLEditor.Config.Standard (see parameter m_dhtmlEditorConfig above).
- * May be a similiar problem as with ResourceParameter and default value,
- * see patch provided by pbrucha. Best solution may be to remove this
- * special parameter class and use a string parameter instead to directly
- * create a DHTMLEditor.Config object. (pboy, 2010-09-02)
- */
- private class DHTMLEditorConfigParameter extends StringParameter {
-
- public DHTMLEditorConfigParameter(final String name,
- final int multiplicity,
- final Object defaultObj) {
- super(name, multiplicity, defaultObj);
- }
-
- /**
- * WARNING: Does not correctly process default values, see above!
- *
- * @param value
- * @param errors
- * @return
- */
- @Override
- protected Object unmarshal(String value, ErrorList errors) {
- return DHTMLEditor.Config.valueOf(value);
- }
-
- }
- protected static HashMap extraXMLGenerators = new HashMap();
-
- /**
- * Add one ExtraXMLGenerator to the list.
- */
- public static void registerExtraXMLGenerator(String type,
- ExtraXMLGenerator gen) {
- List gens = (List) extraXMLGenerators.get(type);
- if (gens == null) {
- gens = new LinkedList();
- extraXMLGenerators.put(type, gens);
- }
- // Store class reference so it can be recreated for each page.
- // This requires a fix to all components using extraXMLGenerators,
- // for example see the currently only one in core/cms: GreetingItemExtraXML
- gens.add(gen.getClass()); // XXX assumes default ctor
- }
-
- /**
- * Get the iterator of ExtraXMLGenerators.
- */
- public static Iterator getExtraXMLGeneratorsIterator() {
- return extraXMLGenerators.entrySet().iterator();
- }
-
- public final boolean hideResetLifecycleLink() {
- return ((Boolean) get(m_hideResetLifecycleLink)).booleanValue();
- }
-
- /**
- * The relative weight given to the dcKeywords element within dublinCore
- * element within cms:item element when ranking search results Only used by
- * the interMedia query engine.
- *
- */
- public Integer getKeywordSearchWeight() {
- return (Integer) get(m_keywordWeight);
- }
-
- public final boolean limitToContentSection() {
- return ((Boolean) get(m_limitToContentSection)).booleanValue();
- }
-
- /**
- * The relative weight given to title element within cms:item element when
- * ranking search results Only used by the interMedia query engine.
- *
- */
- public Integer getTitleSearchWeight() {
- return (Integer) get(m_titleWeight);
- }
-
- /**
- * Whether to include INPATH operators to contains clause in intermedia
- * search
- *
- * NB - if true, INDEX MUST BE CREATED WITH PATH_SECTION_GROUP - upgrade
- * 6.5.0 - 6.5.1
- *
- * @return
- */
- public boolean scoreKeywordsAndTitle() {
- return ((Boolean) get(m_scoreTitleAndKeywords)).booleanValue();
- }
-
- /**
- * for the given content type, returns a collection of steps that are deemed
- * irrelevant for the type.
- *
- * If no irrelevant steps, an empty set is returned.
- *
- * Steps are the names of the bebop step components that are used by the
- * authoring kit wizard
- *
- * @param type
- * @return
- */
- public Collection getAssetStepsToSkip(ContentType type) {
- s_log.debug("getting asset steps to skip for type "
- + type.getClassName());
- if (s_skipAssetSteps == null) {
- // populate static map once based on config parameter value
- s_log.debug("loading skipsteps");
- s_skipAssetSteps = new HashMap();
- String[] skipSteps = (String[]) get(m_skipAssetSteps);
- if (skipSteps != null) {
-
- s_log.debug(skipSteps.length + " entries in parameter");
- for (int i = 0; i < skipSteps.length; i++) {
- String[] pair = StringUtils.split(skipSteps[i], ':');
- // 1st string is name of content type, 2nd string is name of asset step
- s_log.debug("parameter read - type = " + pair[0]
- + " - step = " + pair[1]);
- Collection typeSteps =
- (Collection) s_skipAssetSteps.get(pair[0]);
- if (typeSteps == null) {
- typeSteps = new HashSet();
- s_skipAssetSteps.put(pair[0], typeSteps);
-
- }
- typeSteps.add(pair[1]);
-
- }
- }
-
- }
- Collection skipSteps = (Collection) s_skipAssetSteps.get(type.
- getClassName());
- if (skipSteps == null) {
- s_log.debug("no steps to skip");
- skipSteps = new HashSet();
- }
- return skipSteps;
-
- }
-
- /**
- * May be used by any content type creation form to decide whether to
- * validate description field
- *
- */
- public boolean mandatoryDescriptions() {
- return ((Boolean) get(m_mandatoryDescriptions)).booleanValue();
- }
-
- /**
- * Used to decide whether lifecycles (and all asociated phases) should be
- * deleted from the system when complete
- *
- * (Deleting lifecycle means that you lose a bit of historical information
- * eg when was this item unpublished)
- */
- public boolean deleteFinishedLifecycles() {
- return ((Boolean) get(m_deleteLifecycleWhenComplete)).booleanValue();
- }
-
- /**
- * Used to decide whether to delete old notification records for expiry
- * notifications.
- *
- * If true, notifications and messages are deleted if the notification is
- * successfully sent. Any send failures are retained
- *
- */
- public boolean deleteExpiryNotifications() {
- return ((Boolean) get(m_deleteExpiryNotificationsWhenSent)).booleanValue();
- }
-
- /**
- * Used to decide whether to delete old notification records for workflow
- * notifications.
- *
- * If true, notifications and messages are deleted if the notification is
- * successfully sent. Any send failures are retained
- *
- */
- public boolean deleteWorkflowNotifications() {
- return ((Boolean) get(m_deleteWorkflowNotificationsWhenSent)).
- booleanValue();
- }
-
- public String getCategoryTreeOrder() {
- return (String) get(m_categoryTreeOrdering);
- }
-
- /**
- * I'am not sure for what this method is. I found it here when I tried
- * figure out how add multiple parts to an ContentType, like
- * ccm-cms-types-contact and the Multipart article do. I think this method
- * should not be here because it is only needed by one specific contenttype.
- * Because of this, I think that this method and the contact are violating
- * many rules of modern software design. Jens Pelzetter, 2009-06-02.
- *
- * @return
- */
- public boolean getHasContactsAuthoringStep() {
- return ((Boolean) get(m_hasContactsAuthoringStep)).booleanValue();
- }
-
- public final boolean getHideTextAssetUploadFile() {
- return ((Boolean) get(m_hideTextAssetUploadFile)).booleanValue();
- }
-
- /**
- * Retrieve whether to allow creation of a new Use Context in category tab
- * of content sections. "Use Context" is used to constitute a category
- * hierarchy in core. It is superseded by the construct "Category Domain"
- * in Terms (ccm-ldn-terms).
- * Global parameter for all content sections. Default is false because all
- * installation bundles use Terms.
- * @return TRUE if creation is allowed, otherwise FALSE (default)
- */
- public final boolean getAllowCategoryCreateUseContext() {
- return ((Boolean) get(m_allowCategoryCreateUseContext)).
- booleanValue();
- }
-
- public final boolean getAllowContentCreateInSectionListing() {
- return ((Boolean) get(m_allowContentCreateInSectionListing)).
- booleanValue();
- }
-
- /**
- * Hide the (no longer used) legacy public site link in Workspace (content
- * center) section listing, true by default.
- */
- public final boolean getHideLegacyPublicSiteLink() {
- return ((Boolean) get(m_hideLegacyPublicSiteLink)).booleanValue();
- }
-
- public String getItemSearchDefaultTab() {
- return (String) get(m_itemSearchDefaultTab);
- }
-
- public Integer getFolderBrowseListSize() {
- return (Integer) get(m_folderBrowseListSize);
- }
-
- public Integer getFolderAtoZShowLimit() {
- return (Integer) get(m_folderAtoZShowLimit);
- }
-
- public Boolean getUseOldStyleItemLifecycleItemPane() {
- return (Boolean) get(m_useOldStyleItemLifecycleItemPane);
- }
-
- public Boolean getThreadedPublishing() {
- return (Boolean) get(m_threadPublishing);
- }
-
- public String getPublicationFailureSender() {
- return (String) get(m_publishingFailureSender);
- }
-
- public String getPublicationFailureReceiver() {
- return (String) get(m_publishingFailureReceiver);
- }
-
- public Integer getImageBrowserThumbnailMaxWidth() {
- return (Integer) get(m_imageBrowserThumbnailMaxWidth);
- }
-
- public Integer getImageBrowserThumbnailMaxHeight() {
- return (Integer) get(m_imageBrowserThumbnailMaxHeight);
- }
-
- public Boolean getImageCacheEnabled() {
- return (Boolean) get(m_imageCacheEnabled);
- }
-
- public Boolean getImageCachePrefetchEnabled() {
- return (Boolean) get(m_imageCachePrefetchEnabled);
- }
-
- public Integer getImageCacheMaxSize() {
- return (Integer) get(m_imageCacheMaxSize);
- }
-
- public Integer getImageCacheMaxAge() {
- return (Integer) get(m_imageCacheMaxAge);
- }
+ register(m_itemSearchFlatBrowsePanePageSize);
+
+ register(m_attachPersonOrgaUnitsStep);
+ register(m_personOrgaUnitsStepSortKey);
+
+ register(m_enableXmlCache);
+ register(m_xmlCacheSize);
+ register(m_xmlCacheAge);
+
+ loadInfo();
+ }
+
+ /**
+ * Retrieve path of the root folter for template folders. Path is
+ * relative to webapp root.
+ */
+ public final String getTemplateRoot() {
+ return (String) get(m_templateRootPath);
+ }
+
+ public final String getDefaultItemTemplatePath() {
+ return (String) get(m_defaultItemTemplatePath);
+ }
+
+ public final String getDefaultFolderTemplatePath() {
+ return (String) get(m_defaultFolderTemplatePath);
+ }
+
+ public final Class getDefaultItemResolverClass() {
+ return (Class) get(m_defaultItemResolverClass);
+ }
+
+ public final Class getDefaultTemplateResolverClass() {
+ return (Class) get(m_defaultTemplateResolverClass);
+ }
+
+ public final Class getCategoryAuthoringAddForm() {
+ return (Class) get(m_categoryAuthoringAddForm);
+ }
+
+ public final InputStream getItemAdapters() {
+ // URL resource: protocol handler removal: START
+ // remove:
+ // try {
+ // return ((URL)get(m_itemAdapters)).openStream();
+ // } catch (IOException ex) {
+ // throw new UncheckedWrapperException("Cannot read stream", ex);
+ // }
+ // ADD:
+ return (InputStream) get(m_itemAdapters);
+ }
+
+ /**
+ *
+ * @deprecated use
+ * com.arsdigita.cms.ContentSection.getDefaultSection().getName()
+ * instead
+ */
+ public final String getDefaultContentSection() {
+ // return (String) get(m_defaultSection);
+ return (String) ContentSection.getDefaultSection().getName();
+ }
+
+ public final boolean getUseStreamlinedCreation() {
+ return ((Boolean) get(m_useStreamlinedCreation)).booleanValue();
+ }
+
+ public final DHTMLEditor.Config getDHTMLEditorConfig() {
+ return (DHTMLEditor.Config) get(m_dhtmlEditorConfig);
+ }
+
+ public final String[] getDHTMLEditorPlugins() {
+ return (String[]) get(m_dhtmlEditorPlugins);
+ }
+
+ public final String[] getDHTMLEditorHiddenButtons() {
+ return (String[]) get(m_dhtmlEditorHiddenButtons);
+ }
+
+ public final boolean getHideTemplatesTab() {
+ return ((Boolean) get(m_hideTemplatesTab)).booleanValue();
+ }
+
+ public final boolean getHideAdminTabs() {
+ return ((Boolean) get(m_hideAdminTabs)).booleanValue();
+ }
+
+ public final boolean getHideTimezone() {
+ return ((Boolean) get(m_hideTimezone)).booleanValue();
+ }
+
+ public final boolean getHideLaunchDate() {
+ return ((Boolean) get(m_hideLaunchDate)).booleanValue();
+ }
+
+ public final boolean getRequireLaunchDate() {
+ return ((Boolean) get(m_requireLaunchDate)).booleanValue();
+ }
+
+ public final boolean getHideUDCTUI() {
+ return ((Boolean) get(m_hideUDCTUI)).booleanValue();
+ }
+
+ public final boolean getHideFolderIndexCheckbox() {
+ return ((Boolean) get(m_hideFolderIndexCheckbox)).booleanValue();
+ }
+
+ public final int getDefaultNotificationTime() {
+ return ((Integer) get(m_defaultNotificationTime)).intValue();
+ }
+
+ public final String getPublishLifecycleListenerClass() {
+ return (String) get(m_publishLifecycleListenerClass);
+ }
+
+ public final boolean getNotifyAuthorOnLifecycle() {
+ return ((Boolean) get(m_notifyAuthorOnLifecycle)).booleanValue();
+ }
+
+ public final boolean getSaveTextCleansWordTags() {
+ return ((Boolean) get(m_saveTextCleansWordTags)).booleanValue();
+ }
+
+ public final boolean getDisableFileAssetExtraction() {
+ return ((Boolean) get(m_disableFileAssetExtraction)).booleanValue();
+ }
+
+ public final boolean getDeleteWorkflowAfterPublication() {
+ return ((Boolean) get(m_deleteWorkflowAfterPublication)).booleanValue();
+ }
+
+ public final boolean getLinksOnlyInSameSubsite() {
+ return ((Boolean) get(m_linksOnlyInSameSubsite)).booleanValue();
+ }
+
+ public final int getSoonExpiredMonths() {
+ return ((Integer) get(m_soonExpiredTimespanMonths)).intValue();
+ }
+
+ public final int getSoonExpiredDays() {
+ return ((Integer) get(m_soonExpiredTimespanDays)).intValue();
+ }
+
+ public final boolean isUnpublishedNotFound() {
+ return ((Boolean) get(m_unpublishedNotFound)).booleanValue();
+ }
+
+ public final Class getCategoryAuthoringExtension() {
+ return (Class) get(m_categoryAuthoringExtension);
+ }
+
+ // ///////////////////////////////////////////
+ // publishToFile package related configuration
+ // ///////////////////////////////////////////
+ // Moved to publishToFile.PublishToFileConfig! Temporarily retained here
+ // for backwards compatibility
+ public final boolean getDisableItemPfs() {
+ // return ((Boolean) get(m_disableItemPfs)).booleanValue();
+ return PublishToFileConfig.getConfig().isItemPfsDisabled();
+ }
+
+ public final Class getPublishToFileClass() {
+ // return (Class) get(m_publishToFileClass);
+ return PublishToFileConfig.getConfig().getPublishListenerClass();
+ }
+
+ /**
+ * Fetch the file name contaning XML Mapping of the content center tabs
+ * to URLs
+ *
+ * @return String containig file name including path component.
+ */
+ public String getContentCenterMap() {
+ return (String) get(m_contentCenterMap);
+ }
+
+ /**
+ * Internal class representing a DHTMLEditor configuration parameter. It
+ * creates a new DHMTLEditor Config object (internal class in
+ * DHTMLEditor).
+ *
+ * XXX Method unmarshal is broken and currently does not work correctly.
+ * It does not process default values provided by using
+ * DHTMLEditor.Config.Standard (see parameter m_dhtmlEditorConfig
+ * above). May be a similiar problem as with ResourceParameter and
+ * default value, see patch provided by pbrucha. Best solution may be to
+ * remove this special parameter class and use a string parameter
+ * instead to directly create a DHTMLEditor.Config object. (pboy,
+ * 2010-09-02)
+ */
+ private class DHTMLEditorConfigParameter extends StringParameter {
+
+ public DHTMLEditorConfigParameter(final String name,
+ final int multiplicity,
+ final Object defaultObj) {
+ super(name, multiplicity, defaultObj);
+ }
+
+ /**
+ * WARNING: Does not correctly process default values, see
+ * above!
+ *
+ * @param value
+ * @param errors
+ * @return
+ */
+ @Override
+ protected Object unmarshal(String value, ErrorList errors) {
+ return DHTMLEditor.Config.valueOf(value);
+ }
+ }
+ protected static HashMap extraXMLGenerators = new HashMap();
+
+ /**
+ * Add one ExtraXMLGenerator to the list.
+ */
+ public static void registerExtraXMLGenerator(String type,
+ ExtraXMLGenerator gen) {
+ List gens = (List) extraXMLGenerators.get(type);
+ if (gens == null) {
+ gens = new LinkedList();
+ extraXMLGenerators.put(type, gens);
+ }
+ // Store class reference so it can be recreated for each page.
+ // This requires a fix to all components using extraXMLGenerators,
+ // for example see the currently only one in core/cms: GreetingItemExtraXML
+ gens.add(gen.getClass()); // XXX assumes default ctor
+ }
+
+ /**
+ * Get the iterator of ExtraXMLGenerators.
+ */
+ public static Iterator getExtraXMLGeneratorsIterator() {
+ return extraXMLGenerators.entrySet().iterator();
+ }
+
+ public final boolean hideResetLifecycleLink() {
+ return ((Boolean) get(m_hideResetLifecycleLink)).booleanValue();
+ }
+
+ /**
+ * The relative weight given to the dcKeywords element within dublinCore
+ * element within cms:item element when ranking search results Only used
+ * by the interMedia query engine.
+ *
+ */
+ public Integer getKeywordSearchWeight() {
+ return (Integer) get(m_keywordWeight);
+ }
+
+ public final boolean limitToContentSection() {
+ return ((Boolean) get(m_limitToContentSection)).booleanValue();
+ }
+
+ /**
+ * The relative weight given to title element within cms:item element
+ * when ranking search results Only used by the interMedia query engine.
+ *
+ */
+ public Integer getTitleSearchWeight() {
+ return (Integer) get(m_titleWeight);
+ }
+
+ /**
+ * Whether to include INPATH operators to contains clause in intermedia
+ * search
+ *
+ * NB - if true, INDEX MUST BE CREATED WITH PATH_SECTION_GROUP - upgrade
+ * 6.5.0 - 6.5.1
+ *
+ * @return
+ */
+ public boolean scoreKeywordsAndTitle() {
+ return ((Boolean) get(m_scoreTitleAndKeywords)).booleanValue();
+ }
+
+ /**
+ * for the given content type, returns a collection of steps that are
+ * deemed irrelevant for the type.
+ *
+ * If no irrelevant steps, an empty set is returned.
+ *
+ * Steps are the names of the bebop step components that are used by the
+ * authoring kit wizard
+ *
+ * @param type
+ * @return
+ */
+ public Collection getAssetStepsToSkip(ContentType type) {
+ s_log.debug("getting asset steps to skip for type "
+ + type.getClassName());
+ if (s_skipAssetSteps == null) {
+ // populate static map once based on config parameter value
+ s_log.debug("loading skipsteps");
+ s_skipAssetSteps = new HashMap();
+ String[] skipSteps = (String[]) get(m_skipAssetSteps);
+ if (skipSteps != null) {
+
+ s_log.debug(skipSteps.length + " entries in parameter");
+ for (int i = 0; i < skipSteps.length; i++) {
+ String[] pair = StringUtils.split(skipSteps[i], ':');
+ // 1st string is name of content type, 2nd string is name of asset step
+ s_log.debug("parameter read - type = " + pair[0]
+ + " - step = " + pair[1]);
+ Collection typeSteps =
+ (Collection) s_skipAssetSteps.get(pair[0]);
+ if (typeSteps == null) {
+ typeSteps = new HashSet();
+ s_skipAssetSteps.put(pair[0], typeSteps);
+
+ }
+ typeSteps.add(pair[1]);
+
+ }
+ }
+
+ }
+ Collection skipSteps = (Collection) s_skipAssetSteps.get(type.
+ getClassName());
+ if (skipSteps == null) {
+ s_log.debug("no steps to skip");
+ skipSteps = new HashSet();
+ }
+ return skipSteps;
+
+ }
+
+ /**
+ * May be used by any content type creation form to decide whether to
+ * validate description field
+ *
+ */
+ public boolean mandatoryDescriptions() {
+ return ((Boolean) get(m_mandatoryDescriptions)).booleanValue();
+ }
+
+ /**
+ * Used to decide whether lifecycles (and all asociated phases) should
+ * be deleted from the system when complete
+ *
+ * (Deleting lifecycle means that you lose a bit of historical
+ * information eg when was this item unpublished)
+ */
+ public boolean deleteFinishedLifecycles() {
+ return ((Boolean) get(m_deleteLifecycleWhenComplete)).booleanValue();
+ }
+
+ /**
+ * Used to decide whether to delete old notification records for expiry
+ * notifications.
+ *
+ * If true, notifications and messages are deleted if the notification
+ * is successfully sent. Any send failures are retained
+ *
+ */
+ public boolean deleteExpiryNotifications() {
+ return ((Boolean) get(m_deleteExpiryNotificationsWhenSent)).booleanValue();
+ }
+
+ /**
+ * Used to decide whether to delete old notification records for
+ * workflow notifications.
+ *
+ * If true, notifications and messages are deleted if the notification
+ * is successfully sent. Any send failures are retained
+ *
+ */
+ public boolean deleteWorkflowNotifications() {
+ return ((Boolean) get(m_deleteWorkflowNotificationsWhenSent)).
+ booleanValue();
+ }
+
+ public String getCategoryTreeOrder() {
+ return (String) get(m_categoryTreeOrdering);
+ }
+
+ /**
+ * I'am not sure for what this method is. I found it here when I tried
+ * figure out how add multiple parts to an ContentType, like
+ * ccm-cms-types-contact and the Multipart article do. I think this
+ * method should not be here because it is only needed by one specific
+ * contenttype. Because of this, I think that this method and the
+ * contact are violating many rules of modern software design. Jens
+ * Pelzetter, 2009-06-02.
+ *
+ * @return
+ */
+ public boolean getHasContactsAuthoringStep() {
+ return ((Boolean) get(m_hasContactsAuthoringStep)).booleanValue();
+ }
+
+ public final boolean getHideTextAssetUploadFile() {
+ return ((Boolean) get(m_hideTextAssetUploadFile)).booleanValue();
+ }
+
+ /**
+ * Retrieve whether to allow creation of a new Use Context in category
+ * tab of content sections. "Use Context" is used to constitute a
+ * category hierarchy in core. It is superseded by the construct
+ * "Category Domain" in Terms (ccm-ldn-terms). Global parameter for all
+ * content sections. Default is false because all installation bundles
+ * use Terms.
+ *
+ * @return TRUE if creation is allowed, otherwise FALSE (default)
+ */
+ public final boolean getAllowCategoryCreateUseContext() {
+ return ((Boolean) get(m_allowCategoryCreateUseContext)).
+ booleanValue();
+ }
+
+ public final boolean getAllowContentCreateInSectionListing() {
+ return ((Boolean) get(m_allowContentCreateInSectionListing)).
+ booleanValue();
+ }
+
+ /**
+ * Hide the (no longer used) legacy public site link in Workspace
+ * (content center) section listing, true by default.
+ */
+ public final boolean getHideLegacyPublicSiteLink() {
+ return ((Boolean) get(m_hideLegacyPublicSiteLink)).booleanValue();
+ }
+
+ public String getItemSearchDefaultTab() {
+ return (String) get(m_itemSearchDefaultTab);
+ }
+
+ public Integer getFolderBrowseListSize() {
+ return (Integer) get(m_folderBrowseListSize);
+ }
+
+ public Integer getFolderAtoZShowLimit() {
+ return (Integer) get(m_folderAtoZShowLimit);
+ }
+
+ public Boolean getUseOldStyleItemLifecycleItemPane() {
+ return (Boolean) get(m_useOldStyleItemLifecycleItemPane);
+ }
+
+ public Boolean getThreadedPublishing() {
+ return (Boolean) get(m_threadPublishing);
+ }
+
+ public String getPublicationFailureSender() {
+ return (String) get(m_publishingFailureSender);
+ }
+
+ public String getPublicationFailureReceiver() {
+ return (String) get(m_publishingFailureReceiver);
+ }
+
+ public Integer getImageBrowserThumbnailMaxWidth() {
+ return (Integer) get(m_imageBrowserThumbnailMaxWidth);
+ }
+
+ public Integer getImageBrowserThumbnailMaxHeight() {
+ return (Integer) get(m_imageBrowserThumbnailMaxHeight);
+ }
+
+ public int getImageBrowserCaptionSize() {
+ return Math.min(((Integer) get(m_imageBrowserCaptionSize)).intValue(), 100);
+ }
+
+ public int getImageBrowserDescriptionSize() {
+ return Math.min(((Integer) get(m_imageBrowserDescriptionSize)).intValue(), 400);
+ }
+
+ public int getImageBrowserTitleSize() {
+ return Math.min(((Integer) get(m_imageBrowserTitleSize)).intValue(), 200);
+ }
+
+ public Boolean getImageCacheEnabled() {
+ return (Boolean) get(m_imageCacheEnabled);
+ }
+
+ public Boolean getImageCachePrefetchEnabled() {
+ return (Boolean) get(m_imageCachePrefetchEnabled);
+ }
+
+ public Integer getImageCacheMaxSize() {
+ return (Integer) get(m_imageCacheMaxSize);
+ }
+
+ public Integer getImageCacheMaxAge() {
+ return (Integer) get(m_imageCacheMaxAge);
+ }
// public Boolean getItemSearchFlatBrowsePaneEnable() {
// return (Boolean) get(m_itemSearchFlatBrowsePaneEnable);
// }
- public Integer getItemSearchFlatBrowsePanePageSize() {
- return (Integer) get(m_itemSearchFlatBrowsePanePageSize);
- }
+ public Integer getItemSearchFlatBrowsePanePageSize() {
+ return (Integer) get(m_itemSearchFlatBrowsePanePageSize);
+ }
- public Boolean getAttachPersonOrgaUnitsStep() {
- return (Boolean) get(m_attachPersonOrgaUnitsStep);
- }
-
- public Integer getPersonOrgaUnitsStepSortKey() {
- return (Integer) get(m_personOrgaUnitsStepSortKey);
- }
-
- public Boolean getEnableXmlCache() {
- return (Boolean) get(m_enableXmlCache);
- }
-
- public Integer getXmlCacheSize() {
- return (Integer) get(m_xmlCacheSize);
- }
-
- public Integer getXmlCacheAge() {
- return (Integer) get(m_xmlCacheAge);
- }
+ public Boolean getAttachPersonOrgaUnitsStep() {
+ return (Boolean) get(m_attachPersonOrgaUnitsStep);
+ }
+ public Integer getPersonOrgaUnitsStepSortKey() {
+ return (Integer) get(m_personOrgaUnitsStepSortKey);
+ }
+
+ public Boolean getEnableXmlCache() {
+ return (Boolean) get(m_enableXmlCache);
+ }
+
+ public Integer getXmlCacheSize() {
+ return (Integer) get(m_xmlCacheSize);
+ }
+
+ public Integer getXmlCacheAge() {
+ return (Integer) get(m_xmlCacheAge);
+ }
}
diff --git a/ccm-cms/src/com/arsdigita/cms/CMSConfig_parameter.properties b/ccm-cms/src/com/arsdigita/cms/CMSConfig_parameter.properties
index ee4f5d5c5..ee2706438 100755
--- a/ccm-cms/src/com/arsdigita/cms/CMSConfig_parameter.properties
+++ b/ccm-cms/src/com/arsdigita/cms/CMSConfig_parameter.properties
@@ -295,6 +295,22 @@ com.arsdigita.cms.image_browser.thumbnail_max_height.purpose=Set the maximum hei
com.arsdigita.cms.image_browser.thumbnail_max_height.example=150
com.arsdigita.cms.image_browser.thumbnail_max_height.format=[integer]
+
+com.arsdigita.cms.image_browser.caption_size.title = Max size for image caption (must be < 100)
+com.arsdigita.cms.image_browser.caption_size.purpose = Set the ValidationListener for image caption to a smaller size than the db field
+com.arsdigita.cms.image_browser.caption_size.example = 100
+com.arsdigita.cms.image_browser.caption_size.format = [Integer]
+
+com.arsdigita.cms.image_browser.description_size.title = Max size for image description (must be < 400)
+com.arsdigita.cms.image_browser.description_size.purpose = Set the ValidationListener for image description to a smaller size than the db field
+com.arsdigita.cms.image_browser.description_size.example = 400
+com.arsdigita.cms.image_browser.description_size.format = [Integer]
+
+com.arsdigita.cms.image_browser.title_size.title = Max size for image title (must be < 200)
+com.arsdigita.cms.image_browser.title_size.purpose = Set the ValidationListener for image title to a smaller size than the db field
+com.arsdigita.cms.image_browser.title_size.example = 200
+com.arsdigita.cms.image_browser.title_size.format = [Integer]
+
com.arsdigita.cms.image_cache.enable.title=Enable server-side image cache
com.arsdigita.cms.image_cache.enable.purpose=Enable server-side coherent image cache, which will speed up server-side image resizing
com.arsdigita.cms.image_cache.enable.example=true|false
@@ -338,4 +354,4 @@ com.arsdigita.cms.xml.cache.size.format=[integer]
com.arsdigita.cms.xml.cache.age.title=Maximum age of an entry in the XML cache
com.arsdigita.cms.xml.cache.age.purpose=Maximum age of an entry in the XML cache
com.arsdigita.cms.xml.cache.age.example=60*60*24
-com.arsdigita.cms.xml.cache.age.format=[integer]
\ No newline at end of file
+com.arsdigita.cms.xml.cache.age.format=[integer]
diff --git a/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java b/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java
index 53d91e2a2..47862f9db 100644
--- a/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java
+++ b/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java
@@ -18,6 +18,7 @@ import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.form.TextField;
import com.arsdigita.bebop.parameters.BigDecimalParameter;
import com.arsdigita.bebop.parameters.NotNullValidationListener;
+import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.ReusableImageAsset;
@@ -101,12 +102,12 @@ public class ImageLibraryComponent extends SimpleContainer
m_form.add(new Label(GlobalizationUtil
.globalize("cms.contentasset.image.ui.caption")));
m_caption.addValidationListener(new NotNullValidationListener());
- m_caption.setSize(40);
+ m_caption.setSize(CMS.getConfig().getImageBrowserCaptionSize());
m_form.add(m_caption);
m_description.addValidationListener(new NotNullValidationListener());
- m_description.setSize(40);
+ m_description.setSize(CMS.getConfig().getImageBrowserCaptionSize());
m_title.addValidationListener(new NotNullValidationListener());
- m_title.setSize(40);
+ m_title.setSize(CMS.getConfig().getImageBrowserCaptionSize());
// Only show the title and description fields where these have
// been explicitly requested.
/*