Extract ajax upload and destroy_upload actions from images and documents controllers and place them at new controllers to manage direct uploads

This commit is contained in:
Senén Rodero Rodríguez
2017-09-17 17:37:13 +02:00
parent c6dabedb4a
commit 826385f659
25 changed files with 369 additions and 191 deletions

View File

@@ -4,14 +4,57 @@
documentable_id: @document.documentable_id,
from: params[:from]
),
html: { multipart: true, class: "documentable"},
data: { direct_upload_url: upload_documents_url(documentable_type: @document.documentable_type, documentable_id: @document.documentable_id) } do |f| %>
html: { multipart: true, class: "documentable" } do |f| %>
<%= render 'shared/errors', resource: @document %>
<div class="row">
<div class="row document direct-upload">
<%= render 'plain_fields', document: @document %>
<%= f.hidden_field :cached_attachment %>
<div class="small-12 column">
<%= f.text_field :title %>
</div>
<div class="small-12 column actions">
<div class="small-6 column action-add attachment-errors">
<%= f.label :attachment, t("documents.form.attachment_label"), class: 'button hollow' %>
<%= f.file_field :attachment,
accept: accepted_content_types_extensions(@document.documentable.class),
label: false,
class: 'js-document-attachment',
data: {
url: direct_uploads_url("direct_upload[resource_type]": @document.documentable_type,
"direct_upload[resource_id]": @document.documentable_id,
"direct_upload[resource_relation]": "documents"),
cached_attachment_input_field: "document_cached_attachment",
title_input_field: "document_title"
} %>
</div>
<div class="small-6 column action-remove">
<% if @document.cached_attachment.present? %>
<%= link_to t('documents.form.delete_button'),
direct_upload_destroy_url("direct_upload[resource_type]": @document.documentable_type,
"direct_upload[resource_id]": @document.documentable_id,
"direct_upload[resource_relation]": "documents",
"direct_upload[cached_attachment]": @document.cached_attachment),
method: :delete,
remote: true,
class: "delete float-right" %>
<% end %>
</div>
</div>
<div class="small-12 column">
<p class="file-name">
<%= document_attachment_file_name(@document) %>
</p>
</div>
<div class="small-12 column">
<div class="progress-bar-placeholder"><div class="loading-bar"></div></div>
</div>
<div class="actions small-12 medium-6 large-4 end column">
<%= f.submit(t("documents.form.submit_button"), class: "button expanded") %>

View File

@@ -1,53 +0,0 @@
<div id="plain_document_fields" class="document">
<div class="small-12 column">
<%= label_tag :document_title, t("activerecord.attributes.document.title") %>
<%= text_field_tag :document_title,
document.errors.has_key?(:attachment) ? "" : document.title,
name: "document[title]",
class: "document-title" %>
<% if document.errors.has_key?(:title) %>
<small class="error"><%= document.errors[:title].join(", ") %></small>
<% end %>
</div>
<div class="small-12 column">
<%= hidden_field_tag :cached_attachment, document.cached_attachment, name: "document[cached_attachment]" %>
<%= file_field_tag :attachment,
accept: accepted_content_types_extensions(document.documentable.class),
label: false,
class: 'js-document-attachment',
data: {
url: upload_documents_url(documentable_type: document.documentable_type, documentable_id: document.documentable_id),
cached_attachment_input_field: "document_cached_attachment",
multiple: false,
nested_document: false
},
id: "document_attachment",
name: "document[attachment]" %>
<% if document.cached_attachment.blank? %>
<%= label_tag :document_attachment, t("documents.form.attachment_label"), class: 'button hollow' %>
<% else %>
<%= link_to t('documents.form.delete_button'),
destroy_upload_documents_path(path: document.cached_attachment,
nested_document: false,
documentable_type: document.documentable_type,
documentable_id: document.documentable_id),
method: :delete,
remote: true,
class: "delete float-right" %>
<% end %>
<% if document.errors.has_key?(:attachment) %>
<div class="small-12 column source-option-file">
<div class="attachment-errors">
<small class="error"><%= document_errors_on_attachment(document) %></small>
</div>
</div>
<% end %>
<p class="file-name"><%= document_attachment_file_name(document) %></p>
<div class="progress-bar-placeholder"><div class="loading-bar"></div></div>
</div>
</div>

View File

@@ -3,6 +3,7 @@
<div class="small-12 medium-9 column">
<%= back_link_to params[:from] %>
<h1><%= t("documents.new.title") %></h1>
<p><%= document_note(@document) %></p>
<%= render "documents/form", form_url: documents_url %>
</div>

View File

@@ -4,17 +4,63 @@
imageable_id: @image.imageable_id,
from: params[:from]
),
html: { multipart: true, class: "imageable"},
data: { direct_upload_url: upload_images_url(imageable_type: @image.imageable_type, imageable_id: @image.imageable_id) } do |f| %>
html: { multipart: true, class: "imageable" } do |f| %>
<%= render 'shared/errors', resource: @image %>
<div class="row">
<div class="row image direct-upload">
<%= render 'plain_fields', image: @image %>
<%= f.hidden_field :cached_attachment %>
<div class="small-12 column">
<%= f.text_field :title, placeholder: t("images.new.form.title_placeholder") %>
</div>
<%= render_image(@image, :thumb, false) if @image.attachment.exists? %>
<div class="small-12 column attachment-actions">
<div class="small-6 column action-add attachment-errors">
<%= f.label :attachment, t("images.form.attachment_label"), class: 'button hollow' %>
<%= f.file_field :attachment,
accept: imageable_accepted_content_types_extensions,
label: false,
class: 'direct_upload_attachment',
data: {
url: direct_uploads_url("direct_upload[resource_type]": @image.imageable_type,
"direct_upload[resource_id]": @image.imageable_id,
"direct_upload[resource_relation]": "image"),
cached_attachment_input_field: "image_cached_attachment",
title_input_field: "image_title",
multiple: false
} %>
</div>
<div class="small-6 column action-remove">
<% if @image.cached_attachment.present? %>
<%= link_to t('images.form.delete_button'),
direct_upload_destroy_url("direct_upload[resource_type]": @image.imageable_type,
"direct_upload[resource_id]": @image.imageable_id,
"direct_upload[resource_relation]": "image",
"direct_upload[cached_attachment]": @image.cached_attachment),
method: :delete,
remote: true,
class: "delete float-right" %>
<% end %>
</div>
</div>
<div class="small-12 column">
<p class="file-name">
<%= image_attachment_file_name(@image) %>
</p>
</div>
<div class="small-12 column">
<div class="progress-bar-placeholder"><div class="loading-bar"></div></div>
</div>
<div class="actions small-12 medium-6 large-4 end column">
<%= f.submit(t("images.form.submit_button"), class: "button expanded") %>
</div>
</div>
<% end %>

View File

@@ -1,19 +1,17 @@
<div class="row">
<div class="small-12 column text-center">
<figure>
<%= image_tag image.attachment.url(version),
class: image_class(image),
alt: image.title %>
<% if show_caption %>
<figcaption class="text-right">
<em><%= image.title %></em>
</figcaption>
<% end %>
</figure>
<div class="small-12 column text-center image-preview">
<figure>
<%= image_tag image.attachment.url(version),
class: image_class(image),
alt: image.title %>
<% if show_caption %>
<hr>
<figcaption class="text-right">
<em><%= image.title %></em>
</figcaption>
<% end %>
</figure>
<% if show_caption %>
<hr>
<% end %>
</div>
</div>

View File

@@ -1,52 +0,0 @@
<div id="plain_image_fields" class="image">
<div class="small-12 column">
<%= label_tag :image_title, t("activerecord.attributes.image.title") %>
<%= text_field_tag :image_title, image.title, placeholder: t("images.new.form.title_placeholder"), name: "image[title]", class: "image-title" %>
<% if image.errors.has_key?(:title) %>
<small class="error"><%= image.errors[:title].join(", ") %></small>
<% end %>
</div>
<div class="small-12 column">
<%= render_image(image, :thumb, false) if image.attachment.exists? %>
<%= hidden_field_tag :cached_attachment, image.cached_attachment, name: "image[cached_attachment]" %>
<%= file_field_tag :attachment,
accept: imageable_accepted_content_types_extensions,
label: false,
class: 'image_ajax_attachment',
data: {
url: upload_images_url(imageable_type: image.imageable_type, imageable_id: image.imageable_id),
cached_attachment_input_field: "image_cached_attachment",
multiple: false,
nested_image: false
},
id: "image_attachment",
name: "image[attachment]" %>
<% if image.cached_attachment.blank? %>
<%= label_tag :image_attachment, t("images.form.attachment_label"), class: 'button hollow' %>
<% else %>
<%= link_to t('images.form.delete_button'),
destroy_upload_images_path(path: image.cached_attachment,
nested_image: false,
imageable_type: image.imageable_type,
imageable_id: image.imageable_id),
method: :delete,
remote: true,
class: "delete float-right" %>
<% end %>
<% if image.errors.has_key?(:attachment) %>
<div class="small-12 column source-option-file">
<div class="attachment-errors">
<small class="error"><%= image_errors_on_attachment(image) %></small>
</div>
</div>
<% end %>
<p class="file-name"><%= image_attachment_file_name(image) %></p>
<div class="progress-bar-placeholder"><div class="loading-bar"></div></div>
</div>
</div>