| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438 |
- /**
- * The panel who shows before package installation
- *
- * @class MODx.panel.PackageMetaPanel
- * @extends MODx.Tabs
- * @param {Object} config An object of options.
- * @xtype modx-package-metapanel
- */
- MODx.panel.PackageMetaPanel = function(config) {
- config = config || {};
- Ext.applyIf(config,{
- cls: 'vertical-tabs-panel wrapped'
- // same as in parent class
- // ,headerCfg: { tag: 'div', cls: 'x-tab-panel-header vertical-tabs-header' }
- // ,bwrapCfg: { tag: 'div', cls: 'x-tab-panel-bwrap vertical-tabs-bwrap' }
- // ,defaults: {
- // bodyCssClass: 'vertical-tabs-body'
- // ,autoScroll: true
- // ,autoHeight: true
- // ,autoWidth: true
- // }
- // ,layoutOnTabChange: true
- // ,listeners:{
- // tabchange: function(tb, pnl){
- // w = this.bwrap.getWidth();
- // this.body.setWidth(w);
- // this.doLayout();
- // }
- // ,scope: this
- // }
- ,items: []
- });
- MODx.panel.PackageMetaPanel.superclass.constructor.call(this,config);
- };
- Ext.extend(MODx.panel.PackageMetaPanel,MODx.VerticalTabs,{
- updatePanel: function(meta, record){
- if(meta.changelog != undefined){
- this.addTab(_('changelog'), 'changelog', meta);
- }
- if(meta.requires != undefined){
- this.addDependenciesTab(_('dependencies'), 'dependencies', meta, record);
- }
- if(meta.readme != undefined){
- this.addTab(_('readme'), 'readme', meta);
- }
- if(meta.license != undefined){
- this.addTab(_('license'), 'license', meta);
- }
- this.setActiveTab(0);
- Ext.getCmp('modx-content').doLayout();
- }
- ,addTab: function(title, id, data){
- var tab = this.getItem(id);
- if (!tab) {
- this.add({
- title: title
- ,xtype:'modx-template-panel'
- ,id: id +'-tab'
- ,markup: '{'+id+'}'
- ,bodyCssClass: 'meta-wrapper'
- ,listeners: {
- afterrender: function() {
- this.updateDetail( data );
- }
- }
- });
- } else {
- tab.updateDetail(data);
- }
- }
- ,addDependenciesTab: function(title, id, data, pkgInfo){
- var tab = this.getItem(id);
- if (!tab) {
- this.add({
- title: title
- ,xtype:'modx-panel-package-dependencies'
- ,metaPanel: this
- ,pkgInfo: pkgInfo
- ,id: id +'-tab'
- ,height: '1000px'
- ,width: 500
- });
- } else {
- Ext.getCmp('modx-grid-package-dependencies').refresh();
- }
- }
- });
- Ext.reg('modx-package-meta-panel',MODx.panel.PackageMetaPanel);
- /**
- * The panel who shows before package installation
- *
- * @class MODx.panel.PackageBeforeInstall
- * @extends MODx.panel.PackageMetaPanel
- * @param {Object} config An object of options.
- * @xtype modx-package-beforeinstall
- */
- MODx.panel.PackageBeforeInstall = function(config) {
- config = config || {};
- this.setupOptions = null;
- Ext.applyIf(config,{});
- MODx.panel.PackageBeforeInstall.superclass.constructor.call(this,config);
- };
- Ext.extend(MODx.panel.PackageBeforeInstall, MODx.panel.PackageMetaPanel,{
- activate: function(){
- Ext.getCmp(this.ownerCt.id).getLayout().setActiveItem(this.id);
- this.removeAll();
- }
- ,updateBreadcrumbs: function(msg, rec){
- var bc = Ext.getCmp('packages-breadcrumbs');
- var bd = bc.getData();
- bd.text = msg;
- bd.trail.shift();
- if (bd.trail.length > 0) {
- bd.trail[bd.trail.length - 1].install = true;
- }
- /* Get the package name. By default it's stored in data.name,
- but in case of package update, the name is stored in data.package_name. */
- var name = rec.data.name;
- if (name === undefined) {
- name = rec.data.package_name
- }
- var newBcItem = {
- text : _('install') + ' ' + name
- ,rec: rec
- };
- bd.trail.push(newBcItem);
- bc.updateDetail(bd);
- }
- ,updatePanel: function(meta, record){
- var installBtn = Ext.getCmp('package-install-btn');
- var setupoptionsBtn = Ext.getCmp('package-show-setupoptions-btn');
- this.updateBreadcrumbs(_('license_agreement_desc'), record);
- Ext.getCmp('package-list-reset').show();
- installBtn.hide().signature = '';
- setupoptionsBtn.hide();
- if(meta.changelog != undefined){
- this.addTab(_('changelog'), 'changelog', meta);
- }
- if(meta.requires != undefined){
- this.addDependenciesTab('Dependencies', 'dependencies', meta, record);
- } else {
- setupoptionsBtn.enable().setText(_('setup_options')).syncSize();
- installBtn.enable().setText(_('continue')).syncSize();
- }
- if(meta.readme != undefined){
- this.addTab(_('readme'), 'readme', meta);
- }
- if(meta.license != undefined){
- this.addTab(_('license'), 'license', meta);
- }
- if(meta['setup-options'] != null && meta['setup-options'] != ''){
- setupoptionsBtn.show().signature = record.data.signature;
- this.setupOptions = meta['setup-options'];
- } else {
- installBtn.show().signature = record.data.signature;
- }
- this.setActiveTab(0);
- Ext.getCmp('modx-content').doLayout();
- }
- ,getOptions: function(){
- return this.setupOptions;
- }
- });
- Ext.reg('modx-package-beforeinstall',MODx.panel.PackageBeforeInstall);
- /**
- * The panel to view package detail
- *
- * @class MODx.panel.PackageDetails
- * @extends MODx.Panel
- * @param {Object} config An object of options.
- * @xtype modx-package-browser-details
- */
- MODx.panel.PackageDetails = function(config) {
- config = config || {};
- Ext.applyIf(config,{
- layout: 'column'
- ,border: false
- ,autoHeight: true
- ,items:[{
- xtype: 'modx-template-panel'
- ,id: 'modx-package-details-metas'
- ,columnWidth: 1
- ,markup: '<div class="details">'
- +'<tpl for=".">'
- +'<tpl if="readme">'
- +'<div class="item">'
- +'<h4>'+_('readme')+'</h4>'
- +'{readme}'
- +'</div>'
- +'</tpl>'
- +'<tpl if="changelog">'
- +'<div class="item">'
- +'<h4>'+_('changelog')+'</h4>'
- +'{changelog}'
- +'</div>'
- +'</tpl>'
- +'<tpl if="license">'
- +'<div class="item">'
- +'<h4>'+_('license')+'</h4>'
- +'{license}'
- +'</div>'
- +'</tpl>'
- +'</tpl>'
- +'</div>'
- },{
- xtype: 'modx-template-panel'
- ,id: 'modx-package-details-aside'
- ,cls: 'aside-details'
- ,width: 250
- ,markup: '<div class="details">'
- +'<tpl for=".">'
- +'<div class="selected">'
- +'<h5>{package_name}</h5>'
- +'</div>'
- +'<div class="infos description">'
- +'<h4>'+_('information')+'</h4>'
- +'<ul>'
- +'<li>'
- +'<span class="infoname">'+_('signature')+':</span>'
- +'<span class="infovalue">{signature}</span>'
- +'</li>'
- +'<li>'
- +'<span class="infoname">'+_('uploaded_on')+':</span>'
- +'<span class="infovalue">{created}</span>'
- +'</li>'
- +'<li>'
- +'<span class="infoname">'+_('installed')+':</span>'
- +'<span class="infovalue">{installed}</span>'
- +'</li>'
- +'<li>'
- +'<span class="infoname">'+_('last_updated')+':</span>'
- +'<span class="infovalue">{updated}</span>'
- +'</li>'
- +'<li>'
- +'<span class="infoname">'+_('provider')+':</span>'
- +'<span class="infovalue">{provider}</span>'
- +'</li>'
- +'</ul>'
- +'</div>'
- +'</tpl>'
- +'</div>'
- }]
- });
- MODx.panel.PackageDetails.superclass.constructor.call(this,config);
- };
- Ext.extend(MODx.panel.PackageDetails,MODx.Panel,{
- activate: function(){
- Ext.getCmp(this.ownerCt.id).getLayout().setActiveItem(this.id);
- }
- ,updateBreadcrumbs: function(msg){
- Ext.getCmp('packages-breadcrumbs').updateDetail({
- text : msg
- ,trail : [{ text : _('package_details') }]
- });
- }
- ,updateDetail: function(rec){
- this.updateBreadcrumbs(_('package_details_for',{'package': rec.package_name}));
- Ext.getCmp('modx-package-details-metas').updateDetail(rec);
- Ext.getCmp('modx-package-details-aside').updateDetail(rec);
- }
- });
- Ext.reg('modx-package-details',MODx.panel.PackageDetails);
- MODx.panel.PackageDependencies = function(config) {
- config = config || {};
- Ext.apply(config,{
- border: false
- ,baseCls: 'modx-formpanel'
- ,cls: 'auto-width'
- ,bodyCssClass: 'vertical-tabs-body auto-width auto-height'
- ,items: [{
- html: _('dependencies')
- ,xtype: 'modx-header'
- },{
- xtype: 'modx-grid-package-dependencies'
- ,preventRender: true
- ,metaPanel: config.metaPanel
- ,pkgInfo: config.pkgInfo
- ,dependenciesPanel: this
- }]
- });
- MODx.panel.PackageDependencies.superclass.constructor.call(this,config);
- };
- Ext.extend(MODx.panel.PackageDependencies,MODx.Panel);
- Ext.reg('modx-panel-package-dependencies',MODx.panel.PackageDependencies);
- MODx.grid.PackageDependencies = function(config) {
- config = config || {};
- var cols = [];
- cols.push({ header: _('name') ,dataIndex: 'name' ,id:'main-installed' ,renderer: { fn: this.mainColumnRenderer, scope: this } });
- cols.push({ header: _('constraints') ,dataIndex: 'constraints', id: 'meta-col', fixed:true, width:160 });
- cols.push({ header: _('installed') ,dataIndex: 'installed', id: 'info-col', fixed:true, width: 160 ,renderer: this.installColumnRenderer });
- Ext.applyIf(config,{
- id: 'modx-grid-package-dependencies'
- ,baseParams: {
- action: 'workspace/packages/getdependencies'
- ,signature: config.pkgInfo.data.signature
- }
- ,fields: ['name', 'constraints', 'installed', 'parentSignature', 'signature', 'downloaded', 'actions']
- ,paging: false
- ,loadMask: true
- ,tbar: []
- ,columns: cols
- });
- MODx.grid.PackageDependencies.superclass.constructor.call(this,config);
- this.store.on('load', function () {
- if (!this.checkDependencies()) {
- Ext.getCmp('package-show-setupoptions-btn').disable().setText(_('install_dependencies_first')).syncSize();
- Ext.getCmp('package-install-btn').disable().setText(_('install_dependencies_first')).syncSize();
- config.metaPanel.setActiveTab(1);
- }
- }, this);
- };
- Ext.extend(MODx.grid.PackageDependencies,MODx.grid.Package, {
- mainColumnRenderer: function (value, metaData, record, rowIndex, colIndex, store) {
- var rec = record.data;
- var state = (rec.installed !== null) ? ' installed' : ' not-installed';
- var values = {name: value, state: state, actions: null, message: null};
- var h = [];
- if (value === 'php' || value === 'modx') {
- values.name = _(value);
- if (!rec.installed) {
- values.message = [{
- className: 'actions red',
- text: _(value + '_constraints')
- }];
- metaData.id = 'main-constraint';
- }
- } else {
- if (rec.downloaded === false && rec.installed === false) {
- h.push({className: 'download primary-button', text: _('download')});
- metaData.id = 'main'
- } else {
- if (rec.installed === false) {
- h.push({className: 'install primary-button', text: _('install')});
- metaData.id = 'main'
- }
- }
- values.actions = h;
- }
- return this.mainColumnTpl.apply(values);
- }
- ,installColumnRenderer: function (value, metaData, record, rowIndex, colIndex, store) {
- switch (value) {
- case '':
- case false:
- metaData.css = 'not-installed';
- if (record.data.name === 'php' || record.data.name === 'modx') {
- return _('not_available');
- } else {
- return _('not_installed');
- }
- default:
- metaData.css = '';
- if (record.data.name === 'php' || record.data.name === 'modx') {
- return _('available');
- } else {
- return _('installed');
- }
- }
- }
- ,downloadPackage: function(rec) {
- this.loadMask.show();
- Ext.Ajax.request({
- url: MODx.config.connector_url
- ,params: {
- action: 'workspace/packages/dependency/download'
- ,signature: rec.data.parentSignature
- ,name: rec.data.name
- ,constraints: rec.data.constraints
- }
- ,method: 'GET'
- ,scope: this
- ,success: function(result,request) {
- this.store.reload();
- }
- ,failure: function(result,request) {
- this.loadMask.hide();
- Ext.MessageBox.alert(_('failed'), result.responseText);
- }
- });
- }
- ,onClick: function(e){
- var t = e.getTarget();
- var elm = t.className.split(' ')[0];
- if(elm == 'controlBtn'){
- var act = t.className.split(' ')[1];
- var record = this.getSelectionModel().getSelected();
- this.menu.record = record.data;
- switch (act) {
- case 'install':
- case 'reinstall':
- this.install(record);
- break;
- case 'download':
- this.downloadPackage(record);
- break;
- default:
- break;
- }
- }
- }
- ,checkDependencies: function() {
- var installed = this.store.collect('installed', true);
- return installed.indexOf(false) == -1;
- }
- });
- Ext.reg('modx-grid-package-dependencies',MODx.grid.PackageDependencies);
|