[jboss-svn-commits] JBoss Portal SVN: r5170 - in trunk: core/src/bin/portal-core-war/layouts/generic core/src/resources/portal-core-sar/conf/data theme/src/main/org/jboss/portal/theme/impl/render theme/src/main/org/jboss/portal/theme/render theme/src/main/org/jboss/portal/theme/render/region theme/src/main/org/jboss/portal/theme/tag
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Sep 11 15:40:19 EDT 2006
Author: roy.russo at jboss.com
Date: 2006-09-11 15:40:16 -0400 (Mon, 11 Sep 2006)
New Revision: 5170
Added:
trunk/theme/src/main/org/jboss/portal/theme/render/region/
trunk/theme/src/main/org/jboss/portal/theme/render/region/utilitynavigation.java
Modified:
trunk/core/src/bin/portal-core-war/layouts/generic/index.jsp
trunk/core/src/resources/portal-core-sar/conf/data/default-object.xml
trunk/theme/src/main/org/jboss/portal/theme/impl/render/DivRegionRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java
Log:
JBPORTAL-1030 - Added support for injection of region content, not bound to window fragments.
Modified: trunk/core/src/bin/portal-core-war/layouts/generic/index.jsp
===================================================================
--- trunk/core/src/bin/portal-core-war/layouts/generic/index.jsp 2006-09-08 22:05:23 UTC (rev 5169)
+++ trunk/core/src/bin/portal-core-war/layouts/generic/index.jsp 2006-09-11 19:40:16 UTC (rev 5170)
@@ -24,8 +24,7 @@
<td align="center" valign="top" id="header">
<!-- TODO: Needs to be defined as a region for access control -->
- <div id="utilitynavigation"><a href="#" class="addcontent">Add Content</a></div>
-
+ <p:region regionName='utilitynavigation' regionID='utilitynavigation'/>
<p:region regionName='navigation' regionID='navigation'/>
<div id="spacer"></div>
</td>
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-09-08 22:05:23 UTC (rev 5169)
+++ trunk/core/src/resources/portal-core-sar/conf/data/default-object.xml 2006-09-11 19:40:16 UTC (rev 5170)
@@ -89,6 +89,23 @@
<instance-ref>CMSPortletInstance</instance-ref>
<region>center</region>
<height>0</height>
+ <properties>
+ <!-- use the window renderer from the emptyRenderer renderSet -->
+ <property>
+ <name>theme.windowRendererId</name>
+ <value>emptyRenderer</value>
+ </property>
+ <!-- use the decoration renderer from the emptyRenderer renderSet -->
+ <property>
+ <name>theme.decorationRendererId</name>
+ <value>emptyRenderer</value>
+ </property>
+ <!-- use the portlet renderer from the emptyRenderer renderSet -->
+ <property>
+ <name>theme.portletRendererId</name>
+ <value>emptyRenderer</value>
+ </property>
+ </properties>
</window>
<window>
<window-name>UserPortletWindow</window-name>
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/DivRegionRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/DivRegionRenderer.java 2006-09-08 22:05:23 UTC (rev 5169)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/DivRegionRenderer.java 2006-09-11 19:40:16 UTC (rev 5170)
@@ -27,7 +27,9 @@
import org.jboss.portal.theme.render.RegionRenderer;
import org.jboss.portal.theme.render.RenderContext;
import org.jboss.portal.theme.render.RenderException;
+import org.apache.log4j.Logger;
+import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Map;
@@ -35,12 +37,15 @@
* Implementation of a Region renderer, based on div tags.
*
* @author <a href="mailto:mholzner at novell.com>Martin Holzner</a>
+ * @author <a href="mailto:roy at jboss.org>Roy Russo</a>
* @version $LastChangedRevision$, $LastChangedDate$
* @see org.jboss.portal.theme.render.RegionRenderer
*/
public class DivRegionRenderer
- implements RegionRenderer
+ implements RegionRenderer
{
+ private static Logger log = Logger.getLogger(DivRegionRenderer.class);
+
/**
* @see RegionRenderer#render
*/
@@ -49,32 +54,49 @@
StringBuffer markup = renderContext.getMarkupFragment();
markup.append("<div");
- if (region == null || region.getWindows().size() <= 0)
+ if(region == null) // || region.getWindows().size() <= 0)
{
markup.append(" class='empty-region' />");
return;
}
else
{
- if (renderContext.getRegionID() != null)
+ if(renderContext.getRegionID() != null)
{
markup.append(" id='").append(renderContext.getRegionID()).append("'>");
}
}
- for (Iterator i = region.getWindows().iterator(); i.hasNext();)
+ if(region.getWindows().size() == 0) // non-window display of content
{
- WindowContext window = (WindowContext)i.next();
- WindowContext portletContext = (WindowContext)portletContexts.get(window.getId());
- WindowResult result = (WindowResult)windowResults.get(window.getId());
-
- // The result may be null if it has not been added to the page for some reason
- if (result != null)
+ try
{
- renderContext.getWindowRenderer(result).render(renderContext, portletContext, result);
+ Class regionClass = Class.forName("org.jboss.portal.theme.render.region." + region.getId(), true, Thread.currentThread().getContextClassLoader());
+ Class[] argTypes = {String.class};
+ Method m = regionClass.getMethod("render", argTypes);
+ String fragment = (String)m.invoke(regionClass.newInstance(), new Object[]{null});
+ markup.append(fragment);
}
+ catch(Exception e)
+ {
+ log.error("No region class found for: " + "org.jboss.portal.theme.render.region." + region.getId());
+ }
}
+ else // process window fragments
+ {
+ for(Iterator i = region.getWindows().iterator(); i.hasNext();)
+ {
+ WindowContext window = (WindowContext) i.next();
+ WindowContext portletContext = (WindowContext) portletContexts.get(window.getId());
+ WindowResult result = (WindowResult) windowResults.get(window.getId());
+ // The result may be null if it has not been added to the page for some reason
+ if(result != null)
+ {
+ renderContext.getWindowRenderer(result).render(renderContext, portletContext, result);
+ }
+ }
+ }
markup.append("</div>");
}
Added: trunk/theme/src/main/org/jboss/portal/theme/render/region/utilitynavigation.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/render/region/utilitynavigation.java 2006-09-08 22:05:23 UTC (rev 5169)
+++ trunk/theme/src/main/org/jboss/portal/theme/render/region/utilitynavigation.java 2006-09-11 19:40:16 UTC (rev 5170)
@@ -0,0 +1,54 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.theme.render.region;
+
+/**
+ * This is a static div region, that is not bound to a window.
+ *
+ * @author <a href="mailto:roy at jboss.org">Roy Russo</a>
+ */
+
+public class utilitynavigation
+{
+ /**
+ * Returns output for rendering in region tag.
+ *
+ * @param s
+ * @return output for rendering
+ */
+ public String render(String s)
+ {
+ if(s == null)
+ {
+ return "<a href=\"#\" class=\"addcontent\">Add Content</a>" +
+ " | " +
+ "<a href=\"#\">Edit Page</a>" +
+ " | " +
+ "<a href=\"#\" class=\"addcontent\">Add Page</a>";
+ }
+ else
+ {
+ return "";
+ }
+ }
+}
Modified: trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java 2006-09-08 22:05:23 UTC (rev 5169)
+++ trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java 2006-09-11 19:40:16 UTC (rev 5170)
@@ -43,11 +43,12 @@
* individual portlets.</p>
*
* @author <a href="mailto:mholzner at novell.com>Martin Holzner</a>
+ * @author <a href="mailto:roy at jboss.org>Roy Russo</a>
* @version $LastChangedRevision$, $LastChangedDate$
* @see org.jboss.portal.theme.render.PortalRenderSet
*/
public class RegionTagHandler
- extends SimpleTagSupport
+ extends SimpleTagSupport
{
private static Logger log = Logger.getLogger(RegionTagHandler.class);
//default to vertical
@@ -63,33 +64,54 @@
*/
public void doTag() throws JspException, IOException
{
- if (regionCssId == null)
+ if(regionCssId == null)
{
regionCssId = regionName;
}
log.debug("rendering " + regionName + " [" + orientation + "] cssId[" + regionCssId + "]");
// get page and region
- PageContext app = (PageContext)getJspContext();
- HttpServletRequest request = (HttpServletRequest)app.getRequest();
+ PageContext app = (PageContext) getJspContext();
+ HttpServletRequest request = (HttpServletRequest) app.getRequest();
- PageResult page = (PageResult)request.getAttribute(LayoutConstants.ATTR_PAGE);
+ PageResult page = (PageResult) request.getAttribute(LayoutConstants.ATTR_PAGE);
JspWriter out = this.getJspContext().getOut();
- if (page == null)
+ if(page == null)
{
out.write("<p bgcolor='red'>No page to render!</p>");
out.write("<p bgcolor='red'>The page to render (PageResult) must be set in the request attribute '" +
- LayoutConstants.ATTR_PAGE + "'</p>");
+ LayoutConstants.ATTR_PAGE + "'</p>");
out.flush();
return;
}
- if (page.getRegion(regionName) == null)
+ if(page.getRegion(regionName) == null) // non-window display of content
{
- log.debug("no such region in this page. Page [" + page.getPageName() + "] Region [" + regionName + "]");
+ // create a new region obj, based on region name
+ Region newRegion = new Region(regionName, regionCssId, RegionOrientation.DEFAULT);
+/*
+ if(regionName.equals("utility"))
+ {
+ out.write("<div id=\"utilitynavigation\"><a href=\"#\" class=\"addcontent\">Add Content</a></div>");
+ }
+*/
+ RenderContext renderContext = (RenderContext) request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
+ renderContext = renderContext.getContext(newRegion, regionCssId, orientation);
+ try
+ {
+ renderContext.render();
+ out.write(renderContext.getMarkupFragment().toString());
+ out.flush();
+ }
+ catch(RenderException e)
+ {
+ throw new JspException(e);
+ }
return;
}
- RenderContext renderContext = (RenderContext)request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
- if (renderContext == null)
+
+ // window-centric display of content
+ RenderContext renderContext = (RenderContext) request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
+ if(renderContext == null)
{
log.debug("no render context available in request");
return;
@@ -103,7 +125,7 @@
out.write(renderContext.getMarkupFragment().toString());
out.flush();
}
- catch (RenderException e)
+ catch(RenderException e)
{
throw new JspException(e);
}
@@ -120,7 +142,7 @@
*/
public void setOrientation(String orientation)
{
- if (orientation == null)
+ if(orientation == null)
{
log.error("no null value allowed");
}
@@ -129,7 +151,7 @@
{
this.orientation = RegionOrientation.parseOrientation(orientation);
}
- catch (IllegalArgumentException e)
+ catch(IllegalArgumentException e)
{
log.error(e);
this.orientation = RegionOrientation.DEFAULT;
More information about the jboss-svn-commits
mailing list