Pman.Tab.AdminContactsGroupRight.bjs
[Pman.Admin] / Pman.Tab.AdminContactsGroupRight.js
1 //<script type="text/javascript">
2
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
4
5 Pman.Tab.AdminContactsGroupRight = new Roo.XComponent({
6     part     :  ["Admin","ContactsGroupRight"],
7     order    : '001-Pman.Tab.AdminContactsGroupRight',
8     region   : 'center',
9     parent   : 'Pman.Tab.AdminContactsManager',
10     name     : "unnamed module",
11     disabled : false, 
12     permname : '', 
13     _tree : function()
14     {
15         var _this = this;
16         var MODULE = this;
17         return {
18             xtype: 'GridPanel',
19             xns: Roo,
20             listeners : {
21                 activate : function() {
22                     _this.panel = this;
23                     if (_this.grid) {
24                         _this.grid.footer.onClick('first');
25                     }
26                 }
27             },
28             autoScroll : true,
29             background : true,
30             fitContainer : true,
31             fitToframe : true,
32             region : 'center',
33             tableName : 'Person',
34             title : "Rights",
35             grid : {
36                 xtype: 'Grid',
37                 xns: Roo.grid,
38                 listeners : {
39                     render : function() 
40                     {
41                         _this.grid = this; 
42                         if (!_this.dialog) {
43                             _this.dialog = Pman.Dialog.PersonEdit;
44                             
45                         }
46                         //_this.dialog = Pman.Dialog.FILL_IN
47                         if (_this.panel.active) {
48                            this.footer.onClick('first');
49                         }
50                     },
51                     cellclick : function (_self, rowIndex, columnIndex, e)
52                     {
53                             _this.dataUpdate = typeof(_this.dataUpdate) =='undefined' ?  {} : _this.dataUpdate;
54                             
55                             var di = this.colModel.getDataIndex(columnIndex);
56                             var i = di.split('_').shift();
57                             var k = di.split('_').pop();
58                             if (i != 'accessmask') {
59                                 return;
60                             }
61                             var rec = _this.grid.ds.getAt(rowIndex);
62                             var fm = rec.data.FullMask.split('');        
63                             if(k == 'AA'){
64                     
65                                 Roo.each(fm, function(e){
66                                     rec.set(i+'_'+e, rec.data[i+'_'+k] ? 0 : 1);
67                                 });
68                             } 
69                             rec.set(i+'_'+k, rec.data[i+'_'+k] ? 0 : 1);
70                             
71                             var newmask = '';
72                             Roo.each(fm, function(e) {
73                                 if (rec.data[i+'_'+e] === 1) {
74                             
75                                     newmask += e;
76                                 }
77                             
78                             });        
79                             
80                             //rec.data.accessmask = rec.data.accessmask + rec
81                             //Roo.log(rec);
82                             _this.dataUpdate[rec.data.id] = newmask;
83                     
84                             //rec.commit();
85                              
86                             
87                     }
88                 },
89                 ddGroup : 'groupDD',
90                 enableDrag : true,
91                 loadMask : true,
92                 dataSource : {
93                     xtype: 'Store',
94                     xns: Roo.data,
95                     listeners : {
96                         beforeload : function (_self, o)
97                         {
98                             if (!o.params) {
99                                 o.params = {}
100                             }
101                                 _this.group_id = -1;
102                             var s = Pman.Tab.AdminContactsGroup.grid.getSelectionModel().getSelections();
103                         
104                             if (!s.length) {
105                                 o.params.group_id = -1;
106                             } else {
107                                 o.params.group_id = s[0].data.id;
108                             }
109                             if (o.params.group_id < 0) {
110                                 _this.grid.getView().el.mask("You can not set permissions for that group");
111                                 return false;
112                             }
113                             _this.group_id = o.params.group_id;
114                             _this.grid.getView().el.unmask();
115                             return true;
116                           
117                         },
118                         update : function (_self, record, operation)
119                         {
120                             if (operation != 'commit') {
121                                 return;
122                             }
123                             // only used to change active status.
124                             
125                             new Pman.Request({
126                                 url : baseURL + '/Roo/GroupRights.php',
127                                 method :'POST',
128                                 params : {
129                                     id : record.data.id,
130                                     active: record.data.active
131                                     
132                                 },
133                                 success : function() {
134                                     // do nothing
135                                     
136                                     _this.grid.ds.remove(record);
137                                     
138                                 },
139                                 failure : function() 
140                                 {
141                                     Roo.MessageBox.alert("Error", "saving failed", function() {
142                                         _this.grid.footer.onClick('first');
143                                     });
144                                 }
145                             });
146                         },
147                         load : function (_self, records, options)
148                         {
149                             _this.dataUpdate = {};
150                             var full = 'ADEPS'.split('');
151                             
152                             Roo.each(records, function(e){
153                                 _this.dataUpdate[e.id] = e.data.accessmask;
154                             
155                                 var k = e.data.accessmask.split('');
156                                 var rm = e.data.FullMask.split('');
157                                 
158                                 Roo.each(full, function(ee){
159                                     if (rm.indexOf(ee) < 0) {
160                                         e.set('accessmask_'+ee, -1);          
161                                         return;
162                                     }
163                                     
164                                     e.set('accessmask_'+ee, (k.indexOf(ee) < 0) ? 0 : 1);
165                                 });
166                                 
167                                 if(e.data.accessmask == e.data.FullMask){
168                                     e.set('accessmask_AA', 1);
169                                 }
170                             });
171                         }
172                     },
173                     remoteSort : true,
174                     sortInfo : { field : 'id', direction: 'ASC' },
175                     proxy : {
176                         xtype: 'HttpProxy',
177                         xns: Roo.data,
178                         method : 'GET',
179                         url : baseURL + '/Admin/GroupRights.php'
180                     },
181                     reader : {
182                         xtype: 'JsonReader',
183                         xns: Roo.data,
184                         id : 'id',
185                         root : 'data',
186                         totalProperty : 'total',
187                         fields : [
188                             {
189                                 'name': 'id',
190                                 'type': 'int'
191                             },
192                             {
193                                 'name': 'rightname',
194                                 'type': 'string'
195                             },
196                             {
197                                 'name': 'descript',
198                                 'type': 'string'
199                             },
200                             {
201                                 'name': 'accessmask',
202                                 'type': 'string'
203                             },
204                             {
205                                 'name': 'FullMask',
206                                 'type': 'string'
207                             },
208                             {
209                                 'name': 'group_id',
210                                 'type': 'int'
211                             }
212                         ]
213                     }
214                 },
215                 footer : {
216                     xtype: 'PagingToolbar',
217                     xns: Roo,
218                     pageSize : 25,
219                     displayInfo : true,
220                     displayMsg : "Displaying Person{0} - {1} of {2}",
221                     emptyMsg : "No Person found",
222                     items : [
223                         {
224                             xtype: 'TextItem',
225                             xns: Roo.Toolbar,
226                             text : "Drag person to add or remove from group"
227                         }
228                     ]
229                 },
230                 toolbar : {
231                     xtype: 'Toolbar',
232                     xns: Roo,
233                     items : [
234                         {
235                             xtype: 'Button',
236                             xns: Roo.Toolbar,
237                             listeners : {
238                                 click : function (_self, e)
239                                 {
240                                     
241                                     var params = { group_id : _this.group_id };
242                                     for(var i in _this.dataUpdate) {
243                                         params['dataUpdate[' + i + ']'] = _this.dataUpdate[i];
244                                     }
245                                     //Roo.log(params);return;
246                                     
247                                     new Pman.Request({
248                                         url : baseURL + '/Admin/GroupRights.php',
249                                         method :'POST',
250                                         mask: "Saving",
251                                         params : params,
252                                         success : function() {
253                                             // do nothing
254                                             
255                                             //_this.grid.ds.remove(record);
256                                             
257                                         },
258                                         failure : function() 
259                                         {
260                                             Roo.MessageBox.alert("Error", "saving failed", function() {
261                                                 _this.grid.footer.onClick('first');
262                                             });
263                                         }
264                                     });
265                                 }
266                             },
267                             text : "Save"
268                         }
269                     ]
270                 },
271                 colModel : [
272                     {
273                         xtype: 'ColumnModel',
274                         xns: Roo.grid,
275                         dataIndex : 'accessmask_AA',
276                         header : 'All',
277                         sortable : false,
278                         width : 50,
279                         renderer : function(v,x,r) {
280                              
281                             var state = v> 0 ?  '-checked' : '';
282                         
283                             return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
284                         }
285                     },
286                     {
287                         xtype: 'ColumnModel',
288                         xns: Roo.grid,
289                         dataIndex : 'rightname',
290                         header : 'Module',
291                         sortable : false,
292                         width : 150,
293                         renderer : function(v,x,r) {
294                             if(!v){
295                                 return;
296                             }
297                             return String.format('<span qtip="{1}">{0}</span>', v.split('.').shift(), v);
298                         }
299                     },
300                     {
301                         xtype: 'ColumnModel',
302                         xns: Roo.grid,
303                         dataIndex : 'descript',
304                         header : 'Permission',
305                         sortable : false,
306                         width : 300,
307                         renderer : function(v,x,r)
308                         {
309                             if (r.json.descript && r.json.descript.length) {
310                                 return String.format('{0}',r.json.descript);
311                             }
312                             
313                             return '???' + v;
314                         }
315                     },
316                     {
317                         xtype: 'ColumnModel',
318                         xns: Roo.grid,
319                         dataIndex : 'accessmask_A',
320                         header : 'Add',
321                         width : 75,
322                         renderer : function(v) {  
323                             if (v < 0) {
324                                 return '';
325                             }
326                             var state = v> 0 ?  '-checked' : '';
327                         
328                             return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
329                                         
330                          }
331                     },
332                     {
333                         xtype: 'ColumnModel',
334                         xns: Roo.grid,
335                         dataIndex : 'accessmask_E',
336                         header : 'Edit',
337                         width : 75,
338                         renderer : function(v) {  
339                            if (v < 0) {
340                                 return '';
341                             }
342                             var state = v> 0 ?  '-checked' : '';
343                         
344                             return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
345                                         
346                          }
347                     },
348                     {
349                         xtype: 'ColumnModel',
350                         xns: Roo.grid,
351                         dataIndex : 'accessmask_D',
352                         header : 'Delete',
353                         width : 75,
354                         renderer : function(v) {  
355                             if (v < 0) {
356                                 return '';
357                             }
358                             var state = v> 0 ?  '-checked' : '';
359                         
360                             return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
361                                         
362                          }
363                     },
364                     {
365                         xtype: 'ColumnModel',
366                         xns: Roo.grid,
367                         dataIndex : 'accessmask_S',
368                         header : 'List/View',
369                         width : 75,
370                         renderer : function(v) {  
371                             
372                             if (v < 0) {
373                                 return '';
374                             }
375                             var state = v> 0 ?  '-checked' : '';
376                         
377                             return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
378                                         
379                          }
380                     },
381                     {
382                         xtype: 'ColumnModel',
383                         xns: Roo.grid,
384                         dataIndex : 'accessmask_P',
385                         header : 'Print/Export',
386                         width : 75,
387                         renderer : function(v,x,r) {  
388                             
389                             
390                             if (v < 0) {
391                                 return '';
392                             }
393                             var state = v> 0 ?  '-checked' : '';
394                         
395                             return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
396                                         
397                          }
398                     }
399                 ]
400             }
401         };
402     }
403 });