dropzonejs-rails 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/dropzonejs-rails/version.rb +2 -2
- data/vendor/assets/javascripts/dropzone.js +326 -158
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZjYwZWZlZmU2MjdjOGNmYWM4MzFjMGVhMDBkMzUwYWU2YTAxYmUzZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZWY2Yjk4NjE1NDJlMzlkNjkxNzc3NzU1ZjU4YzFhMzMzMDUzMDFmZg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YjE3OTRiNWFkZDg0MDM0ODc0NDJjY2ViYmMyZDRmNmVhMTM0YjMwMWQ3MWM4
|
10
|
+
YmFmYzZkMzBmZWE3MDI3YzAyMTk0ZTk3MTFjN2VlNzA1ODhlNWIxODFmNDdm
|
11
|
+
NGQxNmEwOTZiMWUxM2EyYmU3ODFkMjRhZTAwMDc1Zjg2MjhiMjI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzYwNDY4OThhNGU1YjQ0YTJjZTQ5MmZhM2E3NWNhNDVjNGIzOWZlMDk1ZGNl
|
14
|
+
YjU0YTI2Yjc0MDdmZTE4MWRkNWVhNmE2YTI1Y2U5NzY0NWJkMjBjZTBhNzMx
|
15
|
+
ZjMxM2Y0ZjQyZjZmNDFlNGE2Zjg2ZGU0ZWZkMTA5M2M1N2IxMmI=
|
@@ -396,20 +396,20 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
396
396
|
|
397
397
|
|
398
398
|
(function() {
|
399
|
-
var Dropzone, Em, camelize,
|
399
|
+
var Dropzone, Em, camelize, contentLoaded, createElement, noop, without,
|
400
400
|
__hasProp = {}.hasOwnProperty,
|
401
401
|
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
402
402
|
__slice = [].slice;
|
403
403
|
|
404
|
-
o = typeof jQuery !== "undefined" && jQuery !== null ? jQuery : require("jquery");
|
405
|
-
|
406
404
|
Em = typeof Emitter !== "undefined" && Emitter !== null ? Emitter : require("emitter");
|
407
405
|
|
406
|
+
noop = function() {};
|
407
|
+
|
408
408
|
Dropzone = (function(_super) {
|
409
409
|
|
410
410
|
__extends(Dropzone, _super);
|
411
411
|
|
412
|
-
Dropzone.prototype.version = "
|
412
|
+
Dropzone.prototype.version = "2.0.0";
|
413
413
|
|
414
414
|
/*
|
415
415
|
This is a list of all available events you can register on a dropzone object.
|
@@ -422,8 +422,6 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
422
422
|
|
423
423
|
Dropzone.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "selectedfiles", "addedfile", "removedfile", "thumbnail", "error", "processingfile", "uploadprogress", "sending", "success", "complete", "reset"];
|
424
424
|
|
425
|
-
Dropzone.prototype.blacklistedBrowsers = [/opera.*Macintosh.*version\/12/i];
|
426
|
-
|
427
425
|
Dropzone.prototype.defaultOptions = {
|
428
426
|
url: null,
|
429
427
|
parallelUploads: 2,
|
@@ -437,18 +435,36 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
437
435
|
clickable: true,
|
438
436
|
enqueueForUpload: true,
|
439
437
|
previewsContainer: null,
|
438
|
+
dictDefaultMessage: "Drop files here to upload",
|
439
|
+
dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.",
|
440
|
+
dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.",
|
440
441
|
accept: function(file, done) {
|
441
442
|
return done();
|
442
443
|
},
|
443
444
|
init: function() {
|
444
|
-
return
|
445
|
+
return noop;
|
445
446
|
},
|
446
447
|
fallback: function() {
|
447
|
-
|
448
|
-
this.element.
|
449
|
-
this.element.
|
450
|
-
|
451
|
-
|
448
|
+
var child, messageElement, span, _i, _len, _ref;
|
449
|
+
this.element.className = "" + this.element.className + " browser-not-supported";
|
450
|
+
_ref = this.element.getElementsByTagName("div");
|
451
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
452
|
+
child = _ref[_i];
|
453
|
+
if (/message/.test(child.className)) {
|
454
|
+
messageElement = child;
|
455
|
+
child.className = "message";
|
456
|
+
continue;
|
457
|
+
}
|
458
|
+
}
|
459
|
+
if (!messageElement) {
|
460
|
+
messageElement = createElement("<div class=\"message\"><span></span></div>");
|
461
|
+
this.element.appendChild(messageElement);
|
462
|
+
}
|
463
|
+
span = messageElement.getElementsByTagName("span")[0];
|
464
|
+
if (span) {
|
465
|
+
span.textContent = this.options.dictFallbackMessage;
|
466
|
+
}
|
467
|
+
return this.element.appendChild(this.getFallbackForm());
|
452
468
|
},
|
453
469
|
/*
|
454
470
|
Those functions register themselves to the events on init and handle all
|
@@ -460,76 +476,76 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
460
476
|
*/
|
461
477
|
|
462
478
|
drop: function(e) {
|
463
|
-
return this.element.
|
479
|
+
return this.element.classList.remove("drag-hover");
|
464
480
|
},
|
465
|
-
dragstart:
|
481
|
+
dragstart: noop,
|
466
482
|
dragend: function(e) {
|
467
|
-
return this.element.
|
483
|
+
return this.element.classList.remove("drag-hover");
|
468
484
|
},
|
469
485
|
dragenter: function(e) {
|
470
|
-
return this.element.
|
486
|
+
return this.element.classList.add("drag-hover");
|
471
487
|
},
|
472
488
|
dragover: function(e) {
|
473
|
-
return this.element.
|
489
|
+
return this.element.classList.add("drag-hover");
|
474
490
|
},
|
475
491
|
dragleave: function(e) {
|
476
|
-
return this.element.
|
492
|
+
return this.element.classList.remove("drag-hover");
|
477
493
|
},
|
478
494
|
selectedfiles: function(files) {
|
479
|
-
if (this.element
|
480
|
-
return this.element.
|
495
|
+
if (this.element === this.previewsContainer) {
|
496
|
+
return this.element.classList.add("started");
|
481
497
|
}
|
482
498
|
},
|
483
499
|
reset: function() {
|
484
|
-
return this.element.
|
500
|
+
return this.element.classList.remove("started");
|
485
501
|
},
|
486
502
|
addedfile: function(file) {
|
487
|
-
file.previewTemplate =
|
488
|
-
this.previewsContainer.
|
489
|
-
file.previewTemplate.
|
490
|
-
return file.previewTemplate.
|
503
|
+
file.previewTemplate = createElement(this.options.previewTemplate);
|
504
|
+
this.previewsContainer.appendChild(file.previewTemplate);
|
505
|
+
file.previewTemplate.querySelector(".filename span").textContent = file.name;
|
506
|
+
return file.previewTemplate.querySelector(".details").appendChild(createElement("<div class=\"size\">" + (this.filesize(file.size)) + "</div>"));
|
491
507
|
},
|
492
508
|
removedfile: function(file) {
|
493
|
-
return file.previewTemplate.
|
509
|
+
return file.previewTemplate.parentNode.removeChild(file.previewTemplate);
|
494
510
|
},
|
495
511
|
thumbnail: function(file, dataUrl) {
|
496
|
-
file.previewTemplate.
|
497
|
-
|
512
|
+
file.previewTemplate.classList.remove("file-preview");
|
513
|
+
file.previewTemplate.classList.add("image-preview");
|
514
|
+
return file.previewTemplate.querySelector(".details").appendChild(createElement("<img alt=\"" + file.name + "\" src=\"" + dataUrl + "\"/>"));
|
498
515
|
},
|
499
516
|
error: function(file, message) {
|
500
|
-
file.previewTemplate.
|
501
|
-
return file.previewTemplate.
|
517
|
+
file.previewTemplate.classList.add("error");
|
518
|
+
return file.previewTemplate.querySelector(".error-message span").textContent = message;
|
502
519
|
},
|
503
520
|
processingfile: function(file) {
|
504
|
-
return file.previewTemplate.
|
521
|
+
return file.previewTemplate.classList.add("processing");
|
505
522
|
},
|
506
523
|
uploadprogress: function(file, progress) {
|
507
|
-
return file.previewTemplate.
|
508
|
-
width: "" + progress + "%"
|
509
|
-
});
|
524
|
+
return file.previewTemplate.querySelector(".progress .upload").style.width = "" + progress + "%";
|
510
525
|
},
|
511
|
-
sending:
|
526
|
+
sending: noop,
|
512
527
|
success: function(file) {
|
513
|
-
return file.previewTemplate.
|
528
|
+
return file.previewTemplate.classList.add("success");
|
514
529
|
},
|
515
|
-
complete:
|
530
|
+
complete: noop,
|
516
531
|
previewTemplate: "<div class=\"preview file-preview\">\n <div class=\"details\">\n <div class=\"filename\"><span></span></div>\n </div>\n <div class=\"progress\"><span class=\"upload\"></span></div>\n <div class=\"success-mark\"><span>✔</span></div>\n <div class=\"error-mark\"><span>✘</span></div>\n <div class=\"error-message\"><span></span></div>\n</div>"
|
517
532
|
};
|
518
533
|
|
519
534
|
function Dropzone(element, options) {
|
520
|
-
var elementId, elementOptions, extend, _ref;
|
535
|
+
var elementId, elementOptions, extend, fallback, _ref;
|
536
|
+
this.element = element;
|
521
537
|
this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\n*/g, "");
|
522
|
-
this.element
|
523
|
-
|
524
|
-
|
538
|
+
if (typeof this.element === "string") {
|
539
|
+
this.element = document.querySelector(this.element);
|
540
|
+
}
|
541
|
+
if (!(this.element && (this.element.nodeType != null))) {
|
542
|
+
throw new Error("Invalid dropzone element.");
|
525
543
|
}
|
526
|
-
if (this.element
|
544
|
+
if (Dropzone.forElement(this.element)) {
|
527
545
|
throw new Error("Dropzone already attached.");
|
528
546
|
}
|
529
|
-
this.element.
|
530
|
-
elementId = this.element.attr("id");
|
547
|
+
elementId = this.element.id;
|
531
548
|
elementOptions = (_ref = (elementId ? Dropzone.options[camelize(elementId)] : void 0)) != null ? _ref : {};
|
532
|
-
this.elementTagName = this.element.get(0).tagName;
|
533
549
|
extend = function() {
|
534
550
|
var key, object, objects, target, val, _i, _len;
|
535
551
|
target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
@@ -544,141 +560,175 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
544
560
|
};
|
545
561
|
this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});
|
546
562
|
if (this.options.url == null) {
|
547
|
-
this.options.url = this.element.
|
563
|
+
this.options.url = this.element.action;
|
548
564
|
}
|
549
565
|
if (!this.options.url) {
|
550
566
|
throw new Error("No URL provided.");
|
551
567
|
}
|
552
|
-
|
568
|
+
if (!Dropzone.isBrowserSupported()) {
|
569
|
+
return this.options.fallback.call(this);
|
570
|
+
}
|
571
|
+
if (fallback = this.getExistingFallback()) {
|
572
|
+
fallback.remove();
|
573
|
+
}
|
574
|
+
this.previewsContainer = this.options.previewsContainer ? createElement(this.options.previewsContainer) : this.element;
|
553
575
|
this.init();
|
554
576
|
}
|
555
577
|
|
556
578
|
Dropzone.prototype.init = function() {
|
557
|
-
var
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
if (this.element.hasClass("dropzone") && this.element.find(".message").length === 0) {
|
562
|
-
this.element.append(o("<div class=\"default message\"><span>Drop files here to upload</span></div>"));
|
563
|
-
}
|
564
|
-
capableBrowser = true;
|
565
|
-
if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData) {
|
566
|
-
_ref = this.blacklistedBrowsers;
|
567
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
568
|
-
regex = _ref[_i];
|
569
|
-
if (regex.test(navigator.userAgent)) {
|
570
|
-
capableBrowser = false;
|
571
|
-
continue;
|
572
|
-
}
|
573
|
-
}
|
574
|
-
} else {
|
575
|
-
capableBrowser = false;
|
579
|
+
var eventName, noPropagation, _i, _len, _ref, _ref1,
|
580
|
+
_this = this;
|
581
|
+
if (this.element.tagName === "form") {
|
582
|
+
this.element.setAttribute("enctype", "multipart/form-data");
|
576
583
|
}
|
577
|
-
if (!
|
578
|
-
|
584
|
+
if (this.element.classList.contains("dropzone") && !this.element.querySelector(".message")) {
|
585
|
+
this.element.appendChild(createElement("<div class=\"default message\"><span>" + this.options.dictDefaultMessage + "</span></div>"));
|
579
586
|
}
|
580
587
|
if (this.options.clickable) {
|
581
|
-
this.hiddenFileInput =
|
588
|
+
this.hiddenFileInput = document.createElement("input");
|
589
|
+
this.hiddenFileInput.setAttribute("type", "file");
|
590
|
+
this.hiddenFileInput.setAttribute("multiple", "multiple");
|
591
|
+
this.hiddenFileInput.style.display = "none";
|
592
|
+
document.body.appendChild(this.hiddenFileInput);
|
593
|
+
this.hiddenFileInput.addEventListener("change", function() {
|
594
|
+
var files;
|
595
|
+
files = _this.hiddenFileInput.files;
|
596
|
+
if (files.length) {
|
597
|
+
_this.emit("selectedfiles", files);
|
598
|
+
return _this.handleFiles(files);
|
599
|
+
}
|
600
|
+
});
|
582
601
|
}
|
583
602
|
this.files = [];
|
584
603
|
this.filesQueue = [];
|
585
604
|
this.filesProcessing = [];
|
586
|
-
this.URL = (
|
587
|
-
this.
|
605
|
+
this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;
|
606
|
+
_ref1 = this.events;
|
607
|
+
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
|
608
|
+
eventName = _ref1[_i];
|
609
|
+
this.on(eventName, this.options[eventName]);
|
610
|
+
}
|
611
|
+
noPropagation = function(e) {
|
612
|
+
e.stopPropagation();
|
613
|
+
if (e.preventDefault) {
|
614
|
+
return e.preventDefault();
|
615
|
+
} else {
|
616
|
+
return e.returnValue = false;
|
617
|
+
}
|
618
|
+
};
|
619
|
+
this.listeners = {
|
620
|
+
"dragstart": function(e) {
|
621
|
+
return _this.emit("dragstart", e);
|
622
|
+
},
|
623
|
+
"dragenter": function(e) {
|
624
|
+
noPropagation(e);
|
625
|
+
return _this.emit("dragenter", e);
|
626
|
+
},
|
627
|
+
"dragover": function(e) {
|
628
|
+
noPropagation(e);
|
629
|
+
return _this.emit("dragover", e);
|
630
|
+
},
|
631
|
+
"dragleave": function(e) {
|
632
|
+
return _this.emit("dragleave", e);
|
633
|
+
},
|
634
|
+
"drop": function(e) {
|
635
|
+
noPropagation(e);
|
636
|
+
_this.drop(e);
|
637
|
+
return _this.emit("drop", e);
|
638
|
+
},
|
639
|
+
"dragend": function(e) {
|
640
|
+
return _this.emit("dragend", e);
|
641
|
+
},
|
642
|
+
"click": function(evt) {
|
643
|
+
if (!_this.options.clickable) {
|
644
|
+
return;
|
645
|
+
}
|
646
|
+
if (evt.target === _this.element || evt.target === _this.element.querySelector(".message")) {
|
647
|
+
return _this.hiddenFileInput.click();
|
648
|
+
}
|
649
|
+
}
|
650
|
+
};
|
651
|
+
this.enable();
|
588
652
|
return this.options.init.call(this);
|
589
653
|
};
|
590
654
|
|
591
655
|
Dropzone.prototype.getFallbackForm = function() {
|
592
|
-
var fields;
|
593
|
-
|
594
|
-
|
595
|
-
|
656
|
+
var existingFallback, fields, fieldsString, form;
|
657
|
+
if (existingFallback = this.getExistingFallback()) {
|
658
|
+
return existingFallback;
|
659
|
+
}
|
660
|
+
fieldsString = "<div class=\"fallback\">";
|
661
|
+
if (this.options.dictFallbackText) {
|
662
|
+
fieldsString += "<p>" + this.options.dictFallbackText + "</p>";
|
663
|
+
}
|
664
|
+
fieldsString += "<input type=\"file\" name=\"" + this.options.paramName + "\" multiple=\"multiple\" /><button type=\"submit\">Upload!</button></div>";
|
665
|
+
fields = createElement(fieldsString);
|
666
|
+
if (this.element.tagName !== "FORM") {
|
667
|
+
form = createElement("<form action=\"" + this.options.url + "\" enctype=\"multipart/form-data\" method=\"post\"></form>");
|
668
|
+
form.appendChild(fields);
|
596
669
|
} else {
|
597
|
-
|
598
|
-
|
599
|
-
}
|
600
|
-
if (!this.element.attr("method")) {
|
601
|
-
this.element.attr("method", "post");
|
602
|
-
}
|
670
|
+
this.element.setAttribute("enctype", "multipart/form-data");
|
671
|
+
this.element.setAttribute("method", "post");
|
603
672
|
}
|
604
|
-
return fields;
|
673
|
+
return form != null ? form : fields;
|
605
674
|
};
|
606
675
|
|
607
|
-
Dropzone.prototype.
|
608
|
-
var
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
eventName = _ref[_i];
|
617
|
-
this.on(eventName, this.options[eventName]);
|
676
|
+
Dropzone.prototype.getExistingFallback = function() {
|
677
|
+
var fallback, getFallback, tagName, _i, _len, _ref;
|
678
|
+
getFallback = function(elements) {
|
679
|
+
var el, _i, _len;
|
680
|
+
for (_i = 0, _len = elements.length; _i < _len; _i++) {
|
681
|
+
el = elements[_i];
|
682
|
+
if (/fallback/.test(el.className)) {
|
683
|
+
return el;
|
684
|
+
}
|
618
685
|
}
|
619
|
-
}
|
620
|
-
noPropagation = function(e) {
|
621
|
-
e.stopPropagation();
|
622
|
-
return e.preventDefault();
|
623
686
|
};
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
}
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
this.
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
_this.drop(e);
|
641
|
-
return _this.emit("drop", e);
|
642
|
-
});
|
643
|
-
this.element.on("dragend.dropzone", function(e) {
|
644
|
-
return _this.emit("dragend", e);
|
645
|
-
});
|
646
|
-
if (this.options.clickable) {
|
647
|
-
this.element.addClass("clickable");
|
648
|
-
this.element.on("click.dropzone", function(evt) {
|
649
|
-
var target;
|
650
|
-
target = o(evt.target);
|
651
|
-
if (target.is(_this.element) || target.is(_this.element.find(".message"))) {
|
652
|
-
return _this.hiddenFileInput.click();
|
653
|
-
}
|
654
|
-
});
|
655
|
-
return this.hiddenFileInput.on("change", function() {
|
656
|
-
var files;
|
657
|
-
files = _this.hiddenFileInput.get(0).files;
|
658
|
-
_this.emit("selectedfiles", files);
|
659
|
-
if (files.length) {
|
660
|
-
return _this.handleFiles(files);
|
661
|
-
}
|
662
|
-
});
|
687
|
+
_ref = ["div", "form"];
|
688
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
689
|
+
tagName = _ref[_i];
|
690
|
+
if (fallback = getFallback(this.element.getElementsByTagName("div"))) {
|
691
|
+
return fallback;
|
692
|
+
}
|
693
|
+
}
|
694
|
+
};
|
695
|
+
|
696
|
+
Dropzone.prototype.setupEventListeners = function() {
|
697
|
+
var event, listener, _ref, _results;
|
698
|
+
_ref = this.listeners;
|
699
|
+
_results = [];
|
700
|
+
for (event in _ref) {
|
701
|
+
listener = _ref[event];
|
702
|
+
_results.push(this.element.addEventListener(event, listener, false));
|
663
703
|
}
|
704
|
+
return _results;
|
664
705
|
};
|
665
706
|
|
666
707
|
Dropzone.prototype.removeEventListeners = function() {
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
708
|
+
var event, listener, _ref, _results;
|
709
|
+
_ref = this.listeners;
|
710
|
+
_results = [];
|
711
|
+
for (event in _ref) {
|
712
|
+
listener = _ref[event];
|
713
|
+
_results.push(this.element.removeEventListener(event, listener, false));
|
671
714
|
}
|
715
|
+
return _results;
|
672
716
|
};
|
673
717
|
|
674
718
|
Dropzone.prototype.disable = function() {
|
719
|
+
if (this.options.clickable) {
|
720
|
+
this.element.classList.remove("clickable");
|
721
|
+
}
|
675
722
|
this.removeEventListeners();
|
676
723
|
this.filesProcessing = [];
|
677
724
|
return this.filesQueue = [];
|
678
725
|
};
|
679
726
|
|
680
727
|
Dropzone.prototype.enable = function() {
|
681
|
-
|
728
|
+
if (this.options.clickable) {
|
729
|
+
this.element.classList.add("clickable");
|
730
|
+
}
|
731
|
+
return this.setupEventListeners();
|
682
732
|
};
|
683
733
|
|
684
734
|
Dropzone.prototype.filesize = function(size) {
|
@@ -704,10 +754,10 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
704
754
|
|
705
755
|
Dropzone.prototype.drop = function(e) {
|
706
756
|
var files;
|
707
|
-
if (!e.
|
757
|
+
if (!e.dataTransfer) {
|
708
758
|
return;
|
709
759
|
}
|
710
|
-
files = e.
|
760
|
+
files = e.dataTransfer.files;
|
711
761
|
this.emit("selectedfiles", files);
|
712
762
|
if (files.length) {
|
713
763
|
return this.handleFiles(files);
|
@@ -833,7 +883,7 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
833
883
|
};
|
834
884
|
|
835
885
|
Dropzone.prototype.uploadFile = function(file) {
|
836
|
-
var formData, handleError, input,
|
886
|
+
var formData, handleError, input, inputName, inputType, key, progressObj, value, xhr, _i, _len, _ref, _ref1, _ref2,
|
837
887
|
_this = this;
|
838
888
|
xhr = new XMLHttpRequest();
|
839
889
|
xhr.open("POST", this.options.url, true);
|
@@ -872,14 +922,14 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
872
922
|
formData.append(key, value);
|
873
923
|
}
|
874
924
|
}
|
875
|
-
if (this.
|
876
|
-
_ref2 = this.element.
|
925
|
+
if (this.element.tagName = "FORM") {
|
926
|
+
_ref2 = this.element.querySelectorAll("input, textarea, select, button");
|
877
927
|
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
if (!
|
882
|
-
formData.append(
|
928
|
+
input = _ref2[_i];
|
929
|
+
inputName = input.getAttribute("name");
|
930
|
+
inputType = input.getAttribute("type");
|
931
|
+
if (!inputType || inputType.toLowerCase() !== "checkbox" || input.checked) {
|
932
|
+
formData.append(inputName, input.value);
|
883
933
|
}
|
884
934
|
}
|
885
935
|
}
|
@@ -911,6 +961,47 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
911
961
|
|
912
962
|
Dropzone.options = {};
|
913
963
|
|
964
|
+
Dropzone.instances = [];
|
965
|
+
|
966
|
+
Dropzone.forElement = function(element) {
|
967
|
+
var instance, _i, _len, _ref;
|
968
|
+
if (typeof element === "string") {
|
969
|
+
element = document.querySelector(element);
|
970
|
+
}
|
971
|
+
_ref = Dropzone.instances;
|
972
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
973
|
+
instance = _ref[_i];
|
974
|
+
if (instance.element === element) {
|
975
|
+
return instance;
|
976
|
+
}
|
977
|
+
}
|
978
|
+
return null;
|
979
|
+
};
|
980
|
+
|
981
|
+
Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\/12/i];
|
982
|
+
|
983
|
+
Dropzone.isBrowserSupported = function() {
|
984
|
+
var capableBrowser, regex, _i, _len, _ref;
|
985
|
+
capableBrowser = true;
|
986
|
+
if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData) {
|
987
|
+
if (!("classList" in document.createElement("a"))) {
|
988
|
+
capableBrowser = false;
|
989
|
+
} else {
|
990
|
+
_ref = Dropzone.blacklistedBrowsers;
|
991
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
992
|
+
regex = _ref[_i];
|
993
|
+
if (regex.test(navigator.userAgent)) {
|
994
|
+
capableBrowser = false;
|
995
|
+
continue;
|
996
|
+
}
|
997
|
+
}
|
998
|
+
}
|
999
|
+
} else {
|
1000
|
+
capableBrowser = false;
|
1001
|
+
}
|
1002
|
+
return capableBrowser;
|
1003
|
+
};
|
1004
|
+
|
914
1005
|
without = function(list, rejectedItem) {
|
915
1006
|
var item, _i, _len, _results;
|
916
1007
|
_results = [];
|
@@ -929,15 +1020,20 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
929
1020
|
});
|
930
1021
|
};
|
931
1022
|
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
1023
|
+
createElement = function(string) {
|
1024
|
+
var div;
|
1025
|
+
div = document.createElement("div");
|
1026
|
+
div.innerHTML = string;
|
1027
|
+
return div.childNodes[0];
|
936
1028
|
};
|
937
1029
|
|
938
|
-
|
939
|
-
|
940
|
-
|
1030
|
+
if (typeof jQuery !== "undefined" && jQuery !== null) {
|
1031
|
+
jQuery.fn.dropzone = function(options) {
|
1032
|
+
return this.each(function() {
|
1033
|
+
return new Dropzone(this, options);
|
1034
|
+
});
|
1035
|
+
};
|
1036
|
+
}
|
941
1037
|
|
942
1038
|
if (typeof module !== "undefined" && module !== null) {
|
943
1039
|
module.exports = Dropzone;
|
@@ -945,6 +1041,78 @@ require.register("dropzone/lib/dropzone.js", function(exports, require, module){
|
|
945
1041
|
window.Dropzone = Dropzone;
|
946
1042
|
}
|
947
1043
|
|
1044
|
+
contentLoaded = function(win, fn) {
|
1045
|
+
var add, doc, done, init, poll, pre, rem, root, top;
|
1046
|
+
done = false;
|
1047
|
+
top = true;
|
1048
|
+
doc = win.document;
|
1049
|
+
root = doc.documentElement;
|
1050
|
+
add = (doc.addEventListener ? "addEventListener" : "attachEvent");
|
1051
|
+
rem = (doc.addEventListener ? "removeEventListener" : "detachEvent");
|
1052
|
+
pre = (doc.addEventListener ? "" : "on");
|
1053
|
+
init = function(e) {
|
1054
|
+
if (e.type === "readystatechange" && doc.readyState !== "complete") {
|
1055
|
+
return;
|
1056
|
+
}
|
1057
|
+
(e.type === "load" ? win : doc)[rem](pre + e.type, init, false);
|
1058
|
+
if (!done && (done = true)) {
|
1059
|
+
return fn.call(win, e.type || e);
|
1060
|
+
}
|
1061
|
+
};
|
1062
|
+
poll = function() {
|
1063
|
+
try {
|
1064
|
+
root.doScroll("left");
|
1065
|
+
} catch (e) {
|
1066
|
+
setTimeout(poll, 50);
|
1067
|
+
return;
|
1068
|
+
}
|
1069
|
+
return init("poll");
|
1070
|
+
};
|
1071
|
+
if (doc.readyState !== "complete") {
|
1072
|
+
if (doc.createEventObject && root.doScroll) {
|
1073
|
+
try {
|
1074
|
+
top = !win.frameElement;
|
1075
|
+
} catch (_error) {}
|
1076
|
+
if (top) {
|
1077
|
+
poll();
|
1078
|
+
}
|
1079
|
+
}
|
1080
|
+
doc[add](pre + "DOMContentLoaded", init, false);
|
1081
|
+
doc[add](pre + "readystatechange", init, false);
|
1082
|
+
return win[add](pre + "load", init, false);
|
1083
|
+
}
|
1084
|
+
};
|
1085
|
+
|
1086
|
+
contentLoaded(window, function() {
|
1087
|
+
var checkElements, dropzone, dropzones, _i, _len, _results;
|
1088
|
+
if (false) {
|
1089
|
+
dropzones = document.querySelectorAll(".dropzone");
|
1090
|
+
} else {
|
1091
|
+
dropzones = [];
|
1092
|
+
checkElements = function(elements) {
|
1093
|
+
var el, _i, _len, _results;
|
1094
|
+
_results = [];
|
1095
|
+
for (_i = 0, _len = elements.length; _i < _len; _i++) {
|
1096
|
+
el = elements[_i];
|
1097
|
+
if (/dropzone/.test(el.className)) {
|
1098
|
+
_results.push(dropzones.push(el));
|
1099
|
+
} else {
|
1100
|
+
_results.push(void 0);
|
1101
|
+
}
|
1102
|
+
}
|
1103
|
+
return _results;
|
1104
|
+
};
|
1105
|
+
checkElements(document.getElementsByTagName("div"));
|
1106
|
+
checkElements(document.getElementsByTagName("form"));
|
1107
|
+
}
|
1108
|
+
_results = [];
|
1109
|
+
for (_i = 0, _len = dropzones.length; _i < _len; _i++) {
|
1110
|
+
dropzone = dropzones[_i];
|
1111
|
+
_results.push(new Dropzone(dropzone));
|
1112
|
+
}
|
1113
|
+
return _results;
|
1114
|
+
});
|
1115
|
+
|
948
1116
|
}).call(this);
|
949
1117
|
|
950
1118
|
});
|
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.0
|
4
|
+
version: 0.1.0
|
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-03-
|
11
|
+
date: 2013-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -59,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
59
|
version: '0'
|
60
60
|
requirements: []
|
61
61
|
rubyforge_project:
|
62
|
-
rubygems_version: 2.0.
|
62
|
+
rubygems_version: 2.0.3
|
63
63
|
signing_key:
|
64
64
|
specification_version: 4
|
65
65
|
summary: Integrates Dropzone JS File upload into Rails Asset pipeline.
|