modx.grid.system.event.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. /**
  2. * Loads a grid of System Events
  3. *
  4. * @class MODx.grid.SystemEvent
  5. * @extends MODx.grid.Grid
  6. * @param {Object} config An object of options.
  7. * @xtype modx-grid-system-event
  8. */
  9. MODx.grid.SystemEvent = function(config) {
  10. config = config || {};
  11. Ext.applyIf(config,{
  12. title: _('system_events')
  13. ,url: MODx.config.connector_url
  14. ,baseParams: {
  15. action: 'system/event/getlist'
  16. }
  17. ,fields: ['id','name','service','groupname','plugins']
  18. ,autosave: true
  19. ,paging: true
  20. ,clicksToEdit: 2
  21. ,grouping: true
  22. ,groupBy: 'groupname'
  23. ,singleText: _('system_event')
  24. ,pluralText: _('system_events')
  25. ,columns: [{
  26. header: _('name')
  27. ,dataIndex: 'name'
  28. },{
  29. header: _('system_events.service')
  30. ,dataIndex: 'service'
  31. ,renderer: this.renderServiceField.createDelegate(this,[this],true)
  32. },{
  33. header: _('system_events.plugins')
  34. ,dataIndex: 'plugins'
  35. ,width: 150
  36. ,renderer: this.renderPluginsField.createDelegate(this,[this],true)
  37. },{
  38. header: _('system_events.groupname')
  39. ,dataIndex: 'groupname'
  40. ,width: 150
  41. ,hidden: true
  42. }]
  43. ,tbar: [{
  44. text: _('system_events.create')
  45. ,scope: this
  46. ,cls:'primary-button'
  47. ,handler: {
  48. xtype: 'modx-window-events-create-update'
  49. ,url: config.url || MODx.config.connector_url
  50. ,blankValues: true
  51. ,isUpdate: false
  52. }
  53. },'->',{
  54. xtype: 'textfield'
  55. ,name: 'filter_key'
  56. ,id: 'modx-filter-event'
  57. ,cls: 'x-form-filter'
  58. ,emptyText: _('system_events.search_by_name')+'...'
  59. ,listeners: {
  60. 'change': {fn: this.filterByName, scope: this}
  61. ,'render': {fn: function(cmp) {
  62. new Ext.KeyMap(cmp.getEl(), {
  63. key: Ext.EventObject.ENTER
  64. ,fn: this.blur
  65. ,scope: cmp
  66. });
  67. },scope:this}
  68. }
  69. },{
  70. xtype: 'button'
  71. ,cls: 'x-form-filter-clear'
  72. ,text: _('filter_clear')
  73. ,listeners: {
  74. 'click': {fn: this.clearFilter, scope: this},
  75. 'mouseout': { fn: function(evt){
  76. this.removeClass('x-btn-focus');
  77. }
  78. }
  79. }
  80. }]
  81. });
  82. MODx.grid.SystemEvent.superclass.constructor.call(this,config);
  83. };
  84. Ext.extend(MODx.grid.SystemEvent,MODx.grid.Grid,{
  85. getMenu: function(btn, e) {
  86. var m = [];
  87. if (this.menu.record.service == 6) { /* user defined */
  88. m.push({
  89. text: _('system_events.remove')
  90. ,handler: this.removeEvent
  91. });
  92. }
  93. return m;
  94. }
  95. ,filterByName: function(tf,newValue,oldValue) {
  96. this.getStore().baseParams.query = newValue;
  97. this.getBottomToolbar().changePage(1);
  98. this.refresh();
  99. return true;
  100. }
  101. ,clearFilter: function() {
  102. Ext.getCmp('modx-filter-event').reset();
  103. this.getStore().baseParams = this.initialConfig.baseParams;
  104. this.getStore().baseParams.query = '';
  105. this.getBottomToolbar().changePage(1);
  106. this.refresh();
  107. }
  108. ,removeEvent: function(btn, e) {
  109. MODx.msg.confirm({
  110. title: _('system_events.remove')
  111. ,text: _('system_events.remove_confirm', { name: this.menu.record.name })
  112. ,url: this.config.url
  113. ,params: {
  114. action: 'system/event/remove'
  115. ,name: this.menu.record.name
  116. }
  117. ,listeners: {
  118. 'success': { fn: this.refresh ,scope: this }
  119. }
  120. });
  121. }
  122. ,renderServiceField: function(v,md,rec,ri,ci,s,g) {
  123. return _('system_events.service_' + v);
  124. }
  125. ,renderPluginsField: function(v,md,rec,ri,ci,s,g) {
  126. var output = [];
  127. Ext.each(v, function(elem) {
  128. if (!elem) { return; }
  129. output.push(elem.name);
  130. });
  131. return output.join(', ');
  132. }
  133. });
  134. Ext.reg('modx-grid-system-event',MODx.grid.SystemEvent);
  135. MODx.window.CreateUpdateEvent = function(config) {
  136. config = config || {};
  137. Ext.applyIf(config,{
  138. title: _('system_events.create')
  139. ,width: 450
  140. ,autoHeight: true
  141. ,url: config.url
  142. ,action: 'system/event/create'
  143. ,fields: [{
  144. xtype: 'hidden'
  145. ,name: 'service'
  146. ,value: 6 /* user defined */
  147. },{
  148. xtype: 'textfield'
  149. ,fieldLabel: _('name')
  150. ,name: 'name'
  151. ,id: 'modx-se-name'
  152. ,allowBlank: false
  153. ,maxLength: 50
  154. ,anchor: '100%'
  155. },{
  156. xtype: 'label'
  157. ,forId: 'modx-se-name'
  158. ,html: _('system_events.name_desc')
  159. ,cls: 'desc-under'
  160. },{
  161. xtype: 'modx-combo-event-groups'
  162. ,fieldLabel: _('system_events.groupname')
  163. ,name: 'groupname'
  164. ,id: 'modx-se-groupname'
  165. ,anchor: '100%'
  166. },{
  167. xtype: 'label'
  168. ,forId: 'modx-se-groupname'
  169. ,html: _('system_events.groupname_desc')
  170. ,cls: 'desc-under'
  171. }]
  172. ,keys: []
  173. });
  174. MODx.window.CreateUpdateEvent.superclass.constructor.call(this,config);
  175. };
  176. Ext.extend(MODx.window.CreateUpdateEvent,MODx.Window);
  177. Ext.reg('modx-window-events-create-update',MODx.window.CreateUpdateEvent);
  178. MODx.combo.SystemEventGroups = function(config) {
  179. config = config || {};
  180. Ext.applyIf(config, {
  181. name: 'groupname'
  182. ,hiddenName: 'groupname'
  183. ,displayField: 'name'
  184. ,valueField: 'name'
  185. ,fields: ['name']
  186. ,forceSelection: false
  187. ,typeAhead: true
  188. ,editable: true
  189. ,allowBlank: false
  190. ,autocomplete: true
  191. ,pageSize: 10
  192. ,url: MODx.config.connector_url
  193. ,baseParams: {
  194. action: 'system/event/groupList'
  195. ,combo: true
  196. }
  197. });
  198. MODx.combo.SystemEventGroups.superclass.constructor.call(this, config);
  199. };
  200. Ext.extend(MODx.combo.SystemEventGroups, MODx.combo.ComboBox);
  201. Ext.reg('modx-combo-event-groups', MODx.combo.SystemEventGroups);