Author: smilek
Date: Mon Feb 26 22:34:54 2007
New Revision: 512153

URL: http://svn.apache.org/viewvc?view=rev&rev=512153
Log:
added support for portlet print-mode, which is displayed in a popup window - 
and an alternate layout decoration template has been added to tigris and 
blueocean to produce a view which excludes header and all menus - in 
print-mode, GetPageAction ajaxapi is called with new parameters (layoutid and 
entity) to retrieve a reduced version of the page psml containing only the 
parent layout fragment and the one portlet fragment that is to be displayed in 
print-mode

Modified:
    portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/desktop/core.js

Modified: 
portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/desktop/core.js
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/desktop/core.js?view=diff&rev=512153&r1=512152&r2=512153
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/desktop/core.js 
(original)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/desktop/core.js Mon 
Feb 26 22:34:54 2007
@@ -262,17 +262,46 @@
         jetspeed.prefs.windowActionNoImage = noImageMap;
     }
 
+    var docUrlObj = jetspeed.url.parse( document.location.href );
+    var printModeOnly = jetspeed.url.getQueryParameter( docUrlObj, 
"jsprintmode" ) == "true";
+    if ( printModeOnly )
+    {
+        printModeOnly = {};
+        printModeOnly.action = jetspeed.url.getQueryParameter( docUrlObj, 
"jsaction" );
+        printModeOnly.entity = jetspeed.url.getQueryParameter( docUrlObj, 
"jsentity" );
+        printModeOnly.layout = jetspeed.url.getQueryParameter( docUrlObj, 
"jslayoutid" );
+        jetspeed.prefs.printModeOnly = printModeOnly;
+        jetspeed.prefs.windowTiling = true;
+        jetspeed.prefs.windowHeightExpand = true;
+    }
+
     jetspeed.prefs.portletDecorationsConfig = {};
     for ( var i = 0 ; i < jetspeed.prefs.portletDecorationsAllowed.length ; 
i++ )
     {
         jetspeed.loadPortletDecorationConfig( 
jetspeed.prefs.portletDecorationsAllowed[ i ] );
     }
     
+    jetspeed.debugWindowLoad();
+
+    if ( jetspeed.prefs.printModeOnly != null )
+    {
+        for ( var portletDecorationName in 
jetspeed.prefs.portletDecorationsConfig )
+        {
+            var pdConfig = jetspeed.prefs.portletDecorationsConfig[ 
portletDecorationName ];
+            if ( pdConfig != null )
+            {
+                pdConfig.windowActionButtonOrder = null;
+                pdConfig.windowActionMenuOrder = null;
+                pdConfig.windowDisableResize = true;
+                pdConfig.windowDisableMove = true;
+            }
+        }
+    }
+
     jetspeed.loadPage();
 };
 jetspeed.loadPage = function()
 {
-    jetspeed.debugWindowLoad();
     jetspeed.page = new jetspeed.om.Page();
     jetspeed.page.retrievePsml();
 };
@@ -1167,7 +1196,13 @@
         if ( this.psmlPath == null )
             this.setPsmlPathFromDocumentUrl() ;
 
-        return jetspeed.url.basePortalUrl() + this.psmlPath ;
+        var psmlUrl = jetspeed.url.basePortalUrl() + this.psmlPath;
+        if ( jetspeed.prefs.printModeOnly != null )
+        {
+            psmlUrl = jetspeed.url.addQueryParameter( psmlUrl, "layoutid", 
jetspeed.prefs.printModeOnly.layout );
+            psmlUrl = jetspeed.url.addQueryParameter( psmlUrl, "entity", 
jetspeed.prefs.printModeOnly.entity ).toString();
+        }
+        return psmlUrl;
     },
     
     retrievePsml: function( pageContentListener )
@@ -1186,7 +1221,6 @@
 
     loadFromPSML: function( psml )
     {
-        dojo.debug( "loadFromPSML starting" );
         // parse PSML
         var parsedRootLayoutFragment = this._parsePSML( psml );
 
@@ -1230,28 +1264,46 @@
             }
         }
 
-        // render portlets
-        if ( windowsToRender && windowsToRender.length > 0 )
+        if ( jetspeed.prefs.printModeOnly == null )
         {
-            jetspeed.doRenderAll( null, windowsToRender, true );
-        }
-
-        // initialize portlet window state
-        this._portletsInitializeWindowState( portletsByPageColumn[ "z" ] );
-
-        // load menus
-        this.retrieveAllMenus();
+            // render portlets
+            if ( windowsToRender && windowsToRender.length > 0 )
+            {
+                jetspeed.doRenderAll( null, windowsToRender, true );
+            }
 
-        // render page buttons
-        this.renderPageControls();
-        this.syncPageControls();
+            // initialize portlet window state
+            this._portletsInitializeWindowState( portletsByPageColumn[ "z" ] );
 
-        // detect edit mode force - likely to be temporary
-        var pageEditorInititate = jetspeed.url.getQueryParameter( 
document.location.href, jetspeed.id.PAGE_EDITOR_INITIATE_PARAMETER );
-        if ( ( pageEditorInititate != null && pageEditorInititate == "true" ) 
|| this.actions[ jetspeed.id.ACTION_NAME_VIEW ] != null )
+            // load menus
+            this.retrieveAllMenus();
+    
+            // render page buttons
+            this.renderPageControls();
+            this.syncPageControls();
+    
+            // detect edit mode force - likely to be temporary
+            var pageEditorInititate = jetspeed.url.getQueryParameter( 
document.location.href, jetspeed.id.PAGE_EDITOR_INITIATE_PARAMETER );
+            if ( ( pageEditorInititate != null && pageEditorInititate == 
"true" ) || this.actions[ jetspeed.id.ACTION_NAME_VIEW ] != null )
+            {
+                if ( this.actions != null && ( this.actions[ 
jetspeed.id.ACTION_NAME_EDIT ] != null || this.actions[ 
jetspeed.id.ACTION_NAME_VIEW ] != null ) )
+                    jetspeed.editPageInitiate();
+            }
+        }
+        else
         {
-            if ( this.actions != null && ( this.actions[ 
jetspeed.id.ACTION_NAME_EDIT ] != null || this.actions[ 
jetspeed.id.ACTION_NAME_VIEW ] != null ) )
-                jetspeed.editPageInitiate();
+            var portlet = null;
+            for ( var portletIndex in this.portlets )
+            {
+                portlet = this.portlets[portletIndex];
+                break;
+            }
+            if ( portlet != null )
+            {
+                portlet.renderAction( null, 
jetspeed.prefs.printModeOnly.action );
+
+                this._portletsInitializeWindowState( portletsByPageColumn[ "z" 
] );
+            }
         }
     },
     _parsePSML: function( psml )
@@ -1354,16 +1406,23 @@
                         dojo.raise( "_parsePSMLLayoutFragment called with 
layout fragment that contains more than one sizes property: " + layoutNode );
                         return null;
                     }
-
-                    propVal = child.getAttribute( "value" );
-                    if ( propVal != null && propVal.length > 0 )
+                    if ( jetspeed.prefs.printModeOnly != null )
                     {
-                        sizes = propVal.split( "," );
-                        for ( var j = 0 ; j < sizes.length ; j++ )
+                        sizes = [ "100" ];
+                        sizesSum = 100;
+                    }
+                    else
+                    {
+                        propVal = child.getAttribute( "value" );
+                        if ( propVal != null && propVal.length > 0 )
                         {
-                            var re = /^[^0-9]*([0-9]+)[^0-9]*$/;
-                            sizes[j] = sizes[j].replace( re, "$1" );
-                            sizesSum += new Number( sizes[j] );
+                            sizes = propVal.split( "," );
+                            for ( var j = 0 ; j < sizes.length ; j++ )
+                            {
+                                var re = /^[^0-9]*([0-9]+)[^0-9]*$/;
+                                sizes[j] = sizes[j].replace( re, "$1" );
+                                sizesSum += new Number( sizes[j] );
+                            }
                         }
                     }
                 }
@@ -1690,7 +1749,7 @@
                     
                     var portletWindowPositionStatic = 
jetspeed.prefs.windowTiling;
                     var portletWindowHeightToFit = 
jetspeed.prefs.windowHeightExpand;
-                    if ( portletWindowExtendedProperty != null && 
jetspeed.prefs.windowTiling )
+                    if ( portletWindowExtendedProperty != null && 
jetspeed.prefs.windowTiling && jetspeed.prefs.printModeOnly == null )
                     {
                         var extPropData = portletWindowExtendedProperty.split( 
jetspeed.id.PORTLET_PROP_DESKTOP_EXTENDED_PAIR_SEPARATOR );
                         var extProp = null, extPropLen = 0, extPropName = 
null, extPropValue = null, extPropFlag = false;
@@ -3180,17 +3239,27 @@
         delete this.properties[ name ];
     },
 
-    renderAction: function( actionName )
+    renderAction: function( actionName, actionUrlOverride )
     {
-        if ( actionName == null ) return;
-        var action = this.getAction( actionName );
-        if ( action == null ) return;
-        if ( action.url == null ) return;
-        var renderActionUrl = jetspeed.url.basePortalUrl() + 
jetspeed.url.path.PORTLET + jetspeed.page.getPath() + "/" + action.url;
+        var action = null;
+        if ( actionName != null )
+            action = this.getAction( actionName );
+        var actionUrl = actionUrlOverride;
+        if ( actionUrl == null && action != null )
+            actionUrl = action.url;
+        if ( actionUrl == null ) return;
+        var renderActionUrl = jetspeed.url.basePortalUrl() + 
jetspeed.url.path.PORTLET + "/" + actionUrl + jetspeed.page.getPath();
         if ( actionName != jetspeed.id.ACTION_NAME_PRINT )
             this.retrieveContent( null, { url: renderActionUrl } );
-        //else
-        //    window.open( renderActionUrl, "jsportlet_print", 
"status,scrollbars,resizable" );
+        else
+        {
+            var printmodeUrl = jetspeed.page.getPageUrl();
+            printmodeUrl = jetspeed.url.addQueryParameter( printmodeUrl, 
"jsprintmode", "true" );
+            printmodeUrl = jetspeed.url.addQueryParameter( printmodeUrl, 
"jsaction", escape( action.url ) );
+            printmodeUrl = jetspeed.url.addQueryParameter( printmodeUrl, 
"jsentity", this.entityId );
+            printmodeUrl = jetspeed.url.addQueryParameter( printmodeUrl, 
"jslayoutid", this.lastSavedWindowState.layout );
+            window.open( printmodeUrl.toString(), "jsportlet_print", 
"status,scrollbars,resizable,menubar" );
+        }
     },
     getAction: function( name )
     {



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

Reply via email to