diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index 36847423..30b85625 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -12,7 +12,7 @@ module Api is_send_email = !params[:send_email].in?(['false', false]) submissions = - if (emails = (params[:emails] || params[:email]).presence) + if (emails = (params[:emails] || params[:email]).presence) && params[:submission].blank? Submissions.create_from_emails(template: @template, user: current_user, source: :api, diff --git a/app/javascript/form.js b/app/javascript/form.js index 5d0284d7..ebdcea17 100644 --- a/app/javascript/form.js +++ b/app/javascript/form.js @@ -18,6 +18,7 @@ window.customElements.define('submission-form', class extends HTMLElement { attribution: this.dataset.attribution !== 'false', withConfetti: true, values: reactive(JSON.parse(this.dataset.values)), + completedButton: JSON.parse(this.dataset.completedButton), attachments: reactive(JSON.parse(this.dataset.attachments)), fields: JSON.parse(this.dataset.fields) }) diff --git a/app/javascript/submission_form/completed.vue b/app/javascript/submission_form/completed.vue index b3256232..32d204b9 100644 --- a/app/javascript/submission_form/completed.vue +++ b/app/javascript/submission_form/completed.vue @@ -52,6 +52,15 @@ Star on Github + + + {{ completedButton.title || 'Back to Website' }} + + ({}) } }, data () { diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index 5035a41b..de8bacab 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -317,6 +317,7 @@ v-else :is-demo="isDemo" :attribution="attribution" + :completed-button="completedButton" :with-confetti="withConfetti" :can-send-email="canSendEmail && !!submitter.email" :submitter-slug="submitterSlug" @@ -434,6 +435,11 @@ export default { type: Object, required: false, default: () => ({}) + }, + completedButton: { + type: Object, + required: false, + default: () => ({}) } }, data () { diff --git a/app/models/account_config.rb b/app/models/account_config.rb index 6f08c2e5..11a950b5 100644 --- a/app/models/account_config.rb +++ b/app/models/account_config.rb @@ -26,6 +26,7 @@ class AccountConfig < ApplicationRecord SUBMITTER_DOCUMENTS_COPY_EMAIL_KEY = 'submitter_documents_copy_email' BCC_EMAILS = 'bcc_emails' SUBMITTER_REMAILERS = 'submitter_reminders' + FORM_COMPLETED_BUTTON_KEY = 'form_completed_button' DEFAULT_VALUES = { SUBMITTER_INVITATION_EMAIL_KEY => { diff --git a/app/views/personalization_settings/_form_completed_button_form.html.erb b/app/views/personalization_settings/_form_completed_button_form.html.erb new file mode 100644 index 00000000..6c5f8c22 --- /dev/null +++ b/app/views/personalization_settings/_form_completed_button_form.html.erb @@ -0,0 +1,26 @@ +
+ +
+
+ Completed Form Redirect Button +
+
+
+ <%= form_for AccountConfigs.find_or_initialize_for_key(current_account, AccountConfig::FORM_COMPLETED_BUTTON_KEY), url: settings_personalization_path, method: :post, html: { autocomplete: 'off', class: 'space-y-4' } do |f| %> + <%= f.hidden_field :key %> + <%= f.fields_for :value, Struct.new(:title, :url).new(*(f.object.value || {}).values_at('title', 'url')) do |ff| %> +
+ <%= ff.label :title, 'Button title', class: 'label' %> + <%= ff.text_field :title, class: 'base-input' %> +
+
+ <%= ff.label :url, 'Button URL', class: 'label' %> + <%= ff.url_field :url, class: 'base-input' %> +
+ <% end %> +
+ <%= f.button button_title(title: 'Save', disabled_with: 'Saving'), class: 'base-button' %> +
+ <% end %> +
+
diff --git a/app/views/personalization_settings/show.html.erb b/app/views/personalization_settings/show.html.erb index 6582baec..a0ddf2be 100644 --- a/app/views/personalization_settings/show.html.erb +++ b/app/views/personalization_settings/show.html.erb @@ -9,6 +9,8 @@

Company Logo

<%= render 'logo_form' %> +

Submitter Form

+ <%= render 'form_completed_button_form' %>
diff --git a/app/views/submit_form/_submission_form.html.erb b/app/views/submit_form/_submission_form.html.erb index ed36c8eb..fcbe8116 100644 --- a/app/views/submit_form/_submission_form.html.erb +++ b/app/views/submit_form/_submission_form.html.erb @@ -1,3 +1,4 @@ <% data_attachments = attachments_index.values.select { |e| e.record_id == submitter.id }.to_json(only: %i[uuid], methods: %i[url filename content_type]) %> <% data_fields = (submitter.submission.template_fields || submitter.submission.template.fields).select { |f| f['submitter_uuid'] == submitter.uuid }.to_json %> - +<% completed_button_params = submitter.submission.template.account.account_configs.find_by(key: AccountConfig::FORM_COMPLETED_BUTTON_KEY)&.value || {} %> +