diff --git a/app/controllers/start_form_controller.rb b/app/controllers/start_form_controller.rb index 03944f26..5fd663b0 100644 --- a/app/controllers/start_form_controller.rb +++ b/app/controllers/start_form_controller.rb @@ -38,7 +38,7 @@ class StartFormController < ApplicationController if filter_undefined_submitters(@template).size > 1 && @submitter.new_record? @error_message = multiple_submitters_error_message - return render :show + return render :show, status: :unprocessable_entity end if (is_new_record = @submitter.new_record?) @@ -63,7 +63,7 @@ class StartFormController < ApplicationController redirect_to submit_form_path(@submitter.slug) else - render :show + render :show, status: :unprocessable_entity end end end @@ -136,8 +136,10 @@ class StartFormController < ApplicationController submitter.name = required_params['name'] if submitter.new_record? - required_params.each do |key, value| - submitter.errors.add(key.to_sym, :blank) if value.blank? + unless @resubmit_submitter + required_params.each do |key, value| + submitter.errors.add(key.to_sym, :blank) if value.blank? + end end submitter @@ -153,6 +155,8 @@ class StartFormController < ApplicationController metadata: @resubmit_submitter&.metadata.presence || {} ) + submitter.assign_attributes(@resubmit_submitter.slice(:name, :email, :phone)) if @resubmit_submitter + if submitter.values.present? @resubmit_submitter.attachments.each do |attachment| submitter.attachments << attachment.dup if submitter.values.value?(attachment.uuid) diff --git a/app/views/templates_preferences/_recipients.html.erb b/app/views/templates_preferences/_recipients.html.erb index 89cf9861..0ca918ab 100644 --- a/app/views/templates_preferences/_recipients.html.erb +++ b/app/views/templates_preferences/_recipients.html.erb @@ -15,21 +15,23 @@ <%= tag.input name: ff.field_name(:email), value: ff.object.email, type: :email, class: 'base-input', multiple: true, autocomplete: 'off', placeholder: t('default_email'), disabled: ff.object.is_requester || ff.object.invite_by_uuid.present? || ff.object.optional_invite_by_uuid.present?, id: field_uuid = SecureRandom.uuid %> <% else %> - <%= ff.select :option, [[t('not_specified'), 'not_set'], [t('submission_requester'), 'is_requester'], [t('specified_email'), 'email'], *(template.submitters - [submitter]).flat_map { |e| [[t('invite_by_name', name: e['name']), "invite_by_#{e['uuid']}"], [t('invite_by_name', name: e['name']) + " (#{t(:optional).capitalize})", "optional_invite_by_#{e['uuid']}"]] }, *(template.submitters - [submitter]).map { |e| [t('same_as_name', name: e['name']), "linked_to_#{e['uuid']}"] }], {}, class: 'base-select mb-3' %> + <%= ff.select :option, [[t('not_specified'), 'not_set'], (local_assigns[:with_submission_requester] != false ? [t('submission_requester'), 'is_requester'] : nil), [t('specified_email'), 'email'], *(template.submitters - [submitter]).flat_map { |e| [[t('invite_by_name', name: e['name']), "invite_by_#{e['uuid']}"], [t('invite_by_name', name: e['name']) + " (#{t(:optional).capitalize})", "optional_invite_by_#{e['uuid']}"]] }, *(template.submitters - [submitter]).map { |e| [t('same_as_name', name: e['name']), "linked_to_#{e['uuid']}"] }].compact, {}, class: 'base-select mb-3' %> <%= tag.input name: ff.field_name(:email), type: :email, value: ff.object.email, multiple: true, class: "base-input #{'hidden' if item.option != 'email'}", autocomplete: 'off', placeholder: t('default_email'), id: email_field_uuid %> <% end %> <% if template.submitters.size == 2 %> - + <% if local_assigns[:with_submission_requester] != false %> + + <% end %> <% if index == 1 %>