define([ "dojo/dom-construct", "dojo/_base/declare", "dojo/_base/lang", "dojo/_base/array", "dojo/io/iframe", "dojox/form/uploader/plugins/IFrame" ],function(domConstruct, declare, lang, array, ioIframe, dojoIFrame){ return declare("pd/widgets/uploader/IFrame", [dojoIFrame], { handleAs: "", uploadIFrame: function(data){ // Overwrite dojo original one var form, destroyAfter = false; if(!this.getForm()){ form = domConstruct.place('
', 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, method: "POST", handleAs: this.handleAs, 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); } }) }); } }); });