modx.grid.access.context.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. /**
  2. * Loads a grid of modAccessContexts.
  3. *
  4. * @class MODx.grid.AccessContext
  5. * @extends MODx.grid.Grid
  6. * @param {Object} config An object of options.
  7. * @xtype modx-grid-access-context
  8. */
  9. MODx.grid.AccessContext = function(config) {
  10. config = config || {};
  11. Ext.applyIf(config,{
  12. id: 'modx-grid-access-context'
  13. ,url: MODx.config.connector_url
  14. ,baseParams: {
  15. action: 'security/access/getList'
  16. ,type: config.type || 'modAccessContext'
  17. ,target: config.context_key
  18. }
  19. ,fields: ['id','target','target_name','principal_class','principal','principal_name','authority','policy','policy_name','cls']
  20. ,type: 'modAccessContext'
  21. ,paging: true
  22. ,columns: [
  23. { header: _('context') ,dataIndex: 'target_name' ,width: 100 }
  24. ,{ header: _('user_group') ,dataIndex: 'principal_name' ,width: 120 }
  25. ,{ header: _('authority') ,dataIndex: 'authority' ,width: 50 }
  26. ,{ header: _('policy') ,dataIndex: 'policy_name' ,width: 175 }
  27. ]
  28. ,tbar: [{
  29. text: _('acl_add')
  30. ,cls: 'primary-button'
  31. ,scope: this
  32. ,handler: this.createAcl
  33. }]
  34. });
  35. MODx.grid.AccessContext.superclass.constructor.call(this,config);
  36. };
  37. Ext.extend(MODx.grid.AccessContext,MODx.grid.Grid,{
  38. combos: {}
  39. ,windows: {}
  40. ,getMenu: function() {
  41. var r = this.getSelectionModel().getSelected();
  42. var p = r.data.cls;
  43. var m = [];
  44. if (this.getSelectionModel().getCount() > 1) {
  45. } else {
  46. if (p.indexOf('pedit') != -1) {
  47. m.push({
  48. text: _('edit')
  49. ,handler: this.editAcl
  50. });
  51. }
  52. if (p.indexOf('premove') != -1) {
  53. if (m.length > 0) { m.push('-'); }
  54. m.push({
  55. text: _('remove')
  56. ,handler: this.removeAcl
  57. });
  58. }
  59. }
  60. if (m.length > 0) {
  61. this.addContextMenuItem(m);
  62. }
  63. }
  64. ,createAcl: function(itm,e) {
  65. var r = {
  66. target: this.config.context_key
  67. ,principal_class: 'modUserGroup'
  68. };
  69. if (!this.windows.create_acl) {
  70. this.windows.create_acl = MODx.load({
  71. xtype: 'modx-window-access-context-create'
  72. ,record: r
  73. ,listeners: {
  74. 'success': {fn:function(o) {
  75. this.refresh();
  76. },scope:this}
  77. }
  78. });
  79. }
  80. this.windows.create_acl.fp.getForm().reset();
  81. this.windows.create_acl.setValues(r);
  82. this.windows.create_acl.show(e.target);
  83. }
  84. ,editAcl: function(itm,e) {
  85. var r = this.menu.record;
  86. Ext.applyIf(r,{
  87. context: r.target
  88. ,user_group: r.principal
  89. });
  90. if (!this.windows.update_acl) {
  91. this.windows.update_acl = MODx.load({
  92. xtype: 'modx-window-access-context-update'
  93. ,acl: r.id
  94. ,record: r
  95. ,listeners: {
  96. 'success': {fn:this.refresh,scope:this}
  97. }
  98. });
  99. }
  100. this.windows.update_acl.setValues(r);
  101. this.windows.update_acl.show(e.target);
  102. }
  103. ,removeAcl: function(itm,e) {
  104. MODx.msg.confirm({
  105. title: _('ugc_remove')
  106. ,text: _('access_confirm_remove')
  107. ,url: this.config.url
  108. ,params: {
  109. action: 'security/access/removeAcl'
  110. ,id: this.menu.record.id
  111. ,type: this.config.type || 'modAccessContext'
  112. }
  113. ,listeners: {
  114. 'success': {fn:this.refresh,scope:this}
  115. }
  116. });
  117. }
  118. });
  119. Ext.reg('modx-grid-access-context',MODx.grid.AccessContext);
  120. MODx.window.CreateAccessContext = function(config) {
  121. config = config || {};
  122. var r = config.record;
  123. Ext.applyIf(config,{
  124. title: _('ugc_mutate')
  125. ,url: MODx.config.connector_url
  126. ,baseParams: {
  127. action: 'security/access/addAcl'
  128. ,type: config.type || 'modAccessContext'
  129. }
  130. // ,height: 250
  131. // ,width: 350
  132. ,type: 'modAccessContext'
  133. ,acl: 0
  134. ,fields: [{
  135. xtype: 'hidden'
  136. ,name: 'id'
  137. ,value: r.id || ''
  138. },{
  139. xtype: 'hidden'
  140. ,name: 'target'
  141. ,value: r.context || ''
  142. },{
  143. xtype: 'hidden'
  144. ,name: 'principal_class'
  145. ,value: 'modUserGroup'
  146. },{
  147. xtype: 'modx-combo-usergroup'
  148. ,fieldLabel: _('user_group')
  149. ,name: 'principal'
  150. ,hiddenName: 'principal'
  151. ,anchor: '100%'
  152. ,value: r.principal || ''
  153. ,baseParams: {
  154. action: 'security/group/getList'
  155. ,combo: true
  156. }
  157. },{
  158. xtype: 'modx-combo-policy'
  159. ,fieldLabel: _('policy')
  160. ,name: 'policy'
  161. ,hiddenName: 'policy'
  162. ,value: r.policy || ''
  163. ,anchor: '100%'
  164. },{
  165. xtype: 'textfield'
  166. ,fieldLabel: _('authority')
  167. ,name: 'authority'
  168. // ,width: 75
  169. ,anchor: '100%'
  170. ,value: r.authority || ''
  171. }]
  172. });
  173. MODx.window.CreateAccessContext.superclass.constructor.call(this,config);
  174. };
  175. Ext.extend(MODx.window.CreateAccessContext,MODx.Window);
  176. Ext.reg('modx-window-access-context-create',MODx.window.CreateAccessContext);
  177. MODx.window.UpdateAccessContext = function(config) {
  178. config = config || {};
  179. var r = config.record;
  180. this.ident = config.ident || 'uactx'+Ext.id();
  181. Ext.applyIf(config,{
  182. title: _('ugc_mutate')
  183. ,baseParams: {
  184. action: 'security/access/updateAcl'
  185. ,type: config.type || 'modAccessContext'
  186. }
  187. });
  188. MODx.window.UpdateAccessContext.superclass.constructor.call(this,config);
  189. };
  190. Ext.extend(MODx.window.UpdateAccessContext,MODx.window.CreateAccessContext);
  191. Ext.reg('modx-window-access-context-update',MODx.window.UpdateAccessContext);