Class CmsJspNavBuilder

java.lang.Object
org.opencms.jsp.CmsJspNavBuilder

public class CmsJspNavBuilder extends 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:
  • Field Details

  • Constructor Details

    • CmsJspNavBuilder

      Empty constructor, so that this bean can be initialized from a JSP.

    • CmsJspNavBuilder

      Default constructor.

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

      public CmsJspNavBuilder(CmsObject cms, 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 Details

    • getDefaultFile

      @Deprecated public static String getDefaultFile(CmsObject cms, 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.
      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 List<CmsJspNavElement> getNavigationForFolder(CmsObject cms, 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.
      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 List<CmsJspNavElement> getNavigationTreeForFolder(CmsObject cms, 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 List<CmsJspNavElement> getSiteNavigation(CmsObject cms, 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

      Gets the CMS context used for building the navigation.
      Returns:
      the CMS context
    • getNavigationBreadCrumb

      Build a "bread crumb" path navigation to the current folder.

      Returns:
      ArrayList sorted list of navigation elements
      See Also:
    • getNavigationBreadCrumb

      public List<CmsJspNavElement> getNavigationBreadCrumb(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

      public List<CmsJspNavElement> getNavigationBreadCrumb(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

      public List<CmsJspNavElement> getNavigationBreadCrumb(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

      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

      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

      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 List<CmsJspNavElement> getNavigationForFolder(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

      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

      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

      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

      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 List<CmsJspNavElement> getNavigationTreeForFolder(int startlevel, int endlevel)
      Builds a tree navigation for the folders between the provided start and end level.

      Parameters:
      startlevel - the start level
      endlevel - the end level
      Returns:
      a sorted list of navigation elements with the navigation tree level property set
      See Also:
    • getNavigationTreeForFolder

      public List<CmsJspNavElement> getNavigationTreeForFolder(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

      This method builds a complete site navigation tree with entries of all branches.

      Returns:
      list of navigation elements, in depth first order
      See Also:
    • getSiteNavigation

      public List<CmsJspNavElement> getSiteNavigation(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 List<CmsJspNavElement> getSiteNavigation(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, 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, Locale locale, String requestUri)
      Initializes this bean.

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