[jboss-svn-commits] JBoss Portal SVN: r5504 - in trunk/core/src: main/org/jboss/portal/core/aspects/controller resources/portal-core-sar/conf/data resources/portal-samples-war/WEB-INF

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Oct 26 14:37:59 EDT 2006


Author: roy.russo at jboss.com
Date: 2006-10-26 14:37:55 -0400 (Thu, 26 Oct 2006)
New Revision: 5504

Modified:
   trunk/core/src/main/org/jboss/portal/core/aspects/controller/PageCustomizerInterceptor.java
   trunk/core/src/resources/portal-core-sar/conf/data/default-object.xml
   trunk/core/src/resources/portal-samples-war/WEB-INF/default-object.xml
Log:
JBPORTAL-1089 - Admins can navigate back to main portal
JBPORTAL-585 - Added sorting via page properties for tab order

Modified: trunk/core/src/main/org/jboss/portal/core/aspects/controller/PageCustomizerInterceptor.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/aspects/controller/PageCustomizerInterceptor.java	2006-10-26 17:20:23 UTC (rev 5503)
+++ trunk/core/src/main/org/jboss/portal/core/aspects/controller/PageCustomizerInterceptor.java	2006-10-26 18:37:55 UTC (rev 5504)
@@ -31,9 +31,12 @@
 import org.jboss.portal.core.controller.command.SignOutCommand;
 import org.jboss.portal.core.controller.command.ViewDashboardCommand;
 import org.jboss.portal.core.impl.model.portal.PortalObjectImpl;
+import org.jboss.portal.core.model.portal.Context;
 import org.jboss.portal.core.model.portal.Page;
+import org.jboss.portal.core.model.portal.Portal;
 import org.jboss.portal.core.model.portal.PortalObject;
 import org.jboss.portal.core.model.portal.PortalObjectPermission;
+import org.jboss.portal.core.model.portal.Window;
 import org.jboss.portal.identity.User;
 import org.jboss.portal.security.PortalSecurityException;
 import org.jboss.portal.security.spi.auth.PortalAuthorizationManagerFactory;
@@ -47,6 +50,7 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -62,11 +66,18 @@
 public class PageCustomizerInterceptor extends ControllerInterceptor
 {
 
-   /** . */
+   /**
+    * .
+    */
    private static final String RESOURCE_PREFIX = "PAGENAME_";
 
    private PortalAuthorizationManagerFactory portalAuthorizationManagerFactory;
 
+   /**
+    * Tab order *
+    */
+   private static final String ORDER = "order";
+
    public PortalAuthorizationManagerFactory getPortalAuthorizationManagerFactory()
    {
       return portalAuthorizationManagerFactory;
@@ -161,21 +172,31 @@
             label = "My Dashboard";
          }
 
-         // Link to admin portal
+         // Link to admin/default portal
          String showadminURL = null;
-         PortalObjectPermission perm = new PortalObjectPermission("admin", PortalObjectPermission.VIEW_MASK);
-         try
+         String showDefaultURL = null;
+         PortalObject portalObject = rpc.getPage().getPortal();
+         if ("admin".equalsIgnoreCase(portalObject.getName())) // are we in admin portal?
          {
-            if (rpc.getControllerContext().getController().getPortalAuthorizationManagerFactory().getManager().checkPermission(perm))
+            RenderPageCommand showDefault = new RenderPageCommand("default");
+            showDefaultURL = rpc.getControllerContext().encodeURL(showDefault, null, null);
+         }
+         else
+         {
+            PortalObjectPermission perm = new PortalObjectPermission("admin", PortalObjectPermission.VIEW_MASK);
+            try
             {
-               RenderPageCommand showadmin = new RenderPageCommand("admin");
-               showadminURL = rpc.getControllerContext().encodeURL(showadmin, null, null);
+               if (rpc.getControllerContext().getController().getPortalAuthorizationManagerFactory().getManager().checkPermission(perm))
+               {
+                  RenderPageCommand showadmin = new RenderPageCommand("admin");
+                  showadminURL = rpc.getControllerContext().encodeURL(showadmin, null, null);
+               }
             }
+            catch (PortalSecurityException e)
+            {
+               log.error("", e);
+            }
          }
-         catch (PortalSecurityException e)
-         {
-            log.error("", e);
-         }
 
          // TODO: add checks for shared/private pages
          SignOutCommand cmd = new SignOutCommand();
@@ -203,6 +224,11 @@
             sb.append("  |  ");
             sb.append("<a href=\"").append(showadminURL).append("\">Admin</a>");
          }
+         else
+         {
+            sb.append("&nbsp;&nbsp;|&nbsp;&nbsp;");
+            sb.append("<a href=\"").append(showDefaultURL).append("\">Main</a>");
+         }
 
          // For now it is not implemented, we don't want to have feedback such as "Add Content does not work"
          boolean featureImplemented = false;
@@ -240,24 +266,7 @@
             }
          }
 
-         // order tabs as per preference setting
-//         String sOrdering = req.getPreferences().getValue("ordering", "default");
-//         if(sOrdering.equalsIgnoreCase("explicit"))
-//         {
-//            String sOrderList = req.getPreferences().getValue("explicitlist", "");
-//            if(!sOrderList.equals(""))
-//            {
-//               sortTabsExplicit(navElements, sOrderList.split(","));
-//            }
-//            else
-//            {
-//               sortTabs(navElements);
-//            }
-//         }
-//         else
-//         {
-//            sortTabs(navElements);
-//         }
+         sortTabs(navElements);
 
          StringBuffer html = new StringBuffer();
          html.append("<ul id=\"tabsHeader\">");
@@ -304,4 +313,58 @@
          return null;
       }
    }
+
+   protected void sortTabs(List navElements)
+   {
+      Collections.sort(navElements, new Comparator()
+      {
+         public int compare(Object o1, Object o2)
+         {
+            Float high1 = new Float(getOrder(o1));
+            Float high2 = new Float(getOrder(o2));
+            if (high1.equals(high2))
+            {
+               return ((PortalObject)o1).getName()
+                  .compareTo(((PortalObject)o2).getName());
+            }
+            else
+            {
+               return high1.compareTo(high2);
+            }
+         }
+      });
+   }
+
+   private static float getOrder(Object o)
+   {
+      if (o instanceof Context)
+      {
+         return 0;
+      }
+      if (o instanceof Portal)
+      {
+         return 1;
+      }
+      if (o instanceof Page)
+      {
+         String orderProperty = ((Page)o).getDeclaredProperty(ORDER);
+         if (orderProperty == null)
+         {
+            return 2.999f;
+         }
+         try
+         {
+            return Float.parseFloat("2." + orderProperty);
+         }
+         catch (NumberFormatException e)
+         {
+            return 2.999f;
+         }
+      }
+      if (o instanceof Window)
+      {
+         return 3;
+      }
+      return 4;
+   }
 }

Modified: trunk/core/src/resources/portal-core-sar/conf/data/default-object.xml
===================================================================
--- trunk/core/src/resources/portal-core-sar/conf/data/default-object.xml	2006-10-26 17:20:23 UTC (rev 5503)
+++ trunk/core/src/resources/portal-core-sar/conf/data/default-object.xml	2006-10-26 18:37:55 UTC (rev 5504)
@@ -77,6 +77,12 @@
          </supported-window-states>
          <page>
             <page-name>default</page-name>
+            <properties>
+               <property>
+                  <name>order</name>
+                  <value>1</value>
+               </property>
+            </properties>
             <window>
                <window-name>JSPPortletWindow</window-name>
                <instance-ref>JSPPortletInstance</instance-ref>
@@ -127,6 +133,12 @@
       <parent-ref>default</parent-ref>
       <page>
          <page-name>News</page-name>
+         <properties>
+            <property>
+               <name>order</name>
+               <value>3</value>
+            </property>
+         </properties>
          <window>
             <window-name>WeatherPortletWindow</window-name>
             <instance-ref>WeatherPortletInstance</instance-ref>

Modified: trunk/core/src/resources/portal-samples-war/WEB-INF/default-object.xml
===================================================================
--- trunk/core/src/resources/portal-samples-war/WEB-INF/default-object.xml	2006-10-26 17:20:23 UTC (rev 5503)
+++ trunk/core/src/resources/portal-samples-war/WEB-INF/default-object.xml	2006-10-26 18:37:55 UTC (rev 5504)
@@ -34,6 +34,10 @@
                <name>theme.ajax.object_disabled</name>
                <value>true</value>
             </property>
+            <property>
+               <name>order</name>
+               <value>3</value>
+            </property>
          </properties>
          <window>
             <window-name>TestPortletWindow</window-name>




More information about the jboss-svn-commits mailing list