webui-aria2/js/libs/dojox/form/uploader/plugins/IFrame.js.uncompressed.js
2012-05-01 19:52:07 +08:00

80 lines
2.1 KiB
JavaScript

//>>built
define("dojox/form/uploader/plugins/IFrame", [
"dojo/dom-construct",
"dojo/_base/declare",
"dojo/_base/lang",
"dojo/_base/array",
"dojo/io/iframe",
"dojox/form/uploader/plugins/HTML5"
],function(domConstruct, declare, lang, array, ioIframe, formUploaderPluginsHTML5){
var pluginsIFrame = declare("dojox.form.uploader.plugins.IFrame", [], {
//
// Version: 1.6
//
// summary:
// A plugin for dojox.form.Uploader that adds Ajax upload capabilities.
//
// description:
// Only supported by IE, due to the specifc iFrame hack used. The
// formUploaderPluginsHTML5 plugin should be used along with this to add HTML5
// capabilities to browsers that support them. Progress events are not supported.
// Inherits all properties from dojox.form.Uploader and formUploaderPluginsHTML5.
//
force:"",
postMixInProperties: function(){
this.inherited(arguments);
if(!this.supports("multiple") || this.force =="iframe"){
this.uploadType = "iframe";
this.upload = this.uploadIFrame;
}
},
uploadIFrame: function(data){
// summary:
// Internal. You could use this, but you should use upload() or submit();
// which can also handle the post data.
//
var form, destroyAfter = false;
if(!this.getForm()){
//enctype can't be changed once a form element is created
form = domConstruct.place('<form enctype="multipart/form-data" method="post"></form>', this.domNode);
array.forEach(this._inputs, function(n, i){
if(n.value) form.appendChild(n);
}, this);
destroyAfter = true;
}else{
form = this.form;
}
var url = this.getUrl();
var dfd = ioIframe.send({
url: url,
form: form,
handleAs: "json",
content: data,
error: lang.hitch(this, function(err){
if(destroyAfter){ domConstruct.destroy(form); }
this.onError(err);
}),
load: lang.hitch(this, function(data, ioArgs, widgetRef){
if(destroyAfter){ domConstruct.destroy(form); }
if(data["ERROR"] || data["error"]){
this.onError(data);
}else{
this.onComplete(data);
}
})
});
}
});
dojox.form.addUploaderPlugin(pluginsIFrame);
return pluginsIFrame;
});