modx.grid.user.group.resource.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. MODx.grid.UserGroupResourceGroup = function(config) {
  2. config = config || {};
  3. this.exp = new Ext.grid.RowExpander({
  4. tpl: new Ext.Template('<p class="desc">{permissions}</p>'),
  5. lazyRender: false,
  6. enableCaching: false
  7. });
  8. Ext.applyIf(config,{
  9. id: 'modx-grid-user-group-resource-groups'
  10. ,url: MODx.config.connector_url
  11. ,baseParams: {
  12. action: 'security/access/usergroup/resourcegroup/getList'
  13. ,usergroup: config.usergroup
  14. }
  15. ,paging: true
  16. ,hideMode: 'offsets'
  17. ,fields: ['id','target','name','principal','authority','authority_name','policy','policy_name','context_key','permissions','menu']
  18. ,grouping: true
  19. ,groupBy: 'authority_name'
  20. ,singleText: _('policy')
  21. ,pluralText: _('policies')
  22. ,sortBy: 'authority'
  23. ,sortDir: 'ASC'
  24. ,remoteSort: true
  25. ,plugins: [this.exp]
  26. ,columns: [this.exp,{
  27. header: _('resource_group')
  28. ,dataIndex: 'name'
  29. ,width: 120
  30. ,sortable: true
  31. },{
  32. header: _('minimum_role')
  33. ,dataIndex: 'authority_name'
  34. ,width: 100
  35. },{
  36. header: _('policy')
  37. ,dataIndex: 'policy_name'
  38. ,width: 200
  39. },{
  40. header: _('context')
  41. ,dataIndex: 'context_key'
  42. ,width: 150
  43. ,sortable: true
  44. }]
  45. ,tbar: [{
  46. text: _('resource_group_add')
  47. ,cls:'primary-button'
  48. ,scope: this
  49. ,handler: this.createAcl
  50. },'->',{
  51. xtype: 'modx-combo-resourcegroup'
  52. ,id: 'modx-ugrg-resourcegroup-filter'
  53. ,emptyText: _('filter_by_resource_group')
  54. ,width: 200
  55. ,allowBlank: true
  56. ,listeners: {
  57. 'select': {fn:this.filterResourceGroup,scope:this}
  58. }
  59. },{
  60. xtype: 'modx-combo-policy'
  61. ,id: 'modx-ugrg-policy-filter'
  62. ,emptyText: _('filter_by_policy')
  63. ,baseParams: {
  64. action: 'security/access/policy/getList'
  65. ,group: 'Object'
  66. }
  67. ,allowBlank: true
  68. ,listeners: {
  69. 'select': {fn:this.filterPolicy,scope:this}
  70. }
  71. },{
  72. text: _('clear_filter')
  73. ,id: 'modx-ugrg-clear-filter'
  74. ,handler: this.clearFilter
  75. ,scope: this
  76. }]
  77. });
  78. MODx.grid.UserGroupResourceGroup.superclass.constructor.call(this,config);
  79. this.addEvents('createAcl','updateAcl');
  80. };
  81. Ext.extend(MODx.grid.UserGroupResourceGroup,MODx.grid.Grid,{
  82. combos: {}
  83. ,windows: {}
  84. ,filterResourceGroup: function(cb,rec,ri) {
  85. this.getStore().baseParams['resourceGroup'] = rec.data['id'];
  86. this.getBottomToolbar().changePage(1);
  87. //this.refresh();
  88. }
  89. ,filterPolicy: function(cb,rec,ri) {
  90. this.getStore().baseParams['policy'] = rec.data['id'];
  91. this.getBottomToolbar().changePage(1);
  92. //this.refresh();
  93. }
  94. ,clearFilter: function(btn,e) {
  95. Ext.getCmp('modx-ugrg-resourcegroup-filter').setValue('');
  96. this.getStore().baseParams['resourceGroup'] = '';
  97. Ext.getCmp('modx-ugrg-policy-filter').setValue('');
  98. this.getStore().baseParams['policy'] = '';
  99. this.getBottomToolbar().changePage(1);
  100. //this.refresh();
  101. }
  102. ,createAcl: function(itm,e) {
  103. var r = {
  104. principal: this.config.usergroup
  105. };
  106. if (!this.windows.createAcl) {
  107. this.windows.createAcl = MODx.load({
  108. xtype: 'modx-window-user-group-resourcegroup-create'
  109. ,record: r
  110. ,listeners: {
  111. 'success': {fn:function(r) {
  112. this.refresh();
  113. this.fireEvent('createAcl',r);
  114. },scope:this}
  115. }
  116. });
  117. }
  118. this.windows.createAcl.setValues(r);
  119. this.windows.createAcl.show(e.target);
  120. }
  121. ,updateAcl: function(itm,e) {
  122. var r = this.menu.record;
  123. if (!this.windows.updateAcl) {
  124. this.windows.updateAcl = MODx.load({
  125. xtype: 'modx-window-user-group-resourcegroup-update'
  126. ,record: r
  127. ,listeners: {
  128. 'success': {fn:function(r) {
  129. this.refresh();
  130. this.fireEvent('updateAcl',r);
  131. },scope:this}
  132. }
  133. });
  134. }
  135. this.windows.updateAcl.setValues(r);
  136. this.windows.updateAcl.show(e.target);
  137. }
  138. });
  139. Ext.reg('modx-grid-user-group-resource-group',MODx.grid.UserGroupResourceGroup);
  140. MODx.window.CreateUGRG = function(config) {
  141. config = config || {};
  142. this.ident = config.ident || 'crgactx'+Ext.id();
  143. Ext.applyIf(config,{
  144. title: _('resource_group_add')
  145. ,url: MODx.config.connector_url
  146. ,action: 'security/access/usergroup/resourcegroup/create'
  147. // ,height: 250
  148. // ,width: 600
  149. ,fields: [{
  150. xtype: 'hidden'
  151. ,name: 'id'
  152. },{
  153. xtype: 'hidden'
  154. ,name: 'principal'
  155. ,hiddenName: 'principal'
  156. },{
  157. xtype: 'hidden'
  158. ,name: 'principal_class'
  159. ,value: 'modUserGroup'
  160. },{
  161. xtype: 'modx-combo-resourcegroup'
  162. ,fieldLabel: _('resource_group')
  163. ,description: MODx.expandHelp ? '' : _('user_group_resourcegroup_resource_group_desc')
  164. ,id: 'modx-'+this.ident+'-resource-group'
  165. ,name: 'target'
  166. ,hiddenName: 'target'
  167. ,editable: false
  168. ,anchor: '100%'
  169. },{
  170. xtype: MODx.expandHelp ? 'label' : 'hidden'
  171. ,forId: 'modx-'+this.ident+'-resource-group'
  172. ,html: _('user_group_resourcegroup_resource_group_desc')
  173. ,cls: 'desc-under'
  174. },{
  175. xtype: 'modx-combo-context'
  176. ,fieldLabel: _('context')
  177. ,description: MODx.expandHelp ? '' : _('user_group_resourcegroup_context_desc')
  178. ,id: 'modx-'+this.ident+'-context'
  179. ,name: 'context_key'
  180. ,hiddenName: 'context_key'
  181. ,editable: false
  182. ,anchor: '100%'
  183. },{
  184. xtype: MODx.expandHelp ? 'label' : 'hidden'
  185. ,forId: 'modx-'+this.ident+'-context'
  186. ,html: _('user_group_resourcegroup_context_desc')
  187. ,cls: 'desc-under'
  188. },{
  189. xtype: 'modx-combo-authority'
  190. ,fieldLabel: _('minimum_role')
  191. ,description: MODx.expandHelp ? '' : _('user_group_resourcegroup_authority_desc')
  192. ,id: 'modx-'+this.ident+'-authority'
  193. ,name: 'authority'
  194. ,value: 0
  195. ,anchor: '100%'
  196. },{
  197. xtype: MODx.expandHelp ? 'label' : 'hidden'
  198. ,forId: 'modx-'+this.ident+'-authority'
  199. ,html: _('user_group_resourcegroup_authority_desc')
  200. ,cls: 'desc-under'
  201. },{
  202. xtype: 'modx-combo-policy'
  203. ,fieldLabel: _('policy')
  204. ,description: MODx.expandHelp ? '' : _('user_group_resourcegroup_policy_desc')
  205. ,id: 'modx-'+this.ident+'-policy'
  206. ,name: 'policy'
  207. ,hiddenName: 'policy'
  208. ,baseParams: {
  209. action: 'security/access/policy/getList'
  210. ,group: 'Resource,Object'
  211. ,combo: '1'
  212. }
  213. ,anchor: '100%'
  214. ,listeners: {
  215. 'select':{fn:this.onPolicySelect,scope:this}
  216. }
  217. },{
  218. xtype: MODx.expandHelp ? 'label' : 'hidden'
  219. ,forId: 'modx-'+this.ident+'-policy'
  220. ,html: _('user_group_resourcegroup_policy_desc')
  221. ,cls: 'desc-under'
  222. },{
  223. id: 'modx-'+this.ident+'-permissions-list-ct'
  224. ,cls: 'modx-permissions-list'
  225. ,defaults: {border: false}
  226. ,autoHeight: true
  227. ,hidden: true
  228. ,anchor: '100%'
  229. ,items: [{
  230. html: '<h4>'+_('permissions_in_policy')+'</h4>'
  231. ,id: 'modx-'+this.ident+'-permissions-list-header'
  232. },{
  233. id: 'modx-'+this.ident+'-permissions-list'
  234. ,cls: 'modx-permissions-list-textarea'
  235. ,xtype: 'textarea'
  236. ,grow: false
  237. ,anchor: '100%'
  238. ,height: 100
  239. ,width: '97%'
  240. ,readOnly: true
  241. }]
  242. }]
  243. });
  244. MODx.window.CreateUGRG.superclass.constructor.call(this,config);
  245. };
  246. Ext.extend(MODx.window.CreateUGRG,MODx.Window,{
  247. onPolicySelect: function(cb,rec,idx) {
  248. var s = cb.getStore();
  249. if (!s) return;
  250. var r = s.getAt(idx);
  251. var lc = Ext.getCmp('modx-'+this.ident+'-permissions-list-ct');
  252. if (r && idx>0) {
  253. lc.show();
  254. var pl = Ext.getCmp('modx-'+this.ident+'-permissions-list');
  255. var o = rec.data.permissions.join(', ');
  256. pl.setValue(o);
  257. } else {
  258. lc.hide();
  259. }
  260. this.doLayout();
  261. }
  262. });
  263. Ext.reg('modx-window-user-group-resourcegroup-create',MODx.window.CreateUGRG);
  264. MODx.window.UpdateUGRG = function(config) {
  265. config = config || {};
  266. this.ident = config.ident || 'ugrgactx'+Ext.id();
  267. Ext.applyIf(config,{
  268. title: _('access_rgroup_update')
  269. ,action: 'security/access/usergroup/resourcegroup/update'
  270. });
  271. MODx.window.UpdateUGRG.superclass.constructor.call(this,config);
  272. };
  273. Ext.extend(MODx.window.UpdateUGRG,MODx.window.CreateUGRG);
  274. Ext.reg('modx-window-user-group-resourcegroup-update',MODx.window.UpdateUGRG);