IFrame.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. define([
  2. "dojo/dom-construct",
  3. "dojo/_base/declare",
  4. "dojo/_base/lang",
  5. "dojo/_base/array",
  6. "dojo/io/iframe",
  7. "dojox/form/uploader/plugins/IFrame"
  8. ],function(domConstruct, declare, lang, array, ioIframe, dojoIFrame){
  9. return declare("pd/widgets/uploader/IFrame", [dojoIFrame], {
  10. handleAs: "",
  11. uploadIFrame: function(data){
  12. // Overwrite dojo original one
  13. var form, destroyAfter = false;
  14. if(!this.getForm()){
  15. form = domConstruct.place('<form enctype="multipart/form-data" ' +
  16. 'method="post"></form>', this.domNode);
  17. array.forEach(this._inputs, function(n, i){
  18. if(n.value) form.appendChild(n);
  19. }, this);
  20. destroyAfter = true;
  21. }else{
  22. form = this.form;
  23. }
  24. var url = this.getUrl();
  25. var dfd = ioIframe.send({
  26. url: url,
  27. form: form,
  28. method: "POST",
  29. handleAs: this.handleAs,
  30. error: lang.hitch(this, function(err){
  31. if(destroyAfter){ domConstruct.destroy(form); }
  32. this.onError(err);
  33. }),
  34. load: lang.hitch(this, function(data, ioArgs, widgetRef){
  35. if(destroyAfter){ domConstruct.destroy(form); }
  36. if(data["ERROR"] || data["error"]){
  37. this.onError(data);
  38. }else{
  39. this.onComplete(data);
  40. }
  41. })
  42. });
  43. }
  44. });
  45. });