From fe8b7d26c14224e732eb16623ff23011b6baf16d Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Tue, 21 Nov 2017 13:48:06 +0100 Subject: [PATCH 1/4] Improve server side assets validation display for steps [SCI-1747] --- app/assets/javascripts/protocols/steps.js.erb | 22 +++++++------------ .../javascripts/sitewide/drag_n_drop.js.erb | 3 +-- app/controllers/steps_controller.rb | 8 +++---- app/views/steps/_empty_step.html.erb | 8 ++++--- config/initializers/paperclip.rb | 1 + 5 files changed, 18 insertions(+), 24 deletions(-) diff --git a/app/assets/javascripts/protocols/steps.js.erb b/app/assets/javascripts/protocols/steps.js.erb index 93ca6d6b2..c9e74e682 100644 --- a/app/assets/javascripts/protocols/steps.js.erb +++ b/app/assets/javascripts/protocols/steps.js.erb @@ -593,21 +593,15 @@ animateSpinner(null, false); setupAssetsLoading(); }, - error: function(e) { - $form.after(xhr.responseJSON.html); - var $new_form = $form.next(); - $form.remove(); - - $errInput = $new_form.find(".form-group.has-error") - .first() - .find("input"); - renderFormError(e, $errInput); - - formCallback($form); - applyCancelOnNew(); + error: function(xhr) { + if (xhr.responseJSON['assets.file'] != null) { + $('#new-step-assets-group').addClass('has-error'); + $('#new-step-assets-tab').addClass('has-error'); + $.each(xhr.responseJSON['assets.file'], function(_, value) { + $('#new-step-assets-group').prepend('' + value + ''); + }); + } animateSpinner(null, false); - - TinyMCE.destroyAll(); SmartAnnotation.preventPropagation('.atwho-user-popover'); } }); diff --git a/app/assets/javascripts/sitewide/drag_n_drop.js.erb b/app/assets/javascripts/sitewide/drag_n_drop.js.erb index f585c3aaa..bb79294c2 100644 --- a/app/assets/javascripts/sitewide/drag_n_drop.js.erb +++ b/app/assets/javascripts/sitewide/drag_n_drop.js.erb @@ -26,7 +26,7 @@ $('.panel-step-attachment-new').remove(); _dragNdropAssetsOff(); for(var i = 0; i < droppedFiles.length; i++) { - $('#new-step-assets') + $('#new-step-assets-group') .append(_uploadedAssetPreview(droppedFiles[i], i)) .promise() .done(function() { @@ -49,7 +49,6 @@ var name = 'step[assets_attributes][' + index + '][file]'; fd.append(name, droppedFiles[i]); } - droppedFiles = []; filesValid = true; totalSize = 0; _dragNdropAssetsOff(); diff --git a/app/controllers/steps_controller.rb b/app/controllers/steps_controller.rb index 9b12b30b6..d64dfe1ac 100644 --- a/app/controllers/steps_controller.rb +++ b/app/controllers/steps_controller.rb @@ -96,11 +96,9 @@ class StepsController < ApplicationController status: :ok end else - format.json { - render json: { - html: render_to_string(partial: 'new.html.erb') - }, status: :bad_request - } + format.json do + render json: @step.errors.to_json, status: :bad_request + end end end end diff --git a/app/views/steps/_empty_step.html.erb b/app/views/steps/_empty_step.html.erb index 1882f419b..67f048b13 100644 --- a/app/views/steps/_empty_step.html.erb +++ b/app/views/steps/_empty_step.html.erb @@ -50,9 +50,11 @@ style="display: none" multiple> - <%= f.nested_fields_for :assets do |ff| %> - <%= render "form_assets.html.erb", ff: ff, step: step %> - <% end %> +
+ <%= f.nested_fields_for :assets do |ff| %> + <%= render "form_assets.html.erb", ff: ff, step: step %> + <% end %> +
<%= f.nested_fields_for :tables do |ff| %> diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb index a1ecb31c0..e95a80c6f 100644 --- a/config/initializers/paperclip.rb +++ b/config/initializers/paperclip.rb @@ -217,6 +217,7 @@ module Paperclip application/vnd.sun.xml.calc.template application/vnd.stardivision.calc application/x-starcalc + application/CDFV2-encrypted )) || # Presentation application (Set[content_type, content_types_from_name].subset? Set.new %w( From e35031dd9afddbfd628a3e6b9b9a127867be133e Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Tue, 28 Nov 2017 11:34:57 +0100 Subject: [PATCH 2/4] Small code fixies [SCI-1747] --- app/assets/javascripts/protocols/steps.js.erb | 2 +- app/assets/javascripts/sitewide/drag_n_drop.js.erb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/protocols/steps.js.erb b/app/assets/javascripts/protocols/steps.js.erb index c9e74e682..9addb1f07 100644 --- a/app/assets/javascripts/protocols/steps.js.erb +++ b/app/assets/javascripts/protocols/steps.js.erb @@ -594,7 +594,7 @@ setupAssetsLoading(); }, error: function(xhr) { - if (xhr.responseJSON['assets.file'] != null) { + if (xhr.responseJSON['assets.file']) { $('#new-step-assets-group').addClass('has-error'); $('#new-step-assets-tab').addClass('has-error'); $.each(xhr.responseJSON['assets.file'], function(_, value) { diff --git a/app/assets/javascripts/sitewide/drag_n_drop.js.erb b/app/assets/javascripts/sitewide/drag_n_drop.js.erb index bb79294c2..4e681b961 100644 --- a/app/assets/javascripts/sitewide/drag_n_drop.js.erb +++ b/app/assets/javascripts/sitewide/drag_n_drop.js.erb @@ -49,6 +49,7 @@ var name = 'step[assets_attributes][' + index + '][file]'; fd.append(name, droppedFiles[i]); } + droppedFiles = []; filesValid = true; totalSize = 0; _dragNdropAssetsOff(); From 745dac09a7734a7719355a1abf6b43ef448fbd77 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Tue, 28 Nov 2017 16:48:47 +0100 Subject: [PATCH 3/4] Improve clean-up of dropped files [SCI-1747] --- app/assets/javascripts/protocols/steps.js.erb | 6 ++++-- app/assets/javascripts/sitewide/drag_n_drop.js.erb | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/protocols/steps.js.erb b/app/assets/javascripts/protocols/steps.js.erb index 9addb1f07..039610611 100644 --- a/app/assets/javascripts/protocols/steps.js.erb +++ b/app/assets/javascripts/protocols/steps.js.erb @@ -123,6 +123,7 @@ initPreviewModal(); SmartAnnotation.preventPropagation('.atwho-user-popover'); TinyMCE.destroyAll(); + DragNDropSteps.clearFiles(); }, 1000); }) @@ -148,8 +149,8 @@ initializeCheckboxSorting(); animateSpinner(null, false); initPreviewModal(); - - TinyMCE.refresh() + DragNDropSteps.clearFiles(); + TinyMCE.refresh(); $("#new-step-checklists fieldset.nested_step_checklists ul").each(function () { enableCheckboxSorting(this); }); @@ -371,6 +372,7 @@ newStepHandler(); }); toggleButtons(true); + DragNDropSteps.clearFiles(); }); } diff --git a/app/assets/javascripts/sitewide/drag_n_drop.js.erb b/app/assets/javascripts/sitewide/drag_n_drop.js.erb index 4e681b961..1359b3c9e 100644 --- a/app/assets/javascripts/sitewide/drag_n_drop.js.erb +++ b/app/assets/javascripts/sitewide/drag_n_drop.js.erb @@ -19,6 +19,10 @@ return filesValid; } + function clearFiles() { + droppedFiles = []; + } + // loops through a list of files and display each file in a separate panel function listItems() { totalSize = 0; @@ -49,7 +53,6 @@ var name = 'step[assets_attributes][' + index + '][file]'; fd.append(name, droppedFiles[i]); } - droppedFiles = []; filesValid = true; totalSize = 0; _dragNdropAssetsOff(); @@ -144,7 +147,8 @@ init: init, appendFilesToForm: appendFilesToForm, listItems: listItems, - filesStatus: filesStatus + filesStatus: filesStatus, + clearFiles: clearFiles }); })(); From 373d7e8aa6d7789f17e13cff66efd0e79cf1f340 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Fri, 1 Dec 2017 11:51:22 +0100 Subject: [PATCH 4/4] Clear selected files after successful upload [SCI-1747] --- app/assets/javascripts/protocols/steps.js.erb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/protocols/steps.js.erb b/app/assets/javascripts/protocols/steps.js.erb index 039610611..adefb94b1 100644 --- a/app/assets/javascripts/protocols/steps.js.erb +++ b/app/assets/javascripts/protocols/steps.js.erb @@ -594,6 +594,7 @@ }); animateSpinner(null, false); setupAssetsLoading(); + DragNDropSteps.clearFiles(); }, error: function(xhr) { if (xhr.responseJSON['assets.file']) {