You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by wo...@apache.org on 2010/02/23 18:41:41 UTC
svn commit: r915452 -
/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
Author: woonsan
Date: Tue Feb 23 17:41:41 2010
New Revision: 915452
URL: http://svn.apache.org/viewvc?rev=915452&view=rev
Log:
JS2-1057: Restoring code lines checking if a folder in the root is a space or not. Also save in session cache not to invoke getFolder() methods frequently.
Modified:
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java?rev=915452&r1=915451&r2=915452&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java Tue Feb 23 17:41:41 2010
@@ -18,7 +18,11 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
@@ -36,7 +40,9 @@
import org.apache.jetspeed.Jetspeed;
import org.apache.jetspeed.administration.PortalAdministration;
import org.apache.jetspeed.container.url.BasePortalURL;
+import org.apache.jetspeed.om.folder.Folder;
import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.portlet.LocalizedField;
import org.apache.jetspeed.page.PageManager;
import org.apache.jetspeed.portalsite.Menu;
import org.apache.jetspeed.portalsite.MenuElement;
@@ -64,6 +70,7 @@
public static final String DEFAULT_SPACE_NAVS_MENU = "space-navigations";
public static final String DEFAULT_SPACE_LINKS_MENU = "space-links";
public static final String DEFAULT_TEMPLATE_PAGE = "/_template/new-user/min.psml";
+ public static final String FOLDER_SPACE_FLAGS = "folderSpaceFlags";
private static Logger log = LoggerFactory.getLogger(PageNavigator.class);
@@ -95,11 +102,11 @@
}
try
{
- baseUrlAccess = (BasePortalURL) Jetspeed.getComponentManager().getComponent("BasePortalURL");
+ baseUrlAccess = (BasePortalURL) Jetspeed.getComponentManager().getComponent("BasePortalURL");
}
catch (Exception e)
{
- baseUrlAccess = null; // optional
+ baseUrlAccess = null; // optional
}
String param = config.getInitParameter("yuiScriptPath");
@@ -224,6 +231,9 @@
try
{
+ String spacePath = StringUtils.trim(space.getPath());
+ boolean isRootSpace = StringUtils.isBlank(spacePath) || "/".equals(spacePath);
+
RequestContext rc = (RequestContext) request.getAttribute(RequestContext.REQUEST_PORTALENV);
PortalSiteRequestContext psrc = (PortalSiteRequestContext) rc.getAttribute("org.apache.jetspeed.portalsite.PortalSiteRequestContext");
@@ -255,13 +265,60 @@
if (spaceMenu != null)
{
+ Map<String, Boolean> folderSpaceFlags = null;
+
for (MenuElement element : (List<MenuElement>) spaceMenu.getElements())
{
String type = element.getElementType();
if (MenuElement.MENU_ELEMENT_TYPE.equals(type))
{
- spaceMenuElements.add(element);
+ Menu folderMenu = (Menu) element;
+
+ if (!isRootSpace)
+ {
+ spaceMenuElements.add(element);
+ }
+ else
+ {
+ if (folderSpaceFlags == null)
+ {
+ folderSpaceFlags = (Map<String, Boolean>) request.getPortletSession(true).getAttribute(FOLDER_SPACE_FLAGS);
+
+ if (folderSpaceFlags == null)
+ {
+ folderSpaceFlags = Collections.synchronizedMap(new HashMap<String, Boolean>());
+ request.getPortletSession(true).setAttribute(FOLDER_SPACE_FLAGS, folderSpaceFlags);
+ }
+ }
+
+ // TODO: folder menu's url is same to path?
+ String folderPath = folderMenu.getUrl();
+ Boolean isFolderSpace = folderSpaceFlags.get(folderPath);
+
+ if (isFolderSpace == null)
+ {
+ isFolderSpace = Boolean.FALSE;
+
+ if (pageManager.folderExists(folderPath))
+ {
+ Folder folder = pageManager.getFolder(folderPath);
+ Collection<LocalizedField> fields = folder.getMetadata().getFields("space-owner");
+
+ if (fields != null && !fields.isEmpty())
+ {
+ isFolderSpace = Boolean.TRUE;
+ }
+ }
+
+ folderSpaceFlags.put(folderPath, isFolderSpace);
+ }
+
+ if (!isFolderSpace.booleanValue())
+ {
+ spaceMenuElements.add(element);
+ }
+ }
}
else if (MenuElement.OPTION_ELEMENT_TYPE.equals(type))
{
@@ -364,4 +421,4 @@
return pageNodes;
}
-}
\ No newline at end of file
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org