Class PortalManager


  • public final class PortalManager
    extends java.lang.Object
    Manager for Portals that handle used classes, their associated images and manage lots of general features around PortalElement. The features are delegate to the portal element.
    Author:
    Jean-Philippe Encausse
    • Field Detail

      • SEO_OPENGRAPH_ENABLED_PROP

        public static final java.lang.String SEO_OPENGRAPH_ENABLED_PROP
        See Also:
        Constant Field Values
      • CHECK_PORTAL_CATEGORY_ATTR

        public static final java.lang.String CHECK_PORTAL_CATEGORY_ATTR
        See Also:
        Constant Field Values
      • PRIORITIZE_PORTLET_REDIRECT_PROP

        public static final java.lang.String PRIORITIZE_PORTLET_REDIRECT_PROP
        See Also:
        Constant Field Values
      • PORTAL_ACTION_REMOVE

        public static final java.lang.String PORTAL_ACTION_REMOVE
        See Also:
        Constant Field Values
      • PORTAL_ACTION_CACHE

        public static final java.lang.String PORTAL_ACTION_CACHE
        See Also:
        Constant Field Values
      • PORTAL_ACTION_MODE

        public static final java.lang.String PORTAL_ACTION_MODE
        See Also:
        Constant Field Values
      • PORTAL_PORTLET_FAKE

        public static final java.lang.String PORTAL_PORTLET_FAKE
        See Also:
        Constant Field Values
      • PORTAL_CSS_DIRECTORY

        public static final java.lang.String PORTAL_CSS_DIRECTORY
        See Also:
        Constant Field Values
      • PORTAL_ACTION_CUT

        public static final java.lang.String PORTAL_ACTION_CUT
        See Also:
        Constant Field Values
      • PORTAL_ACTION_PAST

        public static final java.lang.String PORTAL_ACTION_PAST
        See Also:
        Constant Field Values
      • PORTAL_ACTION_REGEXP

        public static final org.apache.oro.text.regex.Pattern PORTAL_ACTION_REGEXP
      • PORTAL_MODE_ENABLE

        public static final java.lang.String PORTAL_MODE_ENABLE
        See Also:
        Constant Field Values
      • PORTAL_CLIPBOARD

        public static final java.lang.String PORTAL_CLIPBOARD
        See Also:
        Constant Field Values
      • PORTAL_DEFAULT_CACHE

        public static final java.lang.String PORTAL_DEFAULT_CACHE
        See Also:
        Constant Field Values
      • PORTAL_PUBLICATION

        public static final java.lang.String PORTAL_PUBLICATION
        See Also:
        Constant Field Values
      • PORTAL_PORTALELEMENT

        public static final java.lang.String PORTAL_PORTALELEMENT
        See Also:
        Constant Field Values
      • PORTAL_PORTALELEMENT_DOMID

        public static final java.lang.String PORTAL_PORTALELEMENT_DOMID
        See Also:
        Constant Field Values
      • PORTAL_CURRENTCATEGORY

        public static final java.lang.String PORTAL_CURRENTCATEGORY
        See Also:
        Constant Field Values
      • PORTAL_PORTALCATEGORY

        public static final java.lang.String PORTAL_PORTALCATEGORY
        See Also:
        Constant Field Values
      • PORTAL_CTXCATEGORIES

        public static final java.lang.String PORTAL_CTXCATEGORIES
        See Also:
        Constant Field Values
      • PORTAL_TEMPLATEUSAGE

        public static final java.lang.String PORTAL_TEMPLATEUSAGE
        See Also:
        Constant Field Values
      • PORTAL_CONTEXTE_INCLUDE

        public static final java.lang.String PORTAL_CONTEXTE_INCLUDE
        See Also:
        Constant Field Values
      • PORTLET_SEARCH_TOPBAR_EXTRADATA

        public static final java.lang.String PORTLET_SEARCH_TOPBAR_EXTRADATA
        See Also:
        Constant Field Values
      • HIGHLIGHT_ENABLED

        public static final java.lang.String HIGHLIGHT_ENABLED
        See Also:
        Constant Field Values
      • HIGHLIGHT_DEFAULT_MODE

        public static final java.lang.String HIGHLIGHT_DEFAULT_MODE
        See Also:
        Constant Field Values
    • Method Detail

      • getActionParam

        public static java.lang.String getActionParam​(PortalElement portlet,
                                                      java.lang.String action)
        Return the parameter for an action of a Portlet
        Parameters:
        portlet - the working portlet
        action - the portlet action
        Returns:
        String
        Since:
        jcms-4.0
      • sendAction

        public static java.lang.String sendAction​(javax.servlet.http.HttpServletRequest request,
                                                  PortalElement portlet,
                                                  java.lang.String action,
                                                  java.lang.String message)
        Return a well formated a URL with a parameter to do an Action for the portlet
        Parameters:
        request - the HttpRequest
        portlet - the working portlet
        action - String action to send
        message - Strnig action value
        Returns:
        String
        Since:
        jcms-4.0
      • receiveAction

        public static java.lang.String receiveAction​(javax.servlet.http.HttpServletRequest request,
                                                     PortalElement portlet,
                                                     java.lang.String action)
        Return a Message set for this Portlet by sendAction()
        Parameters:
        request - the HttpRequest
        portlet - the working portlet
        action - String action to receive
        Returns:
        Sting
        Since:
        jcms-4.0
      • removeAction

        public static java.lang.String removeAction​(javax.servlet.http.HttpServletRequest request,
                                                    PortalElement portlet,
                                                    java.lang.String action)
        Remove an action from the session. Do not change the cache
        Parameters:
        request - the HttpRequest
        portlet - the working portlet
        action - String action to remove
        Returns:
        String the action value TODO: Refresh Cache Boolean
        Since:
        jcms-4.0
      • processActions

        public static void processActions​(javax.servlet.http.HttpServletRequest request,
                                          java.util.List<PortalElement> portlets,
                                          Member loggedMember,
                                          java.util.List<java.lang.String> actions,
                                          java.util.List<java.lang.String> messages,
                                          java.util.List<java.lang.String> fullParams)
      • getUrlWithCommonUpdatedParams

        public static java.lang.String getUrlWithCommonUpdatedParams​(javax.servlet.http.HttpServletRequest request,
                                                                     java.lang.String[] names,
                                                                     java.lang.String[] values,
                                                                     boolean encodeParams)
        Parameters:
        request - the current HttpRequest
        names - an array of parameter names added or updated the url
        values - an array of values added or updated the url corresponding to names
        encodeParams - whether to do a encodeURL on given param (if false, don't forget to do the encodeURL yourself on the parameters which need it! it is provided as a performance boost because encodeURL can be slow)
        Returns:
        Returns a relative URL with the given parameters added or updated plus common parameters: portal, id, portlet, jsp, cid if they are in the current request parameters
      • handleRequest

        public static boolean handleRequest​(javax.servlet.http.HttpServletRequest request,
                                            javax.servlet.http.HttpServletResponse response,
                                            Member loggedMember)
                                     throws java.io.IOException
        Handle Request to check if parameters are Action of Portlets if true then remove them from request and put them to session.
        Parameters:
        request - the HttpRequest
        response - the HttpResponse
        loggedMember - the Member
        Returns:
        boolean
        Throws:
        java.io.IOException - exception
        Since:
        jcms-4.0
      • getPermalink

        public static java.lang.String getPermalink​(Data data)
        Deprecated.
        Returns an url representing the permanent link for the given data.
        Parameters:
        data - the data to work with
        Returns:
        String an url
      • getPermalink

        public static java.lang.String getPermalink​(Data data,
                                                    java.util.Locale locale)
        Returns an url representing the permanent link for the given data in the specified language.
        Parameters:
        data - the data to work with
        locale - the Locale in which the data is to be access by the permalink
        Returns:
        String an url
      • getCacheParam

        public static java.lang.String getCacheParam​(PortalElement portlet)
        Return the parameter for a cache of a Portlet
        Parameters:
        portlet - the Portlet
        Returns:
        String
        Since:
        jcms-4.0
      • refreshCache

        public static boolean refreshCache​(javax.servlet.http.HttpServletRequest request,
                                           PortalElement portlet,
                                           Member loggedMember)
        Return true if the portlet should refresh its cache Remove the cache parameter only if its the portlet itself that ask for a refresh (not one of it's parent)
        Parameters:
        request - the HttpRequest
        portlet - the Portlet
        loggedMember - the logged member
        Returns:
        boolean
        Since:
        jcms-4.0
      • disableCache

        public static boolean disableCache​(javax.servlet.http.HttpServletRequest request,
                                           PortalElement portlet,
                                           Member loggedMember)
        Return true if the portlet should disable its cache Remove the cache parameter only if its the portlet itself that ask for a refresh (not one of it's parent)
        Parameters:
        request - the HttpRequest
        portlet - the Portlet
        loggedMember - the logged member
        Returns:
        boolean
        Since:
        jcms-4.0.1
      • containsAction

        protected static boolean containsAction​(javax.servlet.http.HttpServletRequest request,
                                                PortalElement portlet)
        Looking for an action in the HttpRequest
        Parameters:
        request - the HttpRequest
        portlet - the Portlet
        Returns:
        true if the request contains a Portlet Action
      • updateFullDisplay

        protected static boolean updateFullDisplay​(javax.servlet.http.HttpServletRequest request,
                                                   PortalElement portlet,
                                                   Member loggedMember)
        Looking for a FullDisplay Portlet
        Parameters:
        request - the HttpRequest
        portlet - the Portlet
        loggedMember - the logged member
        Returns:
        true if a FullDisplay Portlet Exists and paremeter exists TODO: Control Customized Portlets
      • hasFullDisplay

        public static boolean hasFullDisplay​(PortalElement portlet,
                                             Member loggedMember)
        Checks if there is a full display anywhere inside the specified PortalElement (including the specified portlet itself).
        Parameters:
        portlet - the portlet from which to start FullDisplay search
        loggedMember - the current loggedMember
        Returns:
        true if the specified portlet is a FullDisplay or if any of its children is a full display, false otherwise
      • isPreview

        public static boolean isPreview​(javax.servlet.http.HttpServletRequest request,
                                        PortalElement portlet)
        Return true if the portlet is in preview mode
        Parameters:
        request - the HttpRequest
        portlet - the Portlet
        Returns:
        boolean
        Since:
        jcms-4.0
      • setPreview

        public static void setPreview​(javax.servlet.http.HttpServletRequest request,
                                      PortalElement portlet,
                                      boolean isPreview)
        Sets the portlet preview mode
        Parameters:
        request - the HttpRequest
        portlet - the Portlet
        isPreview - (true to set it, false to remove)
        Since:
        jcms-6.0
      • getAppPortal

        public static PortalInterface getAppPortal()
        Returns:
        the portal dedicated to display applications.
        Since:
        jcms-10.0.0
      • getPrintPortal

        public static PortalInterface getPrintPortal()
        Return the print portal according to the property channel.default-printportal
        Returns:
        the print Portal
        Since:
        jcms-5.0.0
      • getHomeCategory

        public static Category getHomeCategory()
        Return by default the Category associated to property channel.default-index.

        Implementation note : since jcms-7.1.2, this default home Category can be overrided by any custom PortalPolicyFilter.
        See BasicPortalPolicyFilter.getHomeCategory(Category, Member).
        Returns:
        the home Category of the current logged Member.
      • getRootNavigate

        public static Category[] getRootNavigate()
        Returns:
        an array of Categories bound to property display.navigate-root, or null.
      • updateProperties

        public static void updateProperties()
        Init #defaultPortal, #homeCategory, #printPortal and #rootNavigate given following properties :
        • #defaultPortal : based on channel.default-portal id property, or "j_206" if property not set.
        • #homeCategory : based on channel.default-index id property, or null if property not set.
        • #printPortal : based on channel.default-printportal id property, or "j_55" if property not set.
        • #rootNavigate : based on display.navigate-root ids property, or null if property not set.
      • findPortal

        public static boolean findPortal​(Publication pub,
                                         DisplayContext context,
                                         Member loggedMember,
                                         boolean skipRedirect,
                                         boolean skipExact,
                                         boolean preview,
                                         Category[] ctxCategories)
        Fill a display context with all the elements usefull for navigation, using the given steps:
        1- Iterate on publication categories starting with sibling of contextual categories
        2- Recursive call with parents until finding a Portal
        3- Then set the portalCategory and the currentCategory
        Parameters:
        pub - the publication to display
        context - the display to fill
        loggedMember - the member, the publication is displayed for
        skipRedirect - should we ignore PortalRedirect ?
        skipExact - should we ignore exact portal ?
        preview - are we in preview mode ?
        ctxCategories - the contextual categories to sort the iteration on publication categories
        Returns:
        true if the portal has been found
      • findPortal

        public static boolean findPortal​(Category cat,
                                         DisplayContext context,
                                         Member loggedMember,
                                         boolean skipRedirect,
                                         boolean skipExact,
                                         boolean recursive)
        Recursive methode that try to find the right portal for a given category otherwise may call parent category. Work with an display context filled with navigation elements:
        Parameters:
        cat - the category to work with
        context - the list to fill
        loggedMember - the member, the publication is displayed for
        skipRedirect - should we ignore PortalRedirect ? Usefull when called by findPortal(Publication).
        skipExact - should we ignore portal accepting only exact match
        recursive - is it a recursive call with parent category ?
        Returns:
        true if the portal has been found
      • checkPortal

        public static boolean checkPortal​(Category cat,
                                          DisplayContext context,
                                          Member loggedMember,
                                          boolean skipRedirect,
                                          boolean skipExact)

        This method looks for a matching Portal for a given Category. Then set the portal Category in display context.

        Portal with ExactCategory option are priority checked

        Parameters:
        cat - The current category
        context - display context
        loggedMember - The current member
        skipRedirect - Should skip redirect portal
        skipExact - Should skip exact portal
        Returns:
        boolean true if portal as been found
        Since:
        jcms-4.0
      • checkPortal

        protected static boolean checkPortal​(Category cat,
                                             Publication pub,
                                             DisplayContext context,
                                             Member loggedMember,
                                             boolean skipRedirect,
                                             boolean skipExact)
        Check the validity of the given Publication to be a convenient Portal.
        Set the Portal.
        Parameters:
        cat - the iterated category if any
        pub - the Publication
        context - a DisplayContext to update
        loggedMember - the Logged Member
        skipRedirect - boolean to skip redirect
        skipExact - boolean to skip exact portal
        Returns:
        true if publication is validated
        Since:
        jcms-4.0
      • checkPortal

        protected static boolean checkPortal​(Category category,
                                             Publication pub,
                                             DisplayContext context,
                                             Member loggedMember,
                                             boolean skipRedirect,
                                             boolean skipExact,
                                             boolean preview)
        Check the validity of the given Publication to be a convenient Portal.
        Parameters:
        category - the iterated category if any
        pub - the Publication
        context - a DisplayContext to update
        loggedMember - the Logged Member
        skipRedirect - boolean to skip redirect
        skipExact - boolean to skip exact portal
        preview - boolean is preview mode
        Returns:
        true if publication is validated
        Since:
        jcms-4.0
      • getAllCategories

        protected static java.util.List<Category> getAllCategories​(Member loggedMember,
                                                                   java.util.Collection<Category> categoryCollec)
        Return all categories at a given levels
        Parameters:
        loggedMember - the logged Member
        categoryCollec - a collection of Category
        Returns:
        List a list of Category
        Since:
        jcms-4.0
      • getCtxCategories

        public static Category[] getCtxCategories​(javax.servlet.http.HttpServletRequest request)
        Get all Categories from cid parameters in the request
        Parameters:
        request - the current request
        Returns:
        An Array of category
        Since:
        jcms-5.0
      • getUrlWithUpdateCtxCategories

        public static java.lang.String getUrlWithUpdateCtxCategories​(Category cat,
                                                                     Category[] ctxArray,
                                                                     java.lang.String resourcePath,
                                                                     java.util.Map<java.lang.String,​java.lang.String[]> parameterMap,
                                                                     boolean ctx)
        Return an Url with updated cids
        Parameters:
        cat - the category
        ctxArray - the contextual category array
        resourcePath - the request resource path
        parameterMap - the request parameter map
        ctx - is sctx category or navigate category
        Returns:
        a erlative Url
        Since:
        jcms-5.5
      • getUrlWithUpdateCtxCategories

        public static java.lang.String getUrlWithUpdateCtxCategories​(Category cat,
                                                                     Category[] ctxArray,
                                                                     javax.servlet.http.HttpServletRequest request,
                                                                     boolean ctx)
        Return an Url with updated cids
        Parameters:
        cat - the category
        ctxArray - the contextual category array
        request - the request to call ServletUtil
        ctx - is sctx category or navigate category
        Returns:
        a erlative Url
        Since:
        jcms-5.0
      • getDisplayContext

        public static DisplayContext getDisplayContext​(java.lang.String id,
                                                       PortalInterface overrided,
                                                       Category[] ctxCategories,
                                                       Member loggedMember,
                                                       boolean preview,
                                                       java.lang.String queryString)
        This method compute a display context of parameters for display.jsp. The algorithm work on parameter 'id' to find matching attributes: CurrentCategory, PortalCategory, Portal to display the given Data.
        - If context is null then a sendForbidden() must be called
        - If redirect not null then sendRedirect()
        Parameters:
        id - the request parameter id describing the working data
        overrided - the overrided portal (request parameter portal)
        ctxCategories - the contextual categories (request parameter cid)
        loggedMember - the loggedmember
        preview - boolean indicate if it is a preview
        queryString - the request querystring used by redirect parameters
        Returns:
        List of display.jsp computed parameters
      • handleDisplayRequest

        public static void handleDisplayRequest​(JcmsJspContext context,
                                                DisplayContext display,
                                                long startPageRequest)
        Called by display.jsp to set all request attributes from computed display context. The method getDisplayContext() must be called before to compute display context.
        Parameters:
        context - a JcmsContext handling page request
        display - a computed display.jsp display context
        startPageRequest - long indicating start page request
        See Also:
        getDisplayContext(String, PortalInterface, Category[], Member, boolean, String)
      • addHighlightAttributes

        public static void addHighlightAttributes​(javax.servlet.http.HttpServletRequest request,
                                                  java.lang.String text,
                                                  java.lang.String mode)
        Adds the given text and mode parameters as request attributes, and set the hlOk attribute to true to allow doDisplayHeader.jsp to provide highlight button.
        Parameters:
        request - the HttpRequest
        text - The text to highlight
        mode - the mode to use to search the text (same mode used in query, all, any, etc)
      • clearHighlightAttributes

        public static void clearHighlightAttributes​(javax.servlet.http.HttpServletRequest request)
        Remove the highlight attributes from the current request to disable highlighting for the rest of the page
        Parameters:
        request - the HttpRequest
      • getHightlightParams

        public static java.lang.String getHightlightParams​(javax.servlet.http.HttpServletRequest request)
        Build query string parameters from the information currently available in the request attributes. If highlight attributes are available in the request, the return value will be of the form "&hlText=...&hlMode=..."
        Parameters:
        request - the HttpRequest
        Returns:
        String the highlight param
      • getAjaxPortalUrl

        @Deprecated
        public static java.lang.String getAjaxPortalUrl​(PortalElement portlet)
        Deprecated.
        use #getAjaxPortalUrl()
        Build an URL working with AjaxContext redirects
        Parameters:
        portlet - the Portlet to display
        Returns:
        String a valid URL
        Since:
        jcms-6.0.1
      • getAjaxPortalUrl

        public static java.lang.String getAjaxPortalUrl​(javax.servlet.http.HttpServletRequest request)
        Build an URL working with in AjaxContext redirects
        Parameters:
        request - the HttpServletRequest
        Returns:
        String a valid URL
        Since:
        jcms-6.0.2
      • getAjaxPortalRedirect

        public static java.lang.String getAjaxPortalRedirect​(javax.servlet.http.HttpServletRequest request)
        Build an URL working with in AjaxContext redirects
        Parameters:
        request - the HttpServletRequest
        Returns:
        String a valid URL
        Since:
        jcms-6.0.2
      • isNewBehaviour

        public static boolean isNewBehaviour()
        This method will check if the portal mecanic use the new behaviour or the old one.
        Returns:
        boolean true if it is the new mecanic.
        Since:
        jcms-5.5.0
      • isBehaviourBackCompatible

        public static boolean isBehaviourBackCompatible()
        This method will check if the portal mecanic use the new behaviour or the old one.
        Returns:
        boolean true if it is the new mecanic.
        Since:
        jcms-5.5.0
      • getOutterStyles

        public static java.lang.String getOutterStyles​(PortalElement portlet)
        This method return style to apply on the given portlet's outside. It works with portlet attributes:
        • width
        • insets
        • alignTable
        • border
        • backgroundImage
        • backgroundColor
        Parameters:
        portlet - a PortalElement to work with
        Returns:
        String the outter styles
        Since:
        jcms-5.5.0
      • getInnerStyles

        public static java.lang.String getInnerStyles​(PortalElement portlet)
        This method return style to apply on the given portlet's inside. It works with portlet attributes:
        • CellPadding
        • AlignV
        • AlignH
        Parameters:
        portlet - a PortalElement to work with
        Returns:
        String the inner styles
        Since:
        jcms-5.5.0
      • getOutterClasses

        public static java.lang.String getOutterClasses​(PortalElement portlet)
        This method return classes to apply on the given portlet's outside. It may sets:
        • Outter
        • Portlet
        • PortletSkinable
        • Custom CSS Skin
        • PortletCollection
        Parameters:
        portlet - a PortalElement to work with
        Returns:
        String the outer classes
        Since:
        jcms-5.5.0
      • getInnerClasses

        public static java.lang.String getInnerClasses​(PortalElement portlet)
        This method return classes to apply on the given portlet's inside. It works with portlet attributes:
        • Inner
        • Custom CSS Display
        Parameters:
        portlet - a PortalElement to work with
        Returns:
        String the inner classes
        Since:
        jcms-5.5.0
      • getCssFiles

        public static java.io.File[] getCssFiles()
        This method return an array of CSS in directory css/portal. It is used by portal to display available portal css files.
        Returns:
        File[] the list of css files
      • getCSSMap

        public static java.util.Map<java.lang.String,​java.lang.String> getCSSMap​(java.lang.String skinType,
                                                                                       java.lang.Class clazz)
      • printPortletException

        public static void printPortletException​(javax.servlet.jsp.JspWriter out,
                                                 java.lang.Throwable ex,
                                                 PortalElement portlet,
                                                 org.apache.log4j.Logger portletLogger)
                                          throws java.io.IOException
        Print the specified exception as a warning log message (if logger is specified) and to JSP output (if developement mode is enabled).
        Parameters:
        out - the JspWriter to use to print the exception, when developement mode is enabled
        ex - the exception, required, no operation is performed if null is specified
        portlet - the portlet in which the exception occured, may be null (though not recommanded)
        portletLogger - the logger to use to output the exception, may be null
        Throws:
        java.io.IOException - if an error occured while printing to JSP output.
      • printPortletException

        public static void printPortletException​(javax.servlet.jsp.JspWriter out,
                                                 java.lang.Throwable ex,
                                                 java.lang.String location,
                                                 org.apache.log4j.Logger portletLogger)
                                          throws java.io.IOException
        Print the specified exception as a warning log message (if logger is specified) and to JSP output (if developement mode is enabled).

        Developpement mode is configured with property channel.dev-mode.enabled

        Parameters:
        out - the JspWriter to use to print the exception, when developement mode is enabled
        ex - the exception, required, no operation is performed if null is specified
        location - a string indicating where the exception occured (e.g. a JSP path, a portlet title, ...), no operation is performed if null is specified
        portletLogger - the logger to use to output the exception as a warning level, may be null
        Throws:
        java.io.IOException - if an error occured while printing to JSP output.
      • getPortletSearchTopbar

        public static Portlet getPortletSearchTopbar()
        Returns the PortletSearch used in the topbar.
        Returns:
        the PortletSearch used in the topbar.
        Since:
        jcms-8.0.0
      • getDisplayedPublicationMap

        public static java.util.Map<java.lang.String,​java.util.Set<java.lang.String>> getDisplayedPublicationMap​(JcmsJspContext jcmsContext)
      • getDisplayedPublicationSet

        public static java.util.Set<Publication> getDisplayedPublicationSet​(JcmsJspContext jcmsContext)
      • getDisplayedPublicationCount

        public static int getDisplayedPublicationCount​(JcmsJspContext jcmsContext)