<portal-navigation/> tags | HCL Digital Experience
The <portal-navigation/> tags are used to implement navigation tasks such as generating URLs and traversing the portal navigation model.
The following section provides detailed descriptions of the <portal-navigation/>
JSP
tags:
- The uiNavigationModel tag helps the JSP developer concentrate
on building the navigation rather than worrying about the portal-specific
implementation details.
By default, the uiNavigationModel lists the visible pages as part of its iterator. When the Show hidden pages option is selected in the toolbar, it lists the hidden pages also. There is a special mobile hidden flag for pages. The model also allows you to specify a mobile test device class expression, which is used to evaluate if the system is rendered as part of a mobile request.
The uiNavigationModel tag makes the uiNavigationModel EL Bean available as a variable that can be specified as part of the
var
attribute. - This tag is used to change the active language in the navigational
state in which the URL is generated.The following code example uses this tag to change the language to German.
<a href='<portal-navigation:url command="ChangeLanguage"><portal-navigation:urlParam name="locale" value="de"/></portal-navigation:url>'>Diese Seite in deutsch </a>
- This tag is used to add parameters to the parent URL. Parent tags
include
<portal-navigation:url/>
and<portal-navigation:urlGeneration/>
. Parameters added to the<urlGeneration/>
tag occur as unscoped query parameters unless the attributes specified on<urlGeneration/>
specify otherwise. Parameter handling depends on the target of the URL. If the URL points to a page, the parameters are visible to all HCL portlets on that page. Parameters are not visible to standard portlets if the URL does not point specifically to that portlet.Attributes are as follows:- name
- This attribute is required. It indicates the name of the parameter.
- value
- This attribute is required. It indicates the value of the parameter.
- type
- This attribute is optional. It indicates one of the following
types:
- query
- The name-value pair is added to the URL as a query parameter. It is the default value if type is not specified.
- render
- The parameter is available as a render parameter for the portlet.
- action
- The parameter is available as an action parameter for the portlet.
- This tag creates a URL to pages or portlets. The tag is conditional.
If the URL cannot be found, the body of the tag is not evaluated.
Inside the body of the tag, the <% wpsURL %> scripting variable
can be used to write the URL directly to the output stream. For
example:
<a class="wpsToolBarLink" href='<% wpsURL.write(out); %>'>My page</a>
- Creates a portal URL depending on the specified attribute. Attributes
are as follows:
- home="public|protected"
- This attribute creates a URL pointing to the public or protected (logged in) page of the portal.
- screen="screen_name"
- This attribute creates a URL pointing to the screen name to be displayed.
- command="LoginUser|LogoutUser|ShowTools"
- This attribute creates a URL that issues the command to the portal.
command="LoginUser"
is used for the login panel, andcommand="LogoutUser"
is used for the logout button. The"userid"
and"password"
parameters must be carried with a login URL.command="ShowTools"
toggles the value of the showTools indicator. See the<portal-logic:if/>
tag"showtools"
attribute in for an example. - commandParam="parameter_name"
- This attribute directs the portal engine to obtain the actual
command to run from an HTTP request parameter instead of on the URL
directly. The name of the parameter is the value of the commandParam
attribute. This is useful in situations where different commands need
to be conditionally run yet only one URL can be specified. Such is
the case when using a
<form>
tag with a<select>
. This enables use of the HTML form without requiring JavaScript. For example:
The previous code example works both with and without JavaScript enabled.<form name="someFormName" method="GET" style="margin-bottom: 0" action='<portal-navigation:url commandParam="requestParamName"/>'> <select name="requestParamName" onchange="javascript: this.form.submit(); "> <portal-navigation:someLoop> <option value="<%= theUrl %>" >Some title goes here </portal-navigation:someLoop> </select> <noscript> <input type="image" border=0 align=absmiddle src='go.gif'/>Go </noscript> </form>
- ssl="yes|no|true|false"
- This attribute creates a secure URL (HTTPS).
- forceAbsolute = "true|false"
- This attribute is optional. It specifies whether the URL that is generated by this tag is to be absolute or not. If you set this attribute to true, absolute URLs are enforced; in this case other settings that affect the generation of URLs might be overridden.
Example: The following example shows part of a user login form that uses the<portal:url>
tag to process input fields, user ID, and password.<FORM method="POST" action='<portal-navigation:url command="LoginUser"/>' enctype="application/x-www-form-urlencoded" name="LoginPage">
- Creates URLs for navigation nodes. The tag is used inside the
body of the <portal-navigation:navigationLoop> tag and outputs
links for the current navigation node according to the type attribute.
Attributes are as follows:
- type
- Use one of the following values:
- type="link"
- This attribute creates a URL to change the selected node.
- type="expand"
- This attribute creates a URL that expands the node to reveal its child nodes. This is intended for expanding the navigation tree.
- type="collapse"
- This attribute creates a URL that collapses the node to conceal its child nodes. This is intended for collapsing the navigation tree.
- type="launch"
- This attribute creates a URL that either starts a page if all
conditions for the page launch are fulfilled for the navigation node
or if just like in the selection URL in
type="link"
.
Note: The global state of the portal navigation trees is collapsed by default (with some exceptions, such as the Portal Administration navigation). You can configure the default state of the portal navigation trees to expand all nodes by setting the Portal Configuration Service propertynavigation.expansion.defaultstate
totrue
. - varname
- This attribute specifies an object of type
com.ibm.portal.navigation.NavigationNode
for which the URL is to be generated. The attribute is optional. - var
- This attribute specifies the name of a scripting variable that
is shown in the body of the tag. The attribute is optional. The variable
shows an object that implements
com.ibm.portal.DisposableURL
that can be used to stream the URL to the output. If the content node that is referenced by the navigation node is an internal URL, the body is evaluated only if the target of the internal URL is accessible. - forceAbsolute = "true|false"
- This attribute is optional. It specifies whether the URL that is generated by this tag is to be absolute or not. If you set this attribute to true, absolute URLs are enforced; in this case other settings that affect the generation of URLs might be overridden.
- keepNavigationalState="true|false|auto"
- If this attribute is set to false, the
current navigational state (including all portlet modes, states,
and render parameters) is not included in the URL and the
portal is reset to its default state. If set to true,
which is the default, navigational state is included. If it is set to auto, the
configuration determines if the navigational state is included.
See the descriptions for
stateless.urls.enabled
andgenerate.stateless.urls
in Configuration Service.
To generate the title or description of a navigation node, use the
<portal-fmt:title/>
or the<portal-fmt:description/>
tags. This tag is used only in theme JSPs. - This tag is used in the navigation to create a URL that scrolls
to the next set of page links when the number of available pages
exceeds maxPages. The by attribute indicates
the number of page links to scroll. If this tag is not used,
all page links for the current level are rendered.
This tag is nested in the <portal-navigation:navigation> tag and requires values for the startLevel and stopLevel attributes of the <portal-navigation:navigation> tag for its correct functioning.
- This tag traverses through the navigation model. This tag is nested inside of the <portal-navigation:navigation/> tag when used. This tag indicates the part of the markup that is repeated once for each navigation node. There are no attributes for this tag. The body of this tag is run for each navigation node. This tag makes several scripting variables available for obtaining information for the navigation. These scripting variables are accessible only within the body of the tag.
- This tag initializes a set of objects and makes them available
through scripting variables. These objects are required for the
rendering process of the navigation. The scripting variables
are accessible only within the body of the tag. The settings
of the
startLevel
andstopLevel
attributes determine whether the content of the navigation tag is evaluated. The navigation tag uses an "in-order" traversal of the navigation tree to select the nodes.Attributes are as follows:- startLevel
- Optional. The level on which this navigation is to begin showing information. If no start level is given, this tag will start at the navigation node after the levels that where shown by other JSPs. Otherwise, the default is level 1.
- stopLevel
- Optional. The level on which this navigation is to stop showing information. Default is to render all levels.
- computeNumLevelsToDisplay
- Optional. Compute the number of levels that are shown by this
navigation. When this attribute is set to true,
a scripting variable is made available inside the body of
the navigation tag named
wpsNumLevelsToDisplay
of Java type java.lang.Integer. - scopeUniqueName
- Specifies where to start the rendering of the portal navigation.
The expected value is a unique name or string representation
of the navigation node's ObjectID. This also replaces the
<portal:favoritesLoop/>
tag for enabling Organize Favorites functionality. The following code example shows how to use the<portal-navigation:navigation>
with thescopeUniqueName
attribute to enable Organize Favorites:<portal-navigation:navigation scopeUniqueName="wps.Favorites"> <portal-navigation:navigationLoop> <a href='<portal-navigation:navigationUrl type="link"/>' title='<portal-fmt:description varname="<%=wpsNavNode%>"/>'> <portal-fmt:title varname="<%=wpsNavNode%>"/> </a> </portal-navigation:navigationLoop> </portal-navigation:navigation>
- This tag is deprecated and must be replaced by using the
<portal-navigation:navigation/>
tag with itsscopeUniqueName
attribute.The following code example uses this tag to create the Organize Favorites functionality. To use this code, you must place it within the themes that you want to have this functionality.<%@ taglib uri="/WEB-INF/tld/portal.tld" prefix="portal" %> <portal-logic:if loggedIn="yes" notScreen="SelfcareUserForm,SelfcareUserConf"> <table border="0" cellspacing="0" cellpadding="0" > <tr> <td align="<%=bidiAlignRight%>" valign="middle" dir="ltr" nowrap> <% boolean firstItem = true; %> <table border="0" cellpadding="0" cellspacing="0" <%= bidiDirAttr %> > <tr> <td valign="middle"> <form tabIndex="8" name="wpsFavoritesSelectionForm" method="GET" style="margin-bottom: 0"> action='<portal-navigation:url commandParam="favoritesCommand"/>'> <select name="favoritesCommand" onchange="document.location.href= this.options[this.selectedIndex].value">"javascript: if (this.options[this.selectedIndex].value.charAt(0) == '@') { window.open(this.options[this.selectedIndex].value.substring(1), '_blank'); this.selectedIndex=0; return false;} else { this.form.submit(); return false; }"> <option value='#' selected><wps:text key='link.favorites.myfavorites' bundle='nls.engine'/> <portal-logic:if pageBookmarkable="true"> <option value='<portal-navigation:url command="AddBookmark" alias="wps.My Favorites"/>'><portal-fmt:text key='link.favorites.add' bundle='nls.engine'/> </portal-logic:if> <portal-navigation:urlGeneration contentNode="wps.Organize Favorites" portletWindowState="Normal" pacCheck="NoCheck"> <option value='<% wpsURL.write(escapeXmlWriter); %>' > <portal-fmt:text key='link.favorites.orgainize' bundle='nls.engine'/> </portal-navigation:urlGeneration> <option value='#'>------------ <portal:favoritesLoop> <% // wpsFavoritesURL is null for folders in the list of favorites if (wpsFavoritesURL != null) { // Check the favorite type. If it is an external URL, add a symbol to the URL // so the JavaScript on the select can detect when to open a new window // wpsFavoritesType may be null. wpsFavoritesType=1 means external URL if ("EXTERNALURL".equals(wpsFavoritesType)) wpsFavoritesURL = "@" + wpsFavoritesURL; //Phone number links are only supported on WML devices... and favorites are not markup-specific. // wpsFavoritesType may be null. wpsFavoritesType=2 means Phone Number if (!"2".equals(wpsFavoritesType)) { %> <option value="<%= wpsFavoritesURL %>"> <% for (int favSpace=1; favSpace < wpsFavoritesLevel.intValue(); favSpace++) {%> <% } %><%= wpsFavoritesTitle %> <% } } else { %> <option value="#" ><% for (int favSpace=1; favSpace < wpsFavoritesLevel.intValue(); favSpace++) {%> <% } %>--<%= wpsFavoritesTitle %>-- <% } %> </portal:favoritesLoop> </select> <noscript> <input type="image" border="0" align="absmiddle" src='<portal-logic:urlFindInTheme file="go.gif"/>'/> <span class="wpsPlaceBarLink" > <portal-fmt:text key="go" bundle="nls.button"/></span> </noscript> </form> </td> </tr> </table> </td> </tr> </table> </portal-logic:if>