fix refactor expire at
This commit is contained in:
@@ -97,6 +97,7 @@ class StartFormController < ApplicationController
|
||||
submitter.submission ||= Submission.new(template:,
|
||||
account_id: template.account_id,
|
||||
template_submitters: template.submitters,
|
||||
expire_at: Templates.build_default_expire_at(template),
|
||||
submitters: [submitter],
|
||||
source: :link)
|
||||
|
||||
|
||||
@@ -34,6 +34,12 @@ class TemplatesPreferencesController < ApplicationController
|
||||
submitters: [%i[uuid request_email_subject request_email_body]]]
|
||||
).tap do |attrs|
|
||||
attrs[:preferences].delete(:submitters) if params[:request_email_per_submitter] != '1'
|
||||
|
||||
if (default_expire_at = attrs.dig(:preferences, :default_expire_at).presence)
|
||||
attrs[:preferences][:default_expire_at] =
|
||||
(ActiveSupport::TimeZone[current_account.timezone] || Time.zone).parse(default_expire_at).utc
|
||||
end
|
||||
|
||||
attrs[:preferences] = attrs[:preferences].transform_values do |value|
|
||||
if %w[true false].include?(value)
|
||||
value == 'true'
|
||||
|
||||
@@ -108,7 +108,6 @@ export default targetable(class extends HTMLElement {
|
||||
redirect: 'manual',
|
||||
body: formData,
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').content
|
||||
}
|
||||
}).finally(() => {
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
<component
|
||||
:is="icon"
|
||||
v-else
|
||||
class="stroke-[1.5px]"
|
||||
:width="40"
|
||||
:height="40"
|
||||
/>
|
||||
<div
|
||||
v-if="message"
|
||||
class="font-medium text-lg mb-1"
|
||||
:class="{ 'mt-1': !withDescription }"
|
||||
class="text-lg mb-1"
|
||||
:class="{ 'mt-1': !withDescription, 'font-medium': withDescription }"
|
||||
>
|
||||
{{ message }}
|
||||
</div>
|
||||
|
||||
@@ -36,24 +36,6 @@
|
||||
#
|
||||
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
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="<%= local_assigns[:class] %>" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M20.986 12.502a9 9 0 1 0 -5.973 7.98" /><path d="M12 7v5l3 3" /><path d="M19 16v3" /><path d="M19 22v.01" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 400 B |
@@ -172,12 +172,26 @@
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="flex items-center space-x-1 mt-1">
|
||||
<%= svg_icon('writing', class: 'w-5 h-5') %>
|
||||
<% if @submission.expire_at? && submitter && !submitter.completed_at? %>
|
||||
<%= svg_icon('clock_exclamation', class: 'w-5 h-5') %>
|
||||
<% else %>
|
||||
<%= svg_icon('writing', class: 'w-5 h-5') %>
|
||||
<% end %>
|
||||
<span>
|
||||
<% if submitter&.declined_at? %>
|
||||
<%= t('declined_on_time', time: l(submitter.declined_at.in_time_zone(@submission.account.timezone), format: :short, locale: @submission.account.locale)) %>
|
||||
<% elsif submitter %>
|
||||
<%= submitter.completed_at? ? l(submitter.completed_at.in_time_zone(@submission.account.timezone), format: :long, locale: @submission.account.locale) : t('not_completed_yet') %>
|
||||
<% if submitter.completed_at? %>
|
||||
<%= l(submitter.completed_at.in_time_zone(@submission.account.timezone), format: :long, locale: @submission.account.locale) %>
|
||||
<% elsif @submission.expire_at? %>
|
||||
<% if @submission.expired? %>
|
||||
<%= t(:expired) %>
|
||||
<% else %>
|
||||
<%= t('expire_on_time', time: l(@submission.expire_at.in_time_zone(@submission.account.timezone), format: :short, locale: @submission.account.locale)) %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= t('not_completed_yet') %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= t('not_invited_yet') %>
|
||||
<% end %>
|
||||
|
||||
@@ -41,25 +41,18 @@
|
||||
</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| %>
|
||||
<%= form_for @template, url: template_preferences_path(@template), method: :post, html: { autocomplete: 'off', class: 'mb-5' }, data: { close_on_submit: false } do |f| %>
|
||||
<%= f.fields_for :preferences, Struct.new(:default_expire_at_duration, :default_expire_at).new(@template.preferences['default_expire_at_duration'], @template.preferences['default_expire_at'] ? Time.zone.parse(@template.preferences['default_expire_at']).in_time_zone(current_account.timezone) : nil) 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' %>
|
||||
<% duration_options = Templates::EXPIRATION_DURATIONS.keys.map { |duration| [t(duration), duration] } + [[t('specified_date'), 'specified_date']] %>
|
||||
<%= ff.label :default_expire_at_duration, t('default_expiration'), class: 'label pt-0' %>
|
||||
<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">
|
||||
<div class="collapse-title text-xl font-medium">
|
||||
@@ -291,6 +284,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'templates_code_modal/preferences', class: 'pt-2' %>
|
||||
</div>
|
||||
<% if show_recipients %>
|
||||
<div id="recipients" class="hidden mt-2 mb-4 px-5">
|
||||
|
||||
Reference in New Issue
Block a user