[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(" | ");
+ 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