| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- fred.grid.Themes = function (config) {
- config = config || {};
- config.permission = config.permission || {};
-
- if (config.permission.fred_themes_save) {
- config.save_action = 'mgr/themes/updatefromgrid';
- config.autosave = true;
- }
-
- if (!config.permission.fred_themes_save && !config.permission.fred_themes_build && !config.permission.fred_themes_delete) {
- config.showGear = false;
- }
-
- Ext.applyIf(config, {
- url: fred.config.connectorUrl,
- baseParams: {
- action: 'mgr/themes/getlist'
- },
- preventSaveRefresh: false,
- fields: ['id', 'name', 'description', 'config', 'latest_build', 'theme_folder', 'default_element'],
- paging: true,
- remoteSort: true,
- emptyText: _('fred.themes.none'),
- columns: [
- {
- header: _('id'),
- dataIndex: 'id',
- sortable: true,
- hidden: true
- },
- {
- header: _('fred.themes.name'),
- dataIndex: 'name',
- sortable: true,
- width: 80,
- editor: this.getEditor(config, {xtype: 'textfield'})
- },
- {
- header: _('fred.themes.description'),
- dataIndex: 'description',
- sortable: true,
- width: 80,
- editor: this.getEditor(config, {xtype: 'textfield'})
- },
- {
- header: _('fred.themes.theme_folder'),
- dataIndex: 'theme_folder',
- sortable: true,
- width: 80,
- editor: this.getEditor(config, {xtype: 'textfield'})
- },
- {
- header: _('fred.themes.default_element'),
- dataIndex: 'default_element',
- sortable: true,
- width: 80,
- editor: this.getEditor(config, {xtype: 'textfield'})
- },
- {
- header: _('fred.themes.latest_build'),
- dataIndex: 'latest_build',
- sortable: false,
- width: 80,
- renderer: function(value, metaData, record, rowIndex, colIndex, store) {
- if (value === false) return '';
-
- return '<a href="' + fred.getPageUrl('theme/download', {theme: record.id}) +'">' + value + '</a>';
- }
- }
- ],
- tbar: this.getTbar(config)
- });
- fred.grid.Themes.superclass.constructor.call(this, config);
- };
- Ext.extend(fred.grid.Themes, fred.grid.GearGrid, {
- getMenu: function () {
- var m = [];
- if (this.config.permission.fred_themes_build) {
- m.push({
- text: _('fred.themes.build'),
- handler: this.buildTheme
- });
- }
-
- if (this.config.permission.fred_themes_save) {
- if (m.length > 0) {
- m.push('-');
- }
-
- m.push({
- text: _('fred.themes.update'),
- handler: this.updateTheme
- });
- m.push('-');
- m.push({
- text: _('fred.themes.duplicate'),
- handler: this.duplicateTheme
- });
- }
-
- if (this.config.permission.fred_themes_delete) {
- if (m.length > 0) {
- m.push('-');
- }
-
- m.push({
- text: _('fred.themes.remove'),
- handler: this.removeTheme
- });
- }
-
- return m;
- },
-
- getTbar: function(config) {
- var output = [];
- if (config.permission.fred_themes_save) {
- output.push({
- text: _('fred.themes.create'),
- handler: this.createTheme
- });
- }
-
- output.push([
- '->',
- {
- xtype: 'textfield',
- emptyText: _('fred.themes.search_name'),
- listeners: {
- 'change': {
- fn: this.search,
- scope: this
- },
- 'render': {
- fn: function (cmp) {
- new Ext.KeyMap(cmp.getEl(), {
- key: Ext.EventObject.ENTER,
- fn: function () {
- this.blur();
- return true;
- },
- scope: cmp
- });
- },
- scope: this
- }
- }
- }
- ]);
-
- return output;
- },
- createTheme: function (btn, e) {
- var createTheme = MODx.load({
- xtype: 'fred-window-theme',
- listeners: {
- success: {
- fn: function (r,b,x) {
- this.refresh();
- if (r && r.a && r.a.result && r.a.result.object && r.a.result.object.theme_folder !== '') {
- MODx.msg.alert(_('fred.themes.theme_dir_msg_title'), _('fred.themes.theme_dir_msg', {theme_folder: r.a.result.object.theme_folder}));
- }
- },
- scope: this
- }
- }
- });
- createTheme.show(e.target);
- return true;
- },
- updateTheme: function (btn, e) {
- var updateTheme = MODx.load({
- xtype: 'fred-window-theme',
- title: _('fred.themes.update'),
- action: 'mgr/themes/update',
- isUpdate: true,
- record: this.menu.record,
- listeners: {
- success: {
- fn: function () {
- this.refresh();
- },
- scope: this
- }
- }
- });
- updateTheme.fp.getForm().reset();
- updateTheme.fp.getForm().setValues(this.menu.record);
- updateTheme.show(e.target);
- return true;
- },
-
- buildTheme: function (btn, e) {
- if ((this.menu.record.name.toLowerCase() === 'default') || (this.menu.record.theme_folder.toLowerCase() === 'default')) {
- MODx.msg.alert(_('fred.themes.build_default_title'), _('fred.themes.build_default_desc'));
- return;
- }
-
- if (!this.menu.record.config || (typeof this.menu.record.config !== 'object')) this.menu.record.config = {};
-
- this.menu.record.config.id = this.menu.record.id;
- this.menu.record.config.theme_folder = this.menu.record.theme_folder;
- this.menu.record.config.name = this.menu.record.config.name || this.menu.record.name.toLowerCase().replace(/ /g, '');
- this.menu.record.config.release = this.menu.record.config.release || 'pl';
- this.menu.record.config.version = this.menu.record.config.version || '1.0.0';
- this.menu.record.config['categories[]'] = (this.menu.record.config.categories && Array.isArray(this.menu.record.config.categories)) ? this.menu.record.config.categories.join() : '';
-
- var buildTheme = MODx.load({
- xtype: 'fred-window-theme-build',
- title: _('fred.themes.build'),
- action: 'mgr/themes/build',
- isUpdate: true,
- record: this.menu.record.config,
- listeners: {
- success: {
- fn: function () {
- this.refresh();
- },
- scope: this
- }
- }
- });
- buildTheme.fp.getForm().setValues(this.menu.record.config);
- buildTheme.show(e.target);
- return true;
- },
- duplicateTheme: function (btn, e) {
- var record = {
- id: this.menu.record.id,
- name: _('fred.themes.theme_duplicate_name', {theme: this.menu.record.name})
- };
- var duplicateTheme = MODx.load({
- xtype: 'fred-window-theme-duplicate',
- record: record,
- listeners: {
- success: {
- fn: function () {
- this.refresh();
- },
- scope: this
- }
- }
- });
- duplicateTheme.fp.getForm().reset();
- duplicateTheme.fp.getForm().setValues(record);
- duplicateTheme.show(e.target);
- return true;
- },
- removeTheme: function (btn, e) {
- if (!this.menu.record) return false;
- var removeTheme = MODx.load({
- xtype: 'fred-window-remove-theme',
- record: this.menu.record,
- listeners: {
- success: {
- fn: function () {
- this.refresh();
- fred.globalEvents.fireEvent('delete-theme', this.menu.record)
- },
- scope: this
- }
- }
- });
- removeTheme.fp.getForm().reset();
- removeTheme.fp.getForm().setValues(this.menu.record);
- removeTheme.show(e.target);
-
- return true;
- },
- search: function (field, value) {
- var s = this.getStore();
- s.baseParams.search = value;
- this.getBottomToolbar().changePage(1);
- },
- filterCombo: function (combo, record) {
- var s = this.getStore();
- s.baseParams[combo.filterName] = record.data.v;
- this.getBottomToolbar().changePage(1);
- },
- getEditor: function(config, editor) {
- if (config.permission.fred_themes_save) return editor;
- return false;
- }
- });
- Ext.reg('fred-grid-themes', fred.grid.Themes);
|