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