diff --git a/app/assets/javascripts/documentable.js.coffee b/app/assets/javascripts/documentable.js.coffee index 4dfc9024c..7cc71f39d 100644 --- a/app/assets/javascripts/documentable.js.coffee +++ b/app/assets/javascripts/documentable.js.coffee @@ -1,23 +1,25 @@ App.Documentable = initialize: -> - $('#nested-documents').on 'cocoon:after-insert', (e, nested_document) -> - input = $(nested_document).find('.js-document-attachment') - App.Documentable.initializeDirectUploadInput(input) - - if $(nested_document).closest('#nested-documents').find('.document').length >= $('#nested-documents').data('max-documents-allowed') - App.Documentable.lockUploads() inputFiles = $('.js-document-attachment') $.each inputFiles, (index, input) -> App.Documentable.initializeDirectUploadInput(input) + $('#nested-documents').on 'cocoon:after-remove', (e, insertedItem) -> + App.Documentable.unlockUploads() + + $('#nested-documents').on 'cocoon:after-insert', (e, nested_document) -> + input = $(nested_document).find('.js-document-attachment') + App.Documentable.initializeDirectUploadInput(input) + + if $(nested_document).closest('#nested-documents').find('.document:visible').length >= $('#nested-documents').data('max-documents-allowed') + App.Documentable.lockUploads() + initializeDirectUploadInput: (input) -> inputData = @buildData([], input) - @initializeRemoveDocumentLink(input) - @initializeRemoveCachedDocumentLink(input, inputData) $(input).fileupload @@ -139,14 +141,8 @@ App.Documentable = if $(data.input).data('nested-document') == true $(data.wrapper).remove() - - initializeRemoveDocumentLink: (input) -> - wrapper = $(input).closest(".direct-upload") - remove_document_link = $(wrapper).find('a.remove-nested-field') - $(remove_document_link).on 'click', (e) -> - e.preventDefault() - $(wrapper).remove() - App.Documentable.unlockUploads() + else + $(data.wrapper).find('a.remove-cached-attachment').remove() initializeRemoveCachedDocumentLink: (input, data) -> wrapper = $(input).closest(".direct-upload") @@ -156,7 +152,5 @@ App.Documentable = e.stopPropagation() App.Documentable.doDeleteCachedAttachmentRequest(this.href, data) - destroyNestedDocument: (id) -> + removeDocument: (id) -> $('#' + id).remove() - if $('#nested-documents .document').length < $('#nested-documents').data('max-documents-allowed') - App.Documentable.unlockUploads() diff --git a/app/assets/stylesheets/participation.scss b/app/assets/stylesheets/participation.scss index ff466dfe2..8e151ab3e 100644 --- a/app/assets/stylesheets/participation.scss +++ b/app/assets/stylesheets/participation.scss @@ -317,7 +317,8 @@ .budget-investment-new, .proposal-form, .proposal-edit, -.image-form { +.image-form, +.document-form { @include upload-image-documents; } diff --git a/app/controllers/admin/poll/questions_controller.rb b/app/controllers/admin/poll/questions_controller.rb index 8f6c18841..19694d3ed 100644 --- a/app/controllers/admin/poll/questions_controller.rb +++ b/app/controllers/admin/poll/questions_controller.rb @@ -59,7 +59,7 @@ class Admin::Poll::QuestionsController < Admin::Poll::BaseController def question_params params.require(:poll_question).permit(:poll_id, :title, :question, :description, :proposal_id, :valid_answers, :video_url, - documents_attributes: [:id, :title, :attachment, :cached_attachment, :user_id]) + documents_attributes: [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy]) end def search_params diff --git a/app/controllers/budgets/investments_controller.rb b/app/controllers/budgets/investments_controller.rb index f6952fbe1..368cd35a7 100644 --- a/app/controllers/budgets/investments_controller.rb +++ b/app/controllers/budgets/investments_controller.rb @@ -111,7 +111,7 @@ module Budgets .permit(:title, :description, :external_url, :heading_id, :tag_list, :organization_name, :location, :terms_of_service, image_attributes: [:id, :title, :attachment, :cached_attachment, :user_id], - documents_attributes: [:id, :title, :attachment, :cached_attachment, :user_id]) + documents_attributes: [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy]) end def load_ballot diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb index 4bdc17b29..5b9c03d62 100644 --- a/app/controllers/proposals_controller.rb +++ b/app/controllers/proposals_controller.rb @@ -81,7 +81,7 @@ class ProposalsController < ApplicationController params.require(:proposal).permit(:title, :question, :summary, :description, :external_url, :video_url, :responsible_name, :tag_list, :terms_of_service, :geozone_id, image_attributes: [:id, :title, :attachment, :cached_attachment, :user_id], - documents_attributes: [:id, :title, :attachment, :cached_attachment, :user_id] ) + documents_attributes: [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy] ) end def retired_params diff --git a/app/helpers/documents_helper.rb b/app/helpers/documents_helper.rb index ba816ff5f..aa879f4d8 100644 --- a/app/helpers/documents_helper.rb +++ b/app/helpers/documents_helper.rb @@ -21,15 +21,8 @@ module DocumentsHelper "document_#{index}" end - def render_destroy_document_link(document) - if document.persisted? - link_to t('documents.form.delete_button'), - document_path(document, nested_document: true), - method: :delete, - remote: true, - data: { confirm: t('documents.actions.destroy.confirm') }, - class: "delete remove-document" - elsif !document.persisted? && document.cached_attachment.present? + def render_destroy_document_link(builder, document) + if !document.persisted? && 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, @@ -39,9 +32,7 @@ module DocumentsHelper remote: true, class: "delete remove-cached-attachment" else - link_to t('documents.form.delete_button'), - "#", - class: "delete remove-nested-field" + link_to_remove_association t('documents.form.delete_button'), builder, class: "delete remove-document" end end diff --git a/app/views/admin/poll/questions/_form.html.erb b/app/views/admin/poll/questions/_form.html.erb index 2b32ed680..7881936e4 100644 --- a/app/views/admin/poll/questions/_form.html.erb +++ b/app/views/admin/poll/questions/_form.html.erb @@ -26,8 +26,8 @@ ckeditor: { language: I18n.locale } %> -