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) %>
-