gateways.grid.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. GatewayManager.grid.Gateways = function(config) {
  2. config = config || {};
  3. this.ident = config.ident || Ext.id();
  4. Ext.applyIf(config, {
  5. id: 'gatewaymanager-grid-statuses'
  6. ,url: GatewayManager.config.connectorUrl
  7. ,baseParams: { action: 'mgr/gateways/getList' }
  8. ,save_action: 'mgr/gateways/updateFromGrid'
  9. ,autosave: true
  10. ,fields: ['id','domain','context','sitestart','startpage','active']
  11. ,paging: true
  12. ,remoteSort: true
  13. ,anchor: '97%'
  14. ,autoExpandColumn: 'domain'
  15. ,columns: [{
  16. header: _('gatewaymanager.domain')
  17. ,dataIndex: 'domain'
  18. ,sortable: true
  19. ,editor: { xtype: 'textfield', allowBlank: false }
  20. },{
  21. header: _('gatewaymanager.context')
  22. ,dataIndex: 'context'
  23. ,sortable: true
  24. },{
  25. header: _('gatewaymanager.startpage')
  26. ,dataIndex: 'sitestart'
  27. ,sortable: true
  28. ,renderer: this.renderResourceList.createDelegate(this,[this],true)
  29. },{
  30. header: _('gatewaymanager.active')
  31. ,dataIndex: 'active'
  32. ,sortable: true
  33. ,width: 40
  34. ,renderer: this.renderYNfield.createDelegate(this,[this],true)
  35. ,editor: { xtype: 'combo-boolean' }
  36. }]
  37. ,tbar: [{
  38. text: _('gatewaymanager.create')
  39. ,cls: 'primary-button'
  40. ,handler: {
  41. xtype: 'gatewaymanager-window-createupdate'
  42. ,blankValues: true
  43. ,update: false
  44. }
  45. },'->',{
  46. xtype: 'textfield'
  47. ,id: 'gateways-search-filter'
  48. ,emptyText: _('gatewaymanager.search')
  49. ,listeners: {
  50. 'change': { fn: this.search, scope:this }
  51. ,'render': { fn: function(tf) {
  52. tf.getEl().addKeyListener(Ext.EventObject.ENTER, function() {
  53. this.search(tf);
  54. }, this);
  55. },
  56. scope: this
  57. }
  58. }
  59. }]
  60. ,listeners: {
  61. 'afterAutoSave': {
  62. fn: function(response) {
  63. if(response.success) {
  64. this.refresh();
  65. }
  66. }
  67. ,scope: this
  68. }
  69. }
  70. });
  71. GatewayManager.grid.Gateways.superclass.constructor.call(this, config);
  72. };
  73. Ext.extend(GatewayManager.grid.Gateways, MODx.grid.Grid, {
  74. search: function(tf, nv, ov) {
  75. var s = this.getStore();
  76. s.baseParams.query = tf.getValue();
  77. this.getBottomToolbar().changePage(1);
  78. this.refresh();
  79. }
  80. ,getMenu: function() {
  81. var m = [{
  82. text: _('gatewaymanager.update')
  83. ,handler: this.updateGateway
  84. },'-',{
  85. text: _('gatewaymanager.remove')
  86. ,handler: this.removeGateway
  87. }];
  88. return m;
  89. }
  90. ,updateGateway: function(btn, e) {
  91. var w = MODx.load({
  92. xtype: 'gatewaymanager-window-createupdate'
  93. ,record: this.menu.record
  94. ,update: true
  95. ,listeners: {
  96. 'success': { fn: this.refresh, scope: this }
  97. ,'hide': { fn: function() { this.destroy(); }}
  98. }
  99. });
  100. w.setTitle(_('gatewaymanager.update'));
  101. w.setValues(this.menu.record);
  102. w.show(e.target, function() {
  103. Ext.isSafari ? w.setPosition(null,30) : w.center();
  104. }, this);
  105. }
  106. ,removeGateway: function(btn, e) {
  107. MODx.msg.confirm({
  108. title: _('gatewaymanager.remove', { title: this.menu.record.title })
  109. ,text: _('gatewaymanager.remove_confirm', { title: this.menu.record.title })
  110. ,url: this.config.url
  111. ,params: {
  112. action: 'mgr/gateways/remove'
  113. ,id: this.menu.record.id
  114. }
  115. ,listeners: {
  116. 'success': { fn: this.refresh ,scope: this }
  117. }
  118. });
  119. }
  120. /** SOME RENDERS **/
  121. ,renderYNfield: function(v,md,rec,ri,ci,s,g) {
  122. var r = s.getAt(ri).data;
  123. v = Ext.util.Format.htmlEncode(v);
  124. var f = MODx.grid.Grid.prototype.rendYesNo;
  125. return f(v,md,rec,ri,ci,s,g);
  126. }
  127. ,renderResourceList: function(v,md,rec,ri,ci,s,g) {
  128. if(v.length == 0) {
  129. return '<span style="color:#8A8A8A;"><i>' + _('gatewaymanager.startpage.default') + '</i></span>';
  130. }
  131. var r = s.getAt(ri).data;
  132. return r.startpage + ' (' + _('gatewaymanager.startpage.id') + ': ' + v + ')';
  133. }
  134. });
  135. Ext.reg('gatewaymanager-grid-gateways', GatewayManager.grid.Gateways);
  136. // ------------------
  137. // Create window
  138. GatewayManager.window.CreateUpdateGateway = function(config) {
  139. config = config || {};
  140. this.ident = config.ident || Ext.id();
  141. Ext.applyIf(config,{
  142. title: _('gatewaymanager.create')
  143. ,url: GatewayManager.config.connectorUrl
  144. ,baseParams: {
  145. action: (config.update) ? 'mgr/gateways/update' : 'mgr/gateways/create'
  146. }
  147. ,modal: true
  148. ,width: 450
  149. ,autoHeight: true
  150. ,fields: [{
  151. xtype: 'hidden'
  152. ,name: 'id'
  153. },{
  154. xtype: 'textfield'
  155. ,fieldLabel: _('gatewaymanager.domain')
  156. ,name: 'domain'
  157. ,anchor: '100%'
  158. ,allowBlank: false
  159. },{
  160. xtype: 'label'
  161. ,html: _('gatewaymanager.domain_desc')
  162. ,cls: 'desc-under'
  163. },{
  164. xtype: 'gatewaymanager-combo-contextlist'
  165. ,id: 'gatewaymanager-contextlist-' + this.ident
  166. ,fieldLabel: _('gatewaymanager.context')
  167. ,name: 'context'
  168. ,anchor: '100%'
  169. ,allowBlank: false
  170. ,listeners: {
  171. 'select': { fn: this.onSelectContext, scope: this }
  172. }
  173. },{
  174. xtype: 'label'
  175. ,html: _('gatewaymanager.context_desc')
  176. ,cls: 'desc-under'
  177. },{
  178. xtype: 'gatewaymanager-combo-resourceslist'
  179. ,id: 'gatewaymanager-resourcelist-' + this.ident
  180. ,fieldLabel: _('gatewaymanager.startpage')
  181. ,name: 'sitestart'
  182. ,anchor: '100%'
  183. ,allowBlank: true
  184. ,listeners: {
  185. 'afterrender': { fn: this.onResourceList, scope: this }
  186. }
  187. },{
  188. xtype: 'label'
  189. ,html: _('gatewaymanager.startpage_desc')
  190. ,cls: 'desc-under'
  191. },{
  192. xtype: 'xcheckbox'
  193. ,hideLabel: true
  194. ,boxLabel: _('gatewaymanager.context.createsettings')
  195. ,name: 'create-context-settings'
  196. },{
  197. xtype: 'label'
  198. ,html: _('gatewaymanager.context.createsettings.desc')
  199. ,cls: 'desc-under'
  200. }]
  201. });
  202. GatewayManager.window.CreateUpdateGateway.superclass.constructor.call(this,config);
  203. };
  204. Ext.extend(GatewayManager.window.CreateUpdateGateway, MODx.Window, {
  205. onResourceList: function(cb) {
  206. var contextBox = Ext.getCmp('gatewaymanager-contextlist-' + this.ident);
  207. var s = cb.getStore();
  208. s.baseParams.cntx = contextBox.getValue();
  209. s.load();
  210. }
  211. ,onSelectContext: function(cb) {
  212. var resourcesBox = Ext.getCmp('gatewaymanager-resourcelist-' + this.ident);
  213. this.onResourceList(resourcesBox);
  214. resourcesBox.clearValue();
  215. }
  216. });
  217. Ext.reg('gatewaymanager-window-createupdate', GatewayManager.window.CreateUpdateGateway);