dropzonejs-rails 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzhlMzAwNzE4YTE2ZTUzN2EyMjg2N2Y2MTQ1MDljMWJjMGVlZmY0Mw==
4
+ OThkY2Q2NjliYWY1Njk0Zjk5OTFmOTNlNGQ5NjAyY2I1OWRhOTU2ZQ==
5
5
  data.tar.gz: !binary |-
6
- ZTU0Mjg3ZmE0OGY0OTY2NTI2MjA5Y2M0MGU1N2UyMDMyNzNhZTNlMQ==
6
+ NGFkNjZhZjdjYzU0NjQ4MzZlNWQxOWY0N2RjNjUwYTczYzA1ZWFjYQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NGY4YTlhNTczYTNjYmNkNGQ2YTc3NDcyZDUwMGU5MzMyZmQ3NmUyNWJiZDY3
10
- YjY5ZGY3MjIwZjBiYjQ3ZjAwYTE4N2Y2ZDQwM2Q5MTI0NWYxM2NhMmQyYzZm
11
- NGUxMDM4YzMwNTlhMGRkZDZhMWFlZjI2ZmRiMzkyZjZiNmU2YzQ=
9
+ NjgxN2MzOWMxYTc4NzZkNjkzZmUwOGI1N2U1YWIwYThjMzVmNmQzZjMxOTNj
10
+ MzA1NzQzYjkyZWY3MjhjNzBlOGU5NzZmNmU2OGY3MjVlYzY5ZWFmNGMxNjIy
11
+ NDM1NmIyZmZlMjc5M2MwZTU5YzM1MDZjY2ZjZWVkNDg4ZGVjOWY=
12
12
  data.tar.gz: !binary |-
13
- YzhjMjg3OGI2ZjJhZTg3YTE3NGFmMzZjNjEyMWE0MDg1MWNjODk0N2RiNzlk
14
- MWFmYzc4NWM3NzA2Yjc0Y2MwNWVlZDAxYmE4YWE4NmJmZmI5MWFiYjA1YTgx
15
- NDQzMDQ2MjQ3NTRmOGIzZDczNGFkNmUwN2NhYmRiMDlkMzg3MDY=
13
+ ODFkODVlOGIzMWU1MTI5YjdmMDMyYzU5ZjA1Yzk3NmZmMDBkMGY0ODUwMzU3
14
+ MDJlNjFlM2RiNzdlY2Y1ZTc4ZmI2YWIzZTk5Mzg1MGIzOGRkMDYzNzkyMzI5
15
+ MmM4Mzk5NzY3MjhkOWEyNjExMjcxMGJmZGRjYjBjYmQ5NjRlMDg=
data/README.md CHANGED
@@ -4,7 +4,7 @@ Integrate [Matias Meno's Dropzone](http://www.dropzonejs.com/) awesome file uplo
4
4
 
5
5
  ## Version
6
6
 
7
- The latest version of this gem bundles **Dropzone v3.2.0**.
7
+ The latest version of this gem bundles **Dropzone v3.4.1**.
8
8
 
9
9
  ## Installation and usage
10
10
 
data/Rakefile CHANGED
@@ -25,7 +25,7 @@ task :get do
25
25
  fix_image_links 'vendor/assets/stylesheets/dropzone/basic.css.scss'
26
26
  fix_image_links 'vendor/assets/stylesheets/dropzone/dropzone.css.scss'
27
27
 
28
- puts "Done."
28
+ puts "Done"
29
29
  end
30
30
 
31
31
  desc 'Find the latest dropzone js version and get it'
@@ -1,4 +1,4 @@
1
1
  module DropzonejsRails
2
- VERSION = '0.4.1'
3
- DROPZONE_VERSION = '3.2.0'
2
+ VERSION = '0.4.2'
3
+ DROPZONE_VERSION = '3.4.1'
4
4
  end
@@ -64,7 +64,6 @@ require.aliases = {};
64
64
 
65
65
  require.resolve = function(path) {
66
66
  if (path.charAt(0) === '/') path = path.slice(1);
67
- var index = path + '/index.js';
68
67
 
69
68
  var paths = [
70
69
  path,
@@ -77,10 +76,7 @@ require.resolve = function(path) {
77
76
  for (var i = 0; i < paths.length; i++) {
78
77
  var path = paths[i];
79
78
  if (require.modules.hasOwnProperty(path)) return path;
80
- }
81
-
82
- if (require.aliases.hasOwnProperty(index)) {
83
- return require.aliases[index];
79
+ if (require.aliases.hasOwnProperty(path)) return require.aliases[path];
84
80
  }
85
81
  };
86
82
 
@@ -400,6 +396,8 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
400
396
  noop = function() {};
401
397
 
402
398
  Dropzone = (function(_super) {
399
+ var extend;
400
+
403
401
  __extends(Dropzone, _super);
404
402
 
405
403
  /*
@@ -416,6 +414,7 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
416
414
  Dropzone.prototype.defaultOptions = {
417
415
  url: null,
418
416
  method: "post",
417
+ withCredentials: false,
419
418
  parallelUploads: 2,
420
419
  maxFilesize: 256,
421
420
  paramName: "file",
@@ -444,7 +443,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
444
443
  forceFallback: false,
445
444
  fallback: function() {
446
445
  var child, messageElement, span, _i, _len, _ref;
447
-
448
446
  this.element.className = "" + this.element.className + " dz-browser-not-supported";
449
447
  _ref = this.element.getElementsByTagName("div");
450
448
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -467,7 +465,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
467
465
  },
468
466
  resize: function(file) {
469
467
  var info, srcRatio, trgRatio;
470
-
471
468
  info = {
472
469
  srcX: 0,
473
470
  srcY: 0,
@@ -533,11 +530,11 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
533
530
  return file.previewElement.querySelector("[data-dz-size]").innerHTML = this.filesize(file.size);
534
531
  },
535
532
  removedfile: function(file) {
536
- return file.previewElement.parentNode.removeChild(file.previewElement);
533
+ var _ref;
534
+ return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0;
537
535
  },
538
536
  thumbnail: function(file, dataUrl) {
539
537
  var thumbnailElement;
540
-
541
538
  file.previewElement.classList.remove("dz-file-preview");
542
539
  file.previewElement.classList.add("dz-image-preview");
543
540
  thumbnailElement = file.previewElement.querySelector("[data-dz-thumbnail]");
@@ -563,12 +560,30 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
563
560
  previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n <div class=\"dz-details\">\n <div class=\"dz-filename\"><span data-dz-name></span></div>\n <div class=\"dz-size\" data-dz-size></div>\n <img data-dz-thumbnail />\n </div>\n <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n <div class=\"dz-success-mark\"><span>✔</span></div>\n <div class=\"dz-error-mark\"><span>✘</span></div>\n <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n</div>"
564
561
  };
565
562
 
566
- function Dropzone(element, options) {
567
- var elementOptions, extend, fallback, _ref;
563
+ extend = function() {
564
+ var key, object, objects, target, val, _i, _len;
565
+ target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
566
+ for (_i = 0, _len = objects.length; _i < _len; _i++) {
567
+ object = objects[_i];
568
+ for (key in object) {
569
+ val = object[key];
570
+ target[key] = val;
571
+ }
572
+ }
573
+ return target;
574
+ };
568
575
 
576
+ function Dropzone(element, options) {
577
+ var elementOptions, fallback, _ref;
569
578
  this.element = element;
570
579
  this.version = Dropzone.version;
571
580
  this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\n*/g, "");
581
+ this.clickableElements = [];
582
+ this.listeners = [];
583
+ this.files = [];
584
+ this.acceptedFiles = [];
585
+ this.filesQueue = [];
586
+ this.filesProcessing = [];
572
587
  if (typeof this.element === "string") {
573
588
  this.element = document.querySelector(this.element);
574
589
  }
@@ -581,19 +596,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
581
596
  Dropzone.instances.push(this);
582
597
  element.dropzone = this;
583
598
  elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {};
584
- extend = function() {
585
- var key, object, objects, target, val, _i, _len;
586
-
587
- target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
588
- for (_i = 0, _len = objects.length; _i < _len; _i++) {
589
- object = objects[_i];
590
- for (key in object) {
591
- val = object[key];
592
- target[key] = val;
593
- }
594
- }
595
- return target;
596
- };
597
599
  this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});
598
600
  if (this.options.url == null) {
599
601
  this.options.url = this.element.action;
@@ -622,8 +624,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
622
624
  } else {
623
625
  this.clickableElements = Dropzone.getElements(this.options.clickable, "clickable");
624
626
  }
625
- } else {
626
- this.clickableElements = [];
627
627
  }
628
628
  this.init();
629
629
  }
@@ -631,7 +631,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
631
631
  Dropzone.prototype.init = function() {
632
632
  var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1,
633
633
  _this = this;
634
-
635
634
  if (this.element.tagName === "form") {
636
635
  this.element.setAttribute("enctype", "multipart/form-data");
637
636
  }
@@ -661,7 +660,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
661
660
  document.body.appendChild(_this.hiddenFileInput);
662
661
  return _this.hiddenFileInput.addEventListener("change", function() {
663
662
  var files;
664
-
665
663
  files = _this.hiddenFileInput.files;
666
664
  if (files.length) {
667
665
  _this.emit("selectedfiles", files);
@@ -672,10 +670,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
672
670
  };
673
671
  setupHiddenFileInput();
674
672
  }
675
- this.files = [];
676
- this.acceptedFiles = [];
677
- this.filesQueue = [];
678
- this.filesProcessing = [];
679
673
  this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;
680
674
  _ref1 = this.events;
681
675
  for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
@@ -684,7 +678,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
684
678
  }
685
679
  this.on("uploadprogress", function(file) {
686
680
  var totalBytes, totalBytesSent, totalUploadProgress, _j, _len1, _ref2;
687
-
688
681
  totalBytesSent = 0;
689
682
  totalBytes = 0;
690
683
  _ref2 = _this.acceptedFiles;
@@ -749,9 +742,18 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
749
742
  return this.options.init.call(this);
750
743
  };
751
744
 
745
+ Dropzone.prototype.destroy = function() {
746
+ var _ref;
747
+ this.disable();
748
+ this.removeAllFiles();
749
+ if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) {
750
+ this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);
751
+ return this.hiddenFileInput = null;
752
+ }
753
+ };
754
+
752
755
  Dropzone.prototype.getFallbackForm = function() {
753
756
  var existingFallback, fields, fieldsString, form;
754
-
755
757
  if (existingFallback = this.getExistingFallback()) {
756
758
  return existingFallback;
757
759
  }
@@ -773,10 +775,8 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
773
775
 
774
776
  Dropzone.prototype.getExistingFallback = function() {
775
777
  var fallback, getFallback, tagName, _i, _len, _ref;
776
-
777
778
  getFallback = function(elements) {
778
779
  var el, _i, _len;
779
-
780
780
  for (_i = 0, _len = elements.length; _i < _len; _i++) {
781
781
  el = elements[_i];
782
782
  if (/(^| )fallback($| )/.test(el.className)) {
@@ -795,14 +795,12 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
795
795
 
796
796
  Dropzone.prototype.setupEventListeners = function() {
797
797
  var elementListeners, event, listener, _i, _len, _ref, _results;
798
-
799
798
  _ref = this.listeners;
800
799
  _results = [];
801
800
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
802
801
  elementListeners = _ref[_i];
803
802
  _results.push((function() {
804
803
  var _ref1, _results1;
805
-
806
804
  _ref1 = elementListeners.events;
807
805
  _results1 = [];
808
806
  for (event in _ref1) {
@@ -817,14 +815,12 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
817
815
 
818
816
  Dropzone.prototype.removeEventListeners = function() {
819
817
  var elementListeners, event, listener, _i, _len, _ref, _results;
820
-
821
818
  _ref = this.listeners;
822
819
  _results = [];
823
820
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
824
821
  elementListeners = _ref[_i];
825
822
  _results.push((function() {
826
823
  var _ref1, _results1;
827
-
828
824
  _ref1 = elementListeners.events;
829
825
  _results1 = [];
830
826
  for (event in _ref1) {
@@ -838,12 +834,23 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
838
834
  };
839
835
 
840
836
  Dropzone.prototype.disable = function() {
837
+ var file, _i, _j, _len, _len1, _ref, _ref1, _results;
841
838
  this.clickableElements.forEach(function(element) {
842
839
  return element.classList.remove("dz-clickable");
843
840
  });
844
841
  this.removeEventListeners();
845
- this.filesProcessing = [];
846
- return this.filesQueue = [];
842
+ _ref = this.filesProcessing;
843
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
844
+ file = _ref[_i];
845
+ this.cancelUpload(file);
846
+ }
847
+ _ref1 = this.filesQueue;
848
+ _results = [];
849
+ for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
850
+ file = _ref1[_j];
851
+ _results.push(this.cancelUpload(file));
852
+ }
853
+ return _results;
847
854
  };
848
855
 
849
856
  Dropzone.prototype.enable = function() {
@@ -855,7 +862,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
855
862
 
856
863
  Dropzone.prototype.filesize = function(size) {
857
864
  var string;
858
-
859
865
  if (size >= 100000000000) {
860
866
  size = size / 100000000000;
861
867
  string = "TB";
@@ -877,7 +883,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
877
883
 
878
884
  Dropzone.prototype.drop = function(e) {
879
885
  var files;
880
-
881
886
  if (!e.dataTransfer) {
882
887
  return;
883
888
  }
@@ -890,7 +895,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
890
895
 
891
896
  Dropzone.prototype.handleFiles = function(files) {
892
897
  var file, _i, _len, _results;
893
-
894
898
  _results = [];
895
899
  for (_i = 0, _len = files.length; _i < _len; _i++) {
896
900
  file = files[_i];
@@ -911,13 +915,13 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
911
915
 
912
916
  Dropzone.prototype.addFile = function(file) {
913
917
  var _this = this;
914
-
915
918
  file.upload = {
916
919
  progress: 0,
917
920
  total: file.size,
918
921
  bytesSent: 0
919
922
  };
920
923
  this.files.push(file);
924
+ file.status = Dropzone.ADDED;
921
925
  this.emit("addedfile", file);
922
926
  if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {
923
927
  this.createThumbnail(file);
@@ -927,6 +931,7 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
927
931
  file.accepted = false;
928
932
  return _this.errorProcessing(file, error);
929
933
  } else {
934
+ file.status = Dropzone.ACCEPTED;
930
935
  file.accepted = true;
931
936
  _this.acceptedFiles.push(file);
932
937
  if (_this.options.enqueueForUpload) {
@@ -938,8 +943,8 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
938
943
  };
939
944
 
940
945
  Dropzone.prototype.removeFile = function(file) {
941
- if (file.processing) {
942
- throw new Error("Can't remove file currently processing");
946
+ if (file.status === Dropzone.UPLOADING) {
947
+ this.cancelUpload(file);
943
948
  }
944
949
  this.files = without(this.files, file);
945
950
  this.filesQueue = without(this.filesQueue, file);
@@ -951,7 +956,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
951
956
 
952
957
  Dropzone.prototype.removeAllFiles = function() {
953
958
  var file, _i, _len, _ref;
954
-
955
959
  _ref = this.files.slice();
956
960
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
957
961
  file = _ref[_i];
@@ -965,29 +969,26 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
965
969
  Dropzone.prototype.createThumbnail = function(file) {
966
970
  var fileReader,
967
971
  _this = this;
968
-
969
972
  fileReader = new FileReader;
970
973
  fileReader.onload = function() {
971
974
  var img;
972
-
973
975
  img = new Image;
974
976
  img.onload = function() {
975
- var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;
976
-
977
+ var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3;
977
978
  file.width = img.width;
978
979
  file.height = img.height;
979
980
  resizeInfo = _this.options.resize.call(_this, file);
980
- if ((_ref = resizeInfo.trgWidth) == null) {
981
+ if (resizeInfo.trgWidth == null) {
981
982
  resizeInfo.trgWidth = _this.options.thumbnailWidth;
982
983
  }
983
- if ((_ref1 = resizeInfo.trgHeight) == null) {
984
+ if (resizeInfo.trgHeight == null) {
984
985
  resizeInfo.trgHeight = _this.options.thumbnailHeight;
985
986
  }
986
987
  canvas = document.createElement("canvas");
987
988
  ctx = canvas.getContext("2d");
988
989
  canvas.width = resizeInfo.trgWidth;
989
990
  canvas.height = resizeInfo.trgHeight;
990
- ctx.drawImage(img, (_ref2 = resizeInfo.srcX) != null ? _ref2 : 0, (_ref3 = resizeInfo.srcY) != null ? _ref3 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref4 = resizeInfo.trgX) != null ? _ref4 : 0, (_ref5 = resizeInfo.trgY) != null ? _ref5 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);
991
+ ctx.drawImage(img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);
991
992
  thumbnail = canvas.toDataURL("image/png");
992
993
  return _this.emit("thumbnail", file, thumbnail);
993
994
  };
@@ -998,7 +999,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
998
999
 
999
1000
  Dropzone.prototype.processQueue = function() {
1000
1001
  var i, parallelUploads, processingLength;
1001
-
1002
1002
  parallelUploads = this.options.parallelUploads;
1003
1003
  processingLength = this.filesProcessing.length;
1004
1004
  i = processingLength;
@@ -1014,23 +1014,61 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1014
1014
  Dropzone.prototype.processFile = function(file) {
1015
1015
  this.filesProcessing.push(file);
1016
1016
  file.processing = true;
1017
+ file.status = Dropzone.UPLOADING;
1017
1018
  this.emit("processingfile", file);
1018
1019
  return this.uploadFile(file);
1019
1020
  };
1020
1021
 
1022
+ Dropzone.prototype.cancelUpload = function(file) {
1023
+ var _ref;
1024
+ if (file.status === Dropzone.UPLOADING) {
1025
+ file.status = Dropzone.CANCELED;
1026
+ file.xhr.abort();
1027
+ return this.filesProcessing = without(this.filesProcessing, file);
1028
+ } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.ACCEPTED) {
1029
+ file.status = Dropzone.CANCELED;
1030
+ return this.filesQueue = without(this.filesQueue, file);
1031
+ }
1032
+ };
1033
+
1021
1034
  Dropzone.prototype.uploadFile = function(file) {
1022
- var formData, handleError, input, inputName, inputType, key, progressObj, response, value, xhr, _i, _len, _ref, _ref1, _ref2,
1035
+ var formData, handleError, header, headers, input, inputName, inputType, key, name, progressObj, response, updateProgress, value, xhr, _i, _len, _ref, _ref1, _ref2,
1023
1036
  _this = this;
1024
-
1025
1037
  xhr = new XMLHttpRequest();
1038
+ file.xhr = xhr;
1039
+ xhr.withCredentials = !!this.options.withCredentials;
1026
1040
  xhr.open(this.options.method, this.options.url, true);
1027
1041
  response = null;
1028
1042
  handleError = function() {
1029
1043
  return _this.errorProcessing(file, response || _this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr);
1030
1044
  };
1045
+ updateProgress = function(e) {
1046
+ var progress;
1047
+ if (e != null) {
1048
+ progress = 100 * e.loaded / e.total;
1049
+ file.upload = {
1050
+ progress: progress,
1051
+ total: e.total,
1052
+ bytesSent: e.loaded
1053
+ };
1054
+ } else {
1055
+ if (file.upload.progress === 100 && file.upload.bytesSent === file.upload.total) {
1056
+ return;
1057
+ }
1058
+ progress = 100;
1059
+ file.upload.progress = progress;
1060
+ file.upload.bytesSent = file.upload.total;
1061
+ }
1062
+ return _this.emit("uploadprogress", file, progress, file.upload.bytesSent);
1063
+ };
1031
1064
  xhr.onload = function(e) {
1032
1065
  var _ref;
1033
-
1066
+ if (file.status === Dropzone.CANCELED) {
1067
+ return;
1068
+ }
1069
+ if (xhr.readyState !== 4) {
1070
+ return;
1071
+ }
1034
1072
  response = xhr.responseText;
1035
1073
  if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) {
1036
1074
  try {
@@ -1040,6 +1078,7 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1040
1078
  response = "Invalid JSON response from server.";
1041
1079
  }
1042
1080
  }
1081
+ updateProgress();
1043
1082
  if (!((200 <= (_ref = xhr.status) && _ref < 300))) {
1044
1083
  return handleError();
1045
1084
  } else {
@@ -1047,24 +1086,26 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1047
1086
  }
1048
1087
  };
1049
1088
  xhr.onerror = function() {
1089
+ if (file.status === Dropzone.CANCELED) {
1090
+ return;
1091
+ }
1050
1092
  return handleError();
1051
1093
  };
1052
1094
  progressObj = (_ref = xhr.upload) != null ? _ref : xhr;
1053
- progressObj.onprogress = function(e) {
1054
- var progress;
1055
-
1056
- file.upload = {
1057
- progress: progress,
1058
- total: e.total,
1059
- bytesSent: e.loaded
1060
- };
1061
- progress = 100 * e.loaded / e.total;
1062
- return _this.emit("uploadprogress", file, progress, e.loaded);
1095
+ progressObj.onprogress = updateProgress;
1096
+ headers = {
1097
+ "Accept": "application/json",
1098
+ "Cache-Control": "no-cache",
1099
+ "X-Requested-With": "XMLHttpRequest",
1100
+ "X-File-Name": encodeURIComponent(file.name)
1063
1101
  };
1064
- xhr.setRequestHeader("Accept", "application/json");
1065
- xhr.setRequestHeader("Cache-Control", "no-cache");
1066
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
1067
- xhr.setRequestHeader("X-File-Name", file.name);
1102
+ if (this.options.headers) {
1103
+ extend(headers, this.options.headers);
1104
+ }
1105
+ for (header in headers) {
1106
+ name = headers[header];
1107
+ xhr.setRequestHeader(header, name);
1108
+ }
1068
1109
  formData = new FormData();
1069
1110
  if (this.options.params) {
1070
1111
  _ref1 = this.options.params;
@@ -1092,6 +1133,7 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1092
1133
  Dropzone.prototype.finished = function(file, responseText, e) {
1093
1134
  this.filesProcessing = without(this.filesProcessing, file);
1094
1135
  file.processing = false;
1136
+ file.status = Dropzone.SUCCESS;
1095
1137
  this.processQueue();
1096
1138
  this.emit("success", file, responseText, e);
1097
1139
  this.emit("finished", file, responseText, e);
@@ -1101,6 +1143,7 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1101
1143
  Dropzone.prototype.errorProcessing = function(file, message, xhr) {
1102
1144
  this.filesProcessing = without(this.filesProcessing, file);
1103
1145
  file.processing = false;
1146
+ file.status = Dropzone.ERROR;
1104
1147
  this.processQueue();
1105
1148
  this.emit("error", file, message, xhr);
1106
1149
  return this.emit("complete", file);
@@ -1110,7 +1153,7 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1110
1153
 
1111
1154
  })(Em);
1112
1155
 
1113
- Dropzone.version = "3.2.0";
1156
+ Dropzone.version = "3.4.1";
1114
1157
 
1115
1158
  Dropzone.options = {};
1116
1159
 
@@ -1125,19 +1168,19 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1125
1168
  Dropzone.instances = [];
1126
1169
 
1127
1170
  Dropzone.forElement = function(element) {
1128
- var _ref;
1129
-
1130
1171
  if (typeof element === "string") {
1131
1172
  element = document.querySelector(element);
1132
1173
  }
1133
- return (_ref = element.dropzone) != null ? _ref : null;
1174
+ if ((element != null ? element.dropzone : void 0) == null) {
1175
+ throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
1176
+ }
1177
+ return element.dropzone;
1134
1178
  };
1135
1179
 
1136
1180
  Dropzone.autoDiscover = true;
1137
1181
 
1138
1182
  Dropzone.discover = function() {
1139
1183
  var checkElements, dropzone, dropzones, _i, _len, _results;
1140
-
1141
1184
  if (!Dropzone.autoDiscover) {
1142
1185
  return;
1143
1186
  }
@@ -1147,7 +1190,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1147
1190
  dropzones = [];
1148
1191
  checkElements = function(elements) {
1149
1192
  var el, _i, _len, _results;
1150
-
1151
1193
  _results = [];
1152
1194
  for (_i = 0, _len = elements.length; _i < _len; _i++) {
1153
1195
  el = elements[_i];
@@ -1178,7 +1220,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1178
1220
 
1179
1221
  Dropzone.isBrowserSupported = function() {
1180
1222
  var capableBrowser, regex, _i, _len, _ref;
1181
-
1182
1223
  capableBrowser = true;
1183
1224
  if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {
1184
1225
  if (!("classList" in document.createElement("a"))) {
@@ -1201,7 +1242,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1201
1242
 
1202
1243
  without = function(list, rejectedItem) {
1203
1244
  var item, _i, _len, _results;
1204
-
1205
1245
  _results = [];
1206
1246
  for (_i = 0, _len = list.length; _i < _len; _i++) {
1207
1247
  item = list[_i];
@@ -1220,7 +1260,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1220
1260
 
1221
1261
  Dropzone.createElement = function(string) {
1222
1262
  var div;
1223
-
1224
1263
  div = document.createElement("div");
1225
1264
  div.innerHTML = string;
1226
1265
  return div.childNodes[0];
@@ -1240,7 +1279,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1240
1279
 
1241
1280
  Dropzone.getElement = function(el, name) {
1242
1281
  var element;
1243
-
1244
1282
  if (typeof el === "string") {
1245
1283
  element = document.querySelector(el);
1246
1284
  } else if (el.nodeType != null) {
@@ -1254,7 +1292,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1254
1292
 
1255
1293
  Dropzone.getElements = function(els, name) {
1256
1294
  var e, el, elements, _i, _j, _len, _len1, _ref;
1257
-
1258
1295
  if (els instanceof Array) {
1259
1296
  elements = [];
1260
1297
  try {
@@ -1284,7 +1321,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1284
1321
 
1285
1322
  Dropzone.isValidMimeType = function(mimeType, acceptedMimeTypes) {
1286
1323
  var baseMimeType, validMimeType, _i, _len;
1287
-
1288
1324
  if (!acceptedMimeTypes) {
1289
1325
  return true;
1290
1326
  }
@@ -1320,6 +1356,18 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1320
1356
  window.Dropzone = Dropzone;
1321
1357
  }
1322
1358
 
1359
+ Dropzone.ADDED = "added";
1360
+
1361
+ Dropzone.ACCEPTED = "accepted";
1362
+
1363
+ Dropzone.UPLOADING = "uploading";
1364
+
1365
+ Dropzone.CANCELED = "canceled";
1366
+
1367
+ Dropzone.ERROR = "error";
1368
+
1369
+ Dropzone.SUCCESS = "success";
1370
+
1323
1371
  /*
1324
1372
  # contentloaded.js
1325
1373
  #
@@ -1337,7 +1385,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1337
1385
 
1338
1386
  contentLoaded = function(win, fn) {
1339
1387
  var add, doc, done, init, poll, pre, rem, root, top;
1340
-
1341
1388
  done = false;
1342
1389
  top = true;
1343
1390
  doc = win.document;
@@ -1356,7 +1403,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
1356
1403
  };
1357
1404
  poll = function() {
1358
1405
  var e;
1359
-
1360
1406
  try {
1361
1407
  root.doScroll("left");
1362
1408
  } catch (_error) {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dropzonejs-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Nahuel Cuesta Luengo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-04 00:00:00.000000000 Z
11
+ date: 2013-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit