/* * Sample Image Organizer utilizing Ext.Direct * Tagging/Organizing into galleries * Image uploading */ Ext.ns('Imgorg','Imgorg.App'); Imgorg.App = function() { var swfu; SWFUpload.onload = function() { var settings = { flash_url: "SWFUpload/Flash/swfupload.swf", upload_url: "php/router.php", file_size_limit: "100 MB", file_types: "*.*", file_types_description: "Image Files", file_upload_limit: 100, file_queue_limit: 100, debug: false, button_placeholder_id: "btnUploadHolder", button_cursor: SWFUpload.CURSOR.HAND, button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT, file_queued_handler: function(file) { Ext.ux.SwfuMgr.fireEvent('filequeued', this, file); }, upload_start_handler: function(file) { Ext.ux.SwfuMgr.fireEvent('uploadstart', this, file); }, upload_progress_handler: function(file, complete, total) { Ext.ux.SwfuMgr.fireEvent('uploadprogress', this, file, complete, total); }, upload_error_handler: function(file, error, message) { Ext.ux.SwfuMgr.fireEvent('uploaderror', this, file, error, message); }, upload_success_handler: function(file, data, response) { Ext.ux.SwfuMgr.fireEvent('uploadsuccess', this, file, data); }, minimum_flash_version: "9.0.28", post_params: { extAction: 'Images', // The class to use extUpload: true, extMethod: 'upload' // The method to execute //needs extTID – Transaction ID to associate with this request. } }; swfu = new SWFUpload(settings); }; var view, thumbPanel, uploadPanel, tabPanel; return { debugSWF: false, init: function() { Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); Ext.QuickTips.init(); Ext.BLANK_IMAGE_URL = '../../resources/images/default/s.gif'; Ext.Direct.addProvider(Imgorg.REMOTING_API); Ext.ux.SwfuMgr.on('filequeued', this.onFileQueued, this); new Ext.Viewport({ layout: 'border', items: [{ xtype: 'img-albumtree', id: 'album-tree', region: 'west', width: 180, minWidth: 180, maxWidth: 180, collapsible: true, split: true, collapseMode: 'mini', margins: '5 0 5 5', cmargins: '0 0 0 0', tbar: [{ text: 'Add Album', iconCls: 'add', scale: 'large', handler: function() { Ext.getCmp('album-tree').addAlbum(); } },{ text: 'Upload', iconCls: 'upload', scale: 'large', handler: function() { swfu.selectFiles(); } }], listeners: { click: this.onAlbumClick, scope: this } },{ xtype: 'tabpanel', region: 'center', id: 'img-tabpanel', margins: '5 5 5 0', activeItem: 0, enableTabScroll: true, items: this.getTabs() }] }); tabPanel = Ext.getCmp('img-tabpanel'); thumbPanel = tabPanel.getComponent('images-view'); Imgorg.TagWin = new Imgorg.TagWindow(); }, getTabs: function() { var tabs = [{ xtype: 'img-albumspanel', title: 'Albums', listeners: { openalbum: this.onOpenAlbum, scope: this } },Ext.apply({ xtype: 'img-thumbpanel', itemId:'images-view' },this.getImageThumbConfig())]; if (this.debugSWF) { tabs.push({ title: 'debug', contentEl: 'SWFUpload_Console', listeners: { render: function() { Ext.fly('SWFUpload_Console').applyStyles({height: '100%', width: '100%'}); } } }); } return tabs; }, getImageThumbConfig: function() { return { dvConfig: { listeners: { dblclick: function(view, idx, node, e) { var p = this.openImage(view.getStore().getAt(idx)); p.show(); }, viewitem: function(view, node) { var recs = view.getSelectedRecords(); for (var i = 0; i < recs.length; i++) { this.openImage(recs[i]); } }, scope: this } } }; }, openImage: function(rec) { return tabPanel.add({ xtype: 'img-panel', title: Ext.util.Format.ellipsis(rec.data.filename,15), url: rec.data.url, imageData: rec.data }); }, onOpenAlbum: function(ap, album, name) { var tab = tabPanel.add(Ext.apply({ xtype: 'img-thumbpanel', closable: true, title: 'Album: '+name },this.getImageThumbConfig())); tab.albumFilter({ id: album, text: name }); tab.show(); }, onAlbumClick: function(node, e) { this.onOpenAlbum(null, node.attributes.id, node.attributes.text); }, onFileQueued: function(swfu, file) { if (!uploadPanel) { uploadPanel = Ext.getCmp('img-tabpanel').add({ title: 'Upload Queue', xtype: 'img-uploadqueue', swfu: swfu }); uploadPanel.show(); uploadPanel.addFile(swfu, file); } else { uploadPanel.show(); } }, getSwf: function() { return swfu; } } }(); Ext.onReady(Imgorg.App.init,Imgorg.App); Ext.override(Ext.CompositeElementLite,{ removeElement : function(keys, removeDom){ var me = this, els = this.elements, el; Ext.each(keys, function(val){ if (el = (els[val] || els[val = me.indexOf(val)])) { if(removeDom) el.dom ? el.remove() : Ext.removeNode(el); els.splice(val, 1); } }); return this; } });