DataObjects/Cms_page.php
[Pman.Cms] / Pman.Tab.CmsImageList.js
1
2 // <script type="text/javascript">
3
4 Pman.Tab.CmsImageList = function(owner)
5 {
6     this.create(owner);
7     this.owner = owner;
8 }
9 Ext.apply(Pman.Tab.CmsImageList.prototype, {
10     grid : false,
11     owner: false,
12     form : false,
13     loaded : false,
14     
15     
16     create: function(owner)
17     {
18         var frm = owner.dialog.getLayout().getEl().createChild({ tag: 'div' });
19         /*var frm = owner.dialog.getLayout().getEl().createChild({
20                         tag: 'form', 
21                         id: owner.className + '-fileuploadform'  
22                         
23                     });
24                  */
25         var _t = this;
26         
27         
28         
29         this.languageStore =  new Ext.data.Store({
30             proxy: new Ext.data.HttpProxy({
31                 url: baseURL + '/Roo/Images.json',
32                 method: 'GET'
33             }),
34             reader: Pman.Readers.Images, // fixme should be nicer..
35             listeners : {
36                 'load' : function(st, recs) {  
37                
38                     
39                 },
40                 'beforeload' :  function(st,opts) {
41                     if (typeof(opts.params) == 'undefined') {
42                         opts.params = { start :0, limit: 25 };
43                     }
44                     opts.params.ontable = 'Category';
45                     opts.params.id = this.owner.id;
46                     //opts.params = { };
47                     //opts.params.type = st.productType 
48                     //opts.params.summary = 1;
49                     opts.params.ts = Math.random();
50                 }
51             }
52             
53         });
54         
55         var languageStore = this.languageStore;
56         // create the Grid
57         this.grid = new Ext.grid.EditorGrid(frm, {
58             clicksToEdit: 1,
59             ds:   new Ext.data.Store({
60                 // load using HTTP
61                 proxy: new Ext.data.HttpProxy({
62                         url: baseURL + '/Images.json',
63                         method: 'GET'
64                 }),
65
66                 // the return will be XML, so lets set up a reader
67                 reader: new Ext.data.JsonReader({
68                     root: 'data',
69                     totalProperty: 'total',
70                     id: 'id'
71                 },  [
72                     'id',
73                     'filename',
74                     'ontable',
75                     'onid',
76                     'mimetype',
77                     'width',
78                     'height',
79                     'filesize',
80                     'displayorder',
81                     'language',
82                     'parent_image_id',
83                     'icon',
84                     'url'
85                 ]),
86                 remoteSort: true,
87                 listeners : {
88                      'beforeload' : function(g, opts) {
89                          
90                         if (!opts.params.onid) {
91                             _t.grid.getView().el.mask("Save First");
92                             owner.loaded();
93                             return false;
94                         }
95                         _t.grid.getView().el.unmask();
96                         //opts.params['search[action]']= Ext.ComponentMgr.get('FlexyShop.ActivityLog.viewType').getValue();
97                         return true; // load it ok..
98                 
99                     },
100                     'loadexception' : function() {
101                         //Login.check();
102                     },
103                     'load' : function(st, recs) {  
104                         owner.loaded();
105                     }
106                 }
107                
108             }),
109             
110                     
111                 
112             
113             cm:   new Ext.grid.ColumnModel([
114                 /*{
115                         header: "ID", 
116                         width: 40, 
117                         sortable: true, 
118                         locked:false, 
119                         dataIndex: 'id'
120                         
121                         //renderer: colname,
122                 }, */
123                  
124                 {
125                  
126                     header: "Image", 
127                     width: 60, 
128                     sortable: false, 
129                     dataIndex: 'icon',
130                 
131                     renderer: function(v) {
132                         return '<img width="50" height="50" src="'+v+'">';
133                     }   
134                     
135                     
136                 },  
137                   
138                 {
139                     header: "Lang", 
140                     width: 50, 
141                     sortable: true, 
142                     dataIndex: 'language',
143                     editor: new Ext.grid.GridEditor(new Ext.form.ComboBox({
144                             typeAhead: false,
145                             triggerAction: 'all',
146                            // lazyRender:true,
147                            
148                             
149                             displayField:'name',
150                             
151                             valueField: 'shortname',
152                             
153                              //selectOnFocus:true,
154                            
155                             editable: false ,
156                             
157                             listeners : {
158                                 beforeQuery :  function(e) {
159                                     e.forceAll = true;
160                                 }
161                             },
162                             store:  this.languageStore
163                         })
164                     ),
165                     renderer : function(v){
166                         return v;
167                         /* this get's difficult as we have to preload the language list!
168                         if (!languageStore.getTotalCount()) {
169                             languageStore.load();
170                         }
171                         var ix = languageStore.indexOfId(v);
172                         return languageStore.getAt(ix).get('name')
173                         */
174                         
175                     }
176                 },
177                 {
178                     id: 'name',
179                     header: "File Name", 
180                     width: 150, 
181                     sortable: true, 
182                     dataIndex: 'filename',
183                     editor: new  Ext.grid.GridEditor(new Ext.form.TextField({
184                            allowBlank: false
185                     }))
186                     
187                 } 
188
189
190
191                 
192                   
193             ]),
194             
195             autoExpandColumn: 'name',
196             loadMask: true,
197            
198             listeners: {
199                 'rowclick' : function(g,rowIndex, e) {
200                      /*
201                     var data = g.getDataSource().getAt(rowIndex).data;
202                     FlexyShop.Customers.preview.setUrl(baseURL + '/PageView', { 
203                         previewMessage: data.message_sig,
204                         previewTable: 'archive',
205                         previewId: data.id
206                     });
207          
208                     FlexyShop.Customers.preview.fireEvent("activate");
209                     */
210                 },
211                 'afteredit' : function(e) {
212                     
213                         // change something..
214                         var p = {
215                             id : e.record.get('id')
216                         };
217                         p[e.field] = e.value;
218                         
219                         Ext.Ajax.request({
220                             url: baseURL+'/Images.php',
221                             params : p,
222                             success : function  () {
223                                 grid.getDataSource().reload();
224                             },
225                             failure : function (res) {
226                                 if (FlexyShop.responseHandler(res)) {
227                                     return;
228                                 }
229                                 Ext.Msg.alert("Update Failed");
230                             }
231                         });
232                 }
233             }
234             
235         });
236              
237         
238         var grid = this.grid;
239         var cp = owner.dialog.getLayout().add('east',   new Ext.GridPanel(grid, { 
240                 //title: "Full Archive",
241                 fitToframe: true,
242                 fitContainer: true 
243                 
244         }));
245        // cp.on('activate', function() {
246             // reset search options..
247         //    grid.reload();
248         //});
249             
250             
251       
252         grid.render();
253       
254    
255         var gridFoot = grid.getView().getFooterPanel(true);
256         
257         var frm = gridFoot.createChild({
258                 tag: 'form'  
259                 
260             });
261                  
262         var footbar = new Ext.Toolbar(frm );
263         
264         
265         this.form = new Ext.form.BasicForm(frm , {
266                 fileUpload: true,
267                 method: 'POST',
268                 url: baseURL + '/Images.php',
269                 listeners : {
270                     'actioncomplete' : function(f, act) {
271                         //console.log(act);
272                         //FlexyShop.ImageList.grid.getView().el.unmask();
273                          //console.log('load completed'); 
274                         if (FlexyShop.responseHandler(act.result)) {
275                               return;
276                         }
277                         
278                          
279                         _t.reload();
280                         return; 
281                        
282                     },
283                     'actionfailed' : function(f, act) {
284                         //FlexyShop.ImageList.grid.getView().el.unmask();
285                         if (FlexyShop.responseHandler(act.result)) {
286                              return;
287                         }
288                             
289                         Ext.MessageBox.alert("Error", "Saving failed = fix errors and try again");
290                      }
291                         
292                     
293                 }
294                 
295         });
296         var form = this.form;
297         footbar.add(
298             new Ext.form.TextField({
299                 inputType: 'file',
300                 
301                 name: 'product_picture', //,
302                 style: 'font-size: 70%'
303                 
304             }),
305             {
306                 text: "Upload",
307                 handler: function()
308                 {
309                     
310                      
311                     form.submit({
312                          url: baseURL + '/Images.php?ontable=' + owner.tableName + '&onid='+owner.data.id
313                     });
314                 }
315             }
316         );
317          
318        
319         var gridHead = grid.getView().getHeaderPanel(true);
320         var toolbar = new Ext.Toolbar(gridHead);
321         
322          
323           //this.toolbar.add('Type goes here');
324         
325          
326         toolbar.add(
327           
328             {
329                 text: "Delete",
330                 handler: function()
331                 {
332                     
333                     var s =  grid.getSelectionModel().getSelectedCell();
334                     if (!s) {
335                         Ext.MessageBox.alert("ERROR", "Select a image");
336                         return;
337                     }
338                     Ext.Msg.confirm("Confirm Delete", "Are you sure you want to delete it",
339                         function(v) {
340                             //console.log(v);
341                             if (v != 'yes') {
342                                 return;
343                             }
344                                     
345                             // delete something..
346                             Ext.Ajax.request({
347                                 url: baseURL+'/Images.php',
348                                 params : {
349                                     'delete' : grid.getDataSource().getAt(s[0]).get('id')
350                                 },
351                                 success : function  () {
352                                     grid.getDataSource().reload();
353                                 },
354                                 failure : function (res) {
355                                     if (FlexyShop.responseHandler(res)) {
356                                         return;
357                                     }
358                                     Ext.Msg.alert("Delete Failed");
359                                 }
360                             });
361                         });
362                         
363                    
364                       
365                 }
366             } /*,
367             
368             {
369                 text: "To Top",
370                 handler: function()
371                 {
372                     
373                 }
374             },
375             */
376              
377         );   
378         
379         
380     },
381     reload : function()
382     {
383         this.grid.getDataSource().load({
384             
385             params : {
386                 onid : this.owner.data.id,
387                 ontable: this.owner.tableName 
388             }
389        });
390         
391     }
392
393
394 });
395
396 /*
397
398 Ext.Ajax.doFormUpload = function(o, ps, url){
399     //console.log('doFormUpload');
400         var id = Ext.id();
401         var frame = document.createElement('iframe');
402         frame.id = id;
403         frame.name = id;
404         frame.className = 'x-hidden';
405         if(Ext.isIE){
406             frame.src = Ext.SSL_SECURE_URL;
407         }
408         document.body.appendChild(frame);
409
410         if(Ext.isIE){
411            document.frames[id].name = id;
412         }
413
414         var form = Ext.getDom(o.form);
415         form.target = id;
416         form.method = 'POST';
417         form.enctype = form.encoding = 'multipart/form-data';
418         if(url){
419             form.action = url;
420         }
421
422         var hiddens, hd;
423         if(ps){ // add dynamic params
424             hiddens = [];
425             ps = Ext.urlDecode(ps, false);
426             for(var k in ps){
427                 if(ps.hasOwnProperty(k)){
428                     hd = document.createElement('input');
429                     hd.type = 'hidden';
430                     hd.name = k;
431                     hd.value = ps[k];
432                     form.appendChild(hd);
433                     hiddens.push(hd);
434                 }
435             }
436         }
437
438         function cb(){
439             //console.log("called back");
440             var r = {  // bogus response object
441                 responseText : '',
442                 responseXML : null
443             };
444
445             r.argument = o ? o.argument : null;
446
447             try { //
448                 var doc;
449                 if(Ext.isIE){
450                     doc = frame.contentWindow.document;
451                 }else {
452                     doc = (frame.contentDocument || window.frames[id].document);
453                 }
454                 if(doc && doc.body){
455                     r.responseText = doc.body.innerHTML;
456                 }
457                 if(doc && doc.XMLDocument){
458                     r.responseXML = doc.XMLDocument;
459                 }else {
460                     r.responseXML = doc;
461                 }
462             }
463             catch(e) {
464                 // ignore
465             }
466              //console.log(r.toSource());
467
468             Ext.EventManager.removeListener(frame, 'load', cb, this);
469
470             this.fireEvent("requestcomplete", this, r, o);
471             Ext.callback(o.success, o.scope, [r, o]);
472             Ext.callback(o.callback, o.scope, [o, true, r]);
473
474             setTimeout(function(){document.body.removeChild(frame);}, 100);
475         }
476
477         Ext.EventManager.on(frame, 'load', cb, this);
478         form.submit();
479
480         if(hiddens){ // remove dynamic params
481             for(var i = 0, len = hiddens.length; i < len; i++){
482                 form.removeChild(hiddens[i]);
483             }
484         }
485     }
486
487 */