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