fred.panel.Home = function (config) { config = config || {}; config.permission = config.permission || {}; Ext.apply(config, { border: false, baseCls: 'modx-formpanel', cls: 'container', id: 'fred-home-panel', items: this.getItems(config) }); fred.panel.Home.superclass.constructor.call(this, config); }; Ext.extend(fred.panel.Home, MODx.Panel, { getHelpPath: function() { var defaultPath = ''; var tabs = this.find('stateId', 'fred-tab-home'); if (tabs.length !== 1) { return defaultPath; } tabs = tabs[0]; var topLevelTab = tabs.getActiveTab(); var childTab = topLevelTab.find('xtype', 'modx-vtabs'); if (!topLevelTab.helpPath && (childTab.length === 1)) { return childTab[0].getActiveTab().helpPath || defaultPath; } else { return topLevelTab.helpPath || defaultPath; } }, getItems: function(config) { return [ { html: '

' + _('fred.home.page_title') + '

', border: false, cls: 'modx-page-header' }, { xtype: 'modx-tabs', stateful: true, stateId: 'fred-tab-home', stateEvents: ['tabchange'], getState: function () { return { activeItem: this.items.indexOf(this.getActiveTab()) }; }, defaults: { border: false, autoHeight: true }, border: true, activeItem: 0, hideMode: 'offsets', items: this.getTopTabs(config) } ]; }, getTopTabs: function(config) { var output = []; var elementsTabItems = this.getElementsTab(config); if (elementsTabItems.length > 0) { output.push({ title: _('fred.home.elements'), items: [ { xtype: 'modx-vtabs', deferredRender: true, stateful: true, stateId: 'fred-tab-home-elements', stateEvents: ['tabchange'], getState: function () { return { activeItem: this.items.indexOf(this.getActiveTab()) }; }, items: elementsTabItems } ] }); } var blueprintsTabItems = this.getBlueprintsTab(config); if (blueprintsTabItems.length > 0) { output.push({ title: _('fred.home.blueprints'), items: [ { xtype: 'modx-vtabs', deferredRender: true, stateful: true, stateId: 'fred-tab-home-blueprints', stateEvents: ['tabchange'], getState: function () { return { activeItem: this.items.indexOf(this.getActiveTab()) }; }, items: blueprintsTabItems } ] }); } var themesTabItems = this.getThemesTab(config); if (themesTabItems.length > 0) { output.push({ title: _('fred.home.themes'), items: [ { xtype: 'modx-vtabs', deferredRender: true, stateful: true, stateId: 'fred-tab-home-themes', stateEvents: ['tabchange'], getState: function () { return { activeItem: this.items.indexOf(this.getActiveTab()) }; }, items: themesTabItems } ] }); } if (config.permission.fred_media_sources) { output.push({ title: _('fred.home.media_sources'), helpPath: 'cmp/media_sources/', items: [ { xtype: 'fred-grid-media-sources', preventRender: true, cls: 'main-wrapper' } ] }); } return output; }, getElementsTab: function(config) { var output = []; if (config.permission.fred_elements) { output.push({ title: _('fred.home.elements'), helpPath: 'cmp/elements/', items: [ { xtype: 'fred-grid-elements', preventRender: true, cls: 'main-wrapper', permission: config.permission } ] }); } if (config.permission.fred_element_categories) { output.push({ title: _('fred.home.element_categories'), helpPath: 'cmp/element_categories/', items: [ { xtype: 'fred-grid-element-categories', preventRender: true, cls: 'main-wrapper', permission: config.permission } ] }); } if (config.permission.fred_element_option_sets) { output.push({ title: _('fred.home.option_sets'), helpPath: 'cmp/option_sets/', items: [ { xtype: 'fred-grid-element-option-sets', preventRender: true, cls: 'main-wrapper', permission: config.permission } ] }); } if (config.permission.fred_element_rtes) { output.push({ title: _('fred.home.rte_configs'), helpPath: 'cmp/rte_configs/', items: [ { xtype: 'fred-grid-element-rte-configs', preventRender: true, cls: 'main-wrapper', permission: config.permission } ] }); } if (config.permission.fred_element_rebuild) { output.push({ title: _('fred.home.rebuild'), helpPath: 'cmp/rebuild/', items: [ { cls: 'main-wrapper', items: [ { html: '

' + _('fred.rebuild.rebuild_desc') + '


' }, { xtype: 'button', text: _('fred.rebuild.rebuild'), handler: function() { var topic = '/fred/mgr/generate/refresh/'; var console = MODx.load({ xtype: 'modx-console', register: 'mgr', topic: topic, show_filename: 0 }); console.show(Ext.getBody()); MODx.Ajax.request({ url: fred.config.connectorUrl, params: { action: 'mgr/generate/refresh', register: 'mgr', topic: topic }, listeners: { success: { fn: function() { console.fireEvent('complete'); console = null }, scope:this } } }); } } ] } ] }); } return output; }, getBlueprintsTab: function(config) { var output = []; if (config.permission.fred_blueprints) { output.push({ title: _('fred.home.blueprints'), helpPath: 'cmp/blueprints/', items: [ { xtype: 'fred-grid-blueprints', preventRender: true, cls: 'main-wrapper', permission: config.permission } ] }); } if (config.permission.fred_blueprint_categories) { output.push({ title: _('fred.home.blueprint_categories'), helpPath: 'cmp/blueprint_categories/', items: [ { xtype: 'fred-grid-blueprint-categories', preventRender: true, cls: 'main-wrapper', permission: config.permission } ] }); } return output; }, getThemesTab: function(config) { var output = []; if (config.permission.fred_themes) { output.push({ title: _('fred.home.themes'), helpPath: 'cmp/themes/', items: [ { xtype: 'fred-grid-themes', preventRender: true, cls: 'main-wrapper', permission: config.permission } ] }); } if (config.permission.fred_themed_templates) { output.push({ title: _('fred.home.themed_templates'), helpPath: 'cmp/themed_templates/', items: [ { xtype: 'fred-grid-themed-templates', preventRender: true, cls: 'main-wrapper', permission: config.permission } ] }); } return output; } }); Ext.reg('fred-panel-home', fred.panel.Home);