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                        
101                                     
102                     },
103                     enddrag : function (_self, dd, e)
104                     {
105                     
106                     }
107                 },
108                 autoExpandColumn : 'name',
109                 ddGroup : 'groupDD',
110                 enableDrop : true,
111                 loadMask : true,
112                 dataSource : {
113                     xtype: 'Store',
114                     xns: Roo.data,
115                     listeners : {
116                         beforeload : function (_self, o)
117                         {
118                             o.params = o.params || {};
119                             o.params.type =2;
120                         },
121                         load : function (_self, records, options)
122                         {
123                             var sm = _this.grid.getSelectionModel();
124                                 if (!sm.getSelections().length) {
125                                     sm.selectFirstRow();
126                                 }
127                                 Pman.Tab.AdminContacts.grid.footer.onClick('first');
128                         }
129                     },
130                     remoteSort : true,
131                     sortInfo : { field : 'name', direction: 'ASC' },
132                     proxy : {
133                         xtype: 'HttpProxy',
134                         xns: Roo.data,
135                         method : 'GET',
136                         url : baseURL + '/Roo/Groups.php'
137                     },
138                     reader : {
139                         xtype: 'JsonReader',
140                         xns: Roo.data,
141                         totalProperty : 'total',
142                         root : 'data',
143                         id : 'id',
144                         fields : [
145                             {
146                                 'name': 'id',
147                                 'type': 'int'
148                             },
149                             {
150                                 'name': 'name',
151                                 'type': 'string'
152                             },
153                             {
154                                 'name': 'type',
155                                 'type': 'int'
156                             },
157                             {
158                                 'name': 'leader',
159                                 'type': 'int'
160                             },
161                             {
162                                 'name': 'leader_id',
163                                 'type': 'int'
164                             },
165                             {
166                                 'name': 'leader_office_id',
167                                 'type': 'int'
168                             },
169                             {
170                                 'name': 'leader_name',
171                                 'type': 'string'
172                             },
173                             {
174                                 'name': 'leader_phone',
175                                 'type': 'string'
176                             },
177                             {
178                                 'name': 'leader_fax',
179                                 'type': 'string'
180                             },
181                             {
182                                 'name': 'leader_email',
183                                 'type': 'string'
184                             },
185                             {
186                                 'name': 'leader_company_id',
187                                 'type': 'int'
188                             },
189                             {
190                                 'name': 'leader_role',
191                                 'type': 'string'
192                             },
193                             {
194                                 'name': 'leader_active',
195                                 'type': 'int'
196                             },
197                             {
198                                 'name': 'leader_remarks',
199                                 'type': 'string'
200                             },
201                             {
202                                 'name': 'leader_passwd',
203                                 'type': 'string'
204                             },
205                             {
206                                 'name': 'leader_owner_id',
207                                 'type': 'int'
208                             },
209                             {
210                                 'name': 'leader_lang',
211                                 'type': 'string'
212                             },
213                             {
214                                 'name': 'leader_no_reset_sent',
215                                 'type': 'int'
216                             },
217                             {
218                                 'name': 'leader_action_type',
219                                 'type': 'string'
220                             },
221                             {
222                                 'name': 'leader_project_id',
223                                 'type': 'int'
224                             }
225                         ]
226                     }
227                 },
228                 toolbar : {
229                     xtype: 'Toolbar',
230                     xns: Roo,
231                     items : [
232                         {
233                             xtype: 'Button',
234                             xns: Roo.Toolbar,
235                             text : "Manage Groups",
236                             menu : {
237                                 xtype: 'Menu',
238                                 xns: Roo.menu,
239                                 items : [
240                                     {
241                                         xtype: 'Item',
242                                         xns: Roo.menu,
243                                         listeners : {
244                                             click : function()
245                                             {
246                                                 if (!_this.dialog) return;
247                                                 _this.dialog.show( { id : 0 } , function() {
248                                                      _this.grid.ds.load({});
249                                                }); 
250                                             }
251                                         },
252                                         cls : 'x-btn-text-icon',
253                                         text : "Add",
254                                         icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
255                                     },
256                                     {
257                                         xtype: 'Item',
258                                         xns: Roo.menu,
259                                         listeners : {
260                                             click : function()
261                                             {
262                                                 var s = _this.grid.getSelectionModel().getSelections();
263                                                 if (!s.length || (s.length > 1))  {
264                                                     Roo.MessageBox.alert("Error", s.length ? "Select only one Row" : "Select a Row");
265                                                     return;
266                                                 }
267                                                 if (!_this.dialog) return;
268                                                 _this.dialog.show(s[0].data, function() {
269                                                      _this.grid.ds.load({});
270                                                 }); 
271                                                 
272                                             }
273                                         },
274                                         cls : 'x-btn-text-icon',
275                                         text : "Edit",
276                                         icon : Roo.rootURL + 'images/default/tree/leaf.gif'
277                                     },
278                                     {
279                                         xtype: 'Item',
280                                         xns: Roo.menu,
281                                         listeners : {
282                                             click : function()
283                                             {
284                                                  Pman.genericDelete(_this, 'Groups'); 
285                                             }
286                                         },
287                                         cls : 'x-btn-text-icon',
288                                         text : "Delete",
289                                         icon : rootURL + '/Pman/templates/images/trash.gif'
290                                     },
291                                     {
292                                         xtype: 'Separator',
293                                         xns: Roo.menu
294                                     },
295                                     {
296                                         xtype: 'Item',
297                                         xns: Roo.menu,
298                                         listeners : {
299                                             click : function (_self, e)
300                                             {
301                                               _this.grid.ds.load({});
302                                             }
303                                         },
304                                         text : "Reload"
305                                     }
306                                 ]
307                             }
308                         }
309                     ]
310                 },
311                 colModel : [
312                     {
313                         xtype: 'ColumnModel',
314                         xns: Roo.grid,
315                         dataIndex : 'name',
316                         header : 'Name',
317                         width : 200,
318                         renderer : function(v,x,r) { 
319                             if (r.data.id == -1) {
320                                 return '<b>' + "Not in a Group" + '</b>';
321                             }
322                             if ((r.data.id == 0) && (_this.type == 0)) {
323                                 return '<b>' + "All Staff (Default Permissions)" + '</b>';
324                             }
325                             if ((r.data.id == 0) && (_this.type == 2)) {
326                                 return '<b>' + "Everybody" + '</b>';
327                             }
328                             if (r.data.id == 0) {
329                                 return '<b>' + "All Staff" + '</b>';
330                             }
331                             if (v == 'Administrators') {
332                                 return '<b>' + "Adminstrators" + '</b>';
333                             }
334                             if (r.data.leader) {
335                                 return v + ' (' + r.data.leader_name + ')';
336                             }
337                             
338                             return v;
339                         }
340                     }
341                 ],
342                 sm : {
343                     xtype: 'RowSelectionModel',
344                     xns: Roo.grid,
345                     listeners : {
346                         afterselectionchange : function (_self)
347                         {
348                             Pman.Tab.AdminContacts.footer.onClick('first');
349                         }
350                     },
351                     singleSelect : true
352                 },
353                 dragTarget : {
354                     xtype: 'DropTarget',
355                     xns: Roo.dd,
356                     listeners : {
357                         drop : function (source, e, data)
358                         {
359                         
360                         }
361                     }
362                 }
363             }
364         });
365         this.layout = this.panel.layout;
366
367     }
368 });