Skip to content
This repository has been archived by the owner on Apr 8, 2019. It is now read-only.

Commit

Permalink
GTNPORTAL-2985: add group page support to the responsive header portlet.
Browse files Browse the repository at this point in the history
  • Loading branch information
mwringe authored and bdaw committed May 8, 2013
1 parent 48bcbc5 commit 40f9ada
Show file tree
Hide file tree
Showing 18 changed files with 1,093 additions and 460 deletions.
Expand Up @@ -22,25 +22,25 @@
******************************************************************************/
package org.gatein.portlet.responsive.header;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.portal.application.PortalRequestContext;
import org.exoplatform.portal.mop.SiteType;
import org.exoplatform.portal.mop.Visibility;
import org.exoplatform.portal.mop.navigation.Scope;
import org.exoplatform.portal.mop.user.UserNavigation;
import org.exoplatform.portal.mop.user.UserNode;
import org.exoplatform.portal.mop.user.UserNodeFilterConfig;
import org.exoplatform.portal.mop.user.UserPortal;
import org.exoplatform.portal.webui.util.Util;
import org.exoplatform.web.security.sso.SSOHelper;
import org.exoplatform.web.url.navigation.NavigationResource;
import org.exoplatform.web.url.navigation.NodeURL;
import org.exoplatform.webui.organization.OrganizationUtils;
import org.exoplatform.portal.webui.util.Util;
import org.gatein.api.PortalRequest;
import org.gatein.api.navigation.Navigation;
import org.gatein.api.navigation.Node;
import org.gatein.api.navigation.Nodes;
import org.gatein.api.site.Site;
import org.gatein.api.site.SiteId;
import org.gatein.api.site.SiteQuery;
import org.gatein.api.site.SiteType;

import com.google.javascript.jscomp.FindExportableNodes.GenerateNodeContext;

/**
* @author <a href="mailto:mwringe@redhat.com">Matt Wringe</a>
Expand All @@ -49,6 +49,7 @@
public class HeaderBean {

private static final String GROUP_NAVIGATION_NODE = "groupnavigation";
private static final String REGISTER_NODE = "register";

private final SSOHelper ssoHelper;

Expand All @@ -59,6 +60,7 @@ public HeaderBean() {
public String generateLoginLink(String defaultAction) {
if (ssoHelper != null) {
PortalRequestContext pContext = Util.getPortalRequestContext();

String ssoRedirectURL = pContext.getRequest().getContextPath() + ssoHelper.getSSORedirectURLSuffix();
return ssoRedirectURL;
} else {
Expand All @@ -67,94 +69,58 @@ public String generateLoginLink(String defaultAction) {
}

public String generateRegisterLink() {
PortalRequestContext pContext = Util.getPortalRequestContext();
NavigationResource resource = new NavigationResource(SiteType.PORTAL, pContext.getPortalOwner(), "register");
return resource.getNodeURI();
PortalRequest portalRequest = PortalRequest.getInstance();
String portalURL = portalRequest.getURIResolver().resolveURI(portalRequest.getSiteId());
return portalURL + "/" + REGISTER_NODE;
}

public String generateHomePageLink() throws Exception {
PortalRequestContext pContext = Util.getPortalRequestContext();
NodeURL nodeURL = pContext.createURL(NodeURL.TYPE).setResource(
new NavigationResource(SiteType.PORTAL, pContext.getPortalOwner(), null));
return nodeURL.toString();
PortalRequest portalRequest = PortalRequest.getInstance();
String portalURL = portalRequest.getURIResolver().resolveURI(portalRequest.getSiteId());
return portalURL;
}

public String generateDashboardLink() throws Exception {
PortalRequestContext pContext = Util.getPortalRequestContext();
NodeURL nodeURL = pContext.createURL(NodeURL.TYPE);
nodeURL.setResource(new NavigationResource(SiteType.USER, pContext.getRemoteUser(), null));
return nodeURL.toString();
PortalRequest portalRequest = PortalRequest.getInstance();
return portalRequest.getURIResolver().resolveURI(new SiteId(portalRequest.getUser()));
}

public String generateGroupPagesLink() {
PortalRequestContext pContext = Util.getPortalRequestContext();
NodeURL nodeURL = pContext.createURL(NodeURL.TYPE);
nodeURL.setResource(new NavigationResource(SiteType.PORTAL, pContext.getPortalOwner(), GROUP_NAVIGATION_NODE));
return nodeURL.toString();
}

public Map<String, List<Node>> getGroupNodes() throws Exception {
Map<String, List<Node>> navNodes = new HashMap<String, List<Node>>();

PortalRequestContext pContext = Util.getPortalRequestContext();
UserPortal userPortal = pContext.getUserPortal();

List<UserNavigation> groupNavigations = getGroupNavigations(userPortal);

for (UserNavigation groupNavigation : groupNavigations) {
String groupName = OrganizationUtils.getGroupLabel(groupNavigation.getKey().getName());
String groupTitle = groupName;

UserNode userNode = userPortal.getNode(groupNavigation, Scope.ALL, getFilter(), null);
List<Node> nodes = new ArrayList<Node>();
for (UserNode childnode : userNode.getChildren()) {
Node node = getNode(childnode);
nodes.add(node);
}
Navigation navigation = PortalRequest.getInstance().getNavigation();
Node navigationNode = navigation.getNode(GROUP_NAVIGATION_NODE);

navNodes.put(groupTitle, nodes);
if (navigationNode != null) {
return navigationNode.getURI().toString();
} else {
return null;
}
return navNodes;
}

public Node getNode(UserNode userNode) {
Node node;
if (userNode.getPageRef() != null) {
NodeURL nodeURL = Util.getPortalRequestContext().createURL(NodeURL.TYPE);
nodeURL.setResource(new NavigationResource(userNode));

node = new Node(userNode.getEncodedResolvedLabel(), nodeURL.toString());
} else {
node = new Node(userNode.getEncodedResolvedLabel(), null);
}
public Map<String, NodeBean> getGroupNodes() throws Exception {

List<Node> children = new ArrayList<Node>();
for (UserNode childNode : userNode.getChildren()) {
children.add(getNode(childNode));
}
node.setChildren(children);
Map<String, NodeBean> navNodes = new HashMap<String, NodeBean>();

return node;
}
PortalRequest portalRequest = PortalRequest.getInstance();

protected List<UserNavigation> getGroupNavigations(UserPortal userPortal) {
List<UserNavigation> userNavigations = userPortal.getNavigations();
SiteQuery.Builder siteQueryBulder = new SiteQuery.Builder();
SiteQuery siteQuery = siteQueryBulder.withSiteTypes(SiteType.SPACE).includeEmptySites(false).build();
List<Site> groupSites = PortalRequest.getInstance().getPortal().findSites(siteQuery);

// TODO: Can we not just access the Group Navigations directly?
List<UserNavigation> groupNavigations = new ArrayList<UserNavigation>();
for (UserNavigation userNavigation : userNavigations) {
if (userNavigation.getKey().getType().equals(SiteType.GROUP)) {
groupNavigations.add(userNavigation);
for (Site site : groupSites) {
// check permissions and handle the special 'guest' site
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));
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);
}
}
}

return groupNavigations;
}

protected UserNodeFilterConfig getFilter() {
UserNodeFilterConfig.Builder builder = UserNodeFilterConfig.builder();
builder.withReadWriteCheck().withVisibility(Visibility.DISPLAYED, Visibility.TEMPORAL);
builder.withTemporalCheck();
return builder.build();
return navNodes;
}
}
Expand Up @@ -24,24 +24,19 @@

import java.io.IOException;

import javax.portlet.GenericPortlet;
import javax.portlet.MimeResponse;
import javax.portlet.PortletException;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

import org.w3c.dom.Element;

/**
* @author <a href="mailto:mwringe@redhat.com">Matt Wringe</a>
* @version $Revision$
*/
public class HeaderPortlet extends GenericPortlet {
public class HeaderPortlet extends NodePortlet {

HeaderBean headerBean;


public HeaderPortlet() {
headerBean = new HeaderBean();
}
Expand All @@ -52,4 +47,10 @@ protected void doView(RenderRequest request, RenderResponse response) throws Por
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);
};
}

This file was deleted.

0 comments on commit 40f9ada

Please sign in to comment.