summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/form/uploader/plugins/IFrame.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/form/uploader/plugins/IFrame.js')
-rw-r--r--js/dojo/dojox/form/uploader/plugins/IFrame.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/js/dojo/dojox/form/uploader/plugins/IFrame.js b/js/dojo/dojox/form/uploader/plugins/IFrame.js
new file mode 100644
index 0000000..93f5e7e
--- /dev/null
+++ b/js/dojo/dojox/form/uploader/plugins/IFrame.js
@@ -0,0 +1,79 @@
+//>>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;
+});