Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / docs / source / App1.html
diff --git a/docs/source/App1.html b/docs/source/App1.html
new file mode 100644 (file)
index 0000000..14c7589
--- /dev/null
@@ -0,0 +1,226 @@
+<html>\r
+<head>\r
+  <title>The source code</title>\r
+    <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+    <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body  onload="prettyPrint();">\r
+    <pre class="prettyprint lang-js">/*
+ * 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;
+    }
+});
+</pre>    \r
+</body>\r
+</html>
\ No newline at end of file