manager/assets/modext/widgets/system/modx.grid.system.event.js
/**
* Loads a grid of System Events
*
* @class MODx.grid.SystemEvent
* @extends MODx.grid.Grid
* @param {Object} config An object of options.
* @xtype modx-grid-system-event
*/
MODx.grid.SystemEvent = function(config) {
config = config || {};
Ext.applyIf(config,{
title: _('system_events')
,url: MODx.config.connector_url
,baseParams: {
action: 'system/event/getlist'
}
,fields: ['id','name','service','groupname','plugins']
,autosave: true
,paging: true
,clicksToEdit: 2
,grouping: true
,groupBy: 'groupname'
,singleText: _('system_event')
,pluralText: _('system_events')
,columns: [{
header: _('name')
,dataIndex: 'name'
},{
header: _('system_events.service')
,dataIndex: 'service'
,renderer: this.renderServiceField.createDelegate(this,[this],true)
},{
header: _('system_events.plugins')
,dataIndex: 'plugins'
,width: 150
,renderer: this.renderPluginsField.createDelegate(this,[this],true)
},{
header: _('system_events.groupname')
,dataIndex: 'groupname'
,width: 150
,hidden: true
}]
,tbar: [{
text: _('system_events.create')
,scope: this
,cls:'primary-button'
,handler: {
xtype: 'modx-window-events-create-update'
,url: config.url || MODx.config.connector_url
,blankValues: true
,isUpdate: false
}
},'->',{
xtype: 'textfield'
,name: 'filter_key'
,id: 'modx-filter-event'
,cls: 'x-form-filter'
,emptyText: _('system_events.search_by_name')+'...'
,listeners: {
'change': {fn: this.filterByName, scope: this}
,'render': {fn: function(cmp) {
new Ext.KeyMap(cmp.getEl(), {
key: Ext.EventObject.ENTER
,fn: this.blur
,scope: cmp
});
},scope:this}
}
},{
xtype: 'button'
,cls: 'x-form-filter-clear'
,text: _('filter_clear')
,listeners: {
'click': {fn: this.clearFilter, scope: this},
'mouseout': { fn: function(evt){
this.removeClass('x-btn-focus');
}
}
}
}]
});
MODx.grid.SystemEvent.superclass.constructor.call(this,config);
};
Ext.extend(MODx.grid.SystemEvent,MODx.grid.Grid,{
getMenu: function(btn, e) {
var m = [];
if (this.menu.record.service == 6) { /* user defined */
m.push({
text: _('system_events.remove')
,handler: this.removeEvent
});
}
return m;
}
,filterByName: function(tf,newValue,oldValue) {
this.getStore().baseParams.query = newValue;
this.getBottomToolbar().changePage(1);
this.refresh();
return true;
}
,clearFilter: function() {
Ext.getCmp('modx-filter-event').reset();
this.getStore().baseParams = this.initialConfig.baseParams;
this.getStore().baseParams.query = '';
this.getBottomToolbar().changePage(1);
this.refresh();
}
,removeEvent: function(btn, e) {
MODx.msg.confirm({
title: _('system_events.remove')
,text: _('system_events.remove_confirm', { name: this.menu.record.name })
,url: this.config.url
,params: {
action: 'system/event/remove'
,name: this.menu.record.name
}
,listeners: {
'success': { fn: this.refresh ,scope: this }
}
});
}
,renderServiceField: function(v,md,rec,ri,ci,s,g) {
return _('system_events.service_' + v);
}
,renderPluginsField: function(v,md,rec,ri,ci,s,g) {
var output = [];
Ext.each(v, function(elem) {
if (!elem) { return; }
output.push(elem.name);
});
return output.join(', ');
}
});
Ext.reg('modx-grid-system-event',MODx.grid.SystemEvent);
MODx.window.CreateUpdateEvent = function(config) {
config = config || {};
Ext.applyIf(config,{
title: _('system_events.create')
,width: 450
,autoHeight: true
,url: config.url
,action: 'system/event/create'
,fields: [{
xtype: 'hidden'
,name: 'service'
,value: 6 /* user defined */
},{
xtype: 'textfield'
,fieldLabel: _('name')
,name: 'name'
,id: 'modx-se-name'
,allowBlank: false
,maxLength: 50
,anchor: '100%'
},{
xtype: 'label'
,forId: 'modx-se-name'
,html: _('system_events.name_desc')
,cls: 'desc-under'
},{
xtype: 'modx-combo-event-groups'
,fieldLabel: _('system_events.groupname')
,name: 'groupname'
,id: 'modx-se-groupname'
,anchor: '100%'
},{
xtype: 'label'
,forId: 'modx-se-groupname'
,html: _('system_events.groupname_desc')
,cls: 'desc-under'
}]
,keys: []
});
MODx.window.CreateUpdateEvent.superclass.constructor.call(this,config);
};
Ext.extend(MODx.window.CreateUpdateEvent,MODx.Window);
Ext.reg('modx-window-events-create-update',MODx.window.CreateUpdateEvent);
MODx.combo.SystemEventGroups = function(config) {
config = config || {};
Ext.applyIf(config, {
name: 'groupname'
,hiddenName: 'groupname'
,displayField: 'name'
,valueField: 'name'
,fields: ['name']
,forceSelection: false
,typeAhead: true
,editable: true
,allowBlank: false
,autocomplete: true
,pageSize: 10
,url: MODx.config.connector_url
,baseParams: {
action: 'system/event/groupList'
,combo: true
}
});
MODx.combo.SystemEventGroups.superclass.constructor.call(this, config);
};
Ext.extend(MODx.combo.SystemEventGroups, MODx.combo.ComboBox);
Ext.reg('modx-combo-event-groups', MODx.combo.SystemEventGroups);