Class CmsADEManager


  • public class CmsADEManager
    extends java.lang.Object
    This is the main class used to access the ADE configuration and also accomplish some other related tasks like loading/saving favorite and recent lists.

    • Constructor Detail

      • CmsADEManager

        public CmsADEManager​(CmsObject adminCms,
                             CmsMemoryMonitor memoryMonitor,
                             CmsSystemConfiguration systemConfiguration)
        Creates a new ADE manager.

        Parameters:
        adminCms - a CMS context with admin privileges
        memoryMonitor - the memory monitor instance
        systemConfiguration - the system configuration
    • Method Detail

      • addFormatterCacheWaitHandle

        public CmsWaitHandle addFormatterCacheWaitHandle​(boolean online)
        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

        public boolean canEditSitemapConfiguration​(CmsObject cms)
        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

        public java.lang.String findEntryPoint​(CmsObject cms,
                                               java.lang.String openPath)
        Finds the entry point to a sitemap.

        Parameters:
        cms - the CMS context
        openPath - the resource path to find the sitemap to
        Returns:
        the sitemap entry point
      • flushInheritanceGroupChanges

        public void flushInheritanceGroupChanges()
        Flushes inheritance group changes so the cache is updated.

        This is useful for test cases.

      • getAllDetailPages

        public java.util.List<CmsDetailPageInfogetAllDetailPages​(CmsObject cms)
        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

        public CmsADECache getCache()
        Gets the containerpage cache instance.

        Returns:
        the containerpage cache instance
      • getCachedFormatters

        public CmsFormatterConfigurationCacheState getCachedFormatters​(boolean online)
        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

        public CmsADEConfigCacheState getCacheState​(boolean online)
        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
      • getConfiguredWorkplaceBundles

        public java.util.Set<java.lang.String> 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

        public java.util.Set<java.lang.String> getContentTypeNames​(boolean online)
        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
      • getDetailIdCache

        public CmsDetailNameCache getDetailIdCache​(boolean online)
        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

        public java.util.List<CmsADEConfigData.DetailInfogetDetailInfo​(CmsObject cms)
        Gets the detail page information for everything.

        Parameters:
        cms - the current CMS context
        Returns:
        the list with all the detail page information
      • getDetailPage

        public java.lang.String getDetailPage​(CmsObject cms,
                                              java.lang.String pageRootPath,
                                              java.lang.String originPath)
        Gets the detail page for a content element.

        Parameters:
        cms - the CMS context
        pageRootPath - the element's root path
        originPath - the path in which the the detail page is being requested
        Returns:
        the detail page for the content element
      • getDetailPage

        public java.lang.String getDetailPage​(CmsObject cms,
                                              java.lang.String rootPath,
                                              java.lang.String linkSource,
                                              java.lang.String targetDetailPage)
        Gets the detail page for a content element.

        Parameters:
        cms - the CMS context
        rootPath - the element's root path
        linkSource - the path in which the the detail page is being requested
        targetDetailPage - the target detail page to use
        Returns:
        the detail page for the content element
      • getDetailPages

        public java.util.List<java.lang.String> getDetailPages​(CmsObject cms,
                                                               java.lang.String type)
        Returns the main detail pages for a type in all of the VFS tree.

        Parameters:
        cms - the current CMS context
        type - the resource type name
        Returns:
        a list of detail page root paths
      • getDetailPageTypes

        public java.util.Set<java.lang.String> getDetailPageTypes​(CmsObject cms)
        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
      • getFormatterSettings

        public java.util.Map<java.lang.String,​CmsXmlContentPropertygetFormatterSettings​(CmsObject cms,
                                                                                                CmsADEConfigData config,
                                                                                                I_CmsFormatterBean mainFormatter,
                                                                                                CmsResource res,
                                                                                                java.util.Locale locale,
                                                                                                javax.servlet.ServletRequest req)
        Returns the settings configured for the given formatter which should be editable via ADE.

        Parameters:
        cms - the cms context
        config - the sitemap configuration
        mainFormatter - the formatter
        res - the element resource
        locale - the content locale
        req - the current request, if available
        Returns:
        the settings configured for the given formatter
      • getInheritedContainerState

        public CmsInheritedContainerState getInheritedContainerState​(CmsObject cms,
                                                                     java.lang.String rootPath,
                                                                     java.lang.String name)
                                                              throws CmsException
        Returns the inheritance state for the given inheritance name and root path.

        Parameters:
        cms - the current cms context
        rootPath - the root path
        name - the inheritance name
        Returns:
        the inheritance state
        Throws:
        CmsException - if something goes wrong
      • getMaxSitemapDepth

        public int getMaxSitemapDepth()
        Gets the maximum sitemap depth.

        Returns:
        the maximum sitemap depth
      • getNestedFormatters

        public java.util.List<I_CmsFormatterBeangetNestedFormatters​(CmsObject cms,
                                                                      CmsADEConfigData config,
                                                                      CmsResource res,
                                                                      java.util.Locale locale,
                                                                      javax.servlet.ServletRequest req)
        Returns the nested formatters of the given resource.

        Parameters:
        cms - the cms context
        config - the sitemap configuration
        res - the resource
        locale - the content locale
        req - the request, if available
        Returns:
        the nested formatters
      • getParameters

        public java.util.Map<java.lang.String,​java.lang.String> getParameters​(CmsObject cms)
        Gets ADE parameters.

        Parameters:
        cms - the current CMS context
        Returns:
        the ADE parameters for the current user
      • getParentFolderType

        public java.lang.String getParentFolderType​(boolean online,
                                                    java.lang.String rootPath)
        Gets the content element type for the given path's parent folder.
        Parameters:
        online - true if we want to use the Online project's configuration
        rootPath - the root path of a content
        Returns:
        the parent folder type name, or null if none is defined
      • getPluginsForPath

        public java.util.Map<java.lang.String,​java.util.List<CmsTemplatePluginWrapper>> getPluginsForPath​(CmsObject cms,
                                                                                                                java.lang.String path)
        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 context
        path - the path for which to get the plugins
        Returns:
        the map of plugin wrappers, with the plugin groups as keys
      • getRawDetailPages

        public java.util.List<CmsDetailPageInfogetRawDetailPages​(CmsObject cms)
        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
      • getSubSitePaths

        public java.util.List<java.lang.String> getSubSitePaths​(CmsObject cms,
                                                                java.lang.String subSiteRoot)
        Returns all sub sites below the given path.

        Parameters:
        cms - the cms context
        subSiteRoot - the sub site root path
        Returns:
        the sub site root paths
      • getSubSiteRoot

        public java.lang.String getSubSiteRoot​(CmsObject cms,
                                               java.lang.String rootPath)
        Tries to get the subsite root for a given resource root path.

        Parameters:
        cms - the current CMS context
        rootPath - the root path for which the subsite root should be found
        Returns:
        the subsite root
      • getSubsitesForSiteSelector

        public java.util.List<java.lang.String> getSubsitesForSiteSelector​(boolean online)
        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
      • handleHtmlRedirect

        public void handleHtmlRedirect​(CmsObject userCms,
                                       javax.servlet.http.HttpServletRequest request,
                                       javax.servlet.http.HttpServletResponse response,
                                       java.lang.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 user
        request - the servlet request
        response - the servlet response
        htmlRedirect - the path of the HTML redirect resource
        Throws:
        CmsException - if something goes wrong
      • initialize

        public void initialize()
        Initializes the configuration by reading all configuration files and caching their data.

      • isDetailPage

        public boolean isDetailPage​(CmsObject cms,
                                    CmsResource resource)
        Checks whether the given resource is configured as a detail page.

        Parameters:
        cms - the current CMS context
        resource - the resource which should be tested
        Returns:
        true if the resource is configured as a detail page
      • isEditorRestricted

        public boolean isEditorRestricted​(CmsObject cms,
                                          CmsResource res)
        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 context
        res - the resource to check
        Returns:
        true if the user should be prevented from editing the file
      • isInitialized

        public boolean 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

        public boolean isShowEditorHelp​(CmsObject cms)
        Returns the show editor help flag.

        Parameters:
        cms - the cms context
        Returns:
        the show editor help flag
      • lookupConfiguration

        public CmsADEConfigData lookupConfiguration​(CmsObject cms,
                                                    java.lang.String rootPath)
        Looks up the configuration data for a given sitemap path.

        Parameters:
        cms - the current CMS context
        rootPath - the root path for which the configuration data should be looked up
        Returns:
        the configuration data
      • lookupConfigurationWithCache

        public CmsADEConfigData lookupConfigurationWithCache​(CmsObject cms,
                                                             java.lang.String rootPath)
        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 context
        rootPath - the root path for which the configuration data should be looked up
        Returns:
        the configuration data
      • refresh

        public void 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,
                                       java.lang.String rootPath,
                                       java.util.List<CmsDetailPageInfo> detailPages,
                                       CmsUUID newId)
                                throws CmsException
        Saves a list of detail pages.

        Parameters:
        cms - the cms context
        rootPath - the root path
        detailPages - the detail pages
        newId - 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
      • saveInheritedContainer

        public void saveInheritedContainer​(CmsObject cms,
                                           CmsResource pageResource,
                                           java.lang.String name,
                                           boolean newOrder,
                                           java.util.List<CmsContainerElementBean> elements)
                                    throws CmsException
        Saves the inheritance container information.

        Parameters:
        cms - the current cms context
        pageResource - the resource or parent folder
        name - the inheritance name
        newOrder - if the element have been reordered
        elements - the elements
        Throws:
        CmsException - if something goes wrong
      • saveInheritedContainer

        public void saveInheritedContainer​(CmsObject cms,
                                           java.lang.String sitePath,
                                           java.lang.String name,
                                           boolean newOrder,
                                           java.util.List<CmsContainerElementBean> elements)
                                    throws CmsException
        Saves the inheritance container information.

        Parameters:
        cms - the current cms context
        sitePath - the site path of the resource or parent folder
        name - the inheritance name
        newOrder - if the element have been reordered
        elements - the elements
        Throws:
        CmsException - if something goes wrong
      • setShowEditorHelp

        public void setShowEditorHelp​(CmsObject cms,
                                      boolean showHelp)
                               throws CmsException
        Sets the show editor help flag.

        Parameters:
        cms - the cms context
        showHelp - the show help flag
        Throws:
        CmsException - if writing the user info fails
      • shutdown

        public void shutdown()
        The method which is called when the OpenCms instance is shut down.

      • waitForCacheUpdate

        public void waitForCacheUpdate​(boolean online)
        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

        public void waitForFormatterCache​(boolean online)
        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
      • elementToJson

        protected JSONObject elementToJson​(CmsContainerElementBean element,
                                           java.util.Set<java.lang.String> excludeSettings)
        Converts the given element to JSON.

        Parameters:
        element - the element to convert
        excludeSettings - the keys of settings which should not be written to the JSON
        Returns:
        the JSON representation
      • getCache

        protected org.opencms.ade.configuration.CmsConfigurationCache getCache​(boolean online)
        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

        protected org.opencms.ade.configuration.CmsConfigurationCache getOfflineCache()
        Gets the offline cache.

        Returns:
        the offline configuration cache
      • getOnlineCache

        protected org.opencms.ade.configuration.CmsConfigurationCache getOnlineCache()
        Gets the online cache.

        Returns:
        the online configuration cache
      • getRoleForSitemapConfigEditing

        protected CmsRole getRoleForSitemapConfigEditing()
        Gets the role necessary to edit sitemap configuration files.
        Returns:
        the role needed for editing sitemap configurations
      • getRootPath

        protected java.lang.String getRootPath​(CmsUUID structureId,
                                               boolean online)
                                        throws CmsException
        Gets the root path for a given resource structure id.

        Parameters:
        structureId - the structure id
        online - 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
      • internalLookupConfiguration

        protected CmsADEConfigData internalLookupConfiguration​(CmsObject cms,
                                                               java.lang.String rootPath)
        Internal configuration lookup method.

        Parameters:
        cms - the cms context
        rootPath - the root path for which to look up the configuration
        Returns:
        the configuration for the given path