Class CmsXmlContentPropertyHelper
- All Implemented Interfaces:
Cloneable
- Since:
- 8.0.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumElement Property json property constants. -
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionprotected static voidaddFileListPropertyValue(CmsObject cms, org.dom4j.Element valueElement, String propValue) Adds the XML for a property value of a property of type 'vfslist' to the DOM.protected static StringconvertIdsToPaths(CmsObject cms, String value) Converts a string containing zero or more structure ids into a string containing the corresponding VFS paths.protected static StringconvertPathsToIds(CmsObject cms, String value) Converts a string containing zero or more VFS paths into a string containing the corresponding structure ids.convertProperties(CmsObject cms, Map<String, String> props, Map<String, CmsXmlContentProperty> propConfig, boolean toClient) Helper method for converting a map of properties from client format to server format or vice versa.convertPropertiesToClientFormat(CmsObject cms, Map<String, String> props, Map<String, CmsXmlContentProperty> propConfig) Converts a map of properties from server format to client format.convertPropertiesToServerFormat(CmsObject cms, Map<String, String> props, Map<String, CmsXmlContentProperty> propConfig) Converts a map of properties from client format to server format.protected static StringconvertStringPropertyValue(CmsObject cms, String propValue, String type, boolean toClient) Converts a property value given as a string between server format and client format.static Map<String, CmsXmlContentProperty> copyPropertyConfiguration(Map<String, CmsXmlContentProperty> propConfig) Creates a deep copy of a property configuration map.protected static CmsVfsFileValueBeangetFileValueForIdOrUri(CmsObject cms, String idOrUri) Given a string which might be a id or a (sitemap or VFS) URI, this method will return a bean containing the right (sitemap or vfs) root path and (sitemap entry or structure) id.static CmsUUIDgetIdForUri(CmsObject cms, String uri) Looks up an URI in the sitemap and returns either a sitemap entry id (if the URI is a sitemap URI) or the structure id of a resource (if the URI is a VFS path).static CmsMacroResolvergetMacroResolverForProperties(CmsObject cms, I_CmsXmlContentHandler contentHandler, CmsXmlContent content, Function<String, String> stringtemplateSource, CmsResource containerPage) Creates and configures a new macro resolver for resolving macros which occur in property definitions.protected static CmsXmlContentPropertygetPropertyConfig(Map<String, CmsXmlContentProperty> propertyConfig, String propName) Helper method for accessing the property configuration for a single property.static Map<String, CmsXmlContentProperty> getPropertyInfo(CmsObject cms, CmsResource page, CmsResource resource) Returns the property information for the given resource (type) AND the current user.static StringgetPropValueIds(CmsObject cms, String type, String value) Returns a converted property value depending on the given type.static StringgetPropValuePaths(CmsObject cms, String type, String value) Returns a converted property value depending on the given type.static StringgetUriForId(CmsObject cms, CmsUUID id) Returns a sitemap or VFS path given a sitemap entry id or structure id.static JSONObjectgetWidgetConfigurationAsJSON(String widgetConfiguration) Returns the widget configuration string parsed into a JSONObject.mergeDefaults(CmsObject cms, Map<String, CmsXmlContentProperty> propertyConfig, Map<String, String> properties) Extends the given properties with the default values from property configuration.mergeDefaults(CmsObject cms, CmsADEConfigData config, CmsResource resource, Map<String, String> properties, Locale locale, javax.servlet.ServletRequest request) Extends the given properties with the default values from the resource's property configuration.readProperties(CmsObject cms, I_CmsXmlContentLocation baseLocation) Reads property nodes from the given location.readProperties(CmsXmlContent xmlContent, Locale locale, org.dom4j.Element element, String elemPath, CmsXmlContentDefinition elemDef) Reads the properties from property-enabled xml content values.static Map<String, CmsXmlContentProperty> resolveMacrosForPropertyInfo(CmsObject cms, CmsResource page, CmsResource resource, com.google.common.base.Supplier<CmsXmlContent> contentGetter, Function<String, String> stringtemplateSource, Map<String, CmsXmlContentProperty> propertiesConf) Resolves macros in the given property information for the given resource (type) AND the current user.static Map<String, CmsXmlContentProperty> resolveMacrosInProperties(Map<String, CmsXmlContentProperty> properties, I_CmsMacroResolver resolver) Resolves macros in all properties in a map.static CmsXmlContentPropertyresolveMacrosInProperty(CmsXmlContentProperty property, I_CmsMacroResolver resolver) Resolves the macros in a single property.static voidsaveProperties(CmsObject cms, org.dom4j.Element parentElement, Map<String, String> properties, Map<String, CmsXmlContentProperty> propertiesConf, boolean sort) Saves the given properties to the given xml element.
-
Field Details
-
PAGE_PROPERTY_PREFIX
The prefix for macros used to acess properties of the current container page.- See Also:
-
PROPERTY_EMPTY_MARKER
If a property has this value, the page-property macro for this property will expand to the empty string instead.
-
-
Method Details
-
convertPropertiesToClientFormat
public static Map<String,String> convertPropertiesToClientFormat(CmsObject cms, Map<String, String> props, Map<String, CmsXmlContentProperty> propConfig) Converts a map of properties from server format to client format.- Parameters:
cms- the CmsObject to use for VFS operationsprops- the map of propertiespropConfig- the property configuration- Returns:
- the converted property map
-
convertPropertiesToServerFormat
public static Map<String,String> convertPropertiesToServerFormat(CmsObject cms, Map<String, String> props, Map<String, CmsXmlContentProperty> propConfig) Converts a map of properties from client format to server format.- Parameters:
cms- the CmsObject to use for VFS operationsprops- the map of propertiespropConfig- the property configuration- Returns:
- the converted property map
-
copyPropertyConfiguration
public static Map<String,CmsXmlContentProperty> copyPropertyConfiguration(Map<String, CmsXmlContentProperty> propConfig) Creates a deep copy of a property configuration map.- Parameters:
propConfig- the property configuration which should be copied- Returns:
- a copy of the property configuration
-
getIdForUri
Looks up an URI in the sitemap and returns either a sitemap entry id (if the URI is a sitemap URI) or the structure id of a resource (if the URI is a VFS path).- Parameters:
cms- the current CMS contexturi- the URI to look up- Returns:
- a sitemap entry id or a structure id
- Throws:
CmsException- if something goes wrong
-
getMacroResolverForProperties
public static CmsMacroResolver getMacroResolverForProperties(CmsObject cms, I_CmsXmlContentHandler contentHandler, CmsXmlContent content, Function<String, String> stringtemplateSource, CmsResource containerPage) Creates and configures a new macro resolver for resolving macros which occur in property definitions.- Parameters:
cms- the CMS contextcontentHandler- the content handler which contains the message bundle that should be available in the macro resolvercontent- the XML content objectstringtemplateSource- provides stringtemplate templates for use in %(stringtemplate:...) macroscontainerPage- the current container page- Returns:
- a new macro resolver
-
getPropertyInfo
public static Map<String,CmsXmlContentProperty> getPropertyInfo(CmsObject cms, CmsResource page, CmsResource resource) throws CmsException Returns the property information for the given resource (type) AND the current user.- Parameters:
cms- the current CMS contextpage- the current container pageresource- the resource- Returns:
- the property information
- Throws:
CmsException- if something goes wrong
-
getPropValueIds
Returns a converted property value depending on the given type.If the type is
CmsXmlContentProperty.PropType.vfslist, the value is parsed as a list of paths and converted to a list of IDs.- Parameters:
cms- the current CMS contexttype- the property typevalue- the raw property value- Returns:
- a converted property value depending on the given type
-
getPropValuePaths
Returns a converted property value depending on the given type.If the type is
CmsXmlContentProperty.PropType.vfslist, the value is parsed as a list of IDs and converted to a list of paths.- Parameters:
cms- the current CMS contexttype- the property typevalue- the raw property value- Returns:
- a converted property value depending on the given type
-
getUriForId
Returns a sitemap or VFS path given a sitemap entry id or structure id.This method first tries to read a sitemap entry with the given id. If this succeeds, the sitemap entry's sitemap path will be returned. If it fails, the method interprets the id as a structure id and tries to read the corresponding resource, and then returns its VFS path.
- Parameters:
cms- the CMS contextid- a sitemap entry id or structure id- Returns:
- a sitemap or VFS uri
- Throws:
CmsException- if something goes wrong
-
getWidgetConfigurationAsJSON
Returns the widget configuration string parsed into a JSONObject.The configuration string should be a map of key value pairs separated by ':' and '|': KEY_1:VALUE_1|KEY_2:VALUE_2 ...
- Parameters:
widgetConfiguration- the configuration to parse- Returns:
- the configuration JSON
-
mergeDefaults
public static Map<String,String> mergeDefaults(CmsObject cms, CmsADEConfigData config, CmsResource resource, Map<String, String> properties, Locale locale, javax.servlet.ServletRequest request) Extends the given properties with the default values from the resource's property configuration.- Parameters:
cms- the current CMS contextconfig- the current sitemap configurationresource- the resource to get the property configuration fromproperties- the properties to extendlocale- the content localerequest- the current request, if available- Returns:
- a merged map of properties
-
mergeDefaults
public static Map<String,String> mergeDefaults(CmsObject cms, Map<String, CmsXmlContentProperty> propertyConfig, Map<String, String> properties) Extends the given properties with the default values from property configuration.- Parameters:
cms- the current CMS contextpropertyConfig- the property configurationproperties- the properties to extend- Returns:
- a merged map of properties
-
readProperties
public static Map<String,String> readProperties(CmsObject cms, I_CmsXmlContentLocation baseLocation) Reads property nodes from the given location.- Parameters:
cms- the current cms contextbaseLocation- the base location- Returns:
- the properties
-
readProperties
public static Map<String,String> readProperties(CmsXmlContent xmlContent, Locale locale, org.dom4j.Element element, String elemPath, CmsXmlContentDefinition elemDef) Reads the properties from property-enabled xml content values.- Parameters:
xmlContent- the xml contentlocale- the current localeelement- the xml elementelemPath- the xpathelemDef- the element definition- Returns:
- the read property map
- See Also:
-
resolveMacrosForPropertyInfo
public static Map<String,CmsXmlContentProperty> resolveMacrosForPropertyInfo(CmsObject cms, CmsResource page, CmsResource resource, com.google.common.base.Supplier<CmsXmlContent> contentGetter, Function<String, String> stringtemplateSource, Map<String, throws CmsExceptionCmsXmlContentProperty> propertiesConf) Resolves macros in the given property information for the given resource (type) AND the current user.- Parameters:
cms- the current CMS contextpage- the current container pageresource- the resourcecontentGetter- loads the actual contentstringtemplateSource- provider for stringtemplate templatespropertiesConf- the property information- Returns:
- the property information
- Throws:
CmsException- if something goes wrong
-
resolveMacrosInProperties
public static Map<String,CmsXmlContentProperty> resolveMacrosInProperties(Map<String, CmsXmlContentProperty> properties, I_CmsMacroResolver resolver) Resolves macros in all properties in a map.- Parameters:
properties- the map of properties in which macros should be resolvedresolver- the macro resolver to use- Returns:
- a new map of properties with resolved macros
-
resolveMacrosInProperty
public static CmsXmlContentProperty resolveMacrosInProperty(CmsXmlContentProperty property, I_CmsMacroResolver resolver) Resolves the macros in a single property.- Parameters:
property- the property in which macros should be resolvedresolver- the macro resolver to use- Returns:
- a new property with resolved macros
-
saveProperties
public static void saveProperties(CmsObject cms, org.dom4j.Element parentElement, Map<String, String> properties, Map<String, CmsXmlContentProperty> propertiesConf, boolean sort) Saves the given properties to the given xml element.- Parameters:
cms- the current CMS contextparentElement- the parent xml elementproperties- the properties to save, if there is a list of resources, every entry can be a site path or a UUIDpropertiesConf- the configuration of the propertiessort- if true, properties will be sorted by map keys via string co
-
addFileListPropertyValue
protected static void addFileListPropertyValue(CmsObject cms, org.dom4j.Element valueElement, String propValue) Adds the XML for a property value of a property of type 'vfslist' to the DOM.- Parameters:
cms- the current CMS contextvalueElement- the element to which the vfslist property value should be addedpropValue- the property value which should be saved
-
convertIdsToPaths
Converts a string containing zero or more structure ids into a string containing the corresponding VFS paths.- Parameters:
cms- the CmsObject to use for the VFS operationsvalue- a string representation of a list of ids- Returns:
- a string representation of a list of paths
-
convertPathsToIds
Converts a string containing zero or more VFS paths into a string containing the corresponding structure ids.- Parameters:
cms- the CmsObject to use for the VFS operationsvalue- a string representation of a list of paths- Returns:
- a string representation of a list of ids
-
convertProperties
protected static Map<String,String> convertProperties(CmsObject cms, Map<String, String> props, Map<String, CmsXmlContentProperty> propConfig, boolean toClient) Helper method for converting a map of properties from client format to server format or vice versa.- Parameters:
cms- the CmsObject to use for VFS operationsprops- the map of propertiespropConfig- the property configurationtoClient- if true, convert from server to client, else from client to server- Returns:
- the converted property map
-
convertStringPropertyValue
protected static String convertStringPropertyValue(CmsObject cms, String propValue, String type, boolean toClient) Converts a property value given as a string between server format and client format.- Parameters:
cms- the current CMS contextpropValue- the property value to converttype- the type of the propertytoClient- if true, convert to client format, else convert to server format- Returns:
- the converted property value
-
getFileValueForIdOrUri
protected static CmsVfsFileValueBean getFileValueForIdOrUri(CmsObject cms, String idOrUri) throws CmsException Given a string which might be a id or a (sitemap or VFS) URI, this method will return a bean containing the right (sitemap or vfs) root path and (sitemap entry or structure) id.- Parameters:
cms- the current CMS contextidOrUri- a string containing an id or an URI- Returns:
- a bean containing a root path and an id
- Throws:
CmsException- if something goes wrong
-
getPropertyConfig
protected static CmsXmlContentProperty getPropertyConfig(Map<String, CmsXmlContentProperty> propertyConfig, String propName) Helper method for accessing the property configuration for a single property.This method uses the base name of the property to access the property configuration, i.e. if propName starts with a '#', the part after the '#' will be used as the key for the property configuration.
- Parameters:
propertyConfig- the property configuration mappropName- the name of a property- Returns:
- the property configuration for the given property name
-