add expiration duration to template preferences
This commit is contained in:
committed by
Pete Matsyburka
parent
7fb148c85c
commit
7b6fc7d06f
@@ -26,6 +26,8 @@ class TemplatesPreferencesController < ApplicationController
|
||||
completed_notification_email_attach_documents
|
||||
completed_redirect_url validate_unique_submitters
|
||||
submitters_order require_phone_2fa
|
||||
default_expire_at_duration
|
||||
default_expire_at
|
||||
completed_notification_email_subject completed_notification_email_body
|
||||
completed_notification_email_enabled completed_notification_email_attach_audit] +
|
||||
[completed_message: %i[title body],
|
||||
|
||||
@@ -36,6 +36,24 @@
|
||||
#
|
||||
class Template < ApplicationRecord
|
||||
DEFAULT_SUBMITTER_NAME = 'First Party'
|
||||
EXPIRATION_DURATIONS = {
|
||||
one_day: 1.day,
|
||||
two_days: 2.days,
|
||||
three_days: 3.days,
|
||||
four_days: 4.days,
|
||||
five_days: 5.days,
|
||||
six_days: 6.days,
|
||||
seven_days: 7.days,
|
||||
eight_days: 8.days,
|
||||
nine_days: 9.days,
|
||||
ten_days: 10.days,
|
||||
two_weeks: 14.days,
|
||||
three_weeks: 21.days,
|
||||
four_weeks: 28.days,
|
||||
one_month: 1.month,
|
||||
two_months: 2.months,
|
||||
three_months: 3.months
|
||||
}.with_indifferent_access.freeze
|
||||
|
||||
belongs_to :author, class_name: 'User'
|
||||
belongs_to :account
|
||||
|
||||
@@ -7,19 +7,19 @@
|
||||
<div class="w-full">
|
||||
<%= f.fields_for :value, record do |ff| %>
|
||||
<%= ff.label :first_duration, t('first_reminder_in'), class: 'label truncate' %>
|
||||
<%= ff.select :first_duration, durations, { include_blank: 'None' }, class: 'base-select' %>
|
||||
<%= ff.select :first_duration, durations, { include_blank: t('none') }, class: 'base-select' %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="w-full">
|
||||
<%= f.fields_for :value, record do |ff| %>
|
||||
<%= ff.label :second_duration, t('second_reminder_in'), class: 'label truncate' %>
|
||||
<%= ff.select :second_duration, durations, { include_blank: 'None' }, class: 'base-select' %>
|
||||
<%= ff.select :second_duration, durations, { include_blank: t('none') }, class: 'base-select' %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="w-full">
|
||||
<%= f.fields_for :value, record do |ff| %>
|
||||
<%= ff.label :third_duration, t('third_reminder_in'), class: 'label truncate' %>
|
||||
<%= ff.select :third_duration, durations, { include_blank: 'None' }, class: 'base-select' %>
|
||||
<%= ff.select :third_duration, durations, { include_blank: t('none') }, class: 'base-select' %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -41,6 +41,24 @@
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= form_for @template, url: template_preferences_path(@template), method: :post, html: { autocomplete: 'off', class: 'mb-2' }, data: { close_on_submit: false } do |f| %>
|
||||
<toggle-on-submit data-element-id="default_expiration_form_saved_alert"></toggle-on-submit>
|
||||
<%= f.fields_for :preferences, Struct.new(:default_expire_at_duration, :default_expire_at).new(*@template.preferences.values_at('default_expire_at_duration', 'default_expire_at').compact_blank) do |ff| %>
|
||||
<div class="form-control">
|
||||
<% duration_options = ::Template::EXPIRATION_DURATIONS.keys.map { |duration| [t(duration), duration] } + [[t('specified_date'), 'specified_date']] %>
|
||||
<%= ff.label :default_expire_at_duration, t('default_expiration'), class: 'label' %>
|
||||
<div class="flex items-center gap-2">
|
||||
<%= ff.select :default_expire_at_duration, duration_options, { include_blank: t('none') }, required: false, class: 'base-select flex-1', dir: 'auto', autocomplete: 'off', onchange: "this.value == 'specified_date' ? window.template_preferences_default_expire_at.classList.remove('hidden') : [window.template_preferences_default_expire_at.classList.add('hidden'), window.template_preferences_default_expire_at.value = '', this.form.requestSubmit()]" %>
|
||||
<%= ff.datetime_field :default_expire_at, required: false, class: ['base-input flex-1', ff.object.default_expire_at.blank? && 'hidden'].compact_blank.join(' '), dir: 'auto', autocomplete: 'off', onchange: 'this.value && this.form.requestSubmit()' %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-control">
|
||||
<div class="flex justify-center">
|
||||
<span id="default_expiration_form_saved_alert" class="text-sm invisible font-normal mt-0.5"><%= t('changes_have_been_saved') %></span>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= render 'templates_code_modal/preferences' %>
|
||||
<div class="collapse collapse-arrow join-item border border-base-300 mb-2">
|
||||
<input type="checkbox" name="accordion">
|
||||
|
||||
Reference in New Issue
Block a user