modx.panel.groups.roles.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. /**
  2. * @class MODx.panel.GroupsRoles
  3. * @extends MODx.FormPanel
  4. * @param {Object} config An object of configuration properties
  5. * @xtype modx-panel-groups-roles
  6. */
  7. MODx.panel.GroupsRoles = function(config) {
  8. config = config || {};
  9. Ext.applyIf(config,{
  10. id: 'modx-panel-groups-roles'
  11. ,cls: 'container'
  12. ,defaults: { collapsible: false ,autoHeight: true }
  13. ,forceLayout: true
  14. ,items: [{
  15. html: _('user_group_management')
  16. ,id: 'modx-access-permissions-header'
  17. ,xtype: 'modx-header'
  18. },MODx.getPageStructure(this.getPageTabs(config),{
  19. id: 'modx-access-permissions-tabs'
  20. ,stateful: true
  21. ,stateId: 'access-tabpanel'
  22. ,stateEvents: ['tabchange']
  23. ,getState:function() {
  24. return {activeTab:this.items.indexOf(this.getActiveTab())};
  25. }
  26. })]
  27. });
  28. MODx.panel.GroupsRoles.superclass.constructor.call(this,config);
  29. var west, usergroupTree = Ext.getCmp('modx-tree-usergroup');
  30. usergroupTree.on('expandnode', this.fixPanelHeight);
  31. usergroupTree.on('collapsenode', this.fixPanelHeight);
  32. usergroupTree.addListener({
  33. resize : function(cmp) {
  34. var centre = Ext.getCmp('modx-usergroup-users');
  35. if (centre.hidden){
  36. Ext.getCmp('modx-tree-panel-usergroup').layout.west.getSplitBar().el.hide();
  37. }
  38. }
  39. });
  40. if (MODx.perm.usergroup_user_list == 1) {
  41. Ext.getCmp('modx-tree-usergroup').on('click', function(node,e){
  42. this.getUsers(node);
  43. }, this);
  44. }
  45. Ext.getCmp('modx-usergroup-users').store.on('load', this.fixPanelHeight);
  46. };
  47. Ext.extend(MODx.panel.GroupsRoles,MODx.FormPanel,{
  48. getPageTabs: function(config) {
  49. var tbs = [];
  50. if (MODx.perm.usergroup_view == 1) {
  51. tbs.push({
  52. title: _('user_groups') + ' & ' + _('users')
  53. ,autoHeight: true
  54. ,layout: 'form'
  55. ,items: [{
  56. html: '<p>'+_('user_group_management_msg')+'</p>'
  57. ,xtype: 'modx-description'
  58. },{
  59. layout: 'border'
  60. ,id: 'modx-tree-panel-usergroup'
  61. ,height: 500
  62. ,border:false
  63. ,defaults: {
  64. border:false
  65. ,bodyStyle: 'background-color:transparent;'
  66. }
  67. ,items: [
  68. {
  69. region:'west'
  70. ,cls:'main-wrapper'
  71. ,collapseMode: 'mini'
  72. ,split: true
  73. ,useSplitTips: true
  74. ,monitorResize: true
  75. ,width: 280
  76. ,minWidth: 280
  77. ,minSize: 280
  78. ,maxSize: 400
  79. ,layout: 'fit'
  80. ,items: [{
  81. xtype: 'modx-tree-usergroup'
  82. }]
  83. }, {
  84. region: 'center'
  85. ,id: 'modx-usergroup-users'
  86. ,xtype: 'modx-grid-user-group-users'
  87. ,hidden: true
  88. ,usergroup: '0'
  89. ,layout: 'fit'
  90. ,cls:'main-wrapper'
  91. }
  92. ]
  93. }]
  94. });
  95. }
  96. if (MODx.perm.view_role == 1) {
  97. tbs.push({
  98. title: _('roles')
  99. ,autoHeight: true
  100. ,layout: 'form'
  101. ,items: [{
  102. html: '<p>'+_('roles_msg')+'</p>'
  103. ,xtype: 'modx-description'
  104. },{
  105. xtype: 'modx-grid-role'
  106. ,cls:'main-wrapper'
  107. ,title: ''
  108. ,preventRender: true
  109. }]
  110. });
  111. }
  112. if (MODx.perm.policy_view == 1) {
  113. tbs.push({
  114. title: _('policies')
  115. ,id: 'modx-panel-access-policies'
  116. ,autoHeight: true
  117. ,layout: 'form'
  118. ,items: [{
  119. html: '<p>'+_('policy_management_msg')+'</p>'
  120. ,xtype: 'modx-description'
  121. },{
  122. xtype: 'modx-grid-access-policy'
  123. ,cls:'main-wrapper'
  124. }]
  125. });
  126. }
  127. if (MODx.perm.policy_template_view) {
  128. tbs.push({
  129. title: _('policy_templates')
  130. ,id: 'modx-panel-access-policy-templates'
  131. ,autoHeight: true
  132. ,layout: 'form'
  133. ,items: [{
  134. html: '<p>'+_('policy_templates.intro_msg')+'</p>'
  135. ,xtype: 'modx-description'
  136. },{
  137. xtype: 'modx-grid-access-policy-templates'
  138. ,cls:'main-wrapper'
  139. }]
  140. });
  141. }
  142. return tbs;
  143. }
  144. ,getUsers: function(node) {
  145. var center = Ext.getCmp('modx-usergroup-users');
  146. center.removeAll();
  147. var id = node.attributes.id;
  148. var usergroup = id.replace('n_ug_', '') - 0; // typecasting
  149. var userGrid = Ext.getCmp('modx-usergroup-users');
  150. var westPanel = Ext.getCmp('modx-tree-panel-usergroup').layout.west;
  151. if (usergroup == 0) {
  152. userGrid.hide();
  153. westPanel.getSplitBar().el.hide();
  154. } else {
  155. userGrid.show();
  156. westPanel.getSplitBar().el.show();
  157. userGrid.usergroup = usergroup;
  158. userGrid.config.usergroup = usergroup;
  159. userGrid.store.baseParams.usergroup = usergroup;
  160. userGrid.clearFilter();
  161. }
  162. }
  163. ,fixPanelHeight: function() {
  164. // fixing border layout's height regarding to tree panel's
  165. var treeEl = Ext.getCmp('modx-tree-usergroup').getEl();
  166. var treeH = treeEl.getHeight();
  167. var cHeight = Ext.getCmp('modx-usergroup-users').getHeight(); // .main-wrapper
  168. var maxH = (treeH > cHeight) ? treeH : cHeight;
  169. maxH = maxH > 500 ? maxH : 500;
  170. Ext.getCmp('modx-tree-panel-usergroup').setHeight(maxH);
  171. Ext.getCmp('modx-content').doLayout();
  172. }
  173. });
  174. Ext.reg('modx-panel-groups-roles',MODx.panel.GroupsRoles);