Pman.Tab.AdminContactsGroup.js
[Pman.Admin] / Pman.Tab.AdminContactsGroup.js
1 //<script type="text/javascript">
2
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
4
5
6
7 // register the module first
8 Pman.on('beforeload', function()
9 {
10     Pman.register({
11         modKey : '001-Pman.Tab.AdminContactsGroup',
12         module : Pman.Tab.AdminContactsGroup,
13         region : 'center',
14         parent : Pman.Tab.AdminContactsManager,
15         name : "Pman.Tab.AdminContactsGroup",
16         disabled : false, 
17         permname: '' 
18     });
19 });
20
21 Pman.Tab.AdminContactsGroup = new Roo.util.Observable({
22
23     panel : false,
24     disabled : false,
25     parentLayout:  false,
26
27     add : function(parentLayout, region)
28     {
29
30         var _this = this;
31         this.parentLayout = parentLayout;
32
33         this.panel = parentLayout.addxtype({
34             xtype: 'GridPanel',
35             xns: Roo,
36             listeners : {
37                 activate : function() {
38                     _this.panel = this;
39                     if (_this.grid) {
40                         _this.grid.ds.load({});
41                     }
42                 }
43             },
44             background : true,
45             fitContainer : true,
46             fitToframe : true,
47             region : 'west',
48             tableName : 'Groups',
49             title : "Groups",
50             grid : {
51                 xtype: 'Grid',
52                 xns: Roo.grid,
53                 listeners : {
54                     render : function() 
55                     {
56                         _this.grid = this; 
57                         //_this.dialog = Pman.Dialog.FILL_IN
58                         if (_this.panel.active) {
59                             _this.grid.ds.load({});
60                         }
61                     },
62                     rowdblclick : function (_self, rowIndex, e)
63                     {
64                         if (!_this.dialog) return;
65                         _this.dialog.show( this.getDataSource().getAt(rowIndex), function() {
66                             _this.grid.footer.onClick('first');
67                         }); 
68                     },
69                     dragover : function (_self, dd, targetId, e)
70                     {
71                       Roo.log("dragover");
72                         var t = Roo.lib.Event.getTarget(e); 
73                         var ri = _this.grid.view.findRowIndex(t);
74                         var rid  = false;
75                         if (ri !== false) {
76                             rid = _this.grid.getDataSource().getAt(ri).data;
77                         }
78                         
79                         var s = _this.grid.getSelectionModel().getSelections();
80                         
81                         var isFromGroup = s.length ? s[0].data.id > 0 : false;
82                         
83                         var isToGroup = rid && rid.id > 0;
84                         
85                         if (isFromGroup && isToGroup) {
86                             return this.dropNotAllowed; 
87                         }
88                         if (!isFromGroup && !isToGroup) {
89                             return this.dropNotAllowed; 
90                         }
91                         if (isFromGroup && !isToGroup) {
92                             return 'x-dd-drop-ok-sub'; 
93                         } 
94                         //if (!isFromGroup && isToGroup) {
95                             return 'x-dd-drop-ok-add'; 
96                         //}
97                     },
98                     dragdrop : function (_self, dd, targetId, e)
99                     {
100                         Roo.log("DROP");
101                         var t = Roo.lib.Event.getTarget(e); 
102                                     var ri = _this.grid.view.findRowIndex(t);
103                                     var rid  = false;
104                                     if (ri !== false) {
105                                         rid = _this.grid.getDataSource().getAt(ri).data;
106                                     }
107                                     var s = _this.grid.getSelectionModel().getSelections();
108                                       
109                                     //console.log(data);
110                                     var isFromGroup = s.length ? s[0].data.id > 0 : false;
111                                     
112                                     var isToGroup = rid && rid.id > 0;
113                                     
114                                     if (isFromGroup && isToGroup) {
115                                         return false;
116                                     }
117                                     if (!isFromGroup && !isToGroup) {
118                                         return false;
119                                     }
120                                     var action = 'add';
121                                     if (isFromGroup && !isToGroup) {
122                                         action = 'sub';
123                                         //return 'x-dd-drop-ok-sub'; 
124                                     }
125                                     // build a list of selections.
126                                     var sels = [];
127                                     for (var i=0; i < data.selections.length; i++) {
128                                         sels.push(data.selections[i].data.id);
129                                     }
130                                     
131                                     Pman.request({
132                                         url: baseURL + '/Core/GroupMembers.php',
133                                         params: {
134                                             action : action,
135                                             group_id: action =='add' ? rid.id : s[0].data.id,
136                                             type: _this.type,
137                                             user_ids : sels.join(',')
138                                             
139                                         },  
140                                         method: 'POST',  
141                                         success : function(data) {
142                                             refreshPager();
143                                         }, 
144                                         
145                                         failure: function() {
146                                             //Ext.get(document.body).unmask();
147                                             //if (cb) {
148                                             //    cb.call(false);
149                                             //}
150                                              
151                                         }
152                                     });
153                                     
154                                     
155                                     
156                                     //if (!isFromGroup && isToGroup) {
157                                         //return 'x-dd-drop-ok-add'; 
158                                     return true;
159                                     //}
160                                     
161                     },
162                     enddrag : function (_self, dd, e)
163                     {
164                     
165                     }
166                 },
167                 autoExpandColumn : 'name',
168                 ddGroup : 'groupDD',
169                 enableDrop : true,
170                 loadMask : true,
171                 dataSource : {
172                     xtype: 'Store',
173                     xns: Roo.data,
174                     listeners : {
175                         beforeload : function (_self, o)
176                         {
177                             o.params = o.params || {};
178                             o.params.type =2;
179                         },
180                         load : function (_self, records, options)
181                         {
182                             var sm = _this.grid.getSelectionModel();
183                                 if (!sm.getSelections().length) {
184                                     sm.selectFirstRow();
185                                 }
186                                 Pman.Tab.AdminContacts.grid.footer.onClick('first');
187                         }
188                     },
189                     remoteSort : true,
190                     sortInfo : { field : 'name', direction: 'ASC' },
191                     proxy : {
192                         xtype: 'HttpProxy',
193                         xns: Roo.data,
194                         method : 'GET',
195                         url : baseURL + '/Roo/Groups.php'
196                     },
197                     reader : {
198                         xtype: 'JsonReader',
199                         xns: Roo.data,
200                         totalProperty : 'total',
201                         root : 'data',
202                         id : 'id',
203                         fields : [
204                             {
205                                 'name': 'id',
206                                 'type': 'int'
207                             },
208                             {
209                                 'name': 'name',
210                                 'type': 'string'
211                             },
212                             {
213                                 'name': 'type',
214                                 'type': 'int'
215                             },
216                             {
217                                 'name': 'leader',
218                                 'type': 'int'
219                             },
220                             {
221                                 'name': 'leader_id',
222                                 'type': 'int'
223                             },
224                             {
225                                 'name': 'leader_office_id',
226                                 'type': 'int'
227                             },
228                             {
229                                 'name': 'leader_name',
230                                 'type': 'string'
231                             },
232                             {
233                                 'name': 'leader_phone',
234                                 'type': 'string'
235                             },
236                             {
237                                 'name': 'leader_fax',
238                                 'type': 'string'
239                             },
240                             {
241                                 'name': 'leader_email',
242                                 'type': 'string'
243                             },
244                             {
245                                 'name': 'leader_company_id',
246                                 'type': 'int'
247                             },
248                             {
249                                 'name': 'leader_role',
250                                 'type': 'string'
251                             },
252                             {
253                                 'name': 'leader_active',
254                                 'type': 'int'
255                             },
256                             {
257                                 'name': 'leader_remarks',
258                                 'type': 'string'
259                             },
260                             {
261                                 'name': 'leader_passwd',
262                                 'type': 'string'
263                             },
264                             {
265                                 'name': 'leader_owner_id',
266                                 'type': 'int'
267                             },
268                             {
269                                 'name': 'leader_lang',
270                                 'type': 'string'
271                             },
272                             {
273                                 'name': 'leader_no_reset_sent',
274                                 'type': 'int'
275                             },
276                             {
277                                 'name': 'leader_action_type',
278                                 'type': 'string'
279                             },
280                             {
281                                 'name': 'leader_project_id',
282                                 'type': 'int'
283                             }
284                         ]
285                     }
286                 },
287                 toolbar : {
288                     xtype: 'Toolbar',
289                     xns: Roo,
290                     items : [
291                         {
292                             xtype: 'Button',
293                             xns: Roo.Toolbar,
294                             text : "Manage Groups",
295                             menu : {
296                                 xtype: 'Menu',
297                                 xns: Roo.menu,
298                                 items : [
299                                     {
300                                         xtype: 'Item',
301                                         xns: Roo.menu,
302                                         listeners : {
303                                             click : function()
304                                             {
305                                                 if (!_this.dialog) return;
306                                                 _this.dialog.show( { id : 0 } , function() {
307                                                      _this.grid.ds.load({});
308                                                }); 
309                                             }
310                                         },
311                                         cls : 'x-btn-text-icon',
312                                         text : "Add",
313                                         icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
314                                     },
315                                     {
316                                         xtype: 'Item',
317                                         xns: Roo.menu,
318                                         listeners : {
319                                             click : function()
320                                             {
321                                                 var s = _this.grid.getSelectionModel().getSelections();
322                                                 if (!s.length || (s.length > 1))  {
323                                                     Roo.MessageBox.alert("Error", s.length ? "Select only one Row" : "Select a Row");
324                                                     return;
325                                                 }
326                                                 if (!_this.dialog) return;
327                                                 _this.dialog.show(s[0].data, function() {
328                                                      _this.grid.ds.load({});
329                                                 }); 
330                                                 
331                                             }
332                                         },
333                                         cls : 'x-btn-text-icon',
334                                         text : "Edit",
335                                         icon : Roo.rootURL + 'images/default/tree/leaf.gif'
336                                     },
337                                     {
338                                         xtype: 'Item',
339                                         xns: Roo.menu,
340                                         listeners : {
341                                             click : function()
342                                             {
343                                                  Pman.genericDelete(_this, 'Groups'); 
344                                             }
345                                         },
346                                         cls : 'x-btn-text-icon',
347                                         text : "Delete",
348                                         icon : rootURL + '/Pman/templates/images/trash.gif'
349                                     },
350                                     {
351                                         xtype: 'Separator',
352                                         xns: Roo.menu
353                                     },
354                                     {
355                                         xtype: 'Item',
356                                         xns: Roo.menu,
357                                         listeners : {
358                                             click : function (_self, e)
359                                             {
360                                               _this.grid.ds.load({});
361                                             }
362                                         },
363                                         text : "Reload"
364                                     }
365                                 ]
366                             }
367                         }
368                     ]
369                 },
370                 colModel : [
371                     {
372                         xtype: 'ColumnModel',
373                         xns: Roo.grid,
374                         dataIndex : 'name',
375                         header : 'Name',
376                         width : 200,
377                         renderer : function(v,x,r) { 
378                             if (r.data.id == -1) {
379                                 return '<b>' + "Not in a Group" + '</b>';
380                             }
381                             if ((r.data.id == 0) && (_this.type == 0)) {
382                                 return '<b>' + "All Staff (Default Permissions)" + '</b>';
383                             }
384                             if ((r.data.id == 0) && (_this.type == 2)) {
385                                 return '<b>' + "Everybody" + '</b>';
386                             }
387                             if (r.data.id == 0) {
388                                 return '<b>' + "All Staff" + '</b>';
389                             }
390                             if (v == 'Administrators') {
391                                 return '<b>' + "Adminstrators" + '</b>';
392                             }
393                             if (r.data.leader) {
394                                 return v + ' (' + r.data.leader_name + ')';
395                             }
396                             
397                             return v;
398                         }
399                     }
400                 ],
401                 sm : {
402                     xtype: 'RowSelectionModel',
403                     xns: Roo.grid,
404                     listeners : {
405                         afterselectionchange : function (_self)
406                         {
407                             Pman.Tab.AdminContacts.footer.onClick('first');
408                         }
409                     },
410                     singleSelect : true
411                 },
412                 dragTarget : {
413                     xtype: 'DropTarget',
414                     xns: Roo.dd
415                 }
416             }
417         });
418         this.layout = this.panel.layout;
419
420     }
421 });