diff --git a/www/extras/admin/admin.js b/www/extras/admin/admin.js index b3bb5dcb8..7e033b972 100644 --- a/www/extras/admin/admin.js +++ b/www/extras/admin/admin.js @@ -584,7 +584,10 @@ WebGUI.Admin.prototype.processPlugin this.showInfoMessage( resp.error ); } else if ( resp.forkId ) { - // Do nothing right now + this.openForkDialog( resp.forkId ); + } + else if ( resp.redirect ) { + this.gotoAsset( resp.redirect ); } else { alert( "Unknown plugin response: " + YAHOO.lang.JSON.stringify(resp) ); @@ -680,6 +683,66 @@ WebGUI.Admin.prototype.hideInfoMessage infoContainer.style.display = "none"; }; +/** + * openForkDialog( forkId ) + * Open a dialog to show a progress bar for the forked process + */ +WebGUI.Admin.prototype.openForkDialog += function ( forkId ) { + // Open the dialog with a progress bar + var dialog = new YAHOO.widget.Panel( 'forkModalDialog', { + "width" : '350px', + fixedcenter : true, + constraintoviewport : true, + underlay : "shadow", + close : true, + visible : true, + draggable : false + } ); + dialog.setBody( + '
Starting...
' + ); + dialog.render( document.body ); + this.treeDialog = dialog; + + var pbTaskBar = new YAHOO.widget.ProgressBar({ + minValue : 0, + value : 0, + maxValue : 1, + width: '300px', + height: '30px', + anim: true + }); + pbTaskBar.render( 'pbTask' ); + pbTaskBar.get('anim').duration = 0.5; + pbTaskBar.get('anim').method = YAHOO.util.Easing.easeOut; + + YAHOO.WebGUI.Fork.poll({ + url : '?op=fork;pid=' + forkId, + draw : function(data) { + var status = YAHOO.lang.JSON.parse( data.status ); + if ( status ) { + pbTaskBar.set( 'maxValue', status.total ); + pbTaskBar.set( 'value', status.finished ); + document.getElementById( 'pbTaskStatus' ).innerHTML = status.message; + } + }, + finish : function(data){ + var status = YAHOO.lang.JSON.parse( data.status ); + if ( status.redirect ) { + alert("Dispensing product..."); + window.admin.gotoAsset( status.redirect ); + } + dialog.destroy(); + dialog = null; + // TODO: Handle the last request of the forked process + }, + error : function(e){ + alert("Error: " + e); + } + }); +}; + /** * addNewContent( urlFragment ) * Add new content by visiting the given URL fragment @@ -1621,8 +1684,7 @@ WebGUI.Admin.AssetTable.prototype.getSelected * * WebGUI.Admin.Tree */ - -WebGUI.Admin.Tree +WebGUI.Admin.Tree = function(admin) { WebGUI.Admin.Tree.superclass.constructor.call( this, admin, { dataSourceUrl : '?op=admin;method=getTreeData;', @@ -1690,7 +1752,7 @@ WebGUI.Admin.Tree.prototype.runHelperForSelected var assetIds = this.getSelected(); // Open the dialog with two progress bars - var dialog = new YAHOO.widget.Panel( 'adminModalDialog', { + var dialog = new YAHOO.widget.Panel( 'helperForkModalDialog', { "width" : '350px', fixedcenter : true, constraintoviewport : true,