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 we...@apache.org on 2005/08/17 20:05:22 UTC

svn commit: r233226 - in /portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity: JetspeedPowerTool.java JetspeedPowerToolImpl.java JetspeedVelocityViewServlet.java

Author: weaver
Date: Wed Aug 17 11:05:20 2005
New Revision: 233226

URL: http://svn.apache.org/viewcvs?rev=233226&view=rev
Log:
See JS2-333:  http://issues.apache.org/jira/browse/JS2-333

Modified:
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerTool.java
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedVelocityViewServlet.java

Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerTool.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerTool.java?rev=233226&r1=233225&r2=233226&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerTool.java (original)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerTool.java Wed Aug 17 11:05:20 2005
@@ -28,6 +28,7 @@
 import org.apache.jetspeed.om.page.ContentFragment;
 import org.apache.jetspeed.om.page.Page;
 import org.apache.pluto.om.entity.PortletEntity;
+import org.apache.velocity.context.Context;
 
 /**
  * JetspeedPowerTool
@@ -230,4 +231,12 @@
     String getBasePath();
 
     String getPageBasePath();
+    
+    /**
+     * Sets the Velocity Context object for this powertool instance.  This is
+     * only required if using Velocity based decortaions and layouts.
+     * 
+     * @param velocityContext
+     */
+    void setVelocityContext(Context velocityContext);
 }

Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java?rev=233226&r1=233225&r2=233226&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java (original)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java Wed Aug 17 11:05:20 2005
@@ -60,6 +60,7 @@
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.services.title.DynamicTitleService;
 import org.apache.jetspeed.util.ArgUtil;
+import org.apache.jetspeed.util.Path;
 import org.apache.pluto.om.entity.PortletEntity;
 import org.apache.pluto.om.portlet.ContentTypeSet;
 import org.apache.pluto.om.window.PortletWindow;
@@ -88,6 +89,8 @@
 public class JetspeedPowerToolImpl implements JetspeedPowerTool
 {
     
+    private static final String DECORATOR_ID_ATTR = "decoratorId";
+    private static final String ACTION_IMAGE_EXTENSION_ATTR = "actionImageExtension";
     protected static final String PORTLET_CONFIG_ATTR = "javax.portlet.config";
     protected static final String RENDER_RESPONSE_ATTR = "javax.portlet.response";
     protected static final String RENDER_REQUEST_ATTR = "javax.portlet.request";
@@ -219,7 +222,7 @@
     public void setCurrentFragment( ContentFragment f )
     {
         checkState();
-        renderRequest.setAttribute(PortalReservedParameters.FRAGMENT_ATTRIBUTE, f);
+        setAttribute(PortalReservedParameters.FRAGMENT_ATTRIBUTE, f);
         
     }
 
@@ -228,7 +231,7 @@
         checkState();
 
         ContentFragment f = (ContentFragment) getRequestContext().getRequest().getAttribute(LAYOUT_ATTR);
-        renderRequest.setAttribute(LAYOUT_ATTR, f);
+        setAttribute(LAYOUT_ATTR, f);       
     }
 
     /**
@@ -541,7 +544,9 @@
                 template = getDecoration(parent + "/" + DECORATOR_TYPE + ext, fragmentType);
             }
         }
-
+        
+        setAttribute(DECORATOR_ID_ATTR, decoConf.getString("id"));     
+        setAttribute(ACTION_IMAGE_EXTENSION_ATTR, decoConf.getString("action.image.extension", ".gif"));
         return  template.getAppRelativePath();
     }   
     
@@ -580,6 +585,15 @@
             descriptor.setType(templateType);
 
             TemplateDescriptor template = locator.locateTemplate(descriptor);
+            // Check for defaults above the currently specified root
+            if(template == null)
+            {
+                Path pathObject = new Path(path);
+                if(pathObject.length() > 1)
+                {
+                    template = getTemplate(pathObject.getSegment(1).toString(), templateType, locator, descriptor);
+                }
+            }
             return template;
         }
         catch (TemplateLocatorException e)
@@ -606,7 +620,7 @@
         if (exceptions == null)
         {
             exceptions = new HashSet();
-            renderRequest.setAttribute(FRAGMENT_PROCESSING_ERROR_PREFIX + fragment.getId(), exceptions);
+            setAttribute(FRAGMENT_PROCESSING_ERROR_PREFIX + fragment.getId(), exceptions);
         }
         exceptions.add(e);
 
@@ -781,7 +795,11 @@
 
     protected DecoratorAction createDecoratorAction( String resourceBase, String actionName )
     {
-        // TODO: HARD-CODED .gif link
+        String imageExt = (String) renderRequest.getAttribute(ACTION_IMAGE_EXTENSION_ATTR);
+        if(imageExt == null)
+        {
+            imageExt = ".gif";
+        }
         String link = renderResponse.encodeURL(resourceBase+"/content/images/"+actionName+".gif");
         return new DecoratorAction(actionName, actionName, link); 
     }
@@ -903,5 +921,29 @@
     {
         return getRequestContext().getPortalURL().getPageBasePath();
     }
+
+
+    public void setVelocityContext(Context velocityContext)
+    {
+        this.velocityContext = velocityContext;
+    }
+    
+    /**
+     * Sets an attribute for use within your layout and decoration templates. The value is always stored
+     * within the current <code>javax.portlet.Renderrequest</code> and is also stored within the current 
+     * <code>org.apache.velocity.Context</code> if it is available.
+     * 
+     * @param name to store the attribute under.
+     * @param obj object to set.
+     */
+    protected void setAttribute(String name, Object object)
+    {
+        renderRequest.setAttribute(name, object);
+        if(velocityContext != null)
+        {
+            velocityContext.put(name, object);
+        }
+    }
+    
     
 }

Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedVelocityViewServlet.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedVelocityViewServlet.java?rev=233226&r1=233225&r2=233226&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedVelocityViewServlet.java (original)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedVelocityViewServlet.java Wed Aug 17 11:05:20 2005
@@ -183,6 +183,7 @@
                    "the HttpServletRequest.");
         }
         
+        jpt.setVelocityContext(ctx);
         ctx.put("jetspeed", jpt);  
         ctx.put("JS2RequestContext", requestContext);
         ctx.put("renderRequest", renderRequest);



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org