/*
* 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;
}
});