/** * Loads the resource update page * * @class MODx.page.UpdateResource * @extends MODx.Component * @param {Object} config An object of config properties * @xtype modx-page-resource-update */ MODx.page.UpdateResource = function(config) { config = config || {record:{}}; config.record = config.record || {}; Ext.apply(config.record,{ 'parent-cmb': config.record['parent'] }); Ext.applyIf(config,{ url: MODx.config.connector_url ,which_editor: 'none' ,formpanel: 'modx-panel-resource' ,id: 'modx-page-update-resource' ,action: 'resource/update' ,components: [{ xtype: config.panelXType || 'modx-panel-resource' ,renderTo: config.panelRenderTo || 'modx-panel-resource-div' ,resource: config.resource ,record: config.record || {} ,publish_document: config.publish_document ,show_tvs: config.show_tvs ,mode: config.mode ,url: config.url }] ,buttons: this.getButtons(config) }); MODx.page.UpdateResource.superclass.constructor.call(this,config); if (!Ext.isIE) { Ext.EventManager.on(window, 'beforeunload',function(e) { MODx.releaseLock(this.config.resource); MODx.sleep(400); return false; }, this); } new Ext.KeyMap(Ext.getBody(), { key: 'p' ,alt: true ,ctrl: true ,fn: this.preview ,scope: this }); }; Ext.extend(MODx.page.UpdateResource,MODx.Component,{ preview: function() { window.open(this.config.preview_url); return false; } ,duplicateResource: function(btn,e) { MODx.msg.confirm({ text: _('resource_duplicate_confirm') ,url: MODx.config.connector_url ,params: { action: 'resource/duplicate' ,id: this.config.resource } ,listeners: { success: {fn:function(r) { MODx.loadPage('resource/update', 'id='+r.object.id); },scope:this} } }); } ,deleteResource: function(btn,e) { MODx.msg.confirm({ title: this.config.record.pagetitle ? _('resource_delete') + ' ' + this.config.record.pagetitle + ' (' + this.config.resource + ')' : _('resource_delete') ,text: _('resource_delete_confirm') ,url: MODx.config.connector_url ,params: { action: 'resource/delete' ,id: this.config.resource } ,listeners: { success: {fn:function(r) { MODx.loadPage('resource/update', 'id='+r.object.id); },scope:this} } }); } ,cancel: function(btn,e) { var fp = Ext.getCmp(this.config.formpanel); if (fp && fp.isDirty()) { Ext.Msg.confirm(_('warning'),_('resource_cancel_dirty_confirm'),function(e) { if (e == 'yes') { fp.warnUnsavedChanges = false; MODx.releaseLock(MODx.request.id); MODx.sleep(400); MODx.loadPage('?'); } },this); } else { MODx.releaseLock(MODx.request.id); MODx.loadPage('?'); } } ,getButtons: function(cfg) { var btns = []; btns.push({ text: cfg.lockedText || _('locked') ,id: 'modx-abtn-locked' ,handler: Ext.emptyFn ,hidden: (cfg.canSave == 1) ,disabled: true }); btns.push({ process: 'resource/update' ,text: _('save') ,id: 'modx-abtn-save' ,cls: 'primary-button' ,method: 'remote' ,hidden: !(cfg.canSave == 1) //,checkDirty: MODx.request.reload ? false : true ,keys: [{ key: MODx.config.keymap_save || 's' ,ctrl: true }] }); if (cfg.canDuplicate == 1 && (cfg.record.parent !== parseInt(MODx.config.tree_root_id) || cfg.canCreateRoot == 1)) { btns.push({ text: _('duplicate') ,id: 'modx-abtn-duplicate' ,handler: this.duplicateResource ,scope:this }); } if (cfg.canDelete == 1 && !cfg.locked) { btns.push({ text: _('delete') ,id: 'modx-abtn-delete' ,handler: this.deleteResource ,scope:this }); } btns.push({ text: _('view') ,id: 'modx-abtn-preview' ,handler: this.preview ,scope: this }); btns.push({ text: _('cancel') ,id: 'modx-abtn-cancel' ,handler: this.cancel ,scope: this }); btns.push({ text: _('help_ex') ,id: 'modx-abtn-help' ,handler: MODx.loadHelpPane }); return btns; } }); Ext.reg('modx-page-resource-update',MODx.page.UpdateResource);