Class CmsJspNavBuilder


  • public class CmsJspNavBuilder
    extends java.lang.Object
    Bean to provide a convenient way to build navigation structures based on the CmsJspNavElement.

    Use this together with the CmsJspActionElement to obtain navigation information based on the current users permissions. For example, use getNavigationForFolder(String) and pass the value of the current OpenCms user context uri obtained from CmsRequestContext.getUri() as argument to obtain a list of all items in the navigation of the current folder. Then use a simple scriptlet to iterate over these items and create a HTML navigation.

    Since:
    6.0.0
    See Also:
    CmsJspNavElement
    • Field Detail

      • m_locale

        protected java.util.Locale m_locale
        The locale for which the property should be read.
      • m_requestUri

        protected java.lang.String m_requestUri
        The current request URI.
      • m_requestUriFolder

        protected java.lang.String m_requestUriFolder
        The current request folder.
    • Constructor Detail

      • CmsJspNavBuilder

        public CmsJspNavBuilder()
        Empty constructor, so that this bean can be initialized from a JSP.

      • CmsJspNavBuilder

        public CmsJspNavBuilder​(CmsObject cms)
        Default constructor.

        Parameters:
        cms - context provider for the current request
      • CmsJspNavBuilder

        public CmsJspNavBuilder​(CmsObject cms,
                                java.util.Locale locale)
        Constructor for a version that reads properties according to a locale.

        Parameters:
        cms - context provider for the current request
        locale - the locale for which properties should be accessed
    • Method Detail

      • getDefaultFile

        @Deprecated
        public static java.lang.String getDefaultFile​(CmsObject cms,
                                                      java.lang.String folder)
        Deprecated.
        Returns the full name (including VFS path) of the default file for this navigation element or null if the navigation element is not a folder.

        The default file of a folder is determined by the value of the property default-file or the system wide property setting.

        Parameters:
        cms - the CMS object
        folder - full name of the folder
        Returns:
        the name of the default file
      • getNavigationForFolder

        @Deprecated
        public static java.util.List<CmsJspNavElementgetNavigationForFolder​(CmsObject cms,
                                                                              java.lang.String folder)
        Deprecated.
        Collect all navigation elements from the files in the given folder, navigation elements are of class CmsJspNavElement.

        Parameters:
        cms - context provider for the current request
        folder - the selected folder
        Returns:
        a sorted (ascending to navigation position) list of navigation elements
      • getNavigationForFolder

        @Deprecated
        public static java.util.List<CmsJspNavElementgetNavigationForFolder​(CmsObject cms,
                                                                              java.lang.String folder,
                                                                              int level)
        Deprecated.
        Build a navigation for the folder that is either minus levels up from the given folder, or that is plus levels down from the root folder towards the given folder.

        If level is set to zero the root folder is used by convention.

        Parameters:
        cms - context provider for the current request
        folder - the selected folder
        level - if negative, walk this many levels up, if positive, walk this many levels down from root folder
        Returns:
        a sorted (ascending to navigation position) list of navigation elements
      • getNavigationForResource

        @Deprecated
        public static CmsJspNavElement getNavigationForResource​(CmsObject cms,
                                                                java.lang.String resource)
        Deprecated.
        Returns a navigation element for the named resource.

        Parameters:
        cms - context provider for the current request
        resource - the resource name to get the navigation information for, must be a full path name, e.g. "/docs/index.html"
        Returns:
        a navigation element for the given resource
      • getNavigationTreeForFolder

        @Deprecated
        public static java.util.List<CmsJspNavElementgetNavigationTreeForFolder​(CmsObject cms,
                                                                                  java.lang.String folder,
                                                                                  int startlevel,
                                                                                  int endlevel)
        Deprecated.
        Builds a tree navigation for the folders between the provided start and end level.

        A tree navigation includes all navigation elements that are required to display a tree structure. However, the data structure is a simple list. Each of the navigation elements in the list has the CmsJspNavElement.getNavTreeLevel() set to the level it belongs to. Use this information to distinguish between the navigation levels.

        Parameters:
        cms - context provider for the current request
        folder - the selected folder
        startlevel - the start level
        endlevel - the end level
        Returns:
        a sorted list of navigation elements with the navigation tree level property set
      • getSiteNavigation

        @Deprecated
        public static java.util.List<CmsJspNavElementgetSiteNavigation​(CmsObject cms,
                                                                         java.lang.String folder,
                                                                         int endLevel)
        Deprecated.
        This method builds a complete navigation tree with entries of all branches from the specified folder.

        For an unlimited depth of the navigation (i.e. no endLevel), set the endLevel to a value < 0.

        Parameters:
        cms - the current CMS context
        folder - the root folder of the navigation tree
        endLevel - the end level of the navigation
        Returns:
        list of navigation elements, in depth first order
      • isNavLevelFolder

        public static boolean isNavLevelFolder​(CmsObject cms,
                                               CmsResource resource)
        Returns whether the given resource is a folder and is marked to be a navigation level folder.

        Parameters:
        cms - the cms context
        resource - the resource
        Returns:
        true if the resource is marked to be a navigation level folder
      • getCmsObject

        public CmsObject getCmsObject()
        Gets the CMS context used for building the navigation.
        Returns:
        the CMS context
      • getNavigationBreadCrumb

        public java.util.List<CmsJspNavElementgetNavigationBreadCrumb​(int startlevel,
                                                                        boolean currentFolder)
        Build a "bread crumb" path navigation to the current folder.

        Parameters:
        startlevel - the start level, if negative, go down |n| steps from selected folder
        currentFolder - include the selected folder in navigation or not
        Returns:
        sorted list of navigation elements
        See Also:
        getNavigationBreadCrumb(String, int, int, boolean)
      • getNavigationBreadCrumb

        public java.util.List<CmsJspNavElementgetNavigationBreadCrumb​(int startlevel,
                                                                        int endlevel)
        Build a "bread crumb" path navigation to the current folder.

        Parameters:
        startlevel - the start level, if negative, go down |n| steps from selected folder
        endlevel - the end level, if -1, build navigation to selected folder
        Returns:
        sorted list of navigation elements
        See Also:
        getNavigationBreadCrumb(String, int, int, boolean)
      • getNavigationBreadCrumb

        public java.util.List<CmsJspNavElementgetNavigationBreadCrumb​(java.lang.String folder,
                                                                        int startlevel,
                                                                        int endlevel,
                                                                        boolean currentFolder)
        Build a "bread crumb" path navigation to the given folder.

        The startlevel marks the point where the navigation starts from, if negative, the count of steps to go down from the given folder.

        The endlevel is the maximum level of the navigation path, set it to -1 to build the complete navigation to the given folder.

        You can include the given folder in the navigation by setting currentFolder to true, otherwise false.

        Parameters:
        folder - the selected folder
        startlevel - the start level, if negative, go down |n| steps from selected folder
        endlevel - the end level, if -1, build navigation to selected folder
        currentFolder - include the selected folder in navigation or not
        Returns:
        sorted list of navigation elements
      • getNavigationForFolder

        public java.util.List<CmsJspNavElementgetNavigationForFolder()
        Collect all navigation elements from the files of the folder of the current request URI.

        Returns:
        a sorted (ascending to navigation position) list of navigation elements
      • getNavigationForFolder

        public java.util.List<CmsJspNavElementgetNavigationForFolder​(int level)
        Build a navigation for the folder that is either minus levels up from of the folder of the current request URI, or that is plus levels down from the root folder towards the current request URI.

        If level is set to zero the root folder is used by convention.

        Parameters:
        level - if negative, walk this many levels up, if positive, walk this many levels down from root folder
        Returns:
        a sorted (ascending to navigation position) list of navigation elements
      • getNavigationForFolder

        public java.util.List<CmsJspNavElementgetNavigationForFolder​(java.lang.String folder)
        Collect all navigation visible elements from the files in the given folder.

        Parameters:
        folder - the selected folder
        Returns:
        A sorted (ascending to navigation position) list of navigation elements
      • getNavigationForFolder

        public java.util.List<CmsJspNavElementgetNavigationForFolder​(java.lang.String folder,
                                                                       int level)
        Build a navigation for the folder that is either minus levels up from the given folder, or that is plus levels down from the root folder towards the given folder.

        If level is set to zero the root folder is used by convention.

        Parameters:
        folder - the selected folder
        level - if negative, walk this many levels up, if positive, walk this many levels down from root folder
        Returns:
        a sorted (ascending to navigation position) list of navigation elements
      • getNavigationForFolder

        public java.util.List<CmsJspNavElementgetNavigationForFolder​(java.lang.String folder,
                                                                       CmsJspNavBuilder.Visibility visibility,
                                                                       CmsResourceFilter resourceFilter)
        Collect all navigation elements from the files in the given folder.

        Parameters:
        folder - the selected folder
        visibility - the visibility mode
        resourceFilter - the filter to use reading the resources
        Returns:
        A sorted (ascending to navigation position) list of navigation elements
      • getNavigationForResource

        public CmsJspNavElement getNavigationForResource()
        Returns a navigation element for the resource of the current request URI.

        Returns:
        a navigation element for the resource of the current request URI
      • getNavigationForResource

        public CmsJspNavElement getNavigationForResource​(java.lang.String sitePath)
        Returns a navigation element for the named resource.

        Parameters:
        sitePath - the resource name to get the navigation information for, must be a full path name, e.g. "/docs/index.html"
        Returns:
        a navigation element for the given resource
      • getNavigationForResource

        public CmsJspNavElement getNavigationForResource​(java.lang.String sitePath,
                                                         CmsResourceFilter reourceFilter)
        Returns a navigation element for the named resource.

        Parameters:
        sitePath - the resource name to get the navigation information for, must be a full path name, e.g. "/docs/index.html"
        reourceFilter - the resource filter
        Returns:
        a navigation element for the given resource
      • getNavigationTreeForFolder

        public java.util.List<CmsJspNavElementgetNavigationTreeForFolder​(java.lang.String folder,
                                                                           int startlevel,
                                                                           int endlevel)
        Builds a tree navigation for the folders between the provided start and end level.

        Parameters:
        folder - the selected folder
        startlevel - the start level
        endlevel - the end level
        Returns:
        a sorted list of navigation elements with the navigation tree level property set
      • getSiteNavigation

        public java.util.List<CmsJspNavElementgetSiteNavigation​(java.lang.String folder,
                                                                  int endLevel)
        This method builds a complete navigation tree with entries of all branches from the specified folder.

        Parameters:
        folder - folder the root folder of the navigation tree
        endLevel - the end level of the navigation
        Returns:
        list of navigation elements, in depth first order
      • getSiteNavigation

        public java.util.List<CmsJspNavElementgetSiteNavigation​(java.lang.String folder,
                                                                  CmsJspNavBuilder.Visibility visibility,
                                                                  int endLevel)
        This method builds a complete navigation tree with entries of all branches from the specified folder.

        Parameters:
        folder - folder the root folder of the navigation tree
        visibility - controls whether entries hidden from navigation or not in navigation at all should be included
        endLevel - the end level of the navigation
        Returns:
        list of navigation elements, in depth first order
      • init

        public void init​(CmsObject cms)
        Initializes this bean.

        Parameters:
        cms - the current cms context
      • init

        public void init​(CmsObject cms,
                         java.util.Locale locale)
        Initializes this bean.

        Parameters:
        cms - the current cms context
        locale - the locale for which properties should be read
      • init

        public void init​(CmsObject cms,
                         java.util.Locale locale,
                         java.lang.String requestUri)
        Initializes this bean.

        Parameters:
        cms - the current cms context
        locale - the locale for which properties should be read
        requestUri - the request URI