modx.tree.user.group.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. /**
  2. * Generates the User Group Tree
  3. *
  4. * @class MODx.tree.UserGroup
  5. * @extends MODx.tree.Tree
  6. * @param {Object} config An object of options.
  7. * @xtype modx-tree-usergroup
  8. */
  9. MODx.tree.UserGroup = function(config) {
  10. config = config || {};
  11. Ext.applyIf(config,{
  12. title: _('user_groups')
  13. ,id: 'modx-tree-usergroup'
  14. ,url: MODx.config.connector_url
  15. ,action: 'security/group/getnodes'
  16. ,sortAction: 'security/group/sort'
  17. ,root_id: 'n_ug_0'
  18. ,root_name: _('user_groups')
  19. ,enableDrag: true
  20. ,enableDrop: true
  21. ,rootVisible: true
  22. ,ddAppendOnly: true
  23. ,useDefaultToolbar: true
  24. ,tbar: [{
  25. text: _('user_group_new')
  26. ,cls: 'primary-button'
  27. ,scope: this
  28. ,handler: this.createUserGroup.createDelegate(this,[true],true)
  29. }]
  30. });
  31. MODx.tree.UserGroup.superclass.constructor.call(this,config);
  32. };
  33. Ext.extend(MODx.tree.UserGroup,MODx.tree.Tree,{
  34. windows: {}
  35. /**
  36. * Handles tree clicks
  37. * @param {Object} n The node clicked
  38. * @param {Object} e The event object
  39. */
  40. ,_handleClick: function (n,e) {
  41. e.stopEvent();
  42. e.preventDefault();
  43. if (this.disableHref) {return true;}
  44. if (e.ctrlKey) {return true;}
  45. return true;
  46. }
  47. ,addUser: function(item,e) {
  48. var n = this.cm.activeNode;
  49. var ug = n.id.substr(2).split('_');ug = ug[1];
  50. if (ug === undefined) {ug = 0;}
  51. var r = {usergroup: ug};
  52. if (!this.windows.adduser) {
  53. this.windows.adduser = MODx.load({
  54. xtype: 'modx-window-usergroup-adduser'
  55. ,listeners: {
  56. 'success': {fn:this.refresh,scope:this}
  57. }
  58. });
  59. } else {
  60. this.windows.adduser.reset();
  61. }
  62. this.windows.adduser.setValues(r);
  63. this.windows.adduser.show(e.target);
  64. }
  65. ,createUserGroup: function(item,e,tbar) {
  66. tbar = tbar || false;
  67. var p;
  68. if (tbar === false) {
  69. var n = this.cm.activeNode;
  70. p = n.id.substr(2).split('_');p = p[1];
  71. if (p === undefined) {p = 0;}
  72. } else {p = 0;}
  73. var r = {'parent': p};
  74. if (!this.windows.createUsergroup) {
  75. this.windows.createUsergroup = MODx.load({
  76. xtype: 'modx-window-usergroup-create'
  77. ,listeners: {
  78. 'success': {fn:this.refresh,scope:this}
  79. }
  80. });
  81. } else {
  82. this.windows.createUsergroup.reset();
  83. }
  84. this.windows.createUsergroup.fp.form.setValues(r);
  85. this.windows.createUsergroup.show(e.target);
  86. }
  87. ,updateUserGroup: function(item,e) {
  88. var n = this.cm.activeNode;
  89. var id = n.id.substr(2).split('_');id = id[1];
  90. MODx.loadPage('security/usergroup/update', 'id=' + id);
  91. }
  92. ,getMenu: function() {
  93. var m = [];
  94. var n = this.cm.activeNode;
  95. var ui = n.getUI();
  96. switch (n.attributes.type) {
  97. case 'usergroup':
  98. if (MODx.perm.usergroup_user_edit && ui.hasClass('padduser')) {
  99. m.push({
  100. text: _('user_group_user_add')
  101. ,handler: this.addUser
  102. });
  103. m.push('-');
  104. }
  105. if (MODx.perm.usergroup_new && ui.hasClass('pcreate')) {
  106. m.push({
  107. text: _('user_group_create')
  108. ,handler: this.createUserGroup
  109. });
  110. }
  111. if (MODx.perm.usergroup_edit && ui.hasClass('pupdate')) {
  112. m.push({
  113. text: _('user_group_update')
  114. ,handler: this.updateUserGroup
  115. });
  116. }
  117. if (MODx.perm.usergroup_delete && ui.hasClass('premove')) {
  118. m.push('-');
  119. m.push({
  120. text: _('user_group_remove')
  121. ,handler: this.removeUserGroup
  122. });
  123. }
  124. break;
  125. case 'user':
  126. break;
  127. }
  128. return m;
  129. }
  130. ,removeUserGroup: function(item,e) {
  131. var n = this.cm.activeNode;
  132. var id = n.id.substr(2).split('_');id = id[1];
  133. MODx.msg.confirm({
  134. title: _('warning')
  135. ,text: _('user_group_remove_confirm')
  136. ,url: this.config.url
  137. ,params: {
  138. action: 'security/group/remove'
  139. ,id: id
  140. }
  141. ,listeners: {
  142. 'success': {fn:this.refresh,scope:this}
  143. }
  144. });
  145. }
  146. ,removeUser: function(item,e) {
  147. var n = this.cm.activeNode;
  148. var user_id = n.id.substr(2).split('_');user_id = user_id[1];
  149. var group_id = n.parentNode.id.substr(2).split('_');group_id = group_id[1];
  150. MODx.msg.confirm({
  151. title: _('warning')
  152. ,text: _('user_group_user_remove_confirm')
  153. ,url: this.config.url
  154. ,params: {
  155. action: 'security/group/removeUser'
  156. ,user_id: user_id
  157. ,group_id: group_id
  158. }
  159. ,listeners: {
  160. 'success':{fn:this.refresh,scope:this}
  161. }
  162. });
  163. }
  164. ,_handleDrop: function(e) {
  165. s = false;
  166. switch (e.dropNode.attributes.type) {
  167. case 'user':
  168. s = !(e.point == 'above' || e.point == 'below');
  169. s = s && e.target.attributes.type == 'usergroup' && e.point == 'append';
  170. break;
  171. case 'usergroup':
  172. s = true;
  173. break;
  174. }
  175. return s;
  176. }
  177. });
  178. Ext.reg('modx-tree-usergroup',MODx.tree.UserGroup);
  179. MODx.window.CreateUserGroup = function(config) {
  180. config = config || {};
  181. this.ident = config.ident || 'cugrp'+Ext.id();
  182. Ext.applyIf(config,{
  183. title: _('create_user_group')
  184. ,id: this.ident
  185. // ,height: 150
  186. ,width: 700
  187. ,stateful: false
  188. ,url: MODx.config.connector_url
  189. ,action: 'security/group/create'
  190. ,fields: [{
  191. name: 'parent'
  192. ,id: 'modx-'+this.ident+'-parent'
  193. ,xtype: 'hidden'
  194. },{
  195. xtype: 'textfield'
  196. ,fieldLabel: _('name')
  197. ,description: MODx.expandHelp ? '' : _('user_group_desc_name')
  198. ,name: 'name'
  199. ,id: 'modx-'+this.ident+'-name'
  200. ,allowBlank: false
  201. ,anchor: '100%'
  202. },{
  203. xtype: MODx.expandHelp ? 'label' : 'hidden'
  204. ,forId: 'modx-'+this.ident+'-name'
  205. ,html: _('user_group_desc_name')
  206. ,cls: 'desc-under'
  207. },{
  208. xtype: 'textarea'
  209. ,fieldLabel: _('description')
  210. ,description: MODx.expandHelp ? '' : _('user_group_desc_description')
  211. ,name: 'description'
  212. ,id: 'modx-'+this.ident+'-description'
  213. ,anchor: '100%'
  214. },{
  215. xtype: MODx.expandHelp ? 'label' : 'hidden'
  216. ,forId: 'modx-'+this.ident+'-description'
  217. ,html: _('user_group_desc_description')
  218. ,cls: 'desc-under'
  219. },{
  220. xtype: 'fieldset'
  221. ,collapsible: true
  222. ,collapsed: false
  223. ,autoHeight: true
  224. ,title: _('user_group_aw')
  225. ,items: [{
  226. html: '<p style="margin: 5px 0 0">'+_('user_group_aw_desc')+'</p>'
  227. ,cls: 'desc-under'
  228. },{
  229. layout: 'column'
  230. ,border: false
  231. ,defaults: {
  232. layout: 'form'
  233. ,labelAlign: 'top'
  234. ,anchor: '100%'
  235. ,border: false
  236. }
  237. ,items: [{
  238. columnWidth: .5
  239. ,items: [{
  240. xtype: 'textfield'
  241. ,name: 'aw_users'
  242. ,fieldLabel: _('user_group_aw_users')
  243. ,description: _('user_group_aw_users_desc')
  244. ,id: this.ident+'-aw-users'
  245. ,anchor: '100%'
  246. ,value: ''
  247. },{
  248. xtype: MODx.expandHelp ? 'label' : 'hidden'
  249. ,forId: this.ident+'-aw-users'
  250. ,html: _('user_group_aw_users_desc')
  251. ,cls: 'desc-under'
  252. },{
  253. fieldLabel: _('user_group_aw_resource_groups')
  254. ,description: _('user_group_aw_resource_groups_desc')
  255. ,name: 'aw_resource_groups'
  256. ,id: this.ident+'-aw-resource-groups'
  257. ,xtype: 'textfield'
  258. ,value: ''
  259. ,anchor: '100%'
  260. },{
  261. xtype: MODx.expandHelp ? 'label' : 'hidden'
  262. ,forId: this.ident+'-aw-resource-groups'
  263. ,html: _('user_group_aw_resource_groups_desc')
  264. ,cls: 'desc-under'
  265. },{
  266. boxLabel: _('user_group_aw_parallel')
  267. ,description: _('user_group_aw_parallel_desc')
  268. ,name: 'aw_parallel'
  269. ,id: this.ident+'-aw-parallel'
  270. ,xtype: 'checkbox'
  271. ,checked: false
  272. ,inputValue: 1
  273. ,anchor: '100%'
  274. },{
  275. xtype: MODx.expandHelp ? 'label' : 'hidden'
  276. ,forId: this.ident+'-aw-parallel'
  277. ,html: _('user_group_aw_parallel_desc')
  278. ,cls: 'desc-under'
  279. }]
  280. },{
  281. columnWidth: .5
  282. ,items: [{
  283. xtype: 'textfield'
  284. ,name: 'aw_contexts'
  285. ,fieldLabel: _('contexts')
  286. ,description: MODx.expandHelp ? '' : _('user_group_aw_contexts_desc')
  287. ,id: this.ident+'-aw-contexts'
  288. ,anchor: '100%'
  289. ,value: 'web'
  290. },{
  291. xtype: MODx.expandHelp ? 'label' : 'hidden'
  292. ,forId: this.ident+'-aw-contexts'
  293. ,html: _('user_group_aw_contexts_desc')
  294. ,cls: 'desc-under'
  295. },{
  296. xtype: 'modx-combo-policy'
  297. ,baseParams: {
  298. action: 'security/access/policy/getList'
  299. ,group: 'Admin'
  300. ,combo: '1'
  301. }
  302. ,name: 'aw_manager_policy'
  303. ,fieldLabel: _('user_group_aw_manager_policy')
  304. ,description: MODx.expandHelp ? '' : _('user_group_aw_manager_policy_desc')
  305. ,id: this.ident+'-aw-manager-policy'
  306. ,anchor: '100%'
  307. ,allowBlank: true
  308. },{
  309. xtype: MODx.expandHelp ? 'label' : 'hidden'
  310. ,forId: this.ident+'-aw-manager-policy'
  311. ,html: _('user_group_aw_manager_policy_desc')
  312. ,cls: 'desc-under'
  313. },{
  314. fieldLabel: _('user_group_aw_categories')
  315. ,description: _('user_group_aw_categories_desc')
  316. ,name: 'aw_categories'
  317. ,id: this.ident+'-aw-categories'
  318. ,xtype: 'textfield'
  319. ,value: ''
  320. ,anchor: '100%'
  321. },{
  322. xtype: MODx.expandHelp ? 'label' : 'hidden'
  323. ,forId: this.ident+'-aw-categories'
  324. ,html: _('user_group_aw_categories_desc')
  325. ,cls: 'desc-under'
  326. }]
  327. }]
  328. }]
  329. }]
  330. ,keys: []
  331. });
  332. MODx.window.CreateUserGroup.superclass.constructor.call(this,config);
  333. };
  334. Ext.extend(MODx.window.CreateUserGroup,MODx.Window);
  335. Ext.reg('modx-window-usergroup-create',MODx.window.CreateUserGroup);
  336. MODx.window.AddUserToUserGroup = function(config) {
  337. config = config || {};
  338. this.ident = config.ident || 'adtug'+Ext.id();
  339. Ext.applyIf(config,{
  340. title: _('user_group_user_add')
  341. ,id: this.ident
  342. // ,height: 150
  343. // ,width: 375
  344. ,url: MODx.config.connector_url
  345. ,action: 'security/group/user/create'
  346. ,fields: [{
  347. fieldLabel: _('name')
  348. ,description: MODx.expandHelp ? '' : _('user_group_user_add_user_desc')
  349. ,name: 'user'
  350. ,hiddenName: 'user'
  351. ,xtype: 'modx-combo-user'
  352. ,editable: true
  353. ,typeAhead: true
  354. ,allowBlank: false
  355. ,id: 'modx-'+this.ident+'-user'
  356. ,anchor: '100%'
  357. },{
  358. xtype: MODx.expandHelp ? 'label' : 'hidden'
  359. ,forId: 'modx-'+this.ident+'-role'
  360. ,html: _('user_group_user_add_user_desc')
  361. ,cls: 'desc-under'
  362. },{
  363. fieldLabel: _('role')
  364. ,description: MODx.expandHelp ? '' : _('user_group_user_add_role_desc')
  365. ,name: 'role'
  366. ,hiddenName: 'role'
  367. ,xtype: 'modx-combo-role'
  368. ,id: 'modx-'+this.ident+'-role'
  369. ,allowBlank: false
  370. ,anchor: '100%'
  371. },{
  372. xtype: MODx.expandHelp ? 'label' : 'hidden'
  373. ,forId: 'modx-'+this.ident+'-role'
  374. ,html: _('user_group_user_add_role_desc')
  375. ,cls: 'desc-under'
  376. },{
  377. name: 'usergroup'
  378. ,xtype: 'hidden'
  379. ,id: 'modx-'+this.ident+'-user-group'
  380. }]
  381. });
  382. MODx.window.AddUserToUserGroup.superclass.constructor.call(this,config);
  383. };
  384. Ext.extend(MODx.window.AddUserToUserGroup,MODx.Window);
  385. Ext.reg('modx-window-usergroup-adduser',MODx.window.AddUserToUserGroup);