add drag and drop file uploads w/async processing
[skip ci]
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
<%= hidden_field_tag :url, params[:url] %>
|
||||
<%= hidden_field_tag :ref, params[:ref] %>
|
||||
<%= hidden_field_tag :normalized_url, @normalized_url %>
|
||||
<%= f.hidden_field :md5_confirmation %>
|
||||
<%= f.hidden_field :referer_url, :value => @source.try(:referer_url) %>
|
||||
|
||||
<% if CurrentUser.can_upload_free? %>
|
||||
@@ -37,6 +38,10 @@
|
||||
<%= f.file_field :file, :size => 50 %>
|
||||
</div>
|
||||
|
||||
<div class="input" id="filedropzone">
|
||||
<span class="placeholder">Drag and drop a file here</span>
|
||||
</div>
|
||||
|
||||
<div class="input">
|
||||
<%= f.label :source %>
|
||||
<% if params[:url].present? %>
|
||||
@@ -112,9 +117,9 @@
|
||||
|
||||
<%= button_tag "Related tags", :id => "related-tags-button", :type => "button", :class => "ui-button ui-widget ui-corner-all sub gradient" %>
|
||||
|
||||
<% TagCategory.related_button_list.each do |category| %>
|
||||
<%= button_tag "#{TagCategory.related_button_mapping[category]}", :id => "related-#{category}-button", :type => "button", :class => "ui-button ui-widget ui-corner-all sub gradient" %>
|
||||
<% end %>
|
||||
<% TagCategory.related_button_list.each do |category| %>
|
||||
<%= button_tag "#{TagCategory.related_button_mapping[category]}", :id => "related-#{category}-button", :type => "button", :class => "ui-button ui-widget ui-corner-all sub gradient" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="input">
|
||||
@@ -143,4 +148,54 @@
|
||||
Upload - <%= Danbooru.config.app_name %>
|
||||
<% end %>
|
||||
|
||||
<% content_for(:html_header) do %>
|
||||
<script async src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.4.0/min/dropzone.min.js"></script>
|
||||
<script async src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>
|
||||
<script>
|
||||
$(function() {
|
||||
var enabled = true;
|
||||
|
||||
if (!window.FileReader) {
|
||||
enabled = false;
|
||||
}
|
||||
|
||||
if (!enabled) {
|
||||
$("#filedropzone").remove();
|
||||
return;
|
||||
}
|
||||
|
||||
$("#filedropzone").dropzone({
|
||||
paramName: "file",
|
||||
url: "/uploads/preprocess",
|
||||
createImageThumbnails: false,
|
||||
addRemoveLinks: false,
|
||||
maxFiles: 1,
|
||||
acceptedFiles: "image/jpeg,image/png,image/gif",
|
||||
previewTemplate: '<div class="dz-preview dz-file-preview"><div class="dz-details"><div class="dz-filename"><span data-dz-name></span></div><div class="dz-size" data-dz-size></div></div><div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div><div class="dz-error-message"><span data-dz-errormessage></span></div></div>',
|
||||
init: function() {
|
||||
this.on("drop", function(event) {
|
||||
$("#filedropzone .placeholder").hide();
|
||||
});
|
||||
this.on("complete", function(file) {
|
||||
$("#filedropzone .dz-progress").hide();
|
||||
});
|
||||
this.on("addedfile", function(file) {
|
||||
var reader = new FileReader()
|
||||
reader.addEventListener("loadend", function() {
|
||||
$("#upload_md5_confirmation").val(CryptoJS.MD5(CryptoJS.enc.Latin1.parse(this.result)).toString());
|
||||
});
|
||||
reader.readAsBinaryString(file);
|
||||
});
|
||||
this.on("success", function(file) {
|
||||
$("#filedropzone").addClass("success");
|
||||
});
|
||||
this.on("error", function(file, msg) {
|
||||
$("#filedropzone").addClass("error");
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<% end %>
|
||||
|
||||
<%= render "uploads/secondary_links" %>
|
||||
|
||||
Reference in New Issue
Block a user