| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506 |
- /**
- * Loads a grid for managing lexicons.
- *
- * @class MODx.grid.Lexicon
- * @extends MODx.grid.Grid
- * @param {Object} config An object of configuration properties
- * @xtype modx-grid-lexicon
- */
- MODx.grid.Lexicon = function(config) {
- config = config || {};
- Ext.applyIf(config,{
- id: 'modx-grid-lexicon'
- ,url: MODx.config.connector_url
- ,fields: ['name','value','namespace','topic','language','editedon','overridden']
- ,baseParams: {
- action: 'workspace/lexicon/getList'
- ,'namespace': MODx.request['ns'] ? MODx.request['ns'] : 'core'
- ,topic: ''
- ,language: MODx.config.manager_language || 'en'
- }
- ,width: '98%'
- ,paging: true
- ,autosave: true
- ,save_action: 'workspace/lexicon/updatefromgrid'
- ,columns: [{
- header: _('name')
- ,dataIndex: 'name'
- ,width: 200
- ,sortable: true
- ,renderer: this._renderStatus
- },{
- header: _('value')
- ,dataIndex: 'value'
- ,width: 500
- ,sortable: false
- ,editor: {xtype: 'textarea'}
- ,renderer: this._renderStatus
- },{
- header: _('last_modified')
- ,dataIndex: 'editedon'
- ,width: 125
- ,renderer: this._renderLastModDate
- }]
- ,tbar: [{
- xtype: 'tbtext'
- ,text: _('namespace')+':'
- },{
- xtype: 'modx-combo-namespace'
- ,id: 'modx-lexicon-filter-namespace'
- ,itemId: 'namespace'
- ,preselectValue: MODx.request['ns'] ? MODx.request['ns'] : ''
- ,width: 120
- ,listeners: {
- 'select': {fn: this.changeNamespace,scope:this}
- }
- },{
- xtype: 'tbtext'
- ,text: _('topic')+':'
- },{
- xtype: 'modx-combo-lexicon-topic'
- ,id: 'modx-lexicon-filter-topic'
- ,itemId: 'topic'
- ,value: 'default'
- ,width: 120
- ,baseParams: {
- action: 'workspace/lexicon/topic/getList'
- ,'namespace': MODx.request['ns'] ? MODx.request['ns'] : ''
- ,'language': 'en'
- }
- ,listeners: {
- 'select': {fn:this.changeTopic,scope:this}
- }
- },{
- xtype: 'tbtext'
- ,text: _('language')+':'
- },{
- xtype: 'modx-combo-language'
- ,name: 'language'
- ,id: 'modx-lexicon-filter-language'
- ,itemId: 'language'
- ,value: MODx.config.manager_language || 'en'
- ,width: 100
- ,baseParams: {
- action: 'system/language/getlist'
- ,'namespace': MODx.request['ns'] ? MODx.request['ns'] : ''
- }
- ,listeners: {
- 'select': {fn:this.changeLanguage,scope:this}
- }
- }
- ,'->'
- ,{
- xtype: 'button'
- ,text: _('entry_create')
- ,cls:'primary-button'
- ,handler: this.createEntry
- ,scope: this
- },{
- xtype: 'textfield'
- ,name: 'name'
- ,id: 'modx-lexicon-filter-search'
- ,cls: 'x-form-filter'
- ,itemId: 'search'
- ,width: 120
- ,emptyText: _('search')+'...'
- ,listeners: {
- 'change': {fn:this.filter.createDelegate(this,['search'],true),scope:this}
- ,'render': {fn: function(cmp) {
- new Ext.KeyMap(cmp.getEl(), {
- key: Ext.EventObject.ENTER
- ,fn: this.blur
- ,scope: cmp
- });
- },scope:this}
- }
- },{
- xtype: 'button'
- ,id: 'modx-lexicon-filter-clear'
- ,cls: 'x-form-filter-clear'
- ,itemId: 'clear'
- ,text: _('filter_clear')
- ,listeners: {
- 'click': {fn: this.clearFilter, scope: this},
- 'mouseout': { fn: function(evt){
- this.removeClass('x-btn-focus');
- }
- }
- }
- }]
- ,pagingItems: [{
- text: _('reload_from_base')
- ,handler: this.reloadFromBase
- ,scope: this
- }
- /*
- ,{
- xtype: 'button'
- ,id: 'modx-lexicon-import-btn'
- ,text: _('lexicon_import')
- ,handler: function(btn,e) {
- this.loadWindow2(btn,e,{
- xtype: 'modx-window-lexicon-import'
- ,listeners: {
- 'success': {fn:function(o) {
- var r = o.a.result.object;
- this.setFilterParams(r['namespace'],r.topic);
- },scope:this}
- ,'show': {fn:function() {
- var w = this.windows['modx-window-lexicon-import'];
- if (w) {
- var tf = w.fp.getComponent('topic');
- var tb = this.getTopToolbar();
- if (tf && tb) {
- tf.setValue(tb.getComponent('topic').getRawValue());
- }
- }
- },scope: this}
- }
- });
- }
- ,scope: this
- },{
- xtype: 'button'
- ,id: 'modx-lexicon-export-btn'
- ,text: _('lexicon_export')
- ,handler: function(btn,e) {
- this.loadWindow2(btn,e,{
- xtype: 'modx-window-lexicon-export'
- ,listeners: {
- 'success': {fn:function(o) {
- location.href = MODx.config.connector_url+'?action=workspace/lexicon/export&HTTP_MODAUTH='+MODx.siteId+'&download='+o.a.result.message;
- },scope:this}
- ,'show': {fn:function() {
- var w = this.windows['modx-window-lexicon-export'];
- var cb = w.fp.getComponent('topic');
- if (cb) {
- var tb = this.getTopToolbar();
- cb.setNamespace(tb.getComponent('namespace').getValue(),tb.getComponent('topic').getValue());
- }
- },scope: this}
- }
- });
- }
- ,scope: this
- }*/]
- });
- MODx.grid.Lexicon.superclass.constructor.call(this,config);
- };
- Ext.extend(MODx.grid.Lexicon,MODx.grid.Grid,{
- console: null
- ,_renderStatus: function(v,md,rec,ri) {
- switch (rec.data.overridden) {
- case 1:
- return '<span style="color: green;">'+v+'</span>';break;
- case 2:
- return '<span style="color: purple;">'+v+'</span>';
- default:
- return '<span>'+v+'</span>';
- }
- }
- ,_renderLastModDate: function(value) {
- if (Ext.isEmpty(value)) {
- return '—';
- }
- return new Date(value*1000).format(MODx.config.manager_date_format + ' ' + MODx.config.manager_time_format);
- }
- ,filter: function(cb,r,i,name) {
- if (!name) {return false;}
- this.store.baseParams[name] = cb.getValue();
- this.getBottomToolbar().changePage(1);
- //this.refresh();
- return true;
- }
- ,clearFilter: function() {
- this.store.baseParams = {
- action: 'workspace/lexicon/getList'
- ,'namespace': 'core'
- ,topic: 'default'
- ,language: 'en'
- };
- this.getBottomToolbar().changePage(1);
- var tb = this.getTopToolbar();
- tb.getComponent('namespace').setValue('core');
- var tcb = tb.getComponent('topic');
- tcb.store.baseParams['namespace'] = 'core';
- tcb.store.load();
- tcb.setValue('default');
- var tcl = tb.getComponent('language');
- tcb.store.baseParams['namespace'] = 'core';
- tcb.store.load();
- tcl.setValue('en');
- tb.getComponent('search').setValue('');
- //this.refresh();
- }
- ,changeNamespace: function(cb,nv,ov) {
- this.setFilterParams(cb.getValue(),'default','en');
- }
- ,changeTopic: function(cb,nv,ov) {
- this.setFilterParams(null,cb.getValue());
- }
- ,changeLanguage: function(cb,nv,ov) {
- this.setFilterParams(null,null,cb.getValue());
- }
- ,setFilterParams: function(ns,t,l) {
- var tb = this.getTopToolbar();
- if (!tb) {return false;}
- var tcb,tcl;
- if (ns) {
- tb.getComponent('namespace').setValue(ns);
- tcl = tb.getComponent('language');
- if (tcl) {
- tcl.store.baseParams['namespace'] = ns;
- tcl.store.load({
- callback: function() {
- tcl.setValue(l || 'en');
- }
- });
- }
- tcb = tb.getComponent('topic');
- if (tcb) {
- tcb.store.baseParams['namespace'] = ns;
- tcb.store.baseParams['language'] = l ? l : (tcl ? tcl.getValue() : 'en');
- tcb.store.load({
- callback: function() {
- tcb.setValue(t || 'default');
- }
- });
- }
- } else if (t) {
- tcb = tb.getComponent('topic');
- if (tcb) {tcb.setValue(t);}
- }
- var s = this.getStore();
- if (s) {
- if (ns) {s.baseParams['namespace'] = ns;}
- if (t) {s.baseParams['topic'] = t || 'default';}
- if (l) {s.baseParams['language'] = l || 'en';}
- s.removeAll();
- }
- this.getBottomToolbar().changePage(1);
- //this.refresh();
- }
- ,loadWindow2: function(btn,e,o) {
- var tb = this.getTopToolbar();
- this.menu.record = {
- 'namespace': tb.getComponent('namespace').getValue()
- ,language: tb.getComponent('language').getValue()
- };
- if (o.xtype != 'modx-window-lexicon-import') {
- this.menu.record.topic = tb.getComponent('topic').getValue();
- }
- this.loadWindow(btn, e, o);
- }
- ,reloadFromBase: function() {
- Ext.Ajax.timeout = 0;
- var topic = '/workspace/lexicon/reload/';
- this.console = MODx.load({
- xtype: 'modx-console'
- ,register: 'mgr'
- ,topic: topic
- });
- this.console.on('complete',function(){
- this.refresh();
- },this);
- this.console.show(Ext.getBody());
- MODx.Ajax.request({
- url: this.config.url
- ,params: {action: 'workspace/lexicon/reloadFromBase' ,register: 'mgr' ,topic: topic}
- ,listeners: {
- 'success': {fn:function(r) {
- this.refresh();
- },scope:this}
- }
- });
- }
- ,revertEntry: function() {
- var p = this.menu.record;
- p.action = 'workspace/lexicon/revert';
- MODx.Ajax.request({
- url: this.config.url
- ,params: p
- ,listeners: {
- 'success': {fn:function(r) {
- this.refresh();
- },scope:this}
- }
- });
- }
- ,getMenu: function() {
- var r = this.getSelectionModel().getSelected();
- var m = [];
- if (r.data.overridden) {
- m.push({
- text: _('entry_revert')
- ,handler: this.revertEntry
- });
- }
- return m;
- }
- ,createEntry: function(btn,e) {
- var r = this.menu.record || {};
- var tb = this.getTopToolbar();
- r['namespace'] = tb.getComponent('namespace').getValue();
- r.language = tb.getComponent('language').getValue();
- r.topic = tb.getComponent('topic').getValue();
- if (!this.createEntryWindow) {
- this.createEntryWindow = MODx.load({
- xtype: 'modx-window-lexicon-entry-create'
- ,record: r
- ,listeners: {
- 'success':{fn:function(o) {
- this.refresh();
- },scope:this}
- }
- });
- }
- this.createEntryWindow.reset();
- this.createEntryWindow.setValues(r);
- this.createEntryWindow.show(e.target);
- }
- });
- Ext.reg('modx-grid-lexicon',MODx.grid.Lexicon);
- /**
- * Generates the export lexicon window.
- *
- * @class MODx.window.ExportLexicon
- * @extends MODx.Window
- * @param {Object} config An object of options.
- * @xtype modx-window-lexicon-export
- */
- MODx.window.ExportLexicon = function(config) {
- config = config || {};
- this.ident = config.ident || 'explex'+Ext.id();
- var r = config.record;
- Ext.applyIf(config,{
- title: _('lexicon_export')
- ,url: MODx.config.connector_url
- ,action: 'workspace/lexicon/export'
- ,fileUpload: true
- ,fields: [{
- html: _('lexicon_export_desc')
- ,border: false
- ,bodyStyle: 'margin: 10px;'
- ,id: 'modx-'+this.ident+'-desc'
- ,itemId: 'desc'
- ,anchor: '100%'
- },{
- xtype: 'modx-combo-namespace'
- ,fieldLabel: _('namespace')
- ,name: 'namespace'
- ,id: 'modx-'+this.ident+'-namespace'
- ,itemId: 'namespace'
- ,anchor: '100%'
- ,listeners: {
- 'select': {fn: function(cb,r,i) {
- cle = this.fp.getComponent('topic');
- if (cle) {
- cle.store.baseParams['namespace'] = cb.getValue();
- cle.setValue('');
- cle.store.reload();
- } else {MODx.debug('cle not found');}
- },scope:this}
- }
- },{
- xtype: 'modx-combo-lexicon-topic'
- ,fieldLabel: _('topic')
- ,name: 'topic'
- ,id: 'modx-'+this.ident+'-topic'
- ,itemId: 'topic'
- ,anchor: '100%'
- },{
- xtype: 'modx-combo-language'
- ,fieldLabel: _('language')
- ,name: 'language'
- ,id: 'modx-'+this.ident+'-language'
- ,itemId: 'language'
- ,anchor: '100%'
- }]
- });
- MODx.window.ExportLexicon.superclass.constructor.call(this,config);
- };
- Ext.extend(MODx.window.ExportLexicon,MODx.Window);
- Ext.reg('modx-window-lexicon-export',MODx.window.ExportLexicon);
- MODx.window.LexiconEntryCreate = function(config) {
- config = config || {};
- this.ident = config.ident || 'lexentc'+Ext.id();
- var r = config.record;
- Ext.applyIf(config,{
- title: _('entry_create')
- ,url: MODx.config.connector_url
- ,action: 'workspace/lexicon/create'
- ,fileUpload: true
- ,fields: [{
- xtype: 'textfield'
- ,fieldLabel: _('name')
- ,id: 'modx-'+this.ident+'-name'
- ,itemId: 'name'
- ,name: 'name'
- ,anchor: '100%'
- },{
- xtype: 'modx-combo-namespace'
- ,fieldLabel: _('namespace')
- ,name: 'namespace'
- ,id: 'modx-'+this.ident+'-namespace'
- ,itemId: 'namespace'
- ,anchor: '100%'
- ,listeners: {
- 'select': {fn: function(cb,r,i) {
- cle = this.fp.getComponent('topic');
- if (cle) {
- cle.store.baseParams['namespace'] = cb.getValue();
- cle.setValue('');
- cle.store.reload();
- } else {MODx.debug('cle not found');}
- },scope:this}
- }
- },{
- xtype: 'modx-combo-lexicon-topic'
- ,fieldLabel: _('topic')
- ,name: 'topic'
- ,id: 'modx-'+this.ident+'-topic'
- ,itemId: 'topic'
- ,anchor: '100%'
- },{
- xtype: 'modx-combo-language'
- ,fieldLabel: _('language')
- ,name: 'language'
- ,id: 'modx-'+this.ident+'-language'
- ,itemId: 'language'
- ,anchor: '100%'
- },{
- xtype: 'textarea'
- ,fieldLabel: _('value')
- ,id: 'modx-'+this.ident+'-value'
- ,itemId: 'value'
- ,name: 'value'
- ,anchor: '100%'
- }]
- });
- MODx.window.LexiconEntryCreate.superclass.constructor.call(this,config);
- };
- Ext.extend(MODx.window.LexiconEntryCreate,MODx.Window);
- Ext.reg('modx-window-lexicon-entry-create',MODx.window.LexiconEntryCreate);
|