/** * The packages list main container * * @class MODx.panel.Packages * @extends MODx.Panel * @param {Object} config An object of options. * @xtype modx-panel-packages */ MODx.panel.Packages = function(config) { config = config || {}; Ext.applyIf(config,{ layout:'card' ,border:false ,layoutConfig:{ deferredRender: true } ,defaults:{ autoHeight: true ,autoWidth: true ,border: false } ,activeItem: 0 ,items:[{ xtype:'modx-package-grid' ,id:'modx-package-grid' ,bodyCssClass: 'grid-with-buttons' },{ xtype: 'modx-package-beforeinstall' ,id:'modx-package-beforeinstall' },{ xtype: 'modx-package-details' ,id:'modx-package-details' ,bodyCssClass: 'modx-template-detail' }] ,buttons: [{ text: _('cancel') ,id:'package-list-reset' ,hidden: true ,handler: function(btn, e){ var bc = Ext.getCmp('packages-breadcrumbs'); var last = bc.data.trail[bc.data.trail.length - 2]; if (last != undefined && last.rec != undefined) { bc.data.trail.pop(); bc.data.trail.pop(); bc.data.trail.shift(); bc.updateDetail(bc.data); var grid = Ext.getCmp('modx-package-grid'); grid.install(last.rec); return; } Ext.getCmp('modx-panel-packages').activate(); } ,scope: this },{ text: _('continue') ,id:'package-install-btn' ,cls:'primary-button' ,hidden: true ,handler: this.install ,disabled: false ,scope: this ,autoWidth: true ,autoHeight: true },{ text: _('setup_options') ,id:'package-show-setupoptions-btn' ,cls:'primary-button' ,hidden: true ,handler: this.onSetupOptions ,scope: this ,autoWidth: true ,autoHeight: true }] }); MODx.panel.Packages.superclass.constructor.call(this,config); }; Ext.extend(MODx.panel.Packages,MODx.Panel,{ activate: function() { Ext.getCmp('card-container').getLayout().setActiveItem(this.id); Ext.getCmp('modx-package-grid').activate(); Ext.each(this.buttons, function(btn){ Ext.getCmp(btn.id).hide(); }); } /** * * @param va ExtJS instance of the button that was clicked * @param event The Ext.EventObjectImpl from clicking the button * @param options Object containing the setup options if available, or undefined. * @returns {boolean} */ ,install: function(va, event, options){ options = options || {}; var r; var g = Ext.getCmp('modx-package-grid'); if (!g) return false; // Set the signature from the button config (set in MODx.panel.PackageBeforeInstall.updatePanel) if (va.signature != undefined && va.signature != '') { r = {signature: va.signature}; } else { r = g.menu.record.data ? g.menu.record.data : g.menu.record; } // Load up the installation console var topic = '/workspace/package/install/'+r.signature+'/'; g.loadConsole(Ext.getBody(),topic); // Grab the params to send to the install processor var params = { action: 'workspace/packages/install' ,signature: r.signature ,register: 'mgr' ,topic: topic }; // Include the setup options that were provided from MODx.window.SetupOptions.install Ext.apply(params, options); // Trigger the actual installation MODx.Ajax.request({ url: MODx.config.connector_url ,params: params ,listeners: { 'success': {fn:function() { var bc = Ext.getCmp('packages-breadcrumbs'); var trail= bc.data.trail; trail.pop(); if (trail.length > 1) { last = trail[trail.length - 1]; if (last != undefined && last.rec != undefined) { bc.data.trail.pop(); bc.data.trail.shift(); bc.updateDetail(bc.data); var grid = Ext.getCmp('modx-package-grid'); grid.install(last.rec); return; } } this.activate(); Ext.getCmp('modx-package-grid').refresh(); },scope:this} ,'failure': {fn:function() { this.activate(); },scope:this} } }); return true; } ,onSetupOptions: function(btn){ if(this.win == undefined){ this.win = new MODx.window.SetupOptions({ id: 'modx-window-setupoptions' ,signature: btn.signature || '' }); } else { this.win.signature = btn.signature || ''; this.win.title = _('setup_options'); } this.win.show(btn); var opts = Ext.getCmp('modx-package-beforeinstall').getOptions(); this.win.fetch(opts); } }); Ext.reg('modx-panel-packages',MODx.panel.Packages); /** * The package browser container * * @class MODx.panel.PackagesBrowser * @extends MODx.Panel * @param {Object} config An object of options. * @xtype modx-panel-packages-browser */ MODx.panel.PackagesBrowser = function(config) { config = config || {}; Ext.applyIf(config,{ layout: 'column' ,border: false ,items:[{ xtype: 'modx-package-browser-tree' ,id: 'modx-package-browser-tree' ,width: 250 },{ layout:'card' ,columnWidth: 1 ,defaults:{ border: false } ,border:false ,id:'package-browser-card-container' ,layoutConfig:{ deferredRender:true } ,items:[{ xtype:'modx-package-browser-home' ,id:'modx-package-browser-home' },{ xtype: 'modx-package-browser-repositories' ,id: 'modx-package-browser-repositories' },{ xtype:'modx-package-browser-grid' ,id:'modx-package-browser-grid' ,bodyCssClass: 'grid-with-buttons' },{ xtype: 'modx-package-browser-details' ,id: 'modx-package-browser-details' ,bodyCssClass: 'modx-template-detail' },{ xtype: 'modx-package-browser-view' ,id: 'modx-package-browser-view' ,bodyCssClass: 'modx-template-detail' }] }] }); MODx.panel.PackagesBrowser.superclass.constructor.call(this,config); }; Ext.extend(MODx.panel.PackagesBrowser,MODx.Panel,{ activate: function(){ Ext.getCmp('modx-layout').hideLeftbar(true, false); Ext.getCmp('card-container').getLayout().setActiveItem(this.id); Ext.getCmp('modx-package-browser-home').activate(); this.updateBreadcrumbs(_('provider_home_msg')); } ,updateBreadcrumbs: function(msg, highlight){ var bd = { text: msg }; if(highlight){ bd.className = 'highlight'; } bd.trail = [{ text : _('package_browser') }]; Ext.getCmp('packages-breadcrumbs').updateDetail(bd); } ,showWait: function(){ if (!this.wait) { this.wait = new MODx.PackageBrowserWaitWindow(); } this.wait.show(); } ,hideWait: function() { if (this.wait) { this.wait.destroy(); delete this.wait; } } }); Ext.reg('modx-panel-packages-browser',MODx.panel.PackagesBrowser);