From d0ba180729d1bd97a3a956861e5a59b25a5632a2 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sun, 14 Jan 2024 12:11:13 +0200 Subject: [PATCH] add submitter completed redirect url --- app/controllers/api/submissions_controller.rb | 4 ++-- app/controllers/submit_form_controller.rb | 4 +++- app/javascript/form.js | 1 + app/javascript/submission_form/form.vue | 15 +++++++++++--- .../submit_form/_submission_form.html.erb | 2 +- app/views/submit_form/success.html.erb | 20 +++++++++++++++++++ config/locales/en.yml | 10 ++++++++++ config/routes.rb | 4 ++++ lib/submitters.rb | 1 + 9 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 app/views/submit_form/success.html.erb diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index a2663e67..8799b40a 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -142,9 +142,9 @@ module Api params.permit( key => [ - [:send_email, :send_sms, :bcc_completed, { + [:send_email, :send_sms, :bcc_completed, :completed_redirect_url, { message: %i[subject body], - submitters: [[:send_email, :send_sms, :uuid, :name, :email, :role, + submitters: [[:send_email, :send_sms, :completed_redirect_url, :uuid, :name, :email, :role, :completed, :phone, :application_key, { values: {}, readonly_fields: [], message: %i[subject body], fields: [%i[name default_value title description diff --git a/app/controllers/submit_form_controller.rb b/app/controllers/submit_form_controller.rb index 9c7d1a23..276d7df8 100644 --- a/app/controllers/submit_form_controller.rb +++ b/app/controllers/submit_form_controller.rb @@ -3,7 +3,7 @@ class SubmitFormController < ApplicationController layout 'form' - around_action :with_browser_locale, only: %i[show completed] + around_action :with_browser_locale, only: %i[show completed success] skip_before_action :authenticate_user! skip_authorization_check @@ -59,4 +59,6 @@ class SubmitFormController < ApplicationController def completed @submitter = Submitter.find_by!(slug: params[:submit_form_slug]) end + + def success; end end diff --git a/app/javascript/form.js b/app/javascript/form.js index 601b45d0..6513a001 100644 --- a/app/javascript/form.js +++ b/app/javascript/form.js @@ -19,6 +19,7 @@ window.customElements.define('submission-form', class extends HTMLElement { withTypedSignature: this.dataset.withTypedSignature !== 'false', values: reactive(JSON.parse(this.dataset.values)), completedButton: JSON.parse(this.dataset.completedButton), + completedRedirectUrl: this.dataset.completedRedirectUrl, attachments: reactive(JSON.parse(this.dataset.attachments)), fields: JSON.parse(this.dataset.fields) }) diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index d076f404..245ff757 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -332,9 +332,9 @@ v-else :is-demo="isDemo" :attribution="attribution" - :completed-button="completedButton" - :with-send-copy-button="withSendCopyButton" - :with-download-button="withDownloadButton" + :completed-button="completedRedirectUrl ? {} : completedButton" + :with-send-copy-button="withSendCopyButton && !completedRedirectUrl" + :with-download-button="withDownloadButton && !completedRedirectUrl" :with-confetti="withConfetti" :can-send-email="canSendEmail && !!submitter.email" :submitter-slug="submitterSlug" @@ -496,6 +496,11 @@ export default { required: false, default: true }, + completedRedirectUrl: { + type: String, + required: false, + default: '' + }, completedButton: { type: Object, required: false, @@ -784,6 +789,10 @@ export default { if (respData) { this.onComplete(JSON.parse(respData)) } + + if (this.completedRedirectUrl) { + window.location.href = this.completedRedirectUrl + } } }).catch(error => { console.error(error) diff --git a/app/views/submit_form/_submission_form.html.erb b/app/views/submit_form/_submission_form.html.erb index 1ce29fe9..34d54a0d 100644 --- a/app/views/submit_form/_submission_form.html.erb +++ b/app/views/submit_form/_submission_form.html.erb @@ -1,4 +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 %> <% configs = Submitters::FormConfigs.call(submitter) %> - + diff --git a/app/views/submit_form/success.html.erb b/app/views/submit_form/success.html.erb new file mode 100644 index 00000000..5866ba21 --- /dev/null +++ b/app/views/submit_form/success.html.erb @@ -0,0 +1,20 @@ +
+
+
+
+ <%= render 'start_form/banner' %> +
+
+
+
+ <%= svg_icon('circle_check', class: 'w-10 h-10 text-green-600') %> +
+
+ <%= t('completed_successfully') %> +
+
+
+
+
+
+<%= render 'shared/attribution', link_path: '/start' %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 4d03c9f6..12de5bf9 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -17,6 +17,7 @@ en: &en or: or download_documents: Download documents downloading: Downloading + completed_successfully: Completed Successfully es: &es digitally_signed_by: Firmado digitalmente por @@ -38,6 +39,7 @@ es: &es or: o download_documents: Descargar documentos downloading: Descargando + completed_successfully: Completado exitosamente it: digitally_signed_by: Signé numériquement par @@ -59,6 +61,7 @@ it: or: o download_documents: Scarica documenti downloading: Scaricamento + completed_successfully: Completato con successo fr: &fr email: Email @@ -78,6 +81,7 @@ fr: &fr or: ou download_documents: Télécharger des documents downloading: Téléchargement + completed_successfully: Terminé avec succès pt: &pt digitally_signed_by: Assinado digitalmente por @@ -99,6 +103,7 @@ pt: &pt or: ou download_documents: Baixar documentos downloading: Baixando + completed_successfully: Concluído com sucesso de: &de digitally_signed_by: Digital signiert von @@ -120,6 +125,7 @@ de: &de or: oder download_documents: Dokumente herunterladen downloading: Herunterladen + completed_successfully: Erfolgreich abgeschlossen pl: email: Email @@ -139,6 +145,7 @@ pl: or: lub download_documents: Pobierz dokumenty downloading: Pobieranie + completed_successfully: Zakończono pomyślnie uk: email: Email @@ -158,6 +165,7 @@ uk: or: або download_documents: Завантажити документи downloading: Завантаження + completed_successfully: Успішно завершено cs: email: Email @@ -177,6 +185,7 @@ cs: or: nebo download_documents: Stáhnout dokumenty downloading: Stahování + completed_successfully: Úspěšně dokončeno he: email: דוא"ל @@ -196,6 +205,7 @@ he: or: או download_documents: הורד מסמכים downloading: מוריד + completed_successfully: הושלם בהצלחה en-US: <<: *en diff --git a/config/routes.rb b/config/routes.rb index a6446af1..9efdc594 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -81,6 +81,10 @@ Rails.application.routes.draw do get :completed end + resources :submit_form, only: %i[], path: '' do + get :success, on: :collection + end + resources :submit_form, only: %i[show update], path: 's', param: 'slug' do get :completed end diff --git a/lib/submitters.rb b/lib/submitters.rb index 1118590e..6f9ddb97 100644 --- a/lib/submitters.rb +++ b/lib/submitters.rb @@ -60,6 +60,7 @@ module Submitters preferences['send_email'] = params['send_email'].in?(TRUE_VALUES) if params.key?('send_email') preferences['send_sms'] = params['send_sms'].in?(TRUE_VALUES) if params.key?('send_sms') preferences['bcc_completed'] = params['bcc_completed'] if params.key?('bcc_completed') + preferences['completed_redirect_url'] = params['completed_redirect_url'] if params.key?('completed_redirect_url') preferences end