1 //<script type="text/javascript">
5 * needs a translation list..
9 Pman.on('beforeload', function()
14 modKey : '002-pman-tab-groups-rights',
15 module : Pman.Tab.Group_Rights,
17 parent : Pman.Tab.GroupMgr,
18 name : "Permission Groups"
24 Pman.ColModels.Group_RightsRenderer = function(v, c, r, ri, ci, st) {
25 // work out what the column is..
26 var h = Pman.Tab.Group_Rights.grid.getColumnModel().getColumnId(ci).toUpperCase();
28 var fm = r.json.FullMask;
30 if (h == 'AA') { // All....
31 state = v== fm ? '-checked' : '';
32 } else if (v.indexOf(h.substring(3)) > -1) {
35 if (fm.indexOf(h.substring(3)) < 0) { // dont show checkboxes for no perms.
39 return '<img class="x-grid-check-icon' + state + '" src="' + Ext.BLANK_IMAGE_URL + '"/>';
45 Pman.Tab.Group_Rights = {
46 rightNames : { }, // filled in by modules.
51 add : function(parentLayout, region) {
55 parentLayout.getRegion(region).showPanel(this.panel);
60 this.innerLayout = new Ext.BorderLayout(
61 parentLayout.getEl().createChild({tag:'div'}),
73 this.tab = parentLayout.add(region, new Ext.NestedLayoutPanel(
74 this.innerLayout, {title: "Rights", id: 'Group_Rights'}));
77 //this.innerLayout.beginUpdate();
80 var frm = parentLayout.getRegion(region).getEl().createChild({tag:'div', id: 'grid-group_rights'});
81 //this.grid = new Ext.grid.EditorGrid(frm, {
82 this.grid = new Ext.grid.Grid(frm, {
84 ds: new Ext.data.Store({
86 proxy: new Ext.data.HttpProxy({
87 url: baseURL + '/Admin/GroupRights.php',
90 reader: Pman.Readers.Group_Rights,
93 beforeload : function(t,o)
98 var s = Pman.Tab.Groups.grid.getSelectionModel().getSelections();
100 o.params.group_id = -1;
102 o.params.group_id = s[0].data.id;
104 if (o.params.group_id < 0) {
105 _this.grid.getView().el.mask("You can not set permissions for that group");
108 _this.grid.getView().el.unmask();
111 loadexception : Pman.loadException
115 selModel: new Ext.grid.CellSelectionModel(),
116 cm: new Ext.grid.ColumnModel([
120 dataIndex : 'AccessMask',
123 renderer : Pman.ColModels.Group_RightsRenderer
127 'id' : 'group-rights-module',
129 dataIndex : 'rightname',
132 renderer : function(v,x,r)
134 return String.format('{0}',v.split('.').shift());
139 'id' : 'group_rights-rightname',
140 header : "Permission",
141 'dataIndex' : 'rightname',
144 renderer : function (v,x,r) {
146 if (r.json.descript && r.json.descript.length) {
147 return String.format('{0}',r.json.descript);
151 // this needs to be generated by the modules..
153 case 'Documents.Document_Manager': return "Document Manager";
154 case 'Documents.Documents': return "Documents";
155 case 'Documents.Unread_Documents': return "Unread Documents";
156 case 'Documents.Distribute_Documents': return "Distribute Documents";
157 case 'Documents.Work_In_Progress': return "Work In Progress";
159 case 'Documents.Project_Directory': return "Project Directory";
162 case 'Fax.Fax': return "Fax";
163 case 'Fax.Fax_To_Company': return "Send Faxes To Companies";
164 case 'Timesheet.Timesheet': return "Timesheet";
166 case 'Admin.Admin_Tab': return "Admin Tab";
167 case 'Core.Person': return "Person";
168 case 'Core.Offices': return "Offices";
169 case 'Core.Companies': return "Companies";
171 case 'Core.Staff': return "Staff";
172 case 'Core.Groups': return "Groups";
174 case 'Core.Events': return "Events";
176 if (typeof(Pman.rightNames[v]) == 'string' && Pman.rightNames[v].length) {
177 return String.format('{0}',Pman.rightNames[v]);
190 'dataIndex' : 'AccessMask',
193 renderer : Pman.ColModels.Group_RightsRenderer
198 'dataIndex' : 'AccessMask',
201 renderer : Pman.ColModels.Group_RightsRenderer
206 'dataIndex' : 'AccessMask',
209 renderer : Pman.ColModels.Group_RightsRenderer
213 header : "List/View",
214 'dataIndex' : 'AccessMask',
217 renderer : Pman.ColModels.Group_RightsRenderer
218 }, // P= print / I= import (not used)
222 header : "Print / Export",
223 'dataIndex' : 'AccessMask',
226 renderer : Pman.ColModels.Group_RightsRenderer
231 'dataIndex' : 'AccessMask',
234 renderer : Pman.ColModels.Group_RightsRenderer
239 'header' : 'Admin mode',
240 'dataIndex' : 'AccessMask',
243 renderer : Pman.ColModels.Group_RightsRenderer
247 'id': 'group_rights-remarks',
249 dataIndex : 'Remarks',
254 autoExpandColumn: 'group_rights-remarks' , // fixme!!!!
258 trackMouseOver : false,
260 cellclick: function (g, ri, ci, e)
262 var h = g.getColumnModel().getColumnId(ci);
264 var fm = g.getDataSource().getAt(ri).json.FullMask;
266 if (h.substring(0,2) == 'aa') {
267 var old = g.getDataSource().getAt(ri).data.AccessMask;
269 g.getDataSource().getAt(ri).set('AccessMask',
270 old == fm ? "" : fm );
274 if (h.substring(0,2) != 'am') {
277 var c = h.substring(3).toUpperCase();
279 if (fm.indexOf(c) < 0) {
280 return; // skip no perms boxes
283 //var def = 'ADESPIM';
287 for(var i = 0;i< fm.length; i++) {
288 var cc = fm.substring(i,i+1);
289 ret[cc] = str.indexOf(cc) > -1;
293 function toStr(obj) {
296 for(var i = 0;i< fm.length; i++) {
297 var cc = fm.substring(i,i+1);
307 // get existing value..
308 var conf = toKV(g.getDataSource().getAt(ri).data.AccessMask);
310 g.getDataSource().getAt(ri).set('AccessMask',toStr(conf));
316 this.grid.getSelectionModel().lock();
317 this.panel = parentLayout.add(region, new Ext.GridPanel(this.grid ,
318 { fitToframe: true,fitContainer: true, title: "Rights", id: 'group_rights', controller : this })
322 var gridFoot = this.grid.getView().getFooterPanel(true);
324 this.paging = new Ext.PagingToolbar(gridFoot, this.grid.getDataSource(), {
331 var grid = this.grid;
333 var gridHead = this.grid.getView().getHeaderPanel(true);
334 var tb = new Ext.Toolbar(gridHead);
341 cls: 'x-btn-text-icon',
342 icon: rootURL + '/Pman/templates/images/save.gif',
343 hidden : !Pman.hasPerm('Core.Groups', 'E'),
344 handler : function(){
346 grid.getDataSource().each(function(r) {
350 data[r.data.id > -1 ? 'dataUpdate['+r.data.id+']' : 'dataAdd['+r.data.rightname+']'] = r.data.AccessMask;
354 data.group_id = grid.getDataSource().lastOptions.params.group_id;
356 url: baseURL + '/Admin/GroupRights.php',
359 success : function() {
361 //Pman.Tab.Group_Rights.paging.onClick('first');
363 failure: function() {
364 Ext.MessageBox.alert("There was a problem saving the data");
372 cls: 'x-btn-text-icon',
373 icon: rootURL + '/Pman/templates/images/refresh.gif',
374 handler : function(){
379 this.panel.on('activate', function() {
384 // add stuff to toolbar?
385 //this.innerLayout.endUpdate();
390 refresh : function() {
391 this.grid.getDataSource().reload();
394 show: function (parentLayout, region)
396 this.add(parentLayout, region);
397 this.grid.getDataSource().load({
406 renderer: function(v, c, r, ri, ci, st) {
407 // work out what the column is..
408 var h = Pman.Tab.Group_Rights.grid.getColumnModel().getColumnId(ci).toUpperCase();
411 if (v.indexOf(h.substring(3)) > -1) {