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 sm...@apache.org on 2007/10/12 02:36:48 UTC
svn commit: r583999 [3/5] - in
/portals/jetspeed-2/branches/JETSPEED-2.1.3/src/webapp/javascript/jetspeed:
./ desktop/ widget/
Modified: portals/jetspeed-2/branches/JETSPEED-2.1.3/src/webapp/javascript/jetspeed/desktop/core.src.js
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/branches/JETSPEED-2.1.3/src/webapp/javascript/jetspeed/desktop/core.src.js?rev=583999&r1=583998&r2=583999&view=diff
==============================================================================
--- portals/jetspeed-2/branches/JETSPEED-2.1.3/src/webapp/javascript/jetspeed/desktop/core.src.js (original)
+++ portals/jetspeed-2/branches/JETSPEED-2.1.3/src/webapp/javascript/jetspeed/desktop/core.src.js Thu Oct 11 17:36:47 2007
@@ -59,6 +59,8 @@
PWIN_CLASS: "portletWindow",
PWIN_GHOST_CLASS: "ghostPane",
PW_ID_PREFIX: "pw_",
+ COL_CLASS: "desktopColumn",
+ COL_LAYOUTHEADER_CLASS: "desktopLayoutHeader",
// ... pp - portlet props
PP_WIDGET_ID: "widgetId",
@@ -100,6 +102,9 @@
ACT_DESKTOP_HEIGHT_EXPAND: "heightexpand",
ACT_DESKTOP_HEIGHT_NORMAL: "heightnormal",
+ ACT_DESKTOP_MOVE_TILED: "movetiled",
+ ACT_DESKTOP_MOVE_UNTILED: "moveuntiled",
+
ACT_LOAD_RENDER: "loadportletrender",
ACT_LOAD_ACTION: "loadportletaction",
ACT_LOAD_UPDATE: "loadportletupdate",
@@ -163,6 +168,9 @@
windowIconEnabled: true,
windowIconPath: "/images/portlets/small/",
+ windowTitlebar: true,
+ windowResizebar: true,
+
windowDecoration: "tigris",
pageActionButtonTooltip: true,
@@ -177,6 +185,22 @@
if ( jetspeed.prefs.portletDecorationsConfig == null || portletDecorationName == null )
return null;
return jetspeed.prefs.portletDecorationsConfig[ portletDecorationName ];
+ },
+
+ getActionLabel: function( actionName, nullIfNotSpecified, jsPrefs, djObj )
+ {
+ if ( actionName == null ) return null;
+ var actionlabel = null;
+ var actionLabelPrefs = jsPrefs.desktopActionLabels;
+ if ( actionLabelPrefs != null )
+ actionlabel = actionLabelPrefs[ actionName ];
+ if ( actionlabel == null || actionlabel.length == 0 )
+ {
+ actionlabel = null;
+ if ( ! nullIfNotSpecified )
+ actionlabel = djObj.string.capitalize( actionName );
+ }
+ return actionlabel;
}
};
@@ -278,7 +302,9 @@
if ( jsObj.UAie6 )
{
- jsPrefs.ajaxPageNavigation = false; // not advisable in IE6 or older
+ jsPrefs.ajaxPageNavigation = false;
+ // ie6 with ajax page navigation is not advisable
+ // memeory management is bad - page loads get gradually worse
}
if ( printModeOnly )
@@ -297,6 +323,32 @@
}
jsObj.url.loadingIndicatorShow();
+ if ( jsPrefs.windowActionButtonOrder )
+ {
+ var windowActionLabels = {};
+ var actionName, actionLabel;
+ for ( var aI = 0 ; aI < jsPrefs.windowActionButtonOrder.length ; aI++ )
+ {
+ actionName = jsPrefs.windowActionButtonOrder[ aI ];
+ if ( actionName != null )
+ windowActionLabels[ actionName ] = jsPrefs.getActionLabel( actionName, false, jsPrefs, djObj );
+ }
+ for ( actionName in jsPrefs.windowActionDesktop )
+ {
+ if ( actionName != null )
+ windowActionLabels[ actionName ] = jsPrefs.getActionLabel( actionName, false, jsPrefs, djObj );
+ }
+ actionName = jsId.ACT_DESKTOP_MOVE_TILED;
+ actionLabel = jsPrefs.getActionLabel( actionName, true, jsPrefs, djObj );
+ if ( actionLabel != null )
+ windowActionLabels[ actionName ] = actionLabel;
+ actionName = jsId.ACT_DESKTOP_MOVE_UNTILED;
+ actionLabel = jsPrefs.getActionLabel( actionName, true, jsPrefs, djObj );
+ if ( actionLabel != null )
+ windowActionLabels[ actionName ] = actionLabel;
+ jsObj.widget.PortletWindow.prototype.actionLabels = windowActionLabels;
+ }
+
jsObj.page = new jsObj.om.Page();
if ( ! printModeOnly && djConfig.isDebug )
@@ -315,7 +367,17 @@
}
jsObj.page.retrievePsml();
+
+ if ( jsObj.UAie6 )
+ {
+ jsObj.ui.windowResizeMgr.init( window, jsObj.docBody );
+ }
+ else
+ {
+
+ }
};
+
jetspeed.updatePage = function( navToPageUrl, backOrForwardPressed )
{
var jsObj = jetspeed;
@@ -355,7 +417,7 @@
for ( var windowId in retainedWindows )
{
pWin = retainedWindows[ windowId ];
- pWin.bringToTop( null, true );
+ pWin.bringToTop( null, true, false, jsObj );
}
}
@@ -719,6 +781,8 @@
pdConfig.windowActionNoImage = jsPrefs.windowActionNoImage;
pdConfig.windowIconEnabled = jsPrefs.windowIconEnabled;
pdConfig.windowIconPath = jsPrefs.windowIconPath;
+ pdConfig.windowTitlebar = jsPrefs.windowTitlebar;
+ pdConfig.windowResizebar = jsPrefs.windowResizebar;
// load portlet decoration config
var portletDecorationConfigUri = jsPrefs.getPortletDecorationBaseUrl( portletDecorationName ) + "/" + portletDecorationName + ".js";
@@ -873,9 +937,8 @@
jetspeed.url.retrieveContent( { url: changeActionUrl, mimetype: mimetype }, contentListener, ajaxApiContext, jetspeed.debugContentDumpIds );
};
-jetspeed.editPageInitiate = function()
+jetspeed.editPageInitiate = function( jsObj )
{
- var jsObj = jetspeed;
if ( ! jsObj.page.editMode )
{
var fromDesktop = true;
@@ -906,30 +969,30 @@
{
pageEditorWidget.editPageShow();
}
- jsObj.page.syncPageControls();
+ jsObj.page.syncPageControls( jsObj );
}
};
-jetspeed.editPageTerminate = function()
+jetspeed.editPageTerminate = function( jsObj )
{
- if ( jetspeed.page.editMode )
+ if ( jsObj.page.editMode )
{
- var pageEditorWidget = dojo.widget.byId( jetspeed.id.PG_ED_WID );
- pageEditorWidget.editModeNormal(); // in case we're in move-mode
- jetspeed.page.editMode = false;
+ var pageEditorWidget = dojo.widget.byId( jsObj.id.PG_ED_WID );
+ pageEditorWidget.editMoveModeExit(); // in case we're in move-mode
+ jsObj.page.editMode = false;
if ( ! pageEditorWidget.editorInitiatedFromDesktop )
{
- var portalPageUrl = jetspeed.page.getPageUrl( true );
- portalPageUrl = jetspeed.url.removeQueryParameter( portalPageUrl, jetspeed.id.PG_ED_PARAM );
- portalPageUrl = jetspeed.url.removeQueryParameter( portalPageUrl, jetspeed.id.PORTAL_ORIGINATE_PARAMETER );
+ var portalPageUrl = jsObj.page.getPageUrl( true );
+ portalPageUrl = jsObj.url.removeQueryParameter( portalPageUrl, jsObj.id.PG_ED_PARAM );
+ portalPageUrl = jsObj.url.removeQueryParameter( portalPageUrl, jsObj.id.PORTAL_ORIGINATE_PARAMETER );
window.location.href = portalPageUrl;
}
else
{
- var pageEditorInititate = jetspeed.url.getQueryParameter( window.location.href, jetspeed.id.PG_ED_PARAM );
+ var pageEditorInititate = jsObj.url.getQueryParameter( window.location.href, jsObj.id.PG_ED_PARAM );
if ( pageEditorInititate != null && pageEditorInititate == "true" )
{ // because of parameter, we must navigate
- var dtPageUrl = window.location.href; // jetspeed.page.getPageUrl( false );
- dtPageUrl = jetspeed.url.removeQueryParameter( dtPageUrl, jetspeed.id.PG_ED_PARAM );
+ var dtPageUrl = window.location.href; // jsObj.page.getPageUrl( false );
+ dtPageUrl = jsObj.url.removeQueryParameter( dtPageUrl, jsObj.id.PG_ED_PARAM );
window.location.href = dtPageUrl;
}
else
@@ -938,7 +1001,7 @@
{
pageEditorWidget.editPageHide();
}
- jetspeed.page.syncPageControls();
+ jsObj.page.syncPageControls( jsObj );
}
}
}
@@ -973,7 +1036,7 @@
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, /* Page */ page )
{
- dojo.raise( "PageCLCreateWidget error url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "PageCLCreateWidget error url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -996,6 +1059,7 @@
this.editMode = editMode;
this.layouts = {};
this.columns = [];
+ this.colFirstNormI = -1;
this.portlets = [];
this.portlet_count = 0;
this.portlet_windows = {};
@@ -1056,12 +1120,13 @@
setPsmlPathFromDocumentUrl: function( navToPageUrl )
{
- var psmlPath = jetspeed.url.path.AJAX_API;
+ var jsObj = jetspeed;
+ var psmlPath = jsObj.url.path.AJAX_API;
var docPath = null;
if ( navToPageUrl == null )
{
docPath = window.location.pathname;
- if ( ! djConfig.preventBackButtonFix && jetspeed.prefs.ajaxPageNavigation )
+ if ( ! djConfig.preventBackButtonFix && jsObj.prefs.ajaxPageNavigation )
{
var hash = window.location.hash;
if ( hash != null && hash.length > 0 )
@@ -1072,7 +1137,7 @@
}
if ( hash != null && hash.length > 1 && hash.indexOf( "/" ) == 0 )
{
- this.psmlPath = jetspeed.url.path.AJAX_API + hash;
+ this.psmlPath = jsObj.url.path.AJAX_API + hash;
return;
}
}
@@ -1080,11 +1145,11 @@
}
else
{
- var uObj = jetspeed.url.parse( navToPageUrl );
+ var uObj = jsObj.url.parse( navToPageUrl );
docPath = uObj.path;
}
- var contextAndServletPath = jetspeed.url.path.DESKTOP;
+ var contextAndServletPath = jsObj.url.path.DESKTOP;
var contextAndServletPathPos = docPath.indexOf( contextAndServletPath );
if ( contextAndServletPathPos != -1 && docPath.length > ( contextAndServletPathPos + contextAndServletPath.length ) )
{
@@ -1095,39 +1160,42 @@
getPsmlUrl: function()
{
+ var jsObj = jetspeed;
if ( this.psmlPath == null )
this.setPsmlPathFromDocumentUrl();
- var psmlUrl = jetspeed.url.basePortalUrl() + this.psmlPath;
- if ( jetspeed.prefs.printModeOnly != null )
+ var psmlUrl = jsObj.url.basePortalUrl() + this.psmlPath;
+ if ( jsObj.prefs.printModeOnly != null )
{
- psmlUrl = jetspeed.url.addQueryParameter( psmlUrl, "layoutid", jetspeed.prefs.printModeOnly.layout );
- psmlUrl = jetspeed.url.addQueryParameter( psmlUrl, "entity", jetspeed.prefs.printModeOnly.entity ).toString();
+ psmlUrl = jsObj.url.addQueryParameter( psmlUrl, "layoutid", jsObj.prefs.printModeOnly.layout );
+ psmlUrl = jsObj.url.addQueryParameter( psmlUrl, "entity", jsObj.prefs.printModeOnly.entity ).toString();
}
return psmlUrl;
},
retrievePsml: function( pageContentListener )
{
+ var jsObj = jetspeed;
if ( pageContentListener == null )
- pageContentListener = new jetspeed.om.PageCLCreateWidget();
+ pageContentListener = new jsObj.om.PageCLCreateWidget();
var psmlUrl = this.getPsmlUrl() ;
var mimetype = "text/xml";
- if ( jetspeed.debug.retrievePsml )
+ if ( jsObj.debug.retrievePsml )
dojo.debug( "retrievePsml url: " + psmlUrl ) ;
- jetspeed.url.retrieveContent( { url: psmlUrl, mimetype: mimetype }, pageContentListener, this, jetspeed.debugContentDumpIds );
+ jsObj.url.retrieveContent( { url: psmlUrl, mimetype: mimetype }, pageContentListener, this, jsObj.debugContentDumpIds );
},
loadFromPSML: function( psml, isPageUpdate )
{
var jsObj = jetspeed;
+ var djObj = dojo;
var printModeOnly = jsObj.prefs.printModeOnly ;
if ( djConfig.isDebug && jsObj.debug.profile && printModeOnly == null )
{
- dojo.profile.start( "loadFromPSML" );
+ djObj.profile.start( "loadFromPSML" );
}
// parse PSML
@@ -1136,7 +1204,7 @@
// create layout model
this.portletsByPageColumn = {};
- this.columnsStructure = this._layoutCreateModel( parsedRootLayoutFragment, null, this.portletsByPageColumn, true );
+ this.columnsStructure = this._layoutCreateModel( parsedRootLayoutFragment, null, this.portletsByPageColumn, true, djObj, jsObj );
this.rootFragmentId = parsedRootLayoutFragment.id ;
@@ -1151,8 +1219,9 @@
// create columns
if ( jsObj.prefs.windowTiling )
{
- this._createColsStart( document.getElementById( jsObj.id.DESKTOP ) );
+ this._createColsStart( document.getElementById( jsObj.id.DESKTOP ), jsObj.id.COLUMNS );
}
+ this.createLayoutInfo( jsObj );
var portletArray = this.portletsByPageColumn[ "z" ];
if ( portletArray )
@@ -1160,9 +1229,8 @@
portletArray.sort( this._loadPortletZIndexCompare );
}
- var renderer = new jetspeed.PortletRenderer( true, true, isPageUpdate, null, true );
+ var renderer = new jsObj.PortletRenderer( true, true, isPageUpdate, null, true );
renderer.renderAllTimeDistribute();
- //renderer.renderAll();
},
loadPostRender: function( isPageUpdate )
{
@@ -1189,8 +1257,8 @@
this.retrieveMenuDeclarations( true, initiateEditMode, isPageUpdate );
// render page buttons
- this.renderPageControls();
- this.syncPageControls();
+ this.renderPageControls( jsObj );
+ this.syncPageControls( jsObj );
}
else
{
@@ -1204,6 +1272,37 @@
if ( isPageUpdate )
jsObj.updatePageEnd() ;
}
+
+ // window resize
+ if ( jsObj.UAie6 )
+ {
+ jsObj.ui.evtConnect( "after", window, "onresize", jsObj.ui.windowResizeMgr, "onResize", dojo.event );
+ jsObj.ui.windowResizeMgr.onResizeDelayedCompare(); // in case resize occurred while loading
+ }
+
+ var colNode, columnObjArray = this.columns;
+ if ( columnObjArray )
+ { // find empty columns and set their height to 1px
+ for ( var i = 0 ; i < columnObjArray.length ; i++ )
+ {
+ colNode = columnObjArray[i].domNode;
+ if ( ! colNode.childNodes || colNode.childNodes.length == 0 )
+ {
+ colNode.style.height = "1px";
+ }
+ }
+ }
+
+ var maxOnInitId = this.maximizedOnInit;
+ if ( maxOnInitId != null )
+ {
+ var pWinToMax = this.getPWin( maxOnInitId );
+ if ( pWinToMax == null )
+ dojo.raise( "Cannot identify window to maximize" );
+ else
+ dojo.lang.setTimeout( pWinToMax, pWinToMax._postCreateMaximizeWindow, 500 );
+ this.maximizedOnInit = null;
+ }
},
_parsePSML: function( psml )
@@ -1220,7 +1319,7 @@
for ( var i = 0 ; i < children.length ; i++ )
{
var child = children[i];
- if ( child.nodeType != dojo.dom.ELEMENT_NODE )
+ if ( child.nodeType != 1 ) // dojo.dom.ELEMENT_NODE
continue;
var childLName = child.nodeName;
if ( childLName == "fragment" )
@@ -1310,7 +1409,7 @@
for ( var i = 0 ; i < children.length ; i++ )
{
child = children[i];
- if ( child.nodeType != dojo.dom.ELEMENT_NODE )
+ if ( child.nodeType != 1 ) // dojo.dom.ELEMENT_NODE
continue;
childLName = child.nodeName;
if ( childLName == "fragment" )
@@ -1330,13 +1429,13 @@
var portletIcon = portletProps[ jsObj.id.PP_WINDOW_ICON ];
if ( portletIcon == null || portletIcon.length == 0 )
{
- portletIcon = this._parsePSMLIcon( child );
+ portletIcon = this._parsePSMLChildOrAttr( child, "icon" );
if ( portletIcon != null && portletIcon.length > 0 )
{
portletProps[ jsObj.id.PP_WINDOW_ICON ] = portletIcon;
}
}
- fragChildren.push( { id: child.getAttribute( "id" ), type: fragType, name: child.getAttribute( "name" ), properties: portletProps, actions: this._parsePSMLActions( child, null ), currentActionState: this._parsePSMLActionState( child ), currentActionMode: this._parsePSMLActionMode( child ), decorator: child.getAttribute( "decorator" ), layoutActionsDisabled: layoutActionsDisabled, documentOrderIndex: i } );
+ fragChildren.push( { id: child.getAttribute( "id" ), type: fragType, name: child.getAttribute( "name" ), properties: portletProps, actions: this._parsePSMLActions( child, null ), currentActionState: this._parsePSMLChildOrAttr( child, "state" ), currentActionMode: this._parsePSMLChildOrAttr( child, "mode" ), decorator: child.getAttribute( "decorator" ), layoutActionsDisabled: layoutActionsDisabled, documentOrderIndex: i } );
}
}
else if ( childLName == "property" )
@@ -1373,22 +1472,14 @@
fragChildren.sort( this._fragmentRowCompare );
- var layoutFragIndexes = new Array();
- var otherFragIndexes = new Array();
- for ( var i = 0 ; i < fragChildren.length ; i++ )
- {
- if ( fragChildren[i].type == "layout" )
- layoutFragIndexes.push( i );
- else
- otherFragIndexes.push( i );
- }
if ( sizes == null )
{
sizes = new Array();
sizes.push( "100" );
sizesSum = 100;
}
- return { id: layoutNode.getAttribute( "id" ), type: layoutFragType, name: layoutNode.getAttribute( "name" ), decorator: layoutNode.getAttribute( "decorator" ), columnSizes: sizes, columnSizesSum: sizesSum, properties: propertiesMap, fragments: fragChildren, layoutFragmentIndexes: layoutFragIndexes, otherFragmentIndexes: otherFragIndexes, layoutActionsDisabled: layoutActionsDisabled, documentOrderIndex: layoutNodeDocumentOrderIndex };
+
+ return { id: layoutNode.getAttribute( "id" ), type: layoutFragType, name: layoutNode.getAttribute( "name" ), decorator: layoutNode.getAttribute( "decorator" ), columnSizes: sizes, columnSizesSum: sizesSum, properties: propertiesMap, fragments: fragChildren, layoutActionsDisabled: layoutActionsDisabled, documentOrderIndex: layoutNodeDocumentOrderIndex };
},
_parsePSMLActions: function( fragmentNode, actionsMap )
{
@@ -1414,32 +1505,17 @@
actionsMap[ actionName.toLowerCase() ] = { id: actionName, type: actionType, label: actionLabel, url: actionUrl, alt: actionAlt };
}
},
- _parsePSMLActionState: function( fragmentNode )
- {
- var nodes = fragmentNode.getElementsByTagName( "state" );
- if ( nodes != null && nodes.length == 1 && nodes[0].firstChild != null )
- {
- return nodes[0].firstChild.nodeValue;
- }
- return null;
- },
- _parsePSMLActionMode: function( fragmentNode )
- {
- var nodes = fragmentNode.getElementsByTagName( "mode" );
- if ( nodes != null && nodes.length == 1 && nodes[0].firstChild != null )
- {
- return nodes[0].firstChild.nodeValue;
- }
- return null;
- },
- _parsePSMLIcon: function( fragmentNode )
+ _parsePSMLChildOrAttr: function( fragmentNode, propName )
{
- var nodes = fragmentNode.getElementsByTagName( "icon" );
+ var propVal = null;
+ var nodes = fragmentNode.getElementsByTagName( propName );
if ( nodes != null && nodes.length == 1 && nodes[0].firstChild != null )
- {
- return nodes[0].firstChild.nodeValue;
- }
- return null;
+ propVal = nodes[0].firstChild.nodeValue;
+ if ( ! propVal )
+ propVal = fragmentNode.getAttribute( propName );
+ if ( propVal == null || propVal.length == 0 )
+ propVal = null;
+ return propVal;
},
_parsePSMLProps: function( fragmentNode, propertiesMap )
{
@@ -1473,10 +1549,8 @@
return ( rowA - rowB );
},
- _layoutCreateModel: function( layoutFragment, parentColumn, portletsByPageColumn, omitLayoutHeader )
- { // layoutFragmentParentColumnIndex, parentColumnsInLayout
- var jsObj = jetspeed;
- var djObj = dojo;
+ _layoutCreateModel: function( layoutFragment, parentColumn, portletsByPageColumn, omitLayoutHeader, djObj, jsObj )
+ {
var allColumnsStartIndex = this.columns.length;
var colModelResult = this._layoutCreateColsModel( layoutFragment, parentColumn, omitLayoutHeader );
var columnsInLayout = colModelResult.columnsInLayout;
@@ -1484,146 +1558,123 @@
allColumnsStartIndex++;
var columnsInLayoutLen = ( columnsInLayout == null ? 0 : columnsInLayout.length ) ;
- if ( layoutFragment.layoutFragmentIndexes != null && layoutFragment.layoutFragmentIndexes.length > 0 )
- { // layout contains child layout fragments
- var currentClonedLayoutFragByCol = null;
- var clonedLayoutFragmentCount = 0;
- if ( layoutFragment.otherFragmentIndexes != null && layoutFragment.otherFragmentIndexes.length > 0 )
- currentClonedLayoutFragByCol = new Array();
+ var portletsByLayoutColumn = new Array(columnsInLayoutLen);
+ var columnsInLayoutPopulated = new Array(columnsInLayoutLen);
+ for ( var i = 0 ; i < layoutFragment.fragments.length ; i++ )
+ {
+ var childFrag = layoutFragment.fragments[ i ];
- for ( var i = 0 ; i < layoutFragment.fragments.length ; i++ )
- {
- var childFrag = layoutFragment.fragments[ i ];
- }
-
- var columnsInLayoutPopulated = new Array();
- for ( var i = 0 ; i < columnsInLayoutLen ; i++ )
- {
- if ( currentClonedLayoutFragByCol != null )
- currentClonedLayoutFragByCol.push( null );
- columnsInLayoutPopulated.push( false );
- }
- for ( var i = 0 ; i < layoutFragment.fragments.length ; i++ )
+ //dojo.debug( "layout-create[" + layoutFragment.id + "][" + i + "] - " + childFrag.type + " id=" + childFrag.id + " row=" + childFrag.properties[ "row" ] + " col=" + childFrag.properties["column"]);
+
+ if ( childFrag.type == "layout" )
{
- var childFrag = layoutFragment.fragments[ i ];
var childFragInColIndex = i;
- if ( childFrag.properties && childFrag.properties[ jsObj.id.PP_COLUMN ] >= 0 )
- {
- if ( childFrag.properties[ jsObj.id.PP_COLUMN ] != null && childFrag.properties[ jsObj.id.PP_COLUMN ] >= 0 )
- childFragInColIndex = childFrag.properties[ jsObj.id.PP_COLUMN ] ;
- }
- if ( childFragInColIndex >= columnsInLayoutLen )
- {
+ var childFragInColIndex = ( childFrag.properties ? childFrag.properties[ jsObj.id.PP_COLUMN ] : i );
+ if ( childFragInColIndex == null || childFragInColIndex < 0 || childFragInColIndex >= columnsInLayoutLen )
childFragInColIndex = ( columnsInLayoutLen > 0 ? ( columnsInLayoutLen -1 ) : 0 );
- }
-
- var currentClonedLayoutFragForCol = ( (currentClonedLayoutFragByCol == null) ? null : currentClonedLayoutFragByCol[ childFragInColIndex ] );
- if ( childFrag.type == "layout" )
- {
- columnsInLayoutPopulated[ childFragInColIndex ] = true;
- if ( currentClonedLayoutFragForCol != null )
- {
- this._layoutCreateModel( currentClonedLayoutFragForCol, columnsInLayout[childFragInColIndex], portletsByPageColumn, true ) ;
- currentClonedLayoutFragByCol[ childFragInColIndex ] = null;
- }
- this._layoutCreateModel( childFrag, columnsInLayout[childFragInColIndex], portletsByPageColumn, false ) ;
- }
- else
- {
- if ( currentClonedLayoutFragForCol == null )
- {
- clonedLayoutFragmentCount++;
- var clonedPortletLayout = {};
- djObj.lang.mixin( clonedPortletLayout, layoutFragment );
- clonedPortletLayout.fragments = new Array();
- clonedPortletLayout.layoutFragmentIndexes = new Array();
- clonedPortletLayout.otherFragmentIndexes = new Array();
- clonedPortletLayout.documentOrderIndex = layoutFragment.fragments[i].documentOrderIndex;
- clonedPortletLayout.clonedFromRootId = clonedPortletLayout.id;
- clonedPortletLayout.clonedLayoutFragmentIndex = clonedLayoutFragmentCount;
- clonedPortletLayout.columnSizes = [ "100" ];
- clonedPortletLayout.columnSizesSum = [ 100 ];
- clonedPortletLayout.id = clonedPortletLayout.id + "-jsclone_" + clonedLayoutFragmentCount;
- currentClonedLayoutFragByCol[ childFragInColIndex ] = clonedPortletLayout;
- currentClonedLayoutFragForCol = clonedPortletLayout;
- }
- currentClonedLayoutFragForCol.fragments.push( childFrag );
- currentClonedLayoutFragForCol.otherFragmentIndexes.push( currentClonedLayoutFragForCol.fragments.length -1 );
- }
+ columnsInLayoutPopulated[ childFragInColIndex ] = true;
+ this._layoutCreateModel( childFrag, columnsInLayout[childFragInColIndex], portletsByPageColumn, false, djObj, jsObj ) ;
}
- if ( currentClonedLayoutFragByCol != null )
+ else
{
- for ( var i = 0 ; i < columnsInLayoutLen ; i++ )
+ this._layoutCreatePortlet( childFrag, layoutFragment, columnsInLayout, allColumnsStartIndex, portletsByPageColumn, portletsByLayoutColumn, djObj, jsObj ) ;
+ }
+ }
+ return columnsInLayout;
+ }, // _layoutCreateModel
+
+ _layoutCreatePortlet: function( pFrag, layoutFragment, columnsInLayout, pageColumnStartIndex, portletsByPageColumn, portletsByLayoutColumn, djObj, jsObj )
+ {
+ if ( pFrag && jsObj.debugPortletEntityIdFilter )
+ {
+ if ( ! djObj.lang.inArray( jsObj.debugPortletEntityIdFilter, pFrag.id ) )
+ pFrag = null;
+ }
+ if ( pFrag )
+ {
+ var pageColumnKey = "z";
+ var extendedProperty = pFrag.properties[ jsObj.id.PP_DESKTOP_EXTENDED ];
+
+ var tilingEnabled = jsObj.prefs.windowTiling;
+ var posStatic = tilingEnabled;
+ var heightToFit = jsObj.prefs.windowHeightExpand;
+ if ( extendedProperty != null && tilingEnabled && jsObj.prefs.printModeOnly == null )
+ {
+ var extPropData = extendedProperty.split( jsObj.id.PP_PAIR_SEPARATOR );
+ var extProp = null, extPropLen = 0, extPropName = null, extPropValue = null, extPropFlag = false;
+ if ( extPropData != null && extPropData.length > 0 )
{
- var currentClonedLayoutFragForCol = currentClonedLayoutFragByCol[ i ];
- if ( currentClonedLayoutFragForCol != null )
+ var propSeparator = jsObj.id.PP_PROP_SEPARATOR;
+ for ( var extPropIndex = 0 ; extPropIndex < extPropData.length ; extPropIndex++ )
{
- columnsInLayoutPopulated[ i ] = true;
- this._layoutCreateModel( currentClonedLayoutFragForCol, columnsInLayout[i], portletsByPageColumn, true ) ;
+ extProp = extPropData[extPropIndex];
+ extPropLen = ( ( extProp != null ) ? extProp.length : 0 );
+ if ( extPropLen > 0 )
+ {
+ var eqPos = extProp.indexOf( propSeparator );
+ if ( eqPos > 0 && eqPos < (extPropLen-1) )
+ {
+ extPropName = extProp.substring( 0, eqPos );
+ extPropValue = extProp.substring( eqPos +1 );
+ extPropFlag = ( ( extPropValue == "true" ) ? true : false );
+ if ( extPropName == jsObj.id.PP_STATICPOS )
+ posStatic = extPropFlag;
+ else if ( extPropName == jsObj.id.PP_FITHEIGHT )
+ heightToFit = extPropFlag;
+ }
+ }
}
}
}
- for ( var i = 0 ; i < columnsInLayoutLen ; i++ )
+ else if ( ! tilingEnabled )
{
- if ( columnsInLayoutPopulated[ i ] )
- columnsInLayout[i].columnContainer = true; // column cannot contain portlets
+ posStatic = false;
}
- if ( layoutFragment.otherFragmentIndexes != null && layoutFragment.otherFragmentIndexes.length > 0 )
+ pFrag.properties[ jsObj.id.PP_WINDOW_POSITION_STATIC ] = posStatic;
+ pFrag.properties[ jsObj.id.PP_WINDOW_HEIGHT_TO_FIT ] = heightToFit;
+
+ if ( posStatic && tilingEnabled )
{
- var correctedFragments = new Array();
- for ( var i = 0 ; i < layoutFragment.fragments.length ; i++ )
+ var portletColumnIndex = pFrag.properties[ jsObj.id.PP_COLUMN ];
+ if ( portletColumnIndex == null || portletColumnIndex == "" || portletColumnIndex < 0 )
{
- var includeFrag = true;
- for ( var j = 0 ; j < layoutFragment.otherFragmentIndexes.length ; j++ )
+ var minPortlets = -1;
+ for ( var j = 0 ; j < columnsInLayout.length ; j++ )
{
- if ( layoutFragment.otherFragmentIndexes[j] == i )
+ var layColLen = ( portletsByLayoutColumn[j] ? portletsByLayoutColumn[j].length : 0 );
+ if ( minPortlets == -1 || layColLen < minPortlets )
{
- includeFrag = false;
- break;
+ minPortlets = layColLen;
+ portletColumnIndex = j;
}
}
- if ( includeFrag )
- correctedFragments.push( layoutFragment.fragments[ i ] );
}
- layoutFragment.fragments = correctedFragments;
- layoutFragment.otherFragmentIndexes = new Array();
+ else if ( portletColumnIndex >= columnsInLayout.length )
+ {
+ portletColumnIndex = columnsInLayout.length -1;
+ }
+ if ( portletsByLayoutColumn[portletColumnIndex] == null )
+ portletsByLayoutColumn[portletColumnIndex] = new Array();
+ portletsByLayoutColumn[portletColumnIndex].push( pFrag.id );
+ var portletPageColumnIndex = pageColumnStartIndex + new Number( portletColumnIndex );
+ pageColumnKey = portletPageColumnIndex.toString();
}
- }
- this._layoutCreatePortletsModel( layoutFragment, columnsInLayout, allColumnsStartIndex, portletsByPageColumn ) ;
+ if ( pFrag.currentActionState == jsObj.id.ACT_MAXIMIZE )
+ {
+ this.maximizedOnInit = pFrag.id;
+ }
+ var portlet = new jsObj.om.Portlet( pFrag.name, pFrag.id, null, pFrag.properties, pFrag.actions, pFrag.currentActionState, pFrag.currentActionMode, pFrag.decorator, pFrag.layoutActionsDisabled );
+ portlet.initialize();
- return columnsInLayout;
- },
+ this.putPortlet( portlet ) ;
- _layoutFragChildCollapse: function( layoutFragment, targetLayoutFragment )
- {
- var jsObj = jetspeed;
- var hasNestedLayouts = false;
- if ( targetLayoutFragment == null )
- targetLayoutFragment = layoutFragment;
- if ( layoutFragment.layoutFragmentIndexes != null && layoutFragment.layoutFragmentIndexes.length > 0 )
- { // if contains nested layouts - collect their portlets into targetLayoutFragment
- hasNestedLayouts = true;
- for ( var i = 0 ; i < layoutFragment.layoutFragmentIndexes.length ; i++ )
+ if ( portletsByPageColumn[ pageColumnKey ] == null )
{
- var layoutChildFrag = layoutFragment.fragments[ layoutFragment.layoutFragmentIndexes[i] ];
- if ( layoutChildFrag.otherFragmentIndexes != null && layoutChildFrag.otherFragmentIndexes.length > 0 )
- {
- for ( var i = 0 ; i < layoutChildFrag.otherFragmentIndexes.length ; i++ )
- {
- var pFrag = layoutChildFrag.fragments[ layoutChildFrag.otherFragmentIndexes[i] ];
- pFrag.properties[ jsObj.id.PP_COLUMN ] = -1;
- pFrag.properties[ jsObj.id.PP_ROW ] = -1;
- // BOZO:NOW: ^^ should we set to -1 or delete row & column properties ?
- pFrag.documentOrderIndex = targetLayoutFragment.fragments.length;
- targetLayoutFragment.fragments.push( pFrag );
- targetLayoutFragment.otherFragIndexes.push( targetLayoutFragment.fragments.length ) ;
- }
- }
- this._layoutFragChildCollapse( layoutChildFrag, targetLayoutFragment );
+ portletsByPageColumn[ pageColumnKey ] = new Array();
}
+ portletsByPageColumn[ pageColumnKey ].push( { portlet: portlet, layout: layoutFragment.id } );
}
- return hasNestedLayouts;
- },
+ }, // _layoutCreatePortlet
_layoutCreateColsModel: function( layoutFragment, parentColumn, omitLayoutHeader )
{
@@ -1642,9 +1693,9 @@
var layoutHeaderColModelObj = new jsObj.om.Column( 0, layoutFragment.id, ( subOneLast ? layoutFragment.columnSizesSum-0.1 : layoutFragment.columnSizesSum ), this.columns.length, layoutFragment.layoutActionsDisabled );
layoutHeaderColModelObj.layoutHeader = true;
this.columns.push( layoutHeaderColModelObj );
- if ( parentColumn.columnChildren == null )
- parentColumn.columnChildren = new Array();
- parentColumn.columnChildren.push( layoutHeaderColModelObj );
+ if ( parentColumn.buildColChildren == null )
+ parentColumn.buildColChildren = new Array();
+ parentColumn.buildColChildren.push( layoutHeaderColModelObj );
parentColumn = layoutHeaderColModelObj;
addedLayoutHeaderColumn = true;
}
@@ -1658,115 +1709,15 @@
this.columns.push( colModelObj );
if ( parentColumn != null )
{
- if ( parentColumn.columnChildren == null )
- parentColumn.columnChildren = new Array();
- parentColumn.columnChildren.push( colModelObj );
+ if ( parentColumn.buildColChildren == null )
+ parentColumn.buildColChildren = new Array();
+ parentColumn.buildColChildren.push( colModelObj );
}
columnsInLayout.push( colModelObj );
}
}
return { columnsInLayout: columnsInLayout, addedLayoutHeaderColumn: addedLayoutHeaderColumn };
- },
- _layoutCreatePortletsModel: function( layoutFragment, columnsInLayout, pageColumnStartIndex, portletsByPageColumn )
- {
- var jsObj = jetspeed;
- if ( layoutFragment.otherFragmentIndexes != null && layoutFragment.otherFragmentIndexes.length > 0 )
- {
- var portletsByColumn = new Array(); // for dispersing portlets when column specification is not valid
- for ( var i = 0 ; i < columnsInLayout.length; i++ )
- {
- portletsByColumn.push( new Array() );
- }
- for ( var i = 0 ; i < layoutFragment.otherFragmentIndexes.length ; i++ )
- {
- var pFrag = layoutFragment.fragments[ layoutFragment.otherFragmentIndexes[i] ];
-
- if ( jsObj.debugPortletEntityIdFilter )
- {
- if ( ! dojo.lang.inArray( jsObj.debugPortletEntityIdFilter, pFrag.id ) )
- pFrag = null;
- }
-
- if ( pFrag != null )
- {
- var portletPageColumnKey = "z";
- var portletWindowExtendedProperty = pFrag.properties[ jsObj.id.PP_DESKTOP_EXTENDED ];
-
- var portletWindowPositionStatic = jsObj.prefs.windowTiling;
- var portletWindowHeightToFit = jsObj.prefs.windowHeightExpand;
- if ( portletWindowExtendedProperty != null && jsObj.prefs.windowTiling && jsObj.prefs.printModeOnly == null )
- {
- var extPropData = portletWindowExtendedProperty.split( jsObj.id.PP_PAIR_SEPARATOR );
- var extProp = null, extPropLen = 0, extPropName = null, extPropValue = null, extPropFlag = false;
- if ( extPropData != null && extPropData.length > 0 )
- {
- var propSeparator = jsObj.id.PP_PROP_SEPARATOR;
- for ( var extPropIndex = 0 ; extPropIndex < extPropData.length ; extPropIndex++ )
- {
- extProp = extPropData[extPropIndex];
- extPropLen = ( ( extProp != null ) ? extProp.length : 0 );
- if ( extPropLen > 0 )
- {
- var eqPos = extProp.indexOf( propSeparator );
- if ( eqPos > 0 && eqPos < (extPropLen-1) )
- {
- extPropName = extProp.substring( 0, eqPos );
- extPropValue = extProp.substring( eqPos +1 );
- extPropFlag = ( ( extPropValue == "true" ) ? true : false );
- if ( extPropName == jsObj.id.PP_STATICPOS )
- portletWindowPositionStatic = extPropFlag;
- else if ( extPropName == jsObj.id.PP_FITHEIGHT )
- portletWindowHeightToFit = extPropFlag;
- }
- }
- }
- }
- }
- else if ( ! jsObj.prefs.windowTiling )
- {
- portletWindowPositionStatic = false;
- }
- pFrag.properties[ jsObj.id.PP_WINDOW_POSITION_STATIC ] = portletWindowPositionStatic;
- pFrag.properties[ jsObj.id.PP_WINDOW_HEIGHT_TO_FIT ] = portletWindowHeightToFit;
-
- if ( portletWindowPositionStatic && jsObj.prefs.windowTiling )
- {
- var portletColumnIndex = pFrag.properties[ jsObj.id.PP_COLUMN ];
- if ( portletColumnIndex == null || portletColumnIndex == "" || portletColumnIndex < 0 )
- {
- var minPortlets = -1;
- for ( var j = 0 ; j < columnsInLayout.length ; j++ )
- {
- if ( minPortlets == -1 || portletsByColumn[j].length < minPortlets )
- {
- minPortlets = portletsByColumn[j].length;
- portletColumnIndex = j;
- }
- }
- }
- else if ( portletColumnIndex >= columnsInLayout.length )
- {
- portletColumnIndex = columnsInLayout.length -1;
- }
-
- portletsByColumn[portletColumnIndex].push( pFrag.id );
- var portletPageColumnIndex = pageColumnStartIndex + new Number( portletColumnIndex );
- portletPageColumnKey = portletPageColumnIndex.toString();
- }
- var portlet = new jsObj.om.Portlet( pFrag.name, pFrag.id, null, pFrag.properties, pFrag.actions, pFrag.currentActionState, pFrag.currentActionMode, pFrag.decorator, pFrag.layoutActionsDisabled );
- portlet.initialize();
-
- this.putPortlet( portlet ) ;
-
- if ( portletsByPageColumn[ portletPageColumnKey ] == null )
- {
- portletsByPageColumn[ portletPageColumnKey ] = new Array();
- }
- portletsByPageColumn[ portletPageColumnKey ].push( { portlet: portlet, layout: layoutFragment.id } );
- }
- }
- }
- },
+ }, // _layoutCreateColsModel
_portletsInitWinState: function( /* Array */ portletsByPageColumnZ )
{
@@ -1811,12 +1762,12 @@
return ( aZIndex - bZIndex );
},
- _createColsStart: function( allColumnsParent )
+ _createColsStart: function( allColumnsParent, colContainerNodeId )
{
if ( ! this.columnsStructure || this.columnsStructure.length == 0 ) return;
var columnContainerNode = document.createElement( "div" );
- columnContainerNode.id = jetspeed.id.COLUMNS;
- columnContainerNode.setAttribute( "id", jetspeed.id.COLUMNS );
+ columnContainerNode.id = colContainerNodeId;
+ columnContainerNode.setAttribute( "id", colContainerNodeId );
for ( var colIndex = 0 ; colIndex < this.columnsStructure.length ; colIndex++ )
{
var colObj = this.columnsStructure[colIndex];
@@ -1828,14 +1779,17 @@
_createCols: function( column, columnContainerNode )
{
column.createColumn() ;
- if ( column.columnChildren != null && column.columnChildren.length > 0 )
+ if ( this.colFirstNormI == -1 && ! column.columnContainer && ! column.layoutHeader )
+ this.colFirstNormI = column.getPageColumnIndex();
+ var buildColChildren = column.buildColChildren;
+ if ( buildColChildren != null && buildColChildren.length > 0 )
{
- for ( var colIndex = 0 ; colIndex < column.columnChildren.length ; colIndex++ )
+ for ( var colIndex = 0 ; colIndex < buildColChildren.length ; colIndex++ )
{
- var colObj = column.columnChildren[ colIndex ];
- this._createCols( colObj, column.domNode ) ;
+ this._createCols( buildColChildren[ colIndex ], column.domNode ) ;
}
}
+ delete column.buildColChildren;
columnContainerNode.appendChild( column.domNode );
},
_removeCols: function( /* DOM Node */ preserveWindowNodesInNode )
@@ -1847,7 +1801,7 @@
{
if ( preserveWindowNodesInNode )
{
- var windowNodesInColumn = jetspeed.ui.getPWinChildren( this.columns[i].domNode, null );
+ var windowNodesInColumn = jetspeed.ui.getPWinAndColChildren( this.columns[i].domNode, null );
dojo.lang.forEach( windowNodesInColumn,
function( windowNode ) { preserveWindowNodesInNode.appendChild( windowNode ); } );
}
@@ -1860,7 +1814,12 @@
dojo.dom.removeNode( columnContainerNode );
this.columns = [];
},
-
+ getColumnDefault: function()
+ {
+ if ( this.colFirstNormI != -1 )
+ return this.columns[ this.colFirstNormI ];
+ return null;
+ },
getPortletCurColRow: function( /* DOM node */ justForPortletWindowNode, /* boolean */ includeGhosts, /* map */ currentColumnRowAllPortlets )
{
if ( ! this.columns || this.columns.length == 0 ) return null;
@@ -1911,18 +1870,25 @@
var colCurrentRow = null;
var jsObj = jetspeed;
var djObj = dojo;
+ var matchClass = jsObj.id.PWIN_CLASS;
+ if ( includeGhosts )
+ matchClass += "|" + jsObj.id.PWIN_GHOST_CLASS;
+ if ( includeLayouts )
+ matchClass += "|" + jsObj.id.COL_CLASS;
+ var classRegEx = new RegExp('(^|\\s+)('+matchClass+')(\\s+|$)');
+
for ( var colChildIndex = 0 ; colChildIndex < colChildNodes.length ; colChildIndex++ )
{
var colChild = colChildNodes[colChildIndex];
- if ( djObj.html.hasClass( colChild, jsObj.id.PWIN_CLASS ) || ( includeGhosts && djObj.html.hasClass( colChild, jsObj.id.PWIN_GHOST_CLASS ) ) || ( includeLayouts && djObj.html.hasClass( colChild, "desktopColumn" ) ) )
+ if ( classRegEx.test( djObj.html.getClass( colChild ) ) )
{
colCurrentRow = ( colCurrentRow == null ? 0 : colCurrentRow + 1 );
if ( (colCurrentRow + 1) > currentLayoutRowCount )
currentLayoutRowCount = (colCurrentRow + 1);
if ( justForPortletWindowNode == null || colChild == justForPortletWindowNode )
{
- var portletResult = { layout: currentLayoutId, column: colObj.getLayoutColumnIndex(), row: colCurrentRow };
+ var portletResult = { layout: currentLayoutId, column: colObj.getLayoutColumnIndex(), row: colCurrentRow, columnObj: colObj };
if ( ! currentLayoutIsRegular )
{
portletResult.layout = currentLayout.clonedFromRootId;
@@ -2093,7 +2059,21 @@
getPWin: function( portletWindowId )
{
if ( this.portlet_windows && portletWindowId )
- return this.portlet_windows[ portletWindowId ];
+ {
+ var pWin = this.portlet_windows[ portletWindowId ];
+ if ( pWin == null )
+ {
+ var jsId = jetspeed.id;
+ pWin = this.portlet_windows[ jsId.PW_ID_PREFIX + portletWindowId ];
+ if ( pWin == null )
+ {
+ var p = this.getPortlet( portletWindowId );
+ if ( p != null )
+ pWin = this.portlet_windows[ p.properties[ jsObj.id.PP_WIDGET_ID ] ];
+ }
+ }
+ return pWin;
+ }
return null;
},
getPWins: function( portletsOnly )
@@ -2133,22 +2113,53 @@
return Math.max( this.portlet_tiled_high_z, this.portlet_untiled_high_z );
},
- displayAllPWins: function( hideAll )
- {
- var portletArray = this.getPortletArray();
- for ( var i = 0; i < portletArray.length; i++ )
+ displayAllPWins: function( hideAll, pWinArray )
+ { // currently used only for ie6 page editor transitions
+ var pWin;
+ if ( ! pWinArray )
{
- var portlet = portletArray[i];
- var pWin = portlet.getPWin();
- if ( pWin )
+ var pWins = this.portlet_windows;
+ for ( var windowId in pWins )
{
- if ( hideAll )
- pWin.domNode.style.display = "none";
- else
- pWin.domNode.style.display = "";
+ pWin = pWins[ windowId ];
+ if ( pWin )
+ pWin.domNode.style.display = ( hideAll ? "none" : "" );
+ }
+ }
+ else
+ {
+ for ( var i = 0; i < pWinArray.length; i++ )
+ {
+ pWin = pWinArray[i];
+ if ( pWin )
+ pWin.domNode.style.display = ( hideAll ? "none" : "" );
+ }
+ }
+ },
+
+ onBrowserWindowResize: function()
+ { // called after ie6 resize window
+ var jsObj = jetspeed;
+ if ( jsObj.UAie6 )
+ {
+ var pWins = this.portlet_windows;
+ var pWin;
+ for ( var windowId in pWins )
+ {
+ pWin = pWins[ windowId ];
+ pWin.onBrowserWindowResize();
+ }
+ if ( this.editMode )
+ {
+ var pageEditorWidget = dojo.widget.byId( jsObj.id.PG_ED_WID );
+ if ( pageEditorWidget != null )
+ {
+ pageEditorWidget.onBrowserWindowResize();
+ }
}
}
},
+
regPWinIFrameCover: function( portletWindow )
{
if ( !portletWindow ) return;
@@ -2170,17 +2181,58 @@
var pWin = pWins[ pWinId ];
var pWinIFrameCover = ( pWin && pWin.iframesInfo ? pWin.iframesInfo.iframeCover : null );
if ( pWinIFrameCover )
- {
- if ( hideAll )
- pWinIFrameCover.style.display = "none";
- else
- pWinIFrameCover.style.display = "block";
+ pWinIFrameCover.style.display = ( hideAll ? "none" : "block" );
+ }
+ },
+
+ createLayoutInfo: function( jsObj )
+ {
+ var djObj = dojo;
+ var layoutDesktop = null;
+ var layoutColumns = null;
+ var layoutCol = null;
+ var layoutColLayoutHeader = null;
+ var desktopContainerNode = document.getElementById( jsObj.id.DESKTOP );
+ if ( desktopContainerNode != null )
+ layoutDesktop = jsObj.ui.getLayoutExtents( desktopContainerNode, null, djObj, jsObj );
+
+ var columnsContainerNode = document.getElementById( jsObj.id.COLUMNS );
+ if ( columnsContainerNode != null )
+ layoutColumns = jsObj.ui.getLayoutExtents( columnsContainerNode, null, djObj, jsObj );
+
+ if ( this.columns )
+ {
+ for ( var i = 0 ; i < this.columns.length ; i++ )
+ {
+ var col = this.columns[i];
+ if ( col.layoutHeader )
+ layoutColLayoutHeader = jsObj.ui.getLayoutExtents( col.domNode, null, djObj, jsObj );
+ else if ( ! col.columnContainer )
+ layoutCol = jsObj.ui.getLayoutExtents( col.domNode, null, djObj, jsObj );
+ if ( layoutCol != null && layoutColLayoutHeader != null )
+ break;
}
}
+
+ this.layoutInfo = { desktop: ( layoutDesktop != null ? layoutDesktop : {} ),
+ columns: ( layoutColumns != null ? layoutColumns : {} ),
+ column: ( layoutCol != null ? layoutCol : {} ),
+ columnLayoutHeader: ( layoutColLayoutHeader != null ? layoutColLayoutHeader : {} ) };
+
+ jsObj.widget.PortletWindow.prototype.colWidth_pbE = ( ( layoutCol && layoutCol.pbE ) ? layoutCol.pbE.w : 0 );
},
destroy: function()
{
+ var jsObj = jetspeed;
+ var djObj = dojo;
+
+ // disconnect window onresize
+ if ( jsObj.UAie6 )
+ {
+ jsObj.ui.evtDisconnect( "after", window, "onresize", jsObj.ui.windowResizeMgr, "onResize", djObj.event );
+ }
+
// destroy portlets
var pWins = this.portlet_windows;
var pWinsToClose = this.getPWins( true );
@@ -2197,14 +2249,14 @@
this.portlet_count = 0;
// destroy edit page
- var pageEditorWidget = dojo.widget.byId( jetspeed.id.PG_ED_WID );
+ var pageEditorWidget = djObj.widget.byId( jsObj.id.PG_ED_WID );
if ( pageEditorWidget != null )
{
pageEditorWidget.editPageDestroy();
}
// destroy columns
- this._removeCols( document.getElementById( jetspeed.id.DESKTOP ) );
+ this._removeCols( document.getElementById( jsObj.id.DESKTOP ) );
// destroy page controls
this._destroyPageControls();
@@ -2214,7 +2266,7 @@
getColFromColNode: function( /* DOM node */ columnNode )
{
if ( columnNode == null ) return null;
- var pageColumnIndexAttr = columnNode.getAttribute( "columnIndex" );
+ var pageColumnIndexAttr = columnNode.getAttribute( "columnindex" );
if ( pageColumnIndexAttr == null ) return null;
var pageColumnIndex = new Number( pageColumnIndexAttr );
if ( pageColumnIndex >= 0 && pageColumnIndex < this.columns.length )
@@ -2309,9 +2361,9 @@
},
// ... page buttons
- syncPageControls: function()
+ syncPageControls: function( jsObj )
{
- var jsId = jetspeed.id;
+ var jsId = jsObj.id;
if ( this.actionButtons == null ) return;
for ( var actionName in this.actionButtons )
{
@@ -2341,7 +2393,7 @@
this.actionButtons[ actionName ].style.display = "none";
}
},
- renderPageControls: function()
+ renderPageControls: function( jsObj )
{
var jsObj = jetspeed;
var jsId = jsObj.id;
@@ -2408,7 +2460,7 @@
actionlabel = jsPrefs.desktopActionLabels[ actionName ];
if ( actionlabel == null || actionlabel.length == 0 )
actionlabel = djObj.string.capitalize( actionName );
- actBtnTts.push( tooltipMgr.addNode( actionButton, actionlabel, true, jsObj, jsUI, djEvtObj ) );
+ actBtnTts.push( tooltipMgr.addNode( actionButton, actionlabel, true, null, null, null, jsObj, jsUI, djEvtObj ) );
}
}
}
@@ -2454,11 +2506,11 @@
}
else if ( actionName == jsObj.id.ACT_EDIT )
{
- jsObj.editPageInitiate();
+ jsObj.editPageInitiate( jsObj );
}
else if ( actionName == jsObj.id.ACT_VIEW )
{
- jsObj.editPageTerminate();
+ jsObj.editPageTerminate( jsObj );
}
else
{
@@ -2642,11 +2694,13 @@
this.pageColumnIndex = new Number( pageColumnIndex );
if ( typeof layoutActionsDisabled != "undefined" )
this.layoutActionsDisabled = layoutActionsDisabled ;
- this.id = "jscol_" + pageColumnIndex; // + "_" + this.layoutColumnIndex + "_" + this.layoutId;
+ this.id = "jscol_" + pageColumnIndex;
this.domNode = null;
};
dojo.lang.extend( jetspeed.om.Column,
{
+ styleClass: jetspeed.id.COL_CLASS + ( jetspeed.UAie6 ? " ie6desktopColumn" : "" ),
+ styleLayoutClass: jetspeed.id.COL_CLASS + ( jetspeed.UAie6 ? " ie6desktopColumn " : " " ) + jetspeed.id.COL_LAYOUTHEADER_CLASS,
layoutColumnIndex: null,
layoutId: null,
size: null,
@@ -2659,19 +2713,17 @@
createColumn: function( columnContainerNode )
{
- var columnClass = "desktopColumn" ;
- if ( this.isStartOfColumnSet() && this.getPageColumnIndex() > 0 )
- columnClass = "desktopColumn desktopColumnClear";
+ var columnClass = this.styleClass;
+ var pageColIndex = this.pageColumnIndex;
+ if ( this.isStartOfColumnSet() && pageColIndex > 0 )
+ columnClass += " desktopColumnClear-PRIVATE";
var divElmt = document.createElement( "div" );
- divElmt.setAttribute( "columnIndex", this.getPageColumnIndex() );
+ divElmt.setAttribute( "columnindex", pageColIndex );
divElmt.style.width = this.size + "%";
if ( this.layoutHeader )
{
- columnClass = "desktopColumn desktopLayoutHeader";
- }
- else
- {
- divElmt.style.minHeight = "40px";
+ columnClass = this.styleLayoutClass;
+ divElmt.setAttribute( "layoutid", this.layoutId );
}
divElmt.className = columnClass;
divElmt.id = this.getId();
@@ -2697,15 +2749,8 @@
},
toString: function()
{
- var out = "column[" + this.pageColumnIndex + "]";
- out += " layoutCol=" + this.layoutColumnIndex + " layoutId=" + this.layoutId + " size=" + this.size + ( this.columnChildren == null ? "" : ( " column-child-count=" + this.columnChildren.length ) ) + ( this.columnContainer ? " colContainer=true" : "" ) + ( this.layoutHeader ? " layoutHeader=true" : "" );
- if ( this.domNode != null )
- {
- var colAbsPos = dojo.html.getAbsolutePosition( this.domNode, true );
- var marginBox = dojo.html.getMarginBox( this.domNode );
- out += " dims={" + "left:" + (colAbsPos.x) + ", right:" + (colAbsPos.x + marginBox.width) + ", top:" + (colAbsPos.y) + ", bottom:" + (colAbsPos.y + marginBox.height) + "}";
- }
- return out;
+ if ( jetspeed.debugColumn ) return jetspeed.debugColumn( this );
+ return "column[" + this.pageColumnIndex + "]";
},
getId: function() // jetspeed.om.Id protocol
{
@@ -2918,13 +2963,21 @@
getCurWinState: function( volatileOnly )
{
- var windowWidget = this.getPWin();
- if ( ! windowWidget ) return null;
- var currentState = windowWidget.getCurWinStateForPersist( volatileOnly );
- if ( ! volatileOnly )
+ var currentState = null;
+ try
{
- if ( currentState.layout == null ) // should happen only if windowPositionStatic == false
- currentState.layout = this.lastSavedWindowState.layout;
+ var windowWidget = this.getPWin();
+ if ( ! windowWidget ) return null;
+ currentState = windowWidget.getCurWinStateForPersist( volatileOnly );
+ if ( ! volatileOnly )
+ {
+ if ( currentState.layout == null ) // should happen only if windowPositionStatic == false
+ currentState.layout = this.lastSavedWindowState.layout;
+ }
+ }
+ catch(e)
+ {
+ dojo.raise( "portlet.getCurWinState " + jetspeed.formatError( e ) );
}
return currentState;
},
@@ -3350,11 +3403,12 @@
},
syncActions: function()
{
- jetspeed.page.setPageModePortletActions( this );
+ var jsObj = jetspeed;
+ jsObj.page.setPageModePortletActions( this );
var windowWidget = this.getPWin();
if ( windowWidget )
{
- windowWidget.windowActionButtonSync();
+ windowWidget.actionBtnSync( jsObj, jsObj.id );
}
}
}); // jetspeed.om.Portlet
@@ -3539,7 +3593,7 @@
{
this.formbind.isFormSubmitInProgress( false );
}
- dojo.raise( "PortletCL notifyFailure url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "PortletCL notifyFailure url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -3624,7 +3678,7 @@
{
this.formbind.isFormSubmitInProgress( false );
}
- dojo.raise( "PortletActionCL notifyFailure type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "PortletActionCL notifyFailure type: " + type + jetspeed.formatError( error ) );
}
};
@@ -3805,7 +3859,7 @@
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, domainModelObject )
{
this.notifyCount++;
- dojo.raise( "MenuApiCL error [" + domainModelObject.toString() + "] url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "MenuApiCL error [" + domainModelObject.toString() + "] url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
},
parseMenu: function( /* XMLNode */ node, /* String */ menuName, /* String */ menuType )
@@ -3819,7 +3873,7 @@
for ( var i = 0 ; i < children.length ; i++ )
{
var child = children[i];
- if ( child.nodeType != dojo.dom.ELEMENT_NODE )
+ if ( child.nodeType != 1 ) // dojo.dom.ELEMENT_NODE
continue;
var childLName = child.nodeName;
if ( childLName == "menu" )
@@ -3845,7 +3899,7 @@
for ( var i = 0 ; i < children.length ; i++ )
{
var child = children[i];
- if ( child.nodeType != dojo.dom.ELEMENT_NODE )
+ if ( child.nodeType != 1 ) // dojo.dom.ELEMENT_NODE
continue;
var childLName = child.nodeName;
if ( childLName == "menu" )
@@ -3918,7 +3972,7 @@
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, domainModelObject )
{
- dojo.raise( "MenusApiCL error [" + domainModelObject.toString() + "] url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "MenusApiCL error [" + domainModelObject.toString() + "] url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
},
notifyFinished: function( domainModelObject )
@@ -3927,7 +3981,7 @@
if ( this.includeMenuDefs )
jsObj.notifyRetrieveAllMenusFinished();
if ( this.initiateEditMode )
- jsObj.editPageInitiate();
+ jsObj.editPageInitiate( jsObj );
if ( this.isPageUpdate )
jsObj.updatePageEnd();
@@ -3973,7 +4027,7 @@
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, domainModelObject )
{
this._loading( false );
- dojo.raise( "PortletChangeActionCL error [" + domainModelObject.toString() + "] url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "PortletChangeActionCL error [" + domainModelObject.toString() + "] url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
});
@@ -3994,7 +4048,7 @@
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, domainModelObject )
{
- dojo.raise( "PageChangeActionCL error [" + domainModelObject.toString() + "] url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "PageChangeActionCL error [" + domainModelObject.toString() + "] url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
});
@@ -4055,7 +4109,7 @@
for ( var i = 0 ; i < children.length ; i++ )
{
var child = children[i];
- if ( child.nodeType != dojo.dom.ELEMENT_NODE )
+ if ( child.nodeType != 1 ) // dojo.dom.ELEMENT_NODE
continue;
var childLName = child.nodeName;
if ( childLName == "portlets" )
@@ -4065,7 +4119,7 @@
for ( var pI = 0 ; pI < portletChildren.length ; pI++ )
{
var pChild = portletChildren[pI];
- if ( pChild.nodeType != dojo.dom.ELEMENT_NODE )
+ if ( pChild.nodeType != 1 ) // dojo.dom.ELEMENT_NODE
continue;
var pChildLName = pChild.nodeName;
if ( pChildLName == "portlet" )
@@ -4085,8 +4139,8 @@
if ( portletId != null )
{
var actions = jetspeed.page._parsePSMLActions( node, null );
- var currentActionState = jetspeed.page._parsePSMLActionState( node );
- var currentActionMode = jetspeed.page._parsePSMLActionMode( node );
+ var currentActionState = jetspeed.page._parsePSMLChildOrAttr( node, "state" );
+ var currentActionMode = jetspeed.page._parsePSMLChildOrAttr( node, "mode" );
return { id: portletId, actions: actions, currentActionState: currentActionState, currentActionMode: currentActionMode };
}
return null;
@@ -4094,7 +4148,7 @@
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, domainModelObject )
{
this._loading( false );
- dojo.raise( "PortletActionsCL error [" + domainModelObject.toString() + "] url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "PortletActionsCL error [" + domainModelObject.toString() + "] url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
});
@@ -4127,7 +4181,7 @@
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, domainModelObject )
{
this._loading( false );
- dojo.debug( "submitWinState error [" + domainModelObject.entityId + "] url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.debug( "submitWinState error [" + domainModelObject.entityId + "] url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -4142,17 +4196,24 @@
"", "", "" ];
var cssHeight = cssBase.concat( [ " height: ", "", "", ";" ] );
+
+ var cssWidthHeight = [ "", "", "",
+ "", "", "",
+ "width: ", "", "", ";",
+ "", "", "",
+ " height: ", "", "", ";" ];
var cssOverflow = cssHeight.concat( [ " overflow-y: ", "", ";",
" overflow-x: ", "hidden", ";" ] );
- var cssPosition = cssOverflow.concat( [ " position: ", "static", ";",
+ var cssPosition = cssOverflow.concat( [ " position: ", "relative", ";",
" top: ", "auto", "", ";",
" left: ", "auto", "", ";",
" z-index: ", "", ";" ] );
jetspeed.css = { cssBase: cssBase,
cssHeight: cssHeight,
+ cssWidthHeight: cssWidthHeight,
cssOverflow: cssOverflow,
cssPosition: cssPosition,
cssDis: 1,
@@ -4174,39 +4235,65 @@
cssZIndex: 35 };
},
- getPWinChildren: function( /* DOM node */ parentNode, /* DOM node */ matchNodeIfFound, /* boolean */ includeGhosts, /* boolean */ includeGhostsOnly )
+ getPWinAndColChildren: function( parentNode, matchNode, includeGhosts, includeColumns, includeLayouts, excludeWindows )
{
- if ( includeGhosts || includeGhostsOnly )
- includeGhosts = true;
-
var djH = dojo.html;
var jsId = jetspeed.id;
- var nodesPW = null;
+ var matchingNodes = null;
var nodeMatchIndex = -1;
+ var nodeMatchIndexInMatchingNodes = -1;
+ var nodeTotal = -1;
if ( parentNode )
{
- nodesPW = [];
var children = parentNode.childNodes;
- if ( children != null && children.length > 0 )
+ if ( children )
+ nodeTotal = children.length;
+ matchingNodes = [];
+
+ if ( nodeTotal > 0 )
{
- for ( var i = 0 ; i < children.length ; i++ )
- {
- var child = children[i];
- if ( ( ! includeGhostsOnly && djH.hasClass( child, jsId.PWIN_CLASS ) ) || ( includeGhosts && djH.hasClass( child, jsId.PWIN_GHOST_CLASS ) ) )
+ var includeClasses = "", excludeClasses = "";
+ if ( ! excludeWindows )
+ includeClasses = jsId.PWIN_CLASS;
+ if ( includeGhosts )
+ includeClasses += ( (includeClasses.length > 0) ? "|" : "" ) + jsId.PWIN_GHOST_CLASS;
+ if ( includeColumns )
+ includeClasses += ( (includeClasses.length > 0) ? "|" : "" ) + jsId.COL_CLASS;
+ if ( includeLayouts && ! includeColumns ) // layout node always has COL_CLASS
+ includeClasses += ( (includeClasses.length > 0) ? "|" : "" ) + jsId.COL_LAYOUTHEADER_CLASS;
+ if ( includeColumns && ! includeLayouts )
+ excludeClasses = ( (excludeClasses.length > 0) ? "|" : "" ) + jsId.COL_LAYOUTHEADER_CLASS;
+
+ if ( includeClasses.length > 0 )
+ {
+ var inclRegEx = new RegExp('(^|\\s+)('+includeClasses+')(\\s+|$)');
+ var exclRegEx = null;
+ if ( excludeClasses.length > 0 )
+ exclRegEx = new RegExp('(^|\\s+)('+excludeClasses+')(\\s+|$)');
+ var child, childAdded, childClass;
+ for ( var i = 0 ; i < nodeTotal ; i++ )
{
- nodesPW.push( child );
- if ( matchNodeIfFound && child == matchNodeIfFound )
- nodeMatchIndex = nodesPW.length -1;
- }
- else if ( matchNodeIfFound && child == matchNodeIfFound )
- {
- nodesPW.push( child );
- nodeMatchIndex = nodesPW.length -1;
+ child = children[i];
+ childAdded = false;
+ childClass = djH.getClass( child );
+ if ( inclRegEx.test( childClass ) && ( exclRegEx == null || ! exclRegEx.test( childClass ) ) )
+ {
+ matchingNodes.push( child );
+ childAdded = true;
+ }
+
+ if ( matchNode && child == matchNode )
+ {
+ if ( ! childAdded )
+ matchingNodes.push( child );
+ nodeMatchIndex = i;
+ nodeMatchIndexInMatchingNodes = matchingNodes.length -1;
+ }
}
}
}
}
- return { portletWindowNodes: nodesPW, matchIndex: nodeMatchIndex };
+ return { matchingNodes: matchingNodes, totalNodes: nodeTotal, matchNodeIndex: nodeMatchIndex, matchNodeIndexInMatchingNodes: nodeMatchIndexInMatchingNodes };
},
getPWinsFromNodes: function( /* DOM node [] */ portletWindowNodes )
@@ -4269,6 +4356,67 @@
if ( dbProfile )
dojo.profile.end( "createPortletWindow" );
},
+
+ getLayoutExtents: function( node, nodeCompStyle, djObj, jsObj )
+ {
+ if ( ! nodeCompStyle ) nodeCompStyle = djObj.gcs( node );
+ var pad = djObj._getPadExtents( node, nodeCompStyle );
+ var border = djObj._getBorderExtents( node, nodeCompStyle );
+ var padborder = { l: ( pad.l + border.l ), t: ( pad.t + border.t ), w: ( pad.w + border.w ), h: ( pad.h + border.h ) };
+ var margin = djObj._getMarginExtents( node, nodeCompStyle, jsObj);
+ return { bE: border,
+ pE: pad,
+ pbE: padborder,
+ mE: margin,
+ lessW: ( padborder.w + margin.w ),
+ lessH: ( padborder.h + margin.h ) };
+ //ieHasLayout: ( jetspeed.UAie ? node.currentStyle.hasLayout : "N/A" ) };
+ },
+
+ getContentBoxSize: function( node, layoutExtents )
+ {
+ var w = node.clientWidth, h, useLE;
+ if ( !w )
+ {
+ w = node.offsetWidth, h = node.offsetHeight;
+ useLE = layoutExtents.pbE;
+ }
+ else
+ {
+ h = node.clientHeight;
+ useLE = layoutExtents.pE;
+ }
+ return { w: ( w - useLE.w ), h: ( h - useLE.h ) };
+ },
+
+ getMarginBoxSize: function( node, layoutExtents )
+ {
+ return { w: ( node.offsetWidth + layoutExtents.mE.w ), h: ( node.offsetHeight + layoutExtents.mE.h ) };
+ },
+
+ getMarginBox: function( node, layoutExtents, parentLayoutExtents, jsObj )
+ { // NOTE: assumes that parent node has overflow set to visible
+ var l = node.offsetLeft - layoutExtents.mE.l, t = node.offsetTop - layoutExtents.mE.t;
+ // mozilla - left and top will be wrong if parent overflow is not visible
+ if ( parentLayoutExtents && jsObj.UAope )
+ { // opera offsetLeft/offsetTop includes the parent's border
+ l -= parentLayoutExtents.bE.l;
+ t -= parentLayoutExtents.bE.t;
+ }
+ return {
+ l: l,
+ t: t,
+ w: ( node.offsetWidth + layoutExtents.mE.w ),
+ h: ( node.offsetHeight + layoutExtents.mE.h ) };
+ },
+
+ setMarginBox: function( node, leftPx, topPx, widthPx, heightPx, layoutExtents, jsObj, djObj )
+ { // NOT: will not work if dojo._usesBorderBox(node) == true
+ var pb=layoutExtents.pbE, mb=layoutExtents.mE;
+ if(widthPx != null && widthPx>=0){ widthPx = Math.max(widthPx - pb.w - mb.w, 0); }
+ if(heightPx != null && heightPx>=0){ heightPx = Math.max(heightPx - pb.h - mb.h, 0); }
+ djObj._setBox( node, leftPx, topPx, widthPx, heightPx );
+ },
evtConnect: function( adviceType, srcObj, srcFuncName, adviceObj, adviceFuncName, djEvtObj, rate )
{ // if arg check is needed, use dojo.event.connect()
@@ -4303,5 +4451,120 @@
djEvtObj.disconnect( kwArgsArray[i] );
}
}
+ },
+
+ _popupMenuWidgets: [],
+ isWindowActionMenuOpen: function()
+ {
+ var oneIsOpen = false;
+ var popupMenus = this._popupMenuWidgets;
+ for ( var i = 0 ; i < popupMenus.length ; i++ )
+ {
+ var popupMenu = popupMenus[i];
+ if ( popupMenu && popupMenu.isShowingNow )
+ {
+ oneIsOpen = true;
+ break;
+ }
+ }
+ return oneIsOpen;
+ },
+ addPopupMenuWidget: function( popupMenuWidget )
+ {
+ if ( popupMenuWidget )
+ this._popupMenuWidgets.push( popupMenuWidget );
+ },
+ removePopupMenuWidget: function( popupMenuWidget )
+ {
+ if ( ! popupMenuWidget ) return;
+ var popupMenus = this._popupMenuWidgets;
+ for ( var i = 0 ; i < popupMenus.length ; i++ )
+ {
+ if ( popupMenus[i] === popupMenuWidget )
+ popupMenus[i] = null;
+ }
}
};
+
+if ( jetspeed.UAie6 )
+{
+ // object to bundle resize processing:
+ jetspeed.ui.windowResizeMgr =
+ {
+ checkTime: 500,
+ timerId: 0,
+ resizing: false,
+
+ init: function( win, docBody )
+ {
+ this.oldXY = this.getWinDims( win, win.document, docBody );
+ },
+
+ getWinDims: function( win, doc, docBody )
+ { // get window dimensions and scroll amount
+ var b, x, y, sx, sy, v;
+ x = y = sx = sy = 0;
+ if ( win.innerWidth && win.innerHeight )
+ {
+ x = win.innerWidth;
+ v = docBody.offsetWidth;
+ if ( v && ( 1 < v ) && ! ( x < v ) ) // scrollbar width problem
+ x = v-1;
+ y = win.innerHeight;
+ sx = win.pageXOffset || 0;
+ sy = win.pageYOffset || 0;
+ }
+ else
+ {
+ b = doc.documentElement.clientWidth ? doc.documentElement : docBody; // IE 6 strict dtd
+ if ( b )
+ {
+ x = b.clientWidth || 0;
+ y = b.clientHeight || 0;
+ sx = b.scrollLeft || 0;
+ sy = b.scrollTop || 0;
+ }
+ }
+ return { x: x, y: y, sx: sx, sy: sy };
+ },
+
+ onResize: function()
+ {
+ if ( this.timerId )
+ window.clearTimeout( this.timerId );
+ this.timerId = dojo.lang.setTimeout( this, this.onResizeDelayedCompare, this.checkTime );
+ },
+
+ onResizeDelayedCompare: function()
+ {
+ var jsObj = jetspeed;
+ var newXY = this.getWinDims( window, window.document, jsObj.docBody );
+ this.timerId = 0;
+ if ( (newXY.x != this.oldXY.x) || (newXY.y != this.oldXY.y) )
+ {
+ this.oldXY = newXY;
+ if ( jsObj.page )
+ {
+ if ( ! this.resizing ) // duplicate event
+ {
+ try
+ {
+ this.resizing = true;
+ jsObj.page.onBrowserWindowResize();
+ }
+ catch(e)
+ {
+ }
+ finally
+ {
+ this.resizing = false;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+
+
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org