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