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 : 'west',
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                 },
163                 autoExpandColumn : 'name',
164                 ddGroup : 'groupDD',
165                 enableDrop : true,
166                 loadMask : true,
167                 dataSource : {
168                     xtype: 'Store',
169                     xns: Roo.data,
170                     listeners : {
171                         beforeload : function (_self, o)
172                         {
173                             o.params = o.params || {};
174                             o.params.type =2;
175                         },
176                         load : function (_self, records, options)
177                         {
178                             var sm = _this.grid.getSelectionModel();
179                                 if (!sm.getSelections().length) {
180                                     sm.selectFirstRow();
181                                 }
182                                 Pman.Tab.AdminContacts.grid.footer.onClick('first');
183                         }
184                     },
185                     remoteSort : true,
186                     sortInfo : { field : 'name', direction: 'ASC' },
187                     proxy : {
188                         xtype: 'HttpProxy',
189                         xns: Roo.data,
190                         method : 'GET',
191                         url : baseURL + '/Roo/Groups.php'
192                     },
193                     reader : {
194                         xtype: 'JsonReader',
195                         xns: Roo.data,
196                         totalProperty : 'total',
197                         root : 'data',
198                         id : 'id',
199                         fields : [
200                             {
201                                 'name': 'id',
202                                 'type': 'int'
203                             },
204                             {
205                                 'name': 'name',
206                                 'type': 'string'
207                             },
208                             {
209                                 'name': 'type',
210                                 'type': 'int'
211                             },
212                             {
213                                 'name': 'leader',
214                                 'type': 'int'
215                             },
216                             {
217                                 'name': 'leader_id',
218                                 'type': 'int'
219                             },
220                             {
221                                 'name': 'leader_office_id',
222                                 'type': 'int'
223                             },
224                             {
225                                 'name': 'leader_name',
226                                 'type': 'string'
227                             },
228                             {
229                                 'name': 'leader_phone',
230                                 'type': 'string'
231                             },
232                             {
233                                 'name': 'leader_fax',
234                                 'type': 'string'
235                             },
236                             {
237                                 'name': 'leader_email',
238                                 'type': 'string'
239                             },
240                             {
241                                 'name': 'leader_company_id',
242                                 'type': 'int'
243                             },
244                             {
245                                 'name': 'leader_role',
246                                 'type': 'string'
247                             },
248                             {
249                                 'name': 'leader_active',
250                                 'type': 'int'
251                             },
252                             {
253                                 'name': 'leader_remarks',
254                                 'type': 'string'
255                             },
256                             {
257                                 'name': 'leader_passwd',
258                                 'type': 'string'
259                             },
260                             {
261                                 'name': 'leader_owner_id',
262                                 'type': 'int'
263                             },
264                             {
265                                 'name': 'leader_lang',
266                                 'type': 'string'
267                             },
268                             {
269                                 'name': 'leader_no_reset_sent',
270                                 'type': 'int'
271                             },
272                             {
273                                 'name': 'leader_action_type',
274                                 'type': 'string'
275                             },
276                             {
277                                 'name': 'leader_project_id',
278                                 'type': 'int'
279                             }
280                         ]
281                     }
282                 },
283                 toolbar : {
284                     xtype: 'Toolbar',
285                     xns: Roo,
286                     items : [
287                         {
288                             xtype: 'Button',
289                             xns: Roo.Toolbar,
290                             text : "Manage Groups",
291                             menu : {
292                                 xtype: 'Menu',
293                                 xns: Roo.menu,
294                                 items : [
295                                     {
296                                         xtype: 'Item',
297                                         xns: Roo.menu,
298                                         listeners : {
299                                             click : function()
300                                             {
301                                                 if (!_this.dialog) return;
302                                                 _this.dialog.show( { id : 0 } , function() {
303                                                      _this.grid.ds.load({});
304                                                }); 
305                                             }
306                                         },
307                                         cls : 'x-btn-text-icon',
308                                         text : "Add",
309                                         icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
310                                     },
311                                     {
312                                         xtype: 'Item',
313                                         xns: Roo.menu,
314                                         listeners : {
315                                             click : function()
316                                             {
317                                                 var s = _this.grid.getSelectionModel().getSelections();
318                                                 if (!s.length || (s.length > 1))  {
319                                                     Roo.MessageBox.alert("Error", s.length ? "Select only one Row" : "Select a Row");
320                                                     return;
321                                                 }
322                                                 if (!_this.dialog) return;
323                                                 _this.dialog.show(s[0].data, function() {
324                                                      _this.grid.ds.load({});
325                                                 }); 
326                                                 
327                                             }
328                                         },
329                                         cls : 'x-btn-text-icon',
330                                         text : "Edit",
331                                         icon : Roo.rootURL + 'images/default/tree/leaf.gif'
332                                     },
333                                     {
334                                         xtype: 'Item',
335                                         xns: Roo.menu,
336                                         listeners : {
337                                             click : function()
338                                             {
339                                                  Pman.genericDelete(_this, 'Groups'); 
340                                             }
341                                         },
342                                         cls : 'x-btn-text-icon',
343                                         text : "Delete",
344                                         icon : rootURL + '/Pman/templates/images/trash.gif'
345                                     },
346                                     {
347                                         xtype: 'Separator',
348                                         xns: Roo.menu
349                                     },
350                                     {
351                                         xtype: 'Item',
352                                         xns: Roo.menu,
353                                         listeners : {
354                                             click : function (_self, e)
355                                             {
356                                               _this.grid.ds.load({});
357                                             }
358                                         },
359                                         text : "Reload"
360                                     }
361                                 ]
362                             }
363                         }
364                     ]
365                 },
366                 colModel : [
367                     {
368                         xtype: 'ColumnModel',
369                         xns: Roo.grid,
370                         dataIndex : 'name',
371                         header : 'Name',
372                         width : 200,
373                         renderer : function(v,x,r) { 
374                             if (r.data.id == -1) {
375                                 return '<b>' + "Not in a Group" + '</b>';
376                             }
377                             if ((r.data.id == 0) && (_this.type == 0)) {
378                                 return '<b>' + "All Staff (Default Permissions)" + '</b>';
379                             }
380                             if ((r.data.id == 0) && (_this.type == 2)) {
381                                 return '<b>' + "Everybody" + '</b>';
382                             }
383                             if (r.data.id == 0) {
384                                 return '<b>' + "All Staff" + '</b>';
385                             }
386                             if (v == 'Administrators') {
387                                 return '<b>' + "Adminstrators" + '</b>';
388                             }
389                             if (r.data.leader) {
390                                 return v + ' (' + r.data.leader_name + ')';
391                             }
392                             
393                             return v;
394                         }
395                     }
396                 ],
397                 sm : {
398                     xtype: 'RowSelectionModel',
399                     xns: Roo.grid,
400                     listeners : {
401                         afterselectionchange : function (_self)
402                         {
403                             Pman.Tab.AdminContacts.footer.onClick('first');
404                         }
405                     },
406                     singleSelect : true
407                 }
408             }
409         });
410         this.layout = this.panel.layout;
411
412     }
413 });