Class CmsXmlContentPropertyHelper
- All Implemented Interfaces:
Cloneable
- Since:
- 8.0.0
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
Element Property json property constants. -
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected 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.protected static String
convertIdsToPaths
(CmsObject cms, String value) Converts a string containing zero or more structure ids into a string containing the corresponding VFS paths.protected static String
convertPathsToIds
(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 String
convertStringPropertyValue
(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 CmsVfsFileValueBean
getFileValueForIdOrUri
(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 CmsUUID
getIdForUri
(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 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.protected static CmsXmlContentProperty
getPropertyConfig
(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 String
getPropValueIds
(CmsObject cms, String type, String value) Returns a converted property value depending on the given type.static String
getPropValuePaths
(CmsObject cms, String type, String value) Returns a converted property value depending on the given type.static String
getUriForId
(CmsObject cms, CmsUUID id) Returns a sitemap or VFS path given a sitemap entry id or structure id.static JSONObject
getWidgetConfigurationAsJSON
(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 CmsXmlContentProperty
resolveMacrosInProperty
(CmsXmlContentProperty property, I_CmsMacroResolver resolver) Resolves the macros in a single property.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.
-
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
-