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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to