org.opencms.jsp
Class CmsJspNavBuilder

java.lang.Object
  extended by 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:
CmsJspNavElement

Field Summary
protected  CmsObject m_cms
          The current CMS context.
protected  String m_requestUri
          The current request URI.
protected  String m_requestUriFolder
          The current request folder.
 
Constructor Summary
CmsJspNavBuilder()
          Empty constructor, so that this bean can be initialized from a JSP.
CmsJspNavBuilder(CmsObject cms)
          Default constructor.
 
Method Summary
static String getDefaultFile(CmsObject cms, String folder)
          Deprecated. use CmsObject.readDefaultFile(String) instead
 List<CmsJspNavElement> getNavigationBreadCrumb()
          Build a "bread crumb" path navigation to the current folder.
 List<CmsJspNavElement> getNavigationBreadCrumb(int startlevel, boolean currentFolder)
          Build a "bread crumb" path navigation to the current folder.
 List<CmsJspNavElement> getNavigationBreadCrumb(int startlevel, int endlevel)
          Build a "bread crumb" path navigation to the current folder.
 List<CmsJspNavElement> getNavigationBreadCrumb(String folder, int startlevel, int endlevel, boolean currentFolder)
          Build a "bread crumb" path navigation to the given folder.
 List<CmsJspNavElement> getNavigationForFolder()
          Collect all navigation elements from the files of the folder of the current request URI.
static List<CmsJspNavElement> getNavigationForFolder(CmsObject cms, String folder)
          Deprecated. use getNavigationForFolder(String) instead
static List<CmsJspNavElement> getNavigationForFolder(CmsObject cms, String folder, int level)
          Deprecated. use getNavigationForFolder(String, int) instead
 List<CmsJspNavElement> getNavigationForFolder(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.
 List<CmsJspNavElement> getNavigationForFolder(String folder)
          Collect all navigation visible elements from the files in the given folder.
 List<CmsJspNavElement> getNavigationForFolder(String folder, boolean includeInvisible)
          Collect all navigation elements from the files in the given folder.
 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.
 CmsJspNavElement getNavigationForResource()
          Returns a navigation element for the resource of the current request URI.
static CmsJspNavElement getNavigationForResource(CmsObject cms, String resource)
          Deprecated. use getNavigationForResource(String) instead
 CmsJspNavElement getNavigationForResource(String sitePath)
          Returns a navigation element for the named resource.
static List<CmsJspNavElement> getNavigationTreeForFolder(CmsObject cms, String folder, int startlevel, int endlevel)
          Deprecated. use getNavigationForResource(String) instead
 List<CmsJspNavElement> getNavigationTreeForFolder(int startlevel, int endlevel)
          Builds a tree navigation for the folders between the provided start and end level.
 List<CmsJspNavElement> getNavigationTreeForFolder(String folder, int startlevel, int endlevel)
          Builds a tree navigation for the folders between the provided start and end level.
 List<CmsJspNavElement> getSiteNavigation()
          This method builds a complete site navigation tree with entries of all branches.
static List<CmsJspNavElement> getSiteNavigation(CmsObject cms, String folder, int endLevel)
          Deprecated. use getNavigationForResource(String) instead
 List<CmsJspNavElement> getSiteNavigation(String folder, int endLevel)
          This method builds a complete navigation tree with entries of all branches from the specified folder.
 void init(CmsObject cms)
          Initializes this bean.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_cms

protected CmsObject m_cms
The current CMS context.


m_requestUri

protected String m_requestUri
The current request URI.


m_requestUriFolder

protected 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
Method Detail

getDefaultFile

@Deprecated
public static String getDefaultFile(CmsObject cms,
                                               String folder)
Deprecated. use CmsObject.readDefaultFile(String) instead

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 List<CmsJspNavElement> getNavigationForFolder(CmsObject cms,
                                                                       String folder)
Deprecated. use getNavigationForFolder(String) instead

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. use getNavigationForFolder(String, int) instead

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,
                                                                   String resource)
Deprecated. use getNavigationForResource(String) instead

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. use getNavigationForResource(String) instead

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. use getNavigationForResource(String) instead

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

getNavigationBreadCrumb

public List<CmsJspNavElement> getNavigationBreadCrumb()
Build a "bread crumb" path navigation to the current folder.

Returns:
ArrayList sorted list of navigation elements
See Also:
getNavigationBreadCrumb(String, int, int, boolean)

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(String, int, int, boolean)

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(String, int, int, boolean)

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

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

public List<CmsJspNavElement> getNavigationForFolder(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 List<CmsJspNavElement> getNavigationForFolder(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 List<CmsJspNavElement> getNavigationForFolder(String folder,
                                                     boolean includeInvisible)
Collect all navigation elements from the files in the given folder.

Parameters:
folder - the selected folder
includeInvisible - true to include elements not visible in navigation
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

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(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

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(String, int, int)

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

public List<CmsJspNavElement> 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(String, int)

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

init

public void init(CmsObject cms)
Initializes this bean.

Parameters:
cms - the current cms context