fred.panel.ElementOptionSet = function (config) { config = config || {}; config.id = config.id || 'fred-panel-element-option-set'; Ext.applyIf(config, { border: false, cls: 'container', url: fred.config.connectorUrl, baseParams: { action: 'mgr/element_option_sets/update' }, useLoadingMask: true, items: this.getItems(config), listeners: { 'setup': { fn: this.setup, scope: this }, 'success': { fn: this.success, scope: this } } }); fred.panel.ElementOptionSet.superclass.constructor.call(this, config); }; Ext.extend(fred.panel.ElementOptionSet, MODx.FormPanel, { setup: function () { if (this.config.isUpdate) { MODx.Ajax.request({ url: this.config.url, params: { action: 'mgr/element_option_sets/get', id: MODx.request.id }, listeners: { 'success': { fn: function (r) { if (Array.isArray(r.object.data) && r.object.data.length === 0) { r.object.data = ''; } else { if (typeof r.object.data === 'object') { r.object.data = JSON.stringify(r.object.data, null, 2); } } this.getForm().setValues(r.object); this.fireEvent('ready', r.object); MODx.fireEvent('ready'); }, scope: this } } }); } else { var theme = MODx.request.theme; if (theme) { this.getForm().setValues({theme: theme}); } this.fireEvent('ready'); MODx.fireEvent('ready'); } }, success: function (o, r) { if (this.config.isUpdate == false) { fred.loadPage('element/option_set/update', {id: o.result.object.id}); } }, getItems: function (config) { return [ { html: '

' + ((config.isUpdate == true) ? _('fred.element_option_sets.update') : _('fred.element_option_sets.create')) + '

', border: false, cls: 'modx-page-header' }, { name: 'id', xtype: 'hidden' }, this.getGeneralFields(config), { html: '
', bodyCssClass: 'transparent-background' }, this.getColumnsGrid(config) ]; }, getGeneralFields: function (config) { return [ { deferredRender: false, border: true, defaults: { autoHeight: true, layout: 'form', labelWidth: 150, bodyCssClass: 'main-wrapper', layoutOnTabChange: true }, items: [ { defaults: { msgTarget: 'side', autoHeight: true }, cls: 'form-with-labels', border: false, items: [ { layout: 'column', border: false, height: 100, defaults: { layout: 'form', labelAlign: 'top', labelSeparator: '', anchor: '100%', border: false }, items: [ { columnWidth: 0.7, border: false, defaults: { msgTarget: 'under' }, items: [ { xtype: 'textfield', fieldLabel: _('fred.element_option_sets.name'), name: 'name', anchor: '100%', allowBlank: false }, { xtype: 'textarea', fieldLabel: _('fred.element_option_sets.description'), name: 'description', anchor: '100%' } ] }, { columnWidth: 0.3, border: false, defaults: { msgTarget: 'under' }, items: [ { xtype: 'fred-combo-themes', fieldLabel: _('fred.element_option_sets.theme'), name: 'theme', hiddenName: 'theme', anchor: '100%', allowBlank: false, isUpdate: config.isUpdate }, { xtype: 'fred-combo-boolean', useInt: true, fieldLabel: _('fred.element_option_sets.complete'), name: 'complete', hiddenName: 'complete', anchor: '100%', value: 1 } ] } ] } ] } ] } ]; }, getColumnsGrid: function (config) { var items = [ { html: '
', bodyCssClass: 'transparent-background' } ]; items.push([ { deferredRender: false, border: true, defaults: { autoHeight: true, layout: 'form', labelWidth: 150, bodyCssClass: 'main-wrapper', layoutOnTabChange: true }, items: [ { defaults: { msgTarget: 'side', autoHeight: true }, cls: 'form-with-labels', border: false, items: [ { layout: 'column', border: false, height: 100, defaults: { layout: 'form', labelAlign: 'top', labelSeparator: '', anchor: '100%', border: false }, items: [ { columnWidth: 1, border: false, defaults: { msgTarget: 'under' }, items: [ { xtype: Ext.ComponentMgr.isRegistered('modx-texteditor') ? 'modx-texteditor' : 'textarea', mimeType: 'application/json', name: 'data', id: 'data', hideLabel: true, anchor: '100%', height: 400, grow: false, value: '' } ] } ] } ] } ] } ]); return items; } }); Ext.reg('fred-panel-element-option-set', fred.panel.ElementOptionSet);