diff --git a/mobile-integration/portlets/header/pom.xml b/mobile-integration/portlets/header/pom.xml
index efadab29d..47d6932b9 100644
--- a/mobile-integration/portlets/header/pom.xml
+++ b/mobile-integration/portlets/header/pom.xml
@@ -26,6 +26,17 @@
1.6
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+
+ org.gatein.common
+
+
+
+
diff --git a/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/HeaderBean.java b/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/HeaderBean.java
index 9e40847a9..ce7b0135c 100644
--- a/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/HeaderBean.java
+++ b/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/HeaderBean.java
@@ -40,8 +40,6 @@
import org.gatein.api.site.SiteQuery;
import org.gatein.api.site.SiteType;
-import com.google.javascript.jscomp.FindExportableNodes.GenerateNodeContext;
-
/**
* @author Matt Wringe
* @version $Revision$
@@ -52,11 +50,21 @@ public class HeaderBean {
private static final String REGISTER_NODE = "register";
private final SSOHelper ssoHelper;
+ protected int nodeLevel;
- public HeaderBean() {
+ public HeaderBean(int nodeLevel) {
+ this.nodeLevel = nodeLevel;
ssoHelper = (SSOHelper) ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(SSOHelper.class);
}
+ public void setNodeLevel(int nodeLevel) {
+ this.nodeLevel = nodeLevel;
+ }
+
+ public int getNodeLevel() {
+ return nodeLevel;
+ }
+
public String generateLoginLink(String defaultAction) {
if (ssoHelper != null) {
PortalRequestContext pContext = Util.getPortalRequestContext();
@@ -111,16 +119,16 @@ public Map getGroupNodes() throws Exception {
if (portalRequest.getPortal().hasPermission(portalRequest.getUser(), site.getAccessPermission())
&& !site.getName().equals("/platform/guests")) {
Navigation siteNavigation = portalRequest.getPortal().getNavigation(site.getId());
- Node node = siteNavigation.getRootNode(Nodes.visitNodes(2));
+ Node node = siteNavigation.getRootNode(Nodes.visitNodes(this.nodeLevel));
if (node.isVisible()) {
String groupLabel = OrganizationUtils.getGroupLabel(siteNavigation.getSiteId().getName().toString());
- NodeBean nodeBean = new NodeBean(node, site.getId());
- NodeBean nb2 = nodeBean.generateNodeBean(node, site.getId(), true);
- navNodes.put(groupLabel, nb2);
+ NodeBean nodeBean = new NodeBean(node, site.getId(), true);
+ navNodes.put(groupLabel, nodeBean);
}
}
}
return navNodes;
}
+
}
diff --git a/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/HeaderPortlet.java b/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/HeaderPortlet.java
index 1ffa49d5c..eb2b329f8 100644
--- a/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/HeaderPortlet.java
+++ b/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/HeaderPortlet.java
@@ -25,32 +25,56 @@
import java.io.IOException;
import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
+import org.gatein.common.logging.Logger;
+import org.gatein.common.logging.LoggerFactory;
+
/**
* @author Matt Wringe
* @version $Revision$
*/
public class HeaderPortlet extends NodePortlet {
+ private static final Logger log = LoggerFactory.getLogger(HeaderPortlet.class);
+ private final int DEFAULT_NODE_LEVEL = 2;
+ public static final String NODE_LEVEL_PREFERENCE = "level";
+
HeaderBean headerBean;
public HeaderPortlet() {
- headerBean = new HeaderBean();
+ headerBean = new HeaderBean(DEFAULT_NODE_LEVEL);
}
@Override
protected void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
+ headerBean.setNodeLevel(getNodeLevel(request));
request.setAttribute("headerbean", headerBean);
PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher("/jsp/header.jsp");
prd.include(request, response);
}
@Override
- public void serveResource(javax.portlet.ResourceRequest request, javax.portlet.ResourceResponse response)
- throws PortletException, IOException {
- super.serveResource(request, response);
- };
+ protected int getNodeLevel(PortletRequest request) {
+ int nodeLevel = DEFAULT_NODE_LEVEL;
+ try {
+ nodeLevel = Integer.valueOf(request.getPreferences().getValue(NODE_LEVEL_PREFERENCE,
+ String.valueOf(DEFAULT_NODE_LEVEL)));
+ } catch (NumberFormatException nfe) {
+ log.warn("Preference for Node level can only be an integer. Received invalid value of : "
+ + request.getPreferences().getValue(NODE_LEVEL_PREFERENCE, null) + ". Using default value: "
+ + DEFAULT_NODE_LEVEL);
+ }
+
+ if (nodeLevel < 2) {
+ nodeLevel = 2;
+ log.warn("Preference for Node level must be greater than 1. Current value of "
+ + request.getPreferences().getValue(NODE_LEVEL_PREFERENCE, null) + " is invalid. Using default value of "
+ + DEFAULT_NODE_LEVEL);
+ }
+ return nodeLevel;
+ }
}
diff --git a/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/NodeBean.java b/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/NodeBean.java
index cfd6b405c..c7b24bc96 100644
--- a/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/NodeBean.java
+++ b/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/NodeBean.java
@@ -44,6 +44,8 @@ public class NodeBean {
List children;
+ protected boolean showEmptyCategories = false;
+
public List getChildren() {
return children;
}
@@ -85,13 +87,19 @@ public boolean isSystem() {
* @param node A node to be encapsulated by this NavigationNodeBean.
*/
public NodeBean(Node node, SiteId siteId) {
- this.node = node;
- this.siteId = siteId;
+ this(node, siteId, false);
}
- public NodeBean(Node node, SiteId siteId, Boolean showEmptyCategory) {
+ public NodeBean(Node node, SiteId siteId, Boolean showEmptyCategories) {
this.node = node;
this.siteId = siteId;
+ this.showEmptyCategories = showEmptyCategories;
+
+ List nodeChildrenList = getChildren(node, siteId, false, showEmptyCategories);
+ if (!showEmptyCategories) {
+ setEmptyCategory(isEmptyCategory(node));
+ }
+ setChildren(nodeChildrenList);
}
/**
@@ -171,16 +179,6 @@ public String getURI() {
return node.getURI();
}
- protected NodeBean generateNodeBean(Node node, SiteId siteId, boolean showEmptyCategory) {
- NodeBean nodeBean = new NodeBean(node, siteId);
- List nodeChildrenList = getChildren(node, siteId, false, showEmptyCategory);
- if (!showEmptyCategory) {
- nodeBean.setEmptyCategory(isEmptyCategory(node));
- }
- nodeBean.setChildren(nodeChildrenList);
- return nodeBean;
- }
-
private boolean isEmptyCategory(Node n) {
if (n.getPageId() != null) {
diff --git a/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/NodePortlet.java b/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/NodePortlet.java
index b58fb4ce7..c0bd43208 100644
--- a/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/NodePortlet.java
+++ b/mobile-integration/portlets/header/src/main/java/org/gatein/portlet/responsive/header/NodePortlet.java
@@ -41,11 +41,15 @@
import org.gatein.api.navigation.NodePath;
import org.gatein.api.navigation.Nodes;
import org.gatein.api.site.SiteId;
+import org.gatein.common.logging.Logger;
+import org.gatein.common.logging.LoggerFactory;
-public class NodePortlet extends GenericPortlet {
+public abstract class NodePortlet extends GenericPortlet {
+
+ private static final Logger log = LoggerFactory.getLogger(NodePortlet.class);
private final String EMPTY_CATEGORY_PROPERTY_NAME = "ShowEmptyCategories";
- public static final String NODE_RESOURCE_ID_PREFIX = "node:";
+ public static final String NODE_RESOURCE_ID = "node";
/**
* The serveResource method is used for handling AJAX requests. It's used for the rendering of sub-menus. Anytime users
@@ -63,14 +67,13 @@ public class NodePortlet extends GenericPortlet {
public void serveResource(ResourceRequest request, ResourceResponse response) throws PortletException, IOException {
String resourceID = request.getResourceID();
- if (resourceID != null && resourceID.startsWith(NODE_RESOURCE_ID_PREFIX)) {
+ if (resourceID != null && resourceID.equals(NODE_RESOURCE_ID)) {
String siteId = request.getParameter("siteId");
Navigation navigation = PortalRequest.getInstance().getPortal().getNavigation(SiteId.fromString(siteId));
- String chosenNodeURI = resourceID.substring(NODE_RESOURCE_ID_PREFIX.length());
- // String siteId = request.getParameter("siteId");
+ String chosenNodeURI = request.getParameter("uri");
- Node chosenNode = navigation.getNode(NodePath.fromString(chosenNodeURI), Nodes.visitNodes(2));
+ Node chosenNode = navigation.getNode(NodePath.fromString(chosenNodeURI), Nodes.visitNodes(getNodeLevel(request)));
boolean showEmptyCategory = getShowEmptyCategory(request);
@@ -146,4 +149,5 @@ protected boolean getShowEmptyCategory(PortletRequest request) {
return Boolean.valueOf(showEmptyCategoryStringValue);
}
+ protected abstract int getNodeLevel(PortletRequest request);
}
diff --git a/mobile-integration/portlets/header/src/main/webapp/WEB-INF/portlet.xml b/mobile-integration/portlets/header/src/main/webapp/WEB-INF/portlet.xml
index 32bdbb8b3..9474e7cff 100644
--- a/mobile-integration/portlets/header/src/main/webapp/WEB-INF/portlet.xml
+++ b/mobile-integration/portlets/header/src/main/webapp/WEB-INF/portlet.xml
@@ -28,6 +28,10 @@
enable.grouppages.link
true
+
+ level
+ 2
+
diff --git a/mobile-integration/portlets/header/src/main/webapp/jsp/header.jsp b/mobile-integration/portlets/header/src/main/webapp/jsp/header.jsp
index 49383e2d4..d4803e7ae 100644
--- a/mobile-integration/portlets/header/src/main/webapp/jsp/header.jsp
+++ b/mobile-integration/portlets/header/src/main/webapp/jsp/header.jsp
@@ -10,13 +10,9 @@
<%-- Hack because web ui can't properly handle javascript modules after a full ajax page reload --%>
<%
JavascriptManager jsMan = ((WebuiRequestContext)WebuiRequestContext.getCurrentInstance()).getJavascriptManager();
-
-jsMan.require("SHARED/org_gatein_responsive_collapsiblecontainer", "collapsibleContainer")
- .addScripts("collapsibleContainer.init();");
-jsMan.require("SHARED/org_gatein_responsive_dropdownmenu_jquery", "dropdownmenu")
- .addScripts("dropdownmenu.init();");
-jsMan.require("SHARED/org_gatein_responsive_menu", "menu")
- .addScripts("menu.init();");
+jsMan.require("SHARED/org_gatein_responsive_collapsiblecontainer", "collapsibleContainer").addScripts("collapsibleContainer.init();");
+jsMan.require("SHARED/org_gatein_responsive_dropdownmenu_jquery", "dropdownmenu").addScripts("dropdownmenu.init();");
+jsMan.require("SHARED/org_gatein_responsive_menu", "menu").addScripts("menu.init();");
%>
<%-- The resourceBundle used to retrieve locale string values --%>
diff --git a/mobile-integration/portlets/header/src/main/webapp/jsp/node.jsp b/mobile-integration/portlets/header/src/main/webapp/jsp/node.jsp
index 35dfeacaf..d130a8789 100644
--- a/mobile-integration/portlets/header/src/main/webapp/jsp/node.jsp
+++ b/mobile-integration/portlets/header/src/main/webapp/jsp/node.jsp
@@ -29,7 +29,7 @@ limitations under the License.