adjust link default parties
This commit is contained in:
@@ -38,7 +38,7 @@ class StartFormController < ApplicationController
|
|||||||
if filter_undefined_submitters(@template).size > 1 && @submitter.new_record?
|
if filter_undefined_submitters(@template).size > 1 && @submitter.new_record?
|
||||||
@error_message = multiple_submitters_error_message
|
@error_message = multiple_submitters_error_message
|
||||||
|
|
||||||
return render :show
|
return render :show, status: :unprocessable_entity
|
||||||
end
|
end
|
||||||
|
|
||||||
if (is_new_record = @submitter.new_record?)
|
if (is_new_record = @submitter.new_record?)
|
||||||
@@ -63,7 +63,7 @@ class StartFormController < ApplicationController
|
|||||||
|
|
||||||
redirect_to submit_form_path(@submitter.slug)
|
redirect_to submit_form_path(@submitter.slug)
|
||||||
else
|
else
|
||||||
render :show
|
render :show, status: :unprocessable_entity
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -136,8 +136,10 @@ class StartFormController < ApplicationController
|
|||||||
|
|
||||||
submitter.name = required_params['name'] if submitter.new_record?
|
submitter.name = required_params['name'] if submitter.new_record?
|
||||||
|
|
||||||
required_params.each do |key, value|
|
unless @resubmit_submitter
|
||||||
submitter.errors.add(key.to_sym, :blank) if value.blank?
|
required_params.each do |key, value|
|
||||||
|
submitter.errors.add(key.to_sym, :blank) if value.blank?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
submitter
|
submitter
|
||||||
@@ -153,6 +155,8 @@ class StartFormController < ApplicationController
|
|||||||
metadata: @resubmit_submitter&.metadata.presence || {}
|
metadata: @resubmit_submitter&.metadata.presence || {}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
submitter.assign_attributes(@resubmit_submitter.slice(:name, :email, :phone)) if @resubmit_submitter
|
||||||
|
|
||||||
if submitter.values.present?
|
if submitter.values.present?
|
||||||
@resubmit_submitter.attachments.each do |attachment|
|
@resubmit_submitter.attachments.each do |attachment|
|
||||||
submitter.attachments << attachment.dup if submitter.values.value?(attachment.uuid)
|
submitter.attachments << attachment.dup if submitter.values.value?(attachment.uuid)
|
||||||
|
|||||||
@@ -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 %>
|
<%= 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 %>
|
<% else %>
|
||||||
<toggle-attribute data-target-id="<%= email_field_uuid = SecureRandom.uuid %>" data-class-name="hidden" data-value="email">
|
<toggle-attribute data-target-id="<%= email_field_uuid = SecureRandom.uuid %>" data-class-name="hidden" data-value="email">
|
||||||
<%= 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' %>
|
||||||
</toggle-attribute>
|
</toggle-attribute>
|
||||||
<%= 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 %>
|
<%= 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 %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% if template.submitters.size == 2 %>
|
<% if template.submitters.size == 2 %>
|
||||||
<checkbox-group class="mt-3 flex items-center space-x-4">
|
<checkbox-group class="mt-3 flex items-center space-x-4">
|
||||||
<label class="flex items-center space-x-2 cursor-pointer">
|
<% if local_assigns[:with_submission_requester] != false %>
|
||||||
<toggle-attribute data-target-id="<%= field_uuid %>" class="flex" data-attribute="disabled">
|
<label class="flex items-center space-x-2 cursor-pointer">
|
||||||
<%= ff.check_box :is_requester, class: 'base-checkbox' %>
|
<toggle-attribute data-target-id="<%= field_uuid %>" class="flex" data-attribute="disabled">
|
||||||
</toggle-attribute>
|
<%= ff.check_box :is_requester, class: 'base-checkbox' %>
|
||||||
<span class="select-none">
|
</toggle-attribute>
|
||||||
<%= t('submission_requester') %>
|
<span class="select-none">
|
||||||
</span>
|
<%= t('submission_requester') %>
|
||||||
</label>
|
</span>
|
||||||
|
</label>
|
||||||
|
<% end %>
|
||||||
<% if index == 1 %>
|
<% if index == 1 %>
|
||||||
<label class="flex items-center space-x-2 cursor-pointer">
|
<label class="flex items-center space-x-2 cursor-pointer">
|
||||||
<toggle-attribute data-target-id="<%= field_uuid %>" class="flex" data-attribute="disabled">
|
<toggle-attribute data-target-id="<%= field_uuid %>" class="flex" data-attribute="disabled">
|
||||||
@@ -49,28 +51,30 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% unless current_account.account_configs.exists?(key: AccountConfig::ENFORCE_SIGNING_ORDER_KEY, value: true) %>
|
<% if local_assigns[:with_toggles] != false %>
|
||||||
<%= form_for template, url: template_preferences_path(template), method: :post, html: { autocomplete: 'off', class: 'mt-2' }, data: { close_on_submit: false } do |f| %>
|
<% unless current_account.account_configs.exists?(key: AccountConfig::ENFORCE_SIGNING_ORDER_KEY, value: true) %>
|
||||||
<div class="flex items-center pt-4 mt-4 justify-between border-t w-full">
|
<%= form_for template, url: template_preferences_path(template), method: :post, html: { autocomplete: 'off', class: 'mt-2' }, data: { close_on_submit: false } do |f| %>
|
||||||
<span>
|
<div class="flex items-center pt-4 mt-4 justify-between border-t w-full">
|
||||||
<%= t('enforce_recipients_order') %>
|
<span>
|
||||||
</span>
|
<%= t('enforce_recipients_order') %>
|
||||||
<%= f.fields_for :preferences, Struct.new(:submitters_order).new(template.preferences['submitters_order']) do |ff| %>
|
</span>
|
||||||
<%= ff.check_box :submitters_order, { class: 'toggle', onchange: 'this.form.requestSubmit()' }, 'preserved', '' %>
|
<%= f.fields_for :preferences, Struct.new(:submitters_order).new(template.preferences['submitters_order']) do |ff| %>
|
||||||
<% end %>
|
<%= ff.check_box :submitters_order, { class: 'toggle', onchange: 'this.form.requestSubmit()' }, 'preserved', '' %>
|
||||||
</div>
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% if can?(:manage, :personalization_advanced) %>
|
||||||
<% if can?(:manage, :personalization_advanced) %>
|
<%= form_for template, url: template_preferences_path(template), method: :post, html: { autocomplete: 'off', class: 'mt-2' }, data: { close_on_submit: false } do |f| %>
|
||||||
<%= form_for template, url: template_preferences_path(template), method: :post, html: { autocomplete: 'off', class: 'mt-2' }, data: { close_on_submit: false } do |f| %>
|
<div class="flex items-center mt-4 justify-between w-full">
|
||||||
<div class="flex items-center mt-4 justify-between w-full">
|
<span>
|
||||||
<span>
|
<%= t('ensure_unique_recipients') %>
|
||||||
<%= t('ensure_unique_recipients') %>
|
</span>
|
||||||
</span>
|
<%= f.fields_for :preferences, Struct.new(:validate_unique_submitters).new(template.preferences['validate_unique_submitters']) do |ff| %>
|
||||||
<%= f.fields_for :preferences, Struct.new(:validate_unique_submitters).new(template.preferences['validate_unique_submitters']) do |ff| %>
|
<%= ff.check_box :validate_unique_submitters, { class: 'toggle', onchange: 'this.form.requestSubmit()' }, 'true', '' %>
|
||||||
<%= ff.check_box :validate_unique_submitters, { class: 'toggle', onchange: 'this.form.requestSubmit()' }, 'true', '' %>
|
<% end %>
|
||||||
<% end %>
|
</div>
|
||||||
</div>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="form-control mt-5">
|
<div class="form-control mt-5">
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<%= render 'shared/turbo_modal_large', title: t('share_link') do %>
|
<%= render 'shared/turbo_modal_large', title: t('share_link') do %>
|
||||||
<div class="mt-2 mb-4 px-5">
|
<div class="mt-2 mb-4 px-5">
|
||||||
<%= form_for @template, url: template_share_link_path(@template), method: :post, html: { id: 'shared_link_form', autocomplete: 'off', class: 'mt-3' }, data: { close_on_submit: false } do |f| %>
|
<%= form_for @template, url: template_share_link_path(@template), method: :post, html: { id: 'shared_link_form', autocomplete: 'off', class: 'mt-3' }, data: { close_on_submit: false } do |f| %>
|
||||||
<div class="flex items-center justify-between gap-1">
|
<label for="template_shared_link" class="flex items-center my-4 justify-between gap-1 alert bg-base-100 border-base-300">
|
||||||
<span class="pl-1"><%= t('enable_shared_link') %></span>
|
<span><%= t('enable_shared_link') %></span>
|
||||||
<%= f.check_box :shared_link, { disabled: !can?(:update, @template), class: 'toggle', onchange: 'this.form.requestSubmit()' }, 'true', 'false' %>
|
<%= f.check_box :shared_link, { disabled: !can?(:update, @template), class: 'toggle', onchange: 'this.form.requestSubmit()' }, 'true', 'false' %>
|
||||||
</div>
|
</label>
|
||||||
<div class="flex gap-2 mt-3">
|
<div class="flex gap-2 mt-3">
|
||||||
<input id="embedding_url" type="text" value="<%= start_form_url(slug: @template.slug) %>" class="base-input w-full" autocomplete="off" readonly>
|
<input id="embedding_url" type="text" value="<%= start_form_url(slug: @template.slug) %>" class="base-input w-full" autocomplete="off" readonly>
|
||||||
<check-on-click data-element-id="template_shared_link">
|
<check-on-click data-element-id="template_shared_link">
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
</check-on-click>
|
</check-on-click>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= form_for @template, url: template_preferences_path(@template), method: :post, html: { autocomplete: 'off', class: 'mt-3' }, data: { close_on_submit: false } do |f| %>
|
<%= form_for @template, url: template_preferences_path(@template), method: :post, html: { autocomplete: 'off', class: 'mt-4 mb-5' }, data: { close_on_submit: false } do |f| %>
|
||||||
<% link_form_fields = @template.preferences.fetch('link_form_fields', ['email']) %>
|
<% link_form_fields = @template.preferences.fetch('link_form_fields', ['email']) %>
|
||||||
<label class="pl-1"><%= t('link_form_fields') %></label>
|
<label class="pl-1"><%= t('link_form_fields') %></label>
|
||||||
<required-checkbox-group class="flex flex-col md:flex-row items-center gap-2 w-full mt-2">
|
<required-checkbox-group class="flex flex-col md:flex-row items-center gap-2 w-full mt-2">
|
||||||
@@ -31,13 +31,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if @template.submitters.to_a.length > 1 %>
|
<% if @template.submitters.to_a.length > 1 %>
|
||||||
<div class="collapse collapse-arrow join-item border border-base-300 mt-4">
|
<div class="collapse collapse-arrow join-item border border-base-300 mt-4 mb-5">
|
||||||
<input type="checkbox" name="accordion">
|
<input type="checkbox" name="accordion">
|
||||||
<div class="collapse-title text-xl font-medium">
|
<div class="collapse-title text-xl font-medium">
|
||||||
<%= t('recipients') %>
|
<%= t('default_parties') %>
|
||||||
</div>
|
</div>
|
||||||
<div class="collapse-content !pb-0">
|
<div class="collapse-content !pb-0">
|
||||||
<%= render 'templates_preferences/recipients', template: @template, close_on_submit: false %>
|
<%= render 'templates_preferences/recipients', template: @template, close_on_submit: false, with_toggles: false, with_submission_requester: false %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ en: &en
|
|||||||
hi_there: Hi there
|
hi_there: Hi there
|
||||||
thanks: Thanks
|
thanks: Thanks
|
||||||
private: Private
|
private: Private
|
||||||
|
default_parties: Default parties
|
||||||
authenticate_embedded_form_preview_with_token: Authenticate embedded form preview with token
|
authenticate_embedded_form_preview_with_token: Authenticate embedded form preview with token
|
||||||
stripe_integration: Stripe Integration
|
stripe_integration: Stripe Integration
|
||||||
require_all_recipients: Require all recipients
|
require_all_recipients: Require all recipients
|
||||||
@@ -761,7 +762,7 @@ en: &en
|
|||||||
review_or_download_completed_documents_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution: Review or download completed documents. Fill and sign documents online effortlessly with a secure, fast, and user-friendly digital document signing solution.
|
review_or_download_completed_documents_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution: Review or download completed documents. Fill and sign documents online effortlessly with a secure, fast, and user-friendly digital document signing solution.
|
||||||
link_form_fields: Link form fields
|
link_form_fields: Link form fields
|
||||||
at_least_one_field_must_be_displayed_in_the_form: At least one field must be displayed in the form.
|
at_least_one_field_must_be_displayed_in_the_form: At least one field must be displayed in the form.
|
||||||
this_template_has_multiple_parties_which_prevents_the_use_of_a_sharing_link: This template has multiple parties, which prevents the use of a sharing link as it's unclear which party is responsible for specific fields. To resolve this, define the default party details.
|
this_template_has_multiple_parties_which_prevents_the_use_of_a_sharing_link: This template has multiple parties, which prevents the use of a shared link as it's unclear which party is responsible for specific fields. To resolve this, define the default party details.
|
||||||
submission_sources:
|
submission_sources:
|
||||||
api: API
|
api: API
|
||||||
bulk: Bulk Send
|
bulk: Bulk Send
|
||||||
@@ -864,6 +865,7 @@ en: &en
|
|||||||
range_without_total: "%{from}-%{to} items"
|
range_without_total: "%{from}-%{to} items"
|
||||||
|
|
||||||
es: &es
|
es: &es
|
||||||
|
default_parties: Partes predeterminadas
|
||||||
authenticate_embedded_form_preview_with_token: Autenticar vista previa del formulario incrustado con token
|
authenticate_embedded_form_preview_with_token: Autenticar vista previa del formulario incrustado con token
|
||||||
require_all_recipients: Requerir a todos los destinatarios
|
require_all_recipients: Requerir a todos los destinatarios
|
||||||
stripe_integration: Integración con Stripe
|
stripe_integration: Integración con Stripe
|
||||||
@@ -1709,6 +1711,7 @@ es: &es
|
|||||||
range_without_total: "%{from}-%{to} elementos"
|
range_without_total: "%{from}-%{to} elementos"
|
||||||
|
|
||||||
it: &it
|
it: &it
|
||||||
|
default_parties: Parti predefiniti
|
||||||
authenticate_embedded_form_preview_with_token: "Autentica l'anteprima del modulo incorporato con il token"
|
authenticate_embedded_form_preview_with_token: "Autentica l'anteprima del modulo incorporato con il token"
|
||||||
require_all_recipients: Richiedi tutti i destinatari
|
require_all_recipients: Richiedi tutti i destinatari
|
||||||
stripe_integration: Integrazione Stripe
|
stripe_integration: Integrazione Stripe
|
||||||
@@ -2552,6 +2555,7 @@ it: &it
|
|||||||
range_without_total: "%{from}-%{to} elementi"
|
range_without_total: "%{from}-%{to} elementi"
|
||||||
|
|
||||||
fr: &fr
|
fr: &fr
|
||||||
|
default_parties: Parties par défaut
|
||||||
authenticate_embedded_form_preview_with_token: Authentifier l’aperçu du formulaire intégré avec un jeton
|
authenticate_embedded_form_preview_with_token: Authentifier l’aperçu du formulaire intégré avec un jeton
|
||||||
require_all_recipients: Exiger tous les destinataires
|
require_all_recipients: Exiger tous les destinataires
|
||||||
stripe_integration: Intégration Stripe
|
stripe_integration: Intégration Stripe
|
||||||
@@ -3398,6 +3402,7 @@ fr: &fr
|
|||||||
range_without_total: "%{from} à %{to} éléments"
|
range_without_total: "%{from} à %{to} éléments"
|
||||||
|
|
||||||
pt: &pt
|
pt: &pt
|
||||||
|
default_parties: Partes padrão
|
||||||
authenticate_embedded_form_preview_with_token: Autenticar visualização incorporada do formulário com token
|
authenticate_embedded_form_preview_with_token: Autenticar visualização incorporada do formulário com token
|
||||||
require_all_recipients: Exigir todos os destinatários
|
require_all_recipients: Exigir todos os destinatários
|
||||||
stripe_integration: Integração com Stripe
|
stripe_integration: Integração com Stripe
|
||||||
@@ -4244,6 +4249,7 @@ pt: &pt
|
|||||||
range_without_total: "%{from}-%{to} itens"
|
range_without_total: "%{from}-%{to} itens"
|
||||||
|
|
||||||
de: &de
|
de: &de
|
||||||
|
default_parties: Standardparteien
|
||||||
authenticate_embedded_form_preview_with_token: Authentifizieren Sie die eingebettete Formularvorschau mit Token
|
authenticate_embedded_form_preview_with_token: Authentifizieren Sie die eingebettete Formularvorschau mit Token
|
||||||
require_all_recipients: Alle Empfänger erforderlich
|
require_all_recipients: Alle Empfänger erforderlich
|
||||||
stripe_integration: Stripe-Integration
|
stripe_integration: Stripe-Integration
|
||||||
|
|||||||
Reference in New Issue
Block a user