Author: smilek
Date: Mon Feb 26 22:24:20 2007
New Revision: 512150

URL: http://svn.apache.org/viewvc?view=rev&rev=512150
Log:
added support for specifying variant desktop layout template name for portlet 
print-mode - this includes a change to GetPageAction ajaxapi which allows for 
optional parameters (entity and layoutid) to cause the psml response to be 
limited to a single layout fragment (and its children) and/or a single layout 
fragment with a single portlet fragment (suppressing all other child fragments 
in the layout)

Modified:
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopImpl.java
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/ajax-xml/psml.vm
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/GetPageAction.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktopContext.java

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopImpl.java?view=diff&rev=512150&r1=512149&r2=512150
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopImpl.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/desktop/impl/JetspeedDesktopImpl.java
 Mon Feb 26 22:24:20 2007
@@ -143,7 +143,11 @@
             HeaderResource hr = getHeaderResourceFactory().getHeaderResouce( 
request );
             JetspeedDesktopContext desktopContext = new 
JetspeedDesktopContextImpl( request, this.baseUrlAccess, theme, hr, 
defaultLayoutTemplateExtension );
             
-            layoutDecorationTemplatePath = 
desktopContext.getLayoutTemplatePath();
+            String layoutTemplateIdPropertyName = null;
+            if ( "true".equals( request.getRequest().getParameter( 
"jsprintmode" ) ) )
+                layoutTemplateIdPropertyName = 
JetspeedDesktopContext.LAYOUT_PRINT_TEMPLATE_ID_PROP;
+            
+            layoutDecorationTemplatePath = 
desktopContext.getLayoutTemplatePath( layoutTemplateIdPropertyName );
             layoutDecorationTemplatePathWasAssigned = true;
             
             RequestDispatcher dispatcher = 
request.getRequest().getRequestDispatcher( layoutDecorationTemplatePath );

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/ajax-xml/psml.vm
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/ajax-xml/psml.vm?view=diff&rev=512150&r1=512149&r2=512150
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/ajax-xml/psml.vm
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/ajax-xml/psml.vm
 Mon Feb 26 22:24:20 2007
@@ -1,4 +1,4 @@
-#macro (traverseFragments $f)
+#macro (traverseFragments $f $singleLayoutId $singlePortletId)
     <fragment id="$f.Id" type="$f.Type" name="$f.Name" 
decorator="$!f.Decorator">
     #set($hasSizesProperty=false)
     #foreach ($prop in $f.getProperties().entrySet())
@@ -17,9 +17,11 @@
                  #end
                </preference>
        #end
-#if($f.Type == "layout")
+#if($f.Type == "layout" && (! $singleLayoutId || $f.Id == $singleLayoutId))
                #foreach($subf in $f.Fragments)
-        #traverseFragments($subf)
+                   #if(! $singlePortletId || ($subf.Type == "portlet" && 
$subf.Id == $singlePortletId))
+                #traverseFragments($subf $singleLayoutId $singlePortletId)
+            #end
                #end
        #end
 #if($f.Type == "portlet")
@@ -56,8 +58,12 @@
      <action id="${action.ActionName}" type="${action.ActionType}" 
name="${action.Name}" url="${action.Action}"/>    
 #end
 
-#if ($fragments == "true")    
-  #traverseFragments($page.RootFragment)
+#if ($fragments == "true")
+  #if ($layoutsingle)
+    #traverseFragments($layoutsingle $layoutsingle.Id $portletsingleId)
+  #else
+       #traverseFragments($page.RootFragment false false)
+  #end
 #end
 #if ($securityRefs)
 #foreach ($sec in $securityRefs)

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/GetPageAction.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/GetPageAction.java?view=diff&rev=512150&r1=512149&r2=512150
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/GetPageAction.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/GetPageAction.java
 Mon Feb 26 22:24:20 2007
@@ -16,6 +16,7 @@
 package org.apache.jetspeed.layout.impl;
 
 import java.util.HashMap;
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -110,12 +111,53 @@
                     return success;
                 }
             }
+            
             Map fragSizes = new HashMap();
             Map portletIcons = new HashMap();
-            retrieveFragmentSpecialProperties( requestContext, 
page.getRootFragment(), fragSizes, portletIcons );
+            
+            String singleLayoutId = getActionParameter(requestContext, 
LAYOUTID);
+            if ( singleLayoutId != null )
+            {   // build page representation with single layout
+                Fragment currentLayoutFragment = page.getFragmentById( 
singleLayoutId );
+                if ( currentLayoutFragment == null )
+                {
+                    throw new Exception("layout id not found: " + 
singleLayoutId );
+                }
+                Fragment currentPortletFragment = null;
+                
+                String singlePortletId = getActionParameter(requestContext, 
PORTLETENTITY);
+                if ( singlePortletId != null )
+                {
+                    Iterator layoutChildIter = 
currentLayoutFragment.getFragments().iterator();
+                    while ( layoutChildIter.hasNext() )
+                    {
+                        Fragment childFrag = (Fragment)layoutChildIter.next();
+                        if ( childFrag != null )
+                        {
+                            if ( singlePortletId.equals( childFrag.getId() ) )
+                            {
+                                currentPortletFragment = childFrag;
+                                break;
+                            }
+                        }
+                    }
+                    if ( currentPortletFragment == null )
+                    {
+                        throw new Exception("portlet id " + singlePortletId + 
" not found in layout " + singleLayoutId );
+                    }
+                    resultMap.put( "portletsingleId", 
currentPortletFragment.getId() );
+                }
+                
+                retrieveFragmentSpecialProperties( requestContext, 
currentLayoutFragment, fragSizes, portletIcons );
+                resultMap.put( "layoutsingle", currentLayoutFragment );
+            }
+            else
+            {
+                retrieveFragmentSpecialProperties( requestContext, 
page.getRootFragment(), fragSizes, portletIcons );
+            }
             resultMap.put( SIZES, fragSizes );
             resultMap.put( "portletIcons", portletIcons );
-        } 
+        }
         catch (Exception e)
         {
             // Log the exception

Modified: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktopContext.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktopContext.java?view=diff&rev=512150&r1=512149&r2=512150
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktopContext.java
 (original)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/desktop/JetspeedDesktopContext.java
 Mon Feb 26 22:24:20 2007
@@ -36,6 +36,8 @@
     String LAYOUT_TEMPLATE_EXTENSION_PROP = "template.extension";
 
     String LAYOUT_TEMPLATE_ID_PROP = "template.id";
+    String LAYOUT_PRINT_TEMPLATE_ID_PROP = "template.print.id";
+    String LAYOUT_PORTALUSER_TEMPLATE_ID_PROP = "template.portaluser.id";
     
     String LAYOUT_TEMPLATE_ID_DEFAULT = "desktop";
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to