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