Class CmsADEManager
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static enum
JSON property name constant.protected static enum
A status enum for the initialization status. -
Field Summary
Modifier and TypeFieldDescriptionprotected static final String
User additional info key constant.protected static final String
User additional info key constant.protected static final String
User additional info key constant.static final String
The client id separator.static final String
The configuration file name.static final String
The name of the sitemap configuration file type.static final String
The path for sitemap configuration files relative from the base path.static final String
The name of the sitemap configuration file type.static final String
The content folder name.static final String
The default detail page type name.static final int
Default favorite/recent list size constant.static final String
The name of the element view configuration file type.static final String
The name of the module configuration file type.static final String
The aADE configuration module name.static final String
Node name for the nav level link value.static final String
Node name for the nav level type value.static final String
The path to the sitemap editor JSP. -
Constructor Summary
ConstructorDescriptionCmsADEManager
(CmsObject adminCms, CmsMemoryMonitor memoryMonitor, CmsSystemConfiguration systemConfiguration) Creates a new ADE manager. -
Method Summary
Modifier and TypeMethodDescriptionaddFormatterCacheWaitHandle
(boolean online) Adds a wait handle for the next cache update to a formatter configuration.boolean
Checks if the sitemap config can be edited by the user in the given CMS context.protected CmsContainerElementBean
elementFromJson
(JSONObject data) Creates an element from its serialized data.protected JSONObject
elementToJson
(CmsContainerElementBean element, Set<String> excludeSettings) Converts the given element to JSON.findEntryPoint
(CmsObject cms, String openPath) Finds the entry point to a sitemap.void
Flushes inheritance group changes so the cache is updated.Gets the complete list of beans for the currently configured detail pages.getCache()
Gets the containerpage cache instance.protected org.opencms.ade.configuration.CmsConfigurationCache
getCache
(boolean online) Gets the configuration cache instance.getCachedFormatters
(boolean online) Gets the cached formatter beans.getCacheState
(boolean online) Gets the current ADE configuration cache state.Gets the configuration file type.Returns the names of the bundles configured as workplace bundles in any module configuration.getContentTypeNames
(boolean online) Gets the content types configured in any sitemap configuations.getCurrentElement
(javax.servlet.ServletRequest req) Reads the current element bean from the request.getDetailIdCache
(boolean online) Gets the detail id cache for the Online or Offline projects.getDetailInfo
(CmsObject cms) Gets the detail page information for everything.getDetailPage
(CmsObject cms, String pageRootPath, String originPath) Gets the detail page for a content element.getDetailPage
(CmsObject cms, String rootPath, String linkSource, String targetDetailPage) Gets the detail page for a content element.Gets the detail page finder.getDetailPages
(CmsObject cms, String type) Returns the main detail pages for a type in all of the VFS tree.Gets the set of types for which detail pages are defined.getElementSettings
(CmsObject cms, CmsResource resource) Returns the element settings for a given resource.getElementViews
(CmsObject cms) Returns the available element views.Gets the element view configuration resource type.getFavoriteList
(CmsObject cms) Returns the favorite list, or creates it if not available.getFormatterSettings
(CmsObject cms, CmsADEConfigData config, I_CmsFormatterBean mainFormatter, CmsResource res, Locale locale, javax.servlet.ServletRequest req) Returns the settings configured for the given formatter which should be editable via ADE.getInheritedContainerState
(CmsObject cms, String rootPath, String name) Returns the inheritance state for the given inheritance name and root path.getInheritedContainerState
(CmsObject cms, CmsResource resource, String name) Returns the inheritance state for the given inheritance name and resource.int
Gets the maximum sitemap depth.Gets the module configuration resource type.getNestedFormatters
(CmsObject cms, CmsADEConfigData config, CmsResource res, Locale locale, javax.servlet.ServletRequest req) Returns the nested formatters of the given resource.protected org.opencms.ade.configuration.CmsConfigurationCache
Gets the offline cache.getOfflineElementUses
(CmsResource resource) Creates a stream that produces the pages/groups referencing a given element.protected org.opencms.ade.configuration.CmsConfigurationCache
Gets the online cache.getParameters
(CmsObject cms) Gets ADE parameters.getParentFolderType
(boolean online, String rootPath) Gets the content element type for the given path's parent folder.getPermissionInfo
(CmsObject cms, CmsResource resource, String contextPath) Returns the permission info for the given resource.getPluginsForPath
(CmsObject cms, String path) Gets a map of plugin wrappers for the given site path.Gets the raw configured detail page information, with no existence checks or path correction.getRecentList
(CmsObject cms) Returns the favorite list, or creates it if not available.protected CmsRole
Gets the role necessary to edit sitemap configuration files.protected String
getRootPath
(CmsUUID structureId, boolean online) Gets the root path for a given resource structure id.Gets the sitemap configuration resource type.getSubSitePaths
(CmsObject cms, String subSiteRoot) Returns all sub sites below the given path.getSubSiteRoot
(CmsObject cms, String rootPath) Tries to get the subsite root for a given resource root path.getSubsitesForSiteSelector
(boolean online) Gets the subsites to be displayed in the site selector.protected CmsProject
Gets a tempfile project, creating one if it doesn't exist already.Gets the table of upload warnings.void
handleHtmlRedirect
(CmsObject userCms, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String htmlRedirect) Processes a HTML redirect content.void
Initializes the configuration by reading all configuration files and caching their data.protected CmsADEConfigData
internalLookupConfiguration
(CmsObject cms, String rootPath) Internal configuration lookup method.boolean
isDetailPage
(CmsObject cms, CmsResource resource) Checks whether the given resource is configured as a detail page.boolean
isEditorRestricted
(CmsObject cms, CmsResource res) Checks if the user should be prevented from editing a file.boolean
isElementReused
(CmsResource resource, Predicate<CmsResource> exclude) Checks if an element is reused in a page or group that is not excluded by a given predicate.boolean
Checks whether the ADE manager is initialized (this should usually be the case except during the setup).boolean
Returns the show editor help flag.lookupConfiguration
(CmsObject cms, String rootPath) Looks up the configuration data for a given sitemap path.lookupConfigurationWithCache
(CmsObject cms, String rootPath) Looks up the configuration data for a given sitemap path, but uses a thread-local cache for the current request for efficiency.void
refresh()
Reloads the configuration.boolean
saveDetailPages
(CmsObject cms, String rootPath, List<CmsDetailPageInfo> detailPages, CmsUUID newId) Saves a list of detail pages.void
saveFavoriteList
(CmsObject cms, List<CmsContainerElementBean> favoriteList) Saves the favorite list, user based.void
saveInheritedContainer
(CmsObject cms, String sitePath, String name, boolean newOrder, List<CmsContainerElementBean> elements) Saves the inheritance container information.void
saveInheritedContainer
(CmsObject cms, CmsResource pageResource, String name, boolean newOrder, List<CmsContainerElementBean> elements) Saves the inheritance container information.void
saveRecentList
(CmsObject cms, List<CmsContainerElementBean> recentList) Saves the favorite list, user based.void
setShowEditorHelp
(CmsObject cms, boolean showHelp) Sets the show editor help flag.void
shutdown()
The method which is called when the OpenCms instance is shut down.void
waitForCacheUpdate
(boolean online) Waits until the next time the cache is updated.void
waitForFormatterCache
(boolean online) Waits until the formatter cache has finished updating itself.
-
Field Details
-
CLIENT_ID_SEPERATOR
The client id separator.- See Also:
-
CONFIG_FILE_NAME
The configuration file name.- See Also:
-
CONFIG_FOLDER_TYPE
The name of the sitemap configuration file type.- See Also:
-
CONFIG_SUFFIX
The path for sitemap configuration files relative from the base path.- See Also:
-
CONFIG_TYPE
The name of the sitemap configuration file type.- See Also:
-
CONTENT_FOLDER_NAME
The content folder name.- See Also:
-
DEFAULT_DETAILPAGE_TYPE
The default detail page type name.- See Also:
-
DEFAULT_ELEMENT_LIST_SIZE
Default favorite/recent list size constant.- See Also:
-
ELEMENT_VIEW_TYPE
The name of the element view configuration file type.- See Also:
-
MODULE_CONFIG_TYPE
The name of the module configuration file type.- See Also:
-
MODULE_NAME_ADE_CONFIG
The aADE configuration module name.- See Also:
-
N_LINK
Node name for the nav level link value.- See Also:
-
N_TYPE
Node name for the nav level type value.- See Also:
-
PATH_SITEMAP_EDITOR_JSP
The path to the sitemap editor JSP.- See Also:
-
ADDINFO_ADE_FAVORITE_LIST
User additional info key constant.- See Also:
-
ADDINFO_ADE_RECENT_LIST
User additional info key constant.- See Also:
-
ADDINFO_ADE_SHOW_EDITOR_HELP
User additional info key constant.- See Also:
-
-
Constructor Details
-
CmsADEManager
public CmsADEManager(CmsObject adminCms, CmsMemoryMonitor memoryMonitor, CmsSystemConfiguration systemConfiguration) Creates a new ADE manager.- Parameters:
adminCms
- a CMS context with admin privilegesmemoryMonitor
- the memory monitor instancesystemConfiguration
- the system configuration
-
-
Method Details
-
addFormatterCacheWaitHandle
Adds a wait handle for the next cache update to a formatter configuration.- Parameters:
online
- true if we want to add a wait handle to the online cache, else the offline cache- Returns:
- the wait handle that has been added
-
canEditSitemapConfiguration
Checks if the sitemap config can be edited by the user in the given CMS context.Note: Even if this returns true, there may be other reasons preventing the sitemap configuration from being edited by the user.
- Parameters:
cms
- the CMS context to check- Returns:
- false if the user should not be able to edit the sitemap configuration
-
findEntryPoint
Finds the entry point to a sitemap.- Parameters:
cms
- the CMS contextopenPath
- the resource path to find the sitemap to- Returns:
- the sitemap entry point
-
flushInheritanceGroupChanges
Flushes inheritance group changes so the cache is updated.This is useful for test cases.
-
getAllDetailPages
Gets the complete list of beans for the currently configured detail pages.- Parameters:
cms
- the CMS context to use- Returns:
- the list of detail page infos
-
getCache
Gets the containerpage cache instance.- Returns:
- the containerpage cache instance
-
getCachedFormatters
Gets the cached formatter beans.- Parameters:
online
- true if the Online project formatters should be returned, false for the Offline formatters- Returns:
- the formatter configuration cache state
-
getCacheState
Gets the current ADE configuration cache state.- Parameters:
online
- true if you want the online state, false for the offline state- Returns:
- the configuration cache state
-
getConfigurationType
Gets the configuration file type.- Returns:
- the configuration file type
-
getConfiguredWorkplaceBundles
Returns the names of the bundles configured as workplace bundles in any module configuration.- Returns:
- the names of the bundles configured as workplace bundles in any module configuration.
-
getContentTypeNames
Gets the content types configured in any sitemap configuations.- Parameters:
online
- true if the types for the Online project should be fetched- Returns:
- the set of content types
-
getCurrentElement
public CmsContainerElementBean getCurrentElement(javax.servlet.ServletRequest req) throws CmsException Reads the current element bean from the request.- Parameters:
req
- the servlet request- Returns:
- the element bean
- Throws:
CmsException
- if no current element is set
-
getDetailIdCache
Gets the detail id cache for the Online or Offline projects.- Parameters:
online
- if true, gets the Online project detail id- Returns:
- the detail name cache
-
getDetailInfo
Gets the detail page information for everything.- Parameters:
cms
- the current CMS context- Returns:
- the list with all the detail page information
-
getDetailPage
Gets the detail page for a content element.- Parameters:
cms
- the CMS contextpageRootPath
- the element's root pathoriginPath
- the path in which the the detail page is being requested- Returns:
- the detail page for the content element
-
getDetailPage
public String getDetailPage(CmsObject cms, String rootPath, String linkSource, String targetDetailPage) Gets the detail page for a content element.- Parameters:
cms
- the CMS contextrootPath
- the element's root pathlinkSource
- the path in which the the detail page is being requestedtargetDetailPage
- the target detail page to use- Returns:
- the detail page for the content element
-
getDetailPageHandler
Gets the detail page finder.- Returns:
- the detail page finder
-
getDetailPages
Returns the main detail pages for a type in all of the VFS tree.- Parameters:
cms
- the current CMS contexttype
- the resource type name- Returns:
- a list of detail page root paths
-
getDetailPageTypes
Gets the set of types for which detail pages are defined.- Parameters:
cms
- the current CMS context- Returns:
- the set of types for which detail pages are defined
-
getElementSettings
public Map<String,CmsXmlContentProperty> getElementSettings(CmsObject cms, CmsResource resource) throws CmsException Returns the element settings for a given resource.- Parameters:
cms
- the current cms contextresource
- the resource- Returns:
- the element settings for a given resource
- Throws:
CmsException
- if something goes wrong
-
getElementViews
Returns the available element views.- Parameters:
cms
- the cms context- Returns:
- the element views
-
getElementViewType
Gets the element view configuration resource type.- Returns:
- the element view configuration resource type
-
getFavoriteList
Returns the favorite list, or creates it if not available.- Parameters:
cms
- the cms context- Returns:
- the favorite list
- Throws:
CmsException
- if something goes wrong
-
getFormatterSettings
public Map<String,CmsXmlContentProperty> getFormatterSettings(CmsObject cms, CmsADEConfigData config, I_CmsFormatterBean mainFormatter, CmsResource res, Locale locale, javax.servlet.ServletRequest req) Returns the settings configured for the given formatter which should be editable via ADE.- Parameters:
cms
- the cms contextconfig
- the sitemap configurationmainFormatter
- the formatterres
- the element resourcelocale
- the content localereq
- the current request, if available- Returns:
- the settings configured for the given formatter
-
getInheritedContainerState
public CmsInheritedContainerState getInheritedContainerState(CmsObject cms, CmsResource resource, String name) Returns the inheritance state for the given inheritance name and resource.- Parameters:
cms
- the current cms contextresource
- the resourcename
- the inheritance name- Returns:
- the inheritance state
-
getInheritedContainerState
public CmsInheritedContainerState getInheritedContainerState(CmsObject cms, String rootPath, String name) throws CmsException Returns the inheritance state for the given inheritance name and root path.- Parameters:
cms
- the current cms contextrootPath
- the root pathname
- the inheritance name- Returns:
- the inheritance state
- Throws:
CmsException
- if something goes wrong
-
getMaxSitemapDepth
Gets the maximum sitemap depth.- Returns:
- the maximum sitemap depth
-
getModuleConfigurationType
Gets the module configuration resource type.- Returns:
- the module configuration resource type
-
getNestedFormatters
public List<I_CmsFormatterBean> getNestedFormatters(CmsObject cms, CmsADEConfigData config, CmsResource res, Locale locale, javax.servlet.ServletRequest req) Returns the nested formatters of the given resource.- Parameters:
cms
- the cms contextconfig
- the sitemap configurationres
- the resourcelocale
- the content localereq
- the request, if available- Returns:
- the nested formatters
-
getOfflineElementUses
Creates a stream that produces the pages/groups referencing a given element.Note that this method doesn't take a CmsObject and just generates all resources referencing the element regardless of whether the current user can read them. So readResource calls for the ids of these resources may fail.
- Parameters:
resource
- the element resource- Returns:
- the stream of resources which use the element
-
getParameters
Gets ADE parameters.- Parameters:
cms
- the current CMS context- Returns:
- the ADE parameters for the current user
-
getParentFolderType
Gets the content element type for the given path's parent folder.- Parameters:
online
- true if we want to use the Online project's configurationrootPath
- the root path of a content- Returns:
- the parent folder type name, or null if none is defined
-
getPermissionInfo
public CmsPermissionInfo getPermissionInfo(CmsObject cms, CmsResource resource, String contextPath) throws CmsException Returns the permission info for the given resource.- Parameters:
cms
- the cms contextresource
- the resourcecontextPath
- the context path- Returns:
- the permission info
- Throws:
CmsException
- if checking the permissions fails
-
getPluginsForPath
Gets a map of plugin wrappers for the given site path.This *only* includes plugins defined in site plugins active on the given path, not those referenced in formatters.
- Parameters:
cms
- the CMS contextpath
- the path for which to get the plugins- Returns:
- the map of plugin wrappers, with the plugin groups as keys
-
getRawDetailPages
Gets the raw configured detail page information, with no existence checks or path correction.- Parameters:
cms
- the CMS context- Returns:
- the list of raw detail page info beans
-
getRecentList
Returns the favorite list, or creates it if not available.- Parameters:
cms
- the cms context- Returns:
- the favorite list
- Throws:
CmsException
- if something goes wrong
-
getSitemapConfigurationType
Gets the sitemap configuration resource type.- Returns:
- the resource type for sitemap configurations
-
getSubSitePaths
Returns all sub sites below the given path.- Parameters:
cms
- the cms contextsubSiteRoot
- the sub site root path- Returns:
- the sub site root paths
-
getSubSiteRoot
Tries to get the subsite root for a given resource root path.- Parameters:
cms
- the current CMS contextrootPath
- the root path for which the subsite root should be found- Returns:
- the subsite root
-
getSubsitesForSiteSelector
Gets the subsites to be displayed in the site selector.- Parameters:
online
- true if we want the subsites for the Online project- Returns:
- the subsites to be displayed in the site selector
-
getUploadWarningTable
Gets the table of upload warnings.- Returns:
- the table of upload warnings
-
handleHtmlRedirect
public void handleHtmlRedirect(CmsObject userCms, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String htmlRedirect) throws CmsException Processes a HTML redirect content.This needs to be in the ADE manager because the user for whom the HTML redirect is being loaded does not necessarily have read permissions for the redirect target, so we read the redirect target with admin privileges.
- Parameters:
userCms
- the CMS context of the current userrequest
- the servlet requestresponse
- the servlet responsehtmlRedirect
- the path of the HTML redirect resource- Throws:
CmsException
- if something goes wrong
-
initialize
Initializes the configuration by reading all configuration files and caching their data. -
isDetailPage
Checks whether the given resource is configured as a detail page.- Parameters:
cms
- the current CMS contextresource
- the resource which should be tested- Returns:
- true if the resource is configured as a detail page
-
isEditorRestricted
Checks if the user should be prevented from editing a file.This is not a permission check, but an additional mechanism to prevent users from editing configuration files even if they technically need or have write permissions for these files.
- Parameters:
cms
- the CMS contextres
- the resource to check- Returns:
- true if the user should be prevented from editing the file
-
isElementReused
Checks if an element is reused in a page or group that is not excluded by a given predicate.- Parameters:
resource
- the resource to checkexclude
- predicate used to ignore reuses which match it- Returns:
- true if the element is reused
-
isInitialized
Checks whether the ADE manager is initialized (this should usually be the case except during the setup).- Returns:
- true if the ADE manager is initialized
-
isShowEditorHelp
Returns the show editor help flag.- Parameters:
cms
- the cms context- Returns:
- the show editor help flag
-
lookupConfiguration
Looks up the configuration data for a given sitemap path.- Parameters:
cms
- the current CMS contextrootPath
- the root path for which the configuration data should be looked up- Returns:
- the configuration data
-
lookupConfigurationWithCache
Looks up the configuration data for a given sitemap path, but uses a thread-local cache for the current request for efficiency.- Parameters:
cms
- the current CMS contextrootPath
- the root path for which the configuration data should be looked up- Returns:
- the configuration data
-
refresh
Reloads the configuration.Normally you shouldn't call this directly since the event handlers take care of updating the configuration.
-
saveDetailPages
public boolean saveDetailPages(CmsObject cms, String rootPath, List<CmsDetailPageInfo> detailPages, CmsUUID newId) throws CmsException Saves a list of detail pages.- Parameters:
cms
- the cms contextrootPath
- the root pathdetailPages
- the detail pagesnewId
- the id to use for new detail pages without an id- Returns:
- true if the detail pages could be successfully saved
- Throws:
CmsException
- if something goes wrong
-
saveFavoriteList
public void saveFavoriteList(CmsObject cms, List<CmsContainerElementBean> favoriteList) throws CmsException Saves the favorite list, user based.- Parameters:
cms
- the cms contextfavoriteList
- the element list- Throws:
CmsException
- if something goes wrong
-
saveInheritedContainer
public void saveInheritedContainer(CmsObject cms, CmsResource pageResource, String name, boolean newOrder, List<CmsContainerElementBean> elements) throws CmsException Saves the inheritance container information.- Parameters:
cms
- the current cms contextpageResource
- the resource or parent foldername
- the inheritance namenewOrder
- if the element have been reorderedelements
- the elements- Throws:
CmsException
- if something goes wrong
-
saveInheritedContainer
public void saveInheritedContainer(CmsObject cms, String sitePath, String name, boolean newOrder, List<CmsContainerElementBean> elements) throws CmsException Saves the inheritance container information.- Parameters:
cms
- the current cms contextsitePath
- the site path of the resource or parent foldername
- the inheritance namenewOrder
- if the element have been reorderedelements
- the elements- Throws:
CmsException
- if something goes wrong
-
saveRecentList
public void saveRecentList(CmsObject cms, List<CmsContainerElementBean> recentList) throws CmsException Saves the favorite list, user based.- Parameters:
cms
- the cms contextrecentList
- the element list- Throws:
CmsException
- if something goes wrong
-
setShowEditorHelp
Sets the show editor help flag.- Parameters:
cms
- the cms contextshowHelp
- the show help flag- Throws:
CmsException
- if writing the user info fails
-
shutdown
The method which is called when the OpenCms instance is shut down. -
waitForCacheUpdate
Waits until the next time the cache is updated.- Parameters:
online
- true if we want to wait for the online cache, false for the offline cache
-
waitForFormatterCache
Waits until the formatter cache has finished updating itself.This method is only intended for use in test cases.
- Parameters:
online
- true if we should wait for the online formatter cache,false for the offline cache
-
elementFromJson
Creates an element from its serialized data.- Parameters:
data
- the serialized data- Returns:
- the restored element bean
- Throws:
JSONException
- if the serialized data got corrupted
-
elementToJson
Converts the given element to JSON.- Parameters:
element
- the element to convertexcludeSettings
- the keys of settings which should not be written to the JSON- Returns:
- the JSON representation
-
getCache
Gets the configuration cache instance.- Parameters:
online
- true if you want the online cache, false for the offline cache- Returns:
- the ADE configuration cache instance
-
getOfflineCache
Gets the offline cache.- Returns:
- the offline configuration cache
-
getOnlineCache
Gets the online cache.- Returns:
- the online configuration cache
-
getRoleForSitemapConfigEditing
Gets the role necessary to edit sitemap configuration files.- Returns:
- the role needed for editing sitemap configurations
-
getRootPath
Gets the root path for a given resource structure id.- Parameters:
structureId
- the structure idonline
- if true, the resource will be looked up in the online project ,else in the offline project- Returns:
- the root path for the given structure id
- Throws:
CmsException
- if something goes wrong
-
getTempfileProject
Gets a tempfile project, creating one if it doesn't exist already.- Parameters:
cms
- the CMS context to use- Returns:
- the tempfile project
- Throws:
CmsException
- if something goes wrong
-
internalLookupConfiguration
Internal configuration lookup method.- Parameters:
cms
- the cms contextrootPath
- the root path for which to look up the configuration- Returns:
- the configuration for the given path
-