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/12/08 10:33:04 UTC
svn commit: r602416 -
/portals/jetspeed-2/trunk/jetspeed-portal-resources/src/main/resources/webapp/javascript/jetspeed/widget/PageEditor.src.js
Author: smilek
Date: Sat Dec 8 01:33:04 2007
New Revision: 602416
URL: http://svn.apache.org/viewvc?rev=602416&view=rev
Log:
The following revision comments are from branches/JETSPEED-2.1.3 revisions which were not individually checked-in to trunk
=== ---------------------------------------------------------------- ===
[ from branches/JETSPEED-2.1.3 r595411 ] | smilek | 2007-11-15 13:06:54 -0700 (Thu, 15 Nov 2007) | 1 line
major improvements to page editor (UI, config options, flow, no action layouts); support for create-new-page-on-edit
=== ---------------------------------------------------------------- ===
[ from branches/JETSPEED-2.1.3 r588404 ] | smilek | 2007-10-25 18:00:37 -0600 (Thu, 25 Oct 2007) | 1 line
broke postCreate into several methods in order to support deferred calls - in slow browsers (e.g. IE6), the PageEditor loads slowly and the loading indicator will not update in IE6/IE7 unless we break the loading operation up this way
=== ---------------------------------------------------------------- ===
[ from branches/JETSPEED-2.1.3 r583998 ] | smilek | 2007-10-11 18:36:12 -0600 (Thu, 11 Oct 2007) | 1 line
continuation of desktop overhaul
=== ---------------------------------------------------------------- ===
[ from branches/JETSPEED-2.1.3 r578909 ] | smilek | 2007-09-24 13:08:29 -0600 (Mon, 24 Sep 2007) | 1 line
desktop overhaul - PortletWindow is no longer a dojo widget
=== ---------------------------------------------------------------- ===
Modified:
portals/jetspeed-2/trunk/jetspeed-portal-resources/src/main/resources/webapp/javascript/jetspeed/widget/PageEditor.src.js
Modified: portals/jetspeed-2/trunk/jetspeed-portal-resources/src/main/resources/webapp/javascript/jetspeed/widget/PageEditor.src.js
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-portal-resources/src/main/resources/webapp/javascript/jetspeed/widget/PageEditor.src.js?rev=602416&r1=602415&r2=602416&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-portal-resources/src/main/resources/webapp/javascript/jetspeed/widget/PageEditor.src.js (original)
+++ portals/jetspeed-2/trunk/jetspeed-portal-resources/src/main/resources/webapp/javascript/jetspeed/widget/PageEditor.src.js Sat Dec 8 01:33:04 2007
@@ -55,9 +55,7 @@
columnSizeDialogBg: null,
columnSizeDialogFg: null,
-
detail: null,
-
// fields
editorInitiatedFromDesktop: false,
@@ -65,25 +63,41 @@
isContainer: true,
widgetsInTemplate: true,
+ loadTimeDistribute: jetspeed.UAie,
+
+ dbOn: djConfig.isDebug,
+
+ // style classes
+ styleBase: "pageEditorPaneContainer",
+ styleBaseAdd: ( jetspeed.UAie ? "pageEditorPaneContainerIE" : "pageEditorPaneContainerNotIE" ),
+ styleDetail: "pageEditorDetailContainer",
+ styleDetailAdd: ( jetspeed.UAie ? "pageEditorDetailContainerIE" : "pageEditorDetailContainerNotIE" ),
// protocol - dojo.widget.Widget create
postMixInProperties: function( args, fragment, parent )
{
- jetspeed.widget.PageEditor.superclass.postMixInProperties.apply( this, arguments );
+ var jsObj = jetspeed;
+ jsObj.widget.PageEditor.superclass.postMixInProperties.apply( this, arguments );
+
+ this.layoutImagesRoot = jsObj.prefs.getLayoutRootUrl() + "/images/desktop/";
+ this.labels = jsObj.prefs.pageEditorLabels;
+ this.dialogLabels = jsObj.prefs.pageEditorDialogLabels;
- this.templateCssPath = new dojo.uri.Uri( jetspeed.url.basePortalDesktopUrl() + "/javascript/jetspeed/widget/PageEditor.css" ) ;
- this.templatePath = new dojo.uri.Uri( jetspeed.url.basePortalDesktopUrl() + "/javascript/jetspeed/widget/PageEditor.html" ) ;
+ this.templateCssPath = new dojo.uri.Uri( jsObj.url.basePortalDesktopUrl() + "/javascript/jetspeed/widget/PageEditor.css" ) ;
+ this.templatePath = new dojo.uri.Uri( jsObj.url.basePortalDesktopUrl() + "/javascript/jetspeed/widget/PageEditor.html" ) ;
},
fillInTemplate: function( args, fragment )
{
+ var jsObj = jetspeed;
+ var djObj = dojo;
var self = this;
- this.deletePortletDialog = dojo.widget.createWidget( "dialog", { widgetsInTemplate: true, deletePortletConfirmed: function() { this.hide(); self.deletePortletConfirmed( this.portletEntityId ); } }, this.deletePortletDialog );
+ this.deletePortletDialog = djObj.widget.createWidget( "dialog", { widgetsInTemplate: true, deletePortletConfirmed: function() { this.hide(); self.deletePortletConfirmed( this.portletEntityId ); } }, this.deletePortletDialog );
this.deletePortletDialog.setCloseControl( this.deletePortletDialog.deletePortletCancel.domNode );
- this.deleteLayoutDialog = dojo.widget.createWidget( "dialog", { widgetsInTemplate: true, deleteLayoutConfirmed: function() { this.hide(); self.deleteLayoutConfirmed( this.portletEntityId ); } }, this.deleteLayoutDialog );
+ this.deleteLayoutDialog = djObj.widget.createWidget( "dialog", { widgetsInTemplate: true, deleteLayoutConfirmed: function() { this.hide(); self.deleteLayoutConfirmed( this.portletEntityId ); } }, this.deleteLayoutDialog );
this.deleteLayoutDialog.setCloseControl( this.deleteLayoutDialog.deleteLayoutCancel.domNode );
var columnSizeParams = {};
@@ -111,75 +125,185 @@
}
};
- this.columnSizeDialog = dojo.widget.createWidget( "dialog", columnSizeParams, this.columnSizeDialog );
+ this.columnSizeDialog = djObj.widget.createWidget( "dialog", columnSizeParams, this.columnSizeDialog );
this.columnSizeDialog.setCloseControl( this.columnSizeDialog.columnSizeCancel.domNode );
- jetspeed.widget.PageEditor.superclass.fillInTemplate.call( this );
+ jsObj.widget.PageEditor.superclass.fillInTemplate.call( this );
},
postCreate: function( args, fragment, parent )
{
- this.editPageInitiate();
+ var startInEditModeMoveExecuteHere = false;
+ var startInEditModeMove = null;
+ //if ( this.editModeMove )
+ // startInEditModeMove = {};
+ //if ( startInEditModeMove == null && this.checkPerm( this.PM_MZ_P, jetspeed ) )
+ // startInEditModeMove = { execEditMode: true };
+ if ( this.editModeMove || this.checkPerm( this.PM_MZ_P, jetspeed ) )
+ startInEditModeMove = { execEditMode: true };
+
+ this.editPageInitiate( startInEditModeMove );
},
// initialization
- editPageInitiate: function()
+ editPageInitiate: function( startInEditModeMove )
{
var themesContentManager = null;
if ( this.editorInitiatedFromDesktop )
- themesContentManager = new jetspeed.widget.EditPageGetThemesContentManager( this, false, false, true, true, true );
+ themesContentManager = new jetspeed.widget.EditPageGetThemesContentManager( this, false, false, true, true, true, startInEditModeMove );
else
- themesContentManager = new jetspeed.widget.EditPageGetThemesContentManager( this, true, true, true, false, false );
+ themesContentManager = new jetspeed.widget.EditPageGetThemesContentManager( this, true, true, true, false, false, startInEditModeMove );
themesContentManager.getContent();
},
- editPageBuild: function()
+ editPageBuild: function( startInEditModeMove )
{
- jetspeed.url.loadingIndicatorHide();
-
- var layoutImagesUrl = jetspeed.prefs.getLayoutRootUrl() + "/images/desktop/";
-
- var pageEditorWidgets = new Array();
- var layoutEditPaneWidgets = new Array();
- var pageEditPaneWidget = dojo.widget.createWidget( "jetspeed:PageEditPane", { layoutDecoratorDefinitions: jetspeed.page.themeDefinitions.pageDecorations, portletDecoratorDefinitions: jetspeed.page.themeDefinitions.portletDecorations, layoutImagesRoot: layoutImagesUrl } );
+ var jsObj = jetspeed;
+ var jsPage = jsObj.page;
+ var djObj = dojo;
+
+ this.pageEditorWidgets = new Array();
+ this.layoutEditPaneWidgets = new Array();
+ var pageEditPaneWidget = djObj.widget.createWidget( "jetspeed:PageEditPane", { layoutDecoratorDefinitions: jsPage.themeDefinitions.pageDecorations, portletDecoratorDefinitions: jsPage.themeDefinitions.portletDecorations, layoutImagesRoot: this.layoutImagesRoot, labels: this.labels, dialogLabels: this.dialogLabels } );
pageEditPaneWidget.pageEditorWidget = this;
- dojo.dom.insertAfter( pageEditPaneWidget.domNode, this.domNode );
- pageEditorWidgets.push( pageEditPaneWidget );
+ var dNodeStyle = pageEditPaneWidget.domNode.style;
+ dNodeStyle.display = "none";
+ dNodeStyle.visibility = "hidden";
+ djObj.dom.insertAfter( pageEditPaneWidget.domNode, this.domNode );
+ this.pageEditorWidgets.push( pageEditPaneWidget );
+ this.pageEditPaneWidget = pageEditPaneWidget;
+
+ jsObj.url.loadingIndicatorStep( jsObj );
+ this._buildDepth = 0;
+ this._buildRootPane( startInEditModeMove );
+
+ if ( startInEditModeMove != null && startInEditModeMove.execEditMode )
+ {
+ djObj.lang.setTimeout( this, this.editMoveModeStart, 100 );
+ }
+ },
+
+ _buildRootPane: function( startInEditModeMove )
+ {
+ var jsObj = jetspeed;
+ var jsPage = jsObj.page;
+ var djObj = dojo;
- var rootLayoutEditPaneWidget = dojo.widget.createWidget( "jetspeed:LayoutEditPane", { widgetId: "layoutEdit_root", layoutId: jetspeed.page.rootFragmentId, isRootLayout: true, layoutDefinitions: jetspeed.page.themeDefinitions.layouts, layoutImagesRoot: layoutImagesUrl } );
+ var editModeMove = ( startInEditModeMove != null );
+ var rootLayoutEditPaneWidget = djObj.widget.createWidget( "jetspeed:LayoutEditPane", { widgetId: "layoutEdit_root", layoutId: jsPage.rootFragmentId, isRootLayout: true, depth: 0, layoutDefinitions: jsPage.themeDefinitions.layouts, layoutImagesRoot: this.layoutImagesRoot, labels: this.labels, dialogLabels: this.dialogLabels, startInEditModeMove: editModeMove } );
rootLayoutEditPaneWidget.pageEditorWidget = this;
- dojo.dom.insertAfter( rootLayoutEditPaneWidget.domNode, pageEditPaneWidget.domNode );
- pageEditorWidgets.push( rootLayoutEditPaneWidget );
- layoutEditPaneWidgets.push( rootLayoutEditPaneWidget );
+ var dNodeStyle = rootLayoutEditPaneWidget.domNode.style;
+ dNodeStyle.display = "none";
+ dNodeStyle.visibility = "hidden";
+ djObj.dom.insertAfter( rootLayoutEditPaneWidget.domNode, this.pageEditPaneWidget.domNode );
+ this.pageEditorWidgets.push( rootLayoutEditPaneWidget );
+ this.layoutEditPaneWidgets.push( rootLayoutEditPaneWidget );
+
+ this._buildNextColI = 0;
+ this._buildColLen = ( jsObj.prefs.windowTiling ? jsPage.columns.length : 0 );
- if ( jetspeed.prefs.windowTiling )
+ if ( ! this.loadTimeDistribute )
{
- for ( var i = 0 ; i < jetspeed.page.columns.length; i++ )
+ jsObj.url.loadingIndicatorStep( jsObj );
+ this._buildNextPane();
+ }
+ else
+ {
+ djObj.lang.setTimeout( this, this._buildNextPane, 10 );
+ jsObj.url.loadingIndicatorStep( jsObj );
+ }
+ },
+
+ _buildNextPane: function()
+ {
+ var jsObj = jetspeed;
+ var jsPage = jsObj.page;
+ var djObj = dojo;
+
+ var i = this._buildNextColI;
+ var colLen = this._buildColLen;
+ if ( i < colLen )
+ {
+ var col, layoutEditPaneWidget = null;
+ while ( i < colLen && layoutEditPaneWidget == null )
{
- var col = jetspeed.page.columns[i];
+ col = jsPage.columns[i];
if ( col.layoutHeader )
{
- var layoutEditPaneWidget = dojo.widget.createWidget( "jetspeed:LayoutEditPane", { widgetId: "layoutEdit_" + i, layoutId: col.layoutId, layoutDefinitions: jetspeed.page.themeDefinitions.layouts, layoutImagesRoot: layoutImagesUrl } );
+ layoutEditPaneWidget = djObj.widget.createWidget( "jetspeed:LayoutEditPane", { widgetId: "layoutEdit_" + i, layoutColumn: col, layoutId: col.layoutId, depth: col.layoutDepth, layoutInfo: jsPage.layoutInfo.columnLayoutHeader, layoutDefinitions: jsPage.themeDefinitions.layouts, layoutImagesRoot: this.layoutImagesRoot, labels: this.labels, dialogLabels: this.dialogLabels } );
layoutEditPaneWidget.pageEditorWidget = this;
+ var dNodeStyle = layoutEditPaneWidget.domNode.style;
+ dNodeStyle.display = "none";
+ dNodeStyle.visibility = "hidden";
if ( col.domNode.firstChild != null )
col.domNode.insertBefore( layoutEditPaneWidget.domNode, col.domNode.firstChild );
else
col.domNode.appendChild( layoutEditPaneWidget.domNode );
layoutEditPaneWidget.initializeDrag();
- pageEditorWidgets.push( layoutEditPaneWidget );
- layoutEditPaneWidgets.push( layoutEditPaneWidget );
+ this.pageEditorWidgets.push( layoutEditPaneWidget );
+ this.layoutEditPaneWidgets.push( layoutEditPaneWidget );
}
+ i++;
+ }
+ }
+
+ if ( i < colLen )
+ {
+ this._buildNextColI = i;
+ if ( ! this.loadTimeDistribute )
+ {
+ jsObj.url.loadingIndicatorStep( jsObj );
+ this._buildNextPane();
+ }
+ else
+ {
+ djObj.lang.setTimeout( this, this._buildNextPane, 10 );
+ jsObj.url.loadingIndicatorStep( jsObj );
+ }
+ }
+ else
+ {
+ djObj.lang.setTimeout( this, this._buildFinished, 10 );
+ }
+ },
+
+ _buildFinished: function()
+ {
+ var jsObj = jetspeed;
+
+ if ( jsObj.UAie ) // provide background when prevent IE bleed-through problem
+ {
+ this.bgIframe = new jsObj.widget.BackgroundIframe( this.domNode, "ieLayoutBackgroundIFrame", dojo );
+ }
+
+ var pageEditorWidgets = this.pageEditorWidgets;
+ if ( pageEditorWidgets != null )
+ {
+ for ( var i = 0 ; i < pageEditorWidgets.length ; i++ )
+ {
+ var dNodeStyle = pageEditorWidgets[i].domNode.style;
+ dNodeStyle.display = "block";
+ dNodeStyle.visibility = "visible";
}
}
- this.pageEditorWidgets = pageEditorWidgets;
- this.layoutEditPaneWidgets = layoutEditPaneWidgets;
- this.editPageSyncPortletActions();
- if ( dojo.render.html.ie60 )
- jetspeed.page.displayAllPortlets();
+ this.editPageSyncPortletActions( true, jsObj );
+
+ jsObj.url.loadingIndicatorHide();
+ if ( jsObj.UAie6 )
+ {
+ //jsObj.url.loadingIndicatorHide();
+ jsObj.page.displayAllPWins();
+ }
},
- editPageSyncPortletActions: function()
+
+ editPageSyncPortletActions: function( showing, jsObj )
{
- var portlets = jetspeed.page.getPortletArray()
+ var jsPage = jsObj.page;
+ var jsCss = jsObj.css;
+ if ( showing )
+ jsObj.ui.updateChildColInfo();
+
+ var portlets = jsPage.getPortletArray()
if ( portlets != null )
{
for ( var i = 0 ; i < portlets.length ; i++ )
@@ -187,49 +311,85 @@
portlets[i].syncActions();
}
}
+
+ var peProto = jsObj.widget.PageEditor.prototype;
+ var cP_D = this.checkPerm(this.PM_P_D,jsObj,peProto);
+ var cL_NA_ED = this.canL_NA_ED(jsObj,peProto);
+
+ var pWins = jsPage.portlet_windows;
+ for ( var windowId in pWins )
+ {
+ var pWin = pWins[ windowId ];
+ if ( ! pWin ) continue;
+ if ( showing )
+ pWin.editPageInitiate( cP_D, cL_NA_ED, jsObj, jsCss );
+ else
+ pWin.editPageTerminate( jsObj, jsCss );
+ }
},
+
editPageHide: function()
{
- if ( this.pageEditorWidgets != null )
+ var pageEditorWidgets = this.pageEditorWidgets;
+ if ( pageEditorWidgets != null )
{
- for ( var i = 0 ; i < this.pageEditorWidgets.length ; i++ )
+ for ( var i = 0 ; i < pageEditorWidgets.length ; i++ )
{
- this.pageEditorWidgets[i].hide();
+ pageEditorWidgets[i].hide();
}
}
+
this.hide();
- this.editPageSyncPortletActions();
+
+ this.editPageSyncPortletActions( false, jetspeed );
},
editPageShow: function()
{
- if ( this.pageEditorWidgets != null )
+ var jsObj = jetspeed;
+ var pageEditorWidgets = this.pageEditorWidgets;
+ var moveModeIsEnabled = this.editModeMove;
+ if ( pageEditorWidgets != null )
{
- for ( var i = 0 ; i < this.pageEditorWidgets.length ; i++ )
+ for ( var i = 0 ; i < pageEditorWidgets.length ; i++ )
{
- this.pageEditorWidgets[i].editModeRedisplay();
+ pageEditorWidgets[i].editModeRedisplay( moveModeIsEnabled );
}
}
+
this.show();
- this.editPageSyncPortletActions();
- if ( dojo.render.html.ie60 )
- jetspeed.page.displayAllPortlets();
+
+ this.editPageSyncPortletActions( true, jsObj );
+
+ if ( moveModeIsEnabled )
+ {
+ this.editMoveModeStart();
+ }
+ if ( jsObj.UAie6 )
+ jsObj.page.displayAllPWins();
},
editPageDestroy: function()
{
- if ( this.pageEditorWidgets != null )
+ var pageEditorWidgets = this.pageEditorWidgets;
+ if ( pageEditorWidgets != null )
{
- for ( var i = 0 ; i < this.pageEditorWidgets.length ; i++ )
+ for ( var i = 0 ; i < pageEditorWidgets.length ; i++ )
{
- this.pageEditorWidgets[i].destroy();
- this.pageEditorWidgets[i] = null;
+ pageEditorWidgets[i].destroy();
+ pageEditorWidgets[i] = null;
}
}
+
+ this.pageEditorWidgets = null;
+ this.layoutEditPaneWidgets = null;
+ this.pageEditPaneWidget = null;
+
if ( this.deletePortletDialog != null )
this.deletePortletDialog.destroy();
if ( this.deleteLayoutDialog != null )
this.deleteLayoutDialog.destroy();
if ( this.columnSizeDialog != null )
this.columnSizeDialog.destroy();
+
this.destroy();
},
@@ -240,7 +400,7 @@
this.deletePortletDialog.portletEntityId = portletEntityId;
this.deletePortletDialog.portletTitle = portletTitle;
this.deletePortletTitle.innerHTML = portletTitle;
- this.deletePortletDialog.show();
+ this._openDialog( this.deletePortletDialog );
},
deletePortletConfirmed: function( portletEntityId )
{
@@ -252,7 +412,7 @@
this.deleteLayoutDialog.layoutId = layoutId;
this.deleteLayoutDialog.layoutTitle = layoutId;
this.deleteLayoutTitle.innerHTML = layoutId;
- this.deleteLayoutDialog.show();
+ this._openDialog( this.deleteLayoutDialog );
},
deleteLayoutConfirmed: function()
{
@@ -288,8 +448,8 @@
}
this.columnSizeDialog.layoutId = layoutId;
this.columnSizeDialog.columnCount = spinnerCount;
- this.columnSizeDialog.show();
- }
+ this._openDialog( this.columnSizeDialog );
+ }
},
columnSizeConfirmed: function( layoutId, columnSizes )
{
@@ -315,101 +475,304 @@
}
}
},
-
+ checkPerm: function(p,jsObj,proto)
+ {
+ var peProto = proto || jsObj.widget.PageEditor.prototype;
+ var perms = peProto.perms;
+ if ( perms == null )
+ perms = peProto.perms = jsObj.page._perms(jsObj.prefs,-1,String.fromCharCode);
+ if ( perms == null ) return false;
+ if ( p )
+ return ((perms[0] & p) > 0);
+ return perms;
+ },
+ getLDepthPerm: function(jsObj,proto)
+ {
+ var perms = this.checkPerm(null,jsObj,proto);
+ if ( perms && perms.length >= 2 )
+ return perms[1];
+ return -1;
+ },
+ canL_NA_ED: function(jsObj,proto)
+ {
+ var peProto = proto || jsObj.widget.PageEditor.prototype;
+ var cL_NA_ED = peProto.checkPerm( peProto.PM_L_NA_ED, jsObj, peProto );
+ if ( ! cL_NA_ED )
+ cL_NA_ED = peProto.hasRPerm( jsObj, peProto );
+ return cL_NA_ED;
+ },
+ hasRPerm: function(jsObj,proto)
+ {
+ var peProto = proto || jsObj.widget.PageEditor.prototype;
+ var rperm = false;
+ if ( typeof proto.permR != "undefined" )
+ rperm = proto.permR;
+ else
+ {
+ var perms = this.checkPerm(null,jsObj,proto);
+ if ( perms && perms.length >= 3 && perms[2] && perms[2].length > 0 )
+ {
+ var u = jsObj.page._getU();
+ if ( u && u.r && u.r[ perms[2] ] )
+ {
+ rperm = true;
+ }
+ }
+ proto.permR = rperm;
+ }
+ return rperm;
+ },
refreshPage: function()
{
dojo.lang.setTimeout( this, this._doRefreshPage, 10 );
},
_doRefreshPage: function()
{
- var pageUrl = jetspeed.page.getPageUrl();
- pageUrl = jetspeed.url.addQueryParameter( pageUrl, jetspeed.id.PG_ED_PARAM, "true", true );
- window.location.href = pageUrl.toString();
- },
+ var jsObj = jetspeed;
+ var pageUrl = jsObj.page.getPageUrl();
- editModeNormal: function()
- {
- var isIE6 = dojo.render.html.ie60;
- if ( isIE6 )
- jetspeed.page.displayAllPortlets( true );
- // restore all portlets (that were not previously minimized)
- var portletArray = jetspeed.page.getPortletArray();
- var colNodes = [];
- for ( var i = 0; i < portletArray.length; i++ )
+ //pageUrl = jsObj.url.addQueryParameter( pageUrl, jsObj.id.PG_ED_PARAM, "true", true ); // BOZO:NOW: is this ok when ajax-pagenavigation is off????
+ if ( ! jsObj.prefs.ajaxPageNavigation )
{
- var portletWindow = portletArray[i].getPortletWindow();
- if ( portletWindow != null )
+ var stateVal = 0;
+ var wt = null;
+
+ if ( this.editModeMove )
{
- portletWindow.restoreFromMinimizeWindowTemporarily();
- if ( isIE6 && portletWindow.windowPositionStatic )
+ if ( ! this.checkPerm( this.PM_MZ_P, jetspeed ) )
+ stateVal |= this.PM_MZ_P;
+ var identifierCheck = /\b([a-z_A-Z$]\w*)\b(?!-)/;
+ var pWins = jsObj.page.getPWins();
+ var windowTitlesAdded = 0;
+ var windowTitlesJSON = [];
+ for ( var i = 0; i < pWins.length; i++ )
{
- var colDomNode = portletWindow.domNode.parentNode;
- var added = false;
- for ( var j = 0 ; j < colNodes.length ; j++ )
+ pWin = pWins[i];
+ if ( pWin && pWin.portlet )
{
- if ( colNodes[j] == colDomNode )
+ var pTitle = pWin.getPortletTitle();
+ if ( pTitle != null && pTitle.length > 0 )
{
- added = true;
+ var pWinId = pWin.portlet.entityId;
+ if ( ! identifierCheck.test( pWinId ) )
+ pWinId = "\"" + pWinId + "\"";
+
+ if ( windowTitlesAdded > 0 )
+ windowTitlesJSON.push( "," );
+ windowTitlesJSON.push( pWinId+":\"" + pTitle + "\"" );
+ windowTitlesAdded++;
+ if ( windowTitlesJSON.length > 1024 )
+ {
+ windowTitlesJSON = null;
+ break;
+ }
+ }
+ }
+ }
+ if ( windowTitlesAdded > 0 && windowTitlesJSON != null && windowTitlesJSON.length > 0 )
+ {
+ wt = "";
+ var wtRaw = windowTitlesJSON.join("");
+ var wtRawLen = wtRaw.length;
+ var wtCh, wtHCh, wtHChLen;
+ for ( var wtRawI = 0 ; wtRawI < wtRawLen ; wtRawI++ )
+ {
+ wtCh = wtRaw.charCodeAt( wtRawI );
+ wtHCh = (wtCh).toString(16);
+ wtHChLen = wtHCh.length;
+ if ( wtHChLen < 1 || wtHChLen > 2 )
+ {
+ wt = null;
+ windowTitlesJSON = null;
break;
}
+ else if ( wtHChLen == 1 )
+ {
+ wtHCh += "0";
+ }
+ wt += wtHCh;
}
- if ( ! added )
- colNodes.push( colDomNode );
+ if ( wt == null || wt.length == 0 )
+ wt = null;
+ else
+ stateVal |= this.PM_MZ_P;
}
}
- }
- if ( this.layoutEditPaneWidgets != null )
- {
- for ( var i = 0 ; i < this.layoutEditPaneWidgets.length ; i++ )
+ var modPageUrl = pageUrl;
+ if ( wt != null || stateVal > 0 )
{
- var lepWidget = this.layoutEditPaneWidgets[i];
- if ( lepWidget.layoutMoveContainer != null )
- lepWidget.layoutMoveContainer.domNode.style.display = "none";
+ var jsUrl = jsObj.url;
+ modPageUrl = jsUrl.parse( pageUrl.toString() );
+ if ( stateVal > 0 )
+ modPageUrl = jsUrl.addQueryParameter( modPageUrl, jsObj.id.PG_ED_STATE_PARAM, (stateVal).toString(16), true );
+ if ( wt != null && wt.length > 0 )
+ modPageUrl = jsUrl.addQueryParameter( modPageUrl, jsObj.id.PG_ED_TITLES_PARAM, wt, true );
}
+
+ jsObj.pageNavigate( modPageUrl.toString(), null, true );
+ }
+ else
+ {
+ jsObj.updatePage( pageUrl.toString(), false, true, { editModeMove: this.editModeMove } );
}
+ },
+
+ editMoveModeExit: function( sysInitiated )
+ {
+ var jsObj = jetspeed;
+ var isIE6 = jsObj.UAie6;
if ( isIE6 )
+ jsObj.page.displayAllPWins( true );
+
+ // restore all windows (that were not already minimized prior to move-mode)
+ jsObj.widget.PortletWindow.prototype.restoreAllFromMinimizeWindowTemporarily();
+
+ var lepWidgets = this.layoutEditPaneWidgets;
+ if ( lepWidgets != null )
{
- jetspeed.page.displayAllPortlets();
- if ( colNodes.length > 0 )
+ for ( var i = 0 ; i < lepWidgets.length ; i++ )
{
- var zappedContentRestorer = new jetspeed.widget.IE6ZappedContentRestorer( colNodes );
- dojo.lang.setTimeout( zappedContentRestorer, zappedContentRestorer.showNext, 20 );
+ lepWidgets[i]._disableMoveMode();
}
}
+
+ if ( ! sysInitiated )
+ delete this.editModeMove;
},
- editModeLayoutMove: function()
+
+ editMoveModeStart: function()
{
- if ( dojo.render.html.ie60 )
- jetspeed.page.displayAllPortlets( true );
- // minimize all portlets
- var portletArray = jetspeed.page.getPortletArray();
- for ( var i = 0; i < portletArray.length; i++ )
+ var jsObj = jetspeed;
+ var hideTiledWins = false;
+
+ if ( jsObj.UAie6 )
+ jsObj.page.displayAllPWins( true );
+
+ var pWinObjsToRemainVisible = [];
+ var pWinIdsToRemainVisible = [];
+ if ( this.dbOn ) // keep showing debug window if appropriate
+ {
+ var pWinDebug = jsObj.debugWindow();
+ if ( pWinDebug && ( ! hideTiledWins || ! pWinDebug.posStatic || jsObj.debug.dragWindow ) )
+ {
+ pWinObjsToRemainVisible.push( pWinDebug );
+ pWinIdsToRemainVisible.push( pWinDebug.widgetId );
+ }
+ }
+
+ // minimize or hide all windows
+ if ( ! hideTiledWins )
{
- var portletWindow = portletArray[i].getPortletWindow();
- if ( portletWindow != null )
+ var pWin;
+ var pWins = jsObj.page.getPWins();
+ for ( var i = 0; i < pWins.length; i++ )
{
- portletWindow.minimizeWindowTemporarily();
+ pWin = pWins[i];
+ if ( pWin.posStatic )
+ {
+ pWinObjsToRemainVisible.push( pWin );
+ pWinIdsToRemainVisible.push( pWin.widgetId );
+ pWin.minimizeWindowTemporarily();
+ }
}
}
- // display layout-move-handle widget
- if ( this.layoutEditPaneWidgets != null )
+ jsObj.widget.hideAllPortletWindows( pWinIdsToRemainVisible );
+
+ var lepWidgets = this.layoutEditPaneWidgets;
+ if ( lepWidgets != null )
{
- for ( var i = 0 ; i < this.layoutEditPaneWidgets.length ; i++ )
+ for ( var i = 0 ; i < lepWidgets.length ; i++ )
{
- var lepWidget = this.layoutEditPaneWidgets[i];
- if ( ! lepWidget.isRootLayout && lepWidget.layoutMoveContainer != null )
- lepWidget.layoutMoveContainer.domNode.style.display = "block"
+ lepWidgets[i]._enableMoveMode();
}
}
- if ( dojo.render.html.ie60 )
- jetspeed.page.displayAllPortlets();
+
+ if ( jsObj.UAie6 )
+ {
+ setTimeout(function() {
+ jsObj.page.displayAllPWins( false, pWinObjsToRemainVisible );
+ }, 20);
+ }
+ this.editModeMove = true;
+ },
+ onBrowserWindowResize: function()
+ { // called after ie6 resize window
+ var deletePDialog = this.deletePortletDialog;
+ var deleteLDialog = this.deleteLayoutDialog;
+ var colSizeDialog = this.columnSizeDialog;
+ if ( deletePDialog && deletePDialog.isShowing() )
+ {
+ deletePDialog.domNode.style.display = "none";
+ deletePDialog.domNode.style.display = "block";
+ }
+ if ( deleteLDialog && deleteLDialog.isShowing() )
+ {
+ deleteLDialog.domNode.style.display = "none";
+ deleteLDialog.domNode.style.display = "block";
+ }
+ if ( colSizeDialog && colSizeDialog.isShowing() )
+ {
+ colSizeDialog.domNode.style.display = "none";
+ colSizeDialog.domNode.style.display = "block";
+ }
+
+ var pageEditorWidgets = this.pageEditorWidgets;
+ if ( pageEditorWidgets != null )
+ {
+ for ( var i = 0 ; i < pageEditorWidgets.length ; i++ )
+ {
+ pageEditorWidgets[i].onBrowserWindowResize();
+ }
+ }
+ },
+ PM_PG_L_D: 16, PM_L_N: 32, PM_L_CS: 64, PM_PG_AD: 128, PM_P_AD: 256, PM_PG_P_D: 512, PM_P_D: 1024, PM_MZ_P: 2048, PM_L_NA_ED: 4096, PM_L_NA_TLMV: 8192, PM_L_NA_CS: 16384,
+
+ _openDialog: function( dialogWidget )
+ { // this is to address a mozilla bug where insertion point is always invisible in text boxes
+ var isMoz = jetspeed.UAmoz;
+ if ( isMoz )
+ {
+ dialogWidget.domNode.style.position = "fixed"; // this fix involves setting position to fixed instead of absolute,
+ if ( ! dialogWidget._fixedIPtBug ) // and the change to var x and var y initialization in placeModalDialog
+ {
+ var _dialog = dialogWidget;
+ _dialog.placeModalDialog = function() {
+ // summary: position modal dialog in center of screen
+
+ var scroll_offset = dojo.html.getScroll().offset;
+ var viewport_size = dojo.html.getViewport();
+
+ // find the size of the dialog (dialog needs to be showing to get the size)
+ var mb;
+ if(_dialog.isShowing()){
+ mb = dojo.html.getMarginBox(_dialog.domNode);
+ }else{
+ dojo.html.setVisibility(_dialog.domNode, false);
+ dojo.html.show(_dialog.domNode);
+ mb = dojo.html.getMarginBox(_dialog.domNode);
+ dojo.html.hide(_dialog.domNode);
+ dojo.html.setVisibility(_dialog.domNode, true);
+ }
+ //var x = scroll_offset.x + (viewport_size.width - mb.width)/2;
+ //var y = scroll_offset.y + (viewport_size.height - mb.height)/2;
+ var x = (viewport_size.width - mb.width)/2;
+ var y = (viewport_size.height - mb.height)/2;
+ with(_dialog.domNode.style){
+ left = x + "px";
+ top = y + "px";
+ }
+ };
+ _dialog._fixedIPtBug = true;
+ }
+ }
+ dialogWidget.show();
}
}
);
// ... jetspeed.widget.EditPageGetThemesContentManager
-jetspeed.widget.EditPageGetThemesContentManager = function( pageEditorWidget, pageDecorations, portletDecorations, layouts, desktopPageDecorations, desktopPortletDecorations )
+jetspeed.widget.EditPageGetThemesContentManager = function( pageEditorWidget, pageDecorations, portletDecorations, layouts, desktopPageDecorations, desktopPortletDecorations, startInEditModeMove )
{
this.pageEditorWidget = pageEditorWidget;
var getThemeTypes = new Array();
@@ -425,6 +788,7 @@
getThemeTypes.push( [ "desktopPortletDecorations", "portletDecorations" ] );
this.getThemeTypes = getThemeTypes;
this.getThemeTypeNextIndex = 0;
+ this.startInEditModeMove = startInEditModeMove;
};
jetspeed.widget.EditPageGetThemesContentManager.prototype =
{
@@ -442,7 +806,7 @@
}
else
{
- this.pageEditorWidget.editPageBuild();
+ this.pageEditorWidget.editPageBuild( this.startInEditModeMove );
}
},
notifySuccess: function( /* JSON */ getThemesData, /* String */ requestUrl, domainModelObject )
@@ -456,7 +820,7 @@
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, domainModelObject )
{
- dojo.raise( "EditPageGetThemesContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "EditPageGetThemesContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -479,7 +843,7 @@
},
notifySuccess: function( /* XMLDocument */ data, /* String */ requestUrl, /* Portlet */ portlet )
{
- if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, true, "updatepage-remove-page" ) )
+ if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, null, true, "updatepage-remove-page" ) )
{
var pageUrl = jetspeed.page.makePageUrl( "/" );
pageUrl += "?" + jetspeed.id.PG_ED_PARAM + "=true";
@@ -488,7 +852,7 @@
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, /* Portlet */ portlet )
{
- dojo.raise( "RemovePageContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "RemovePageContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -555,7 +919,7 @@
},
notifySuccess: function( /* XMLDocument */ data, /* String */ requestUrl, /* Portlet */ portlet )
{
- if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, true, "updatepage-add-page" ) )
+ if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, null, true, "updatepage-add-page" ) )
{
var pageUrl = jetspeed.page.makePageUrl( this.pagePath );
if ( ! dojo.string.endsWith( pageUrl, ".psml", true ) )
@@ -566,7 +930,7 @@
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, /* Portlet */ portlet )
{
- dojo.raise( "AddPageContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "AddPageContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -601,14 +965,14 @@
},
notifySuccess: function( /* XMLDocument */ data, /* String */ requestUrl, /* Portlet */ portlet )
{
- if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, true, "moveabs-layout" ) )
+ if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, null, true, "moveabs-layout" ) )
{
}
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, /* Portlet */ portlet )
{
- dojo.raise( "MoveLayoutContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "MoveLayoutContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -641,14 +1005,14 @@
},
notifySuccess: function( /* XMLDocument */ data, /* String */ requestUrl, /* Portlet */ portlet )
{
- if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, true, "updatepage-update-fragment" ) )
+ if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, null, true, "updatepage-update-fragment" ) )
{
this.pageEditorWidget.refreshPage();
}
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, /* Portlet */ portlet )
{
- dojo.raise( "UpdateFragmentContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "UpdateFragmentContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -678,7 +1042,7 @@
},
notifySuccess: function( /* XMLDocument */ data, /* String */ requestUrl, /* Portlet */ portlet )
{
- if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, true, "updatepage-info" ) )
+ if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, null, true, "updatepage-info" ) )
{
if ( this.refreshPage )
this.pageEditorWidget.refreshPage();
@@ -686,7 +1050,7 @@
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, /* Portlet */ portlet )
{
- dojo.raise( "UpdatePageInfoContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "UpdatePageInfoContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -713,14 +1077,14 @@
},
notifySuccess: function( /* XMLDocument */ data, /* String */ requestUrl, /* Portlet */ portlet )
{
- if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, true, "removeportlet" ) )
+ if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, null, true, "removeportlet" ) )
{
this.pageEditorWidget.refreshPage();
}
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, /* Portlet */ portlet )
{
- dojo.raise( "RemovePortletContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "RemovePortletContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -747,14 +1111,14 @@
},
notifySuccess: function( /* XMLDocument */ data, /* String */ requestUrl, /* Portlet */ portlet )
{
- if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, true, "removeportlet" ) )
+ if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, null, true, "removeportlet" ) )
{
this.pageEditorWidget.refreshPage();
}
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, /* Portlet */ portlet )
{
- dojo.raise( "RemoveLayoutContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "RemoveLayoutContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
@@ -782,13 +1146,13 @@
},
notifySuccess: function( /* XMLDocument */ data, /* String */ requestUrl, /* Portlet */ portlet )
{
- if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, true, "addportlet" ) )
+ if ( jetspeed.url.checkAjaxApiResponse( requestUrl, data, null, true, "addlayout" ) )
{
this.pageEditorWidget.refreshPage();
}
},
notifyFailure: function( /* String */ type, /* Object */ error, /* String */ requestUrl, /* Portlet */ portlet )
{
- dojo.raise( "AddLayoutContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error ) );
+ dojo.raise( "AddLayoutContentManager notifyFailure url: " + requestUrl + " type: " + type + jetspeed.formatError( error ) );
}
};
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org