diff --git a/app/javascript/submission_form/completed.vue b/app/javascript/submission_form/completed.vue index 00310eb4..67edd700 100644 --- a/app/javascript/submission_form/completed.vue +++ b/app/javascript/submission_form/completed.vue @@ -10,7 +10,7 @@ :height="30" /> - {{ completedMessage.title || t('form_has_been_completed') }} + {{ completedMessage.title || (hasSignatureFields ? (hasMultipleDocuments ? t('documents_have_been_signed') : t('document_has_been_signed')) : t('form_has_been_completed')) }}
- {{ t('signed_with') }} + {{ t('powered_by') }} {{ t('next') }} + 0 + }, + hasMultipleDocuments () { + return Object.keys( + this.stepFields.reduce((acc, fields) => { + fields.forEach((f) => { + f.areas?.forEach((a) => { + acc[a.attachment_uuid] = 1 + }) + }) + return acc + }, {}) + ).filter(Boolean).length > 1 + }, currentStepFields () { return this.stepFields[this.currentStep] || [] }, diff --git a/app/javascript/submission_form/i18n.js b/app/javascript/submission_form/i18n.js index 25411d6b..b2f6682e 100644 --- a/app/javascript/submission_form/i18n.js +++ b/app/javascript/submission_form/i18n.js @@ -38,7 +38,8 @@ const en = { minimize: 'Minimize', payment: 'Payment', phone: 'Phone', - submit_form: 'Submit Form', + start_now: 'Start Now', + continue: 'Continue', sign_now: 'Sign Now', type_here_: 'Type here...', optional: 'optional', @@ -59,8 +60,10 @@ const en = { type_signature_here: 'Type signature here', type_initial_here: 'Type initials here', form_has_been_completed: 'Form has been completed!', + document_has_been_signed: 'Document has been signed!', + documents_have_been_signed: 'Documents have been signed!', create_a_free_account: 'Create a Free Account', - signed_with: 'Signed with', + powered_by: 'Powered by', please_check_the_box_to_continue: 'Please check the box to continue', open_source_documents_software: 'open source documents software', verified_phone_number: 'Verify Phone Number', @@ -126,7 +129,8 @@ const es = { payment: 'Pago', phone: 'Teléfono', take_photo: 'Tomar foto', - submit_form: 'Enviar Formulario', + start_now: 'Comenzar ahora', + continue: 'Continuar', sign_now: 'Firmar ahora', type_here_: 'Escribe aquí...', optional: 'opcional', @@ -146,8 +150,10 @@ const es = { type_signature_here: 'Escribe la firma aquí', type_initial_here: 'Escribe las iniciales aquí', form_has_been_completed: '¡El formulario ha sido completado!', + document_has_been_signed: '¡El documento ha sido firmado!', + documents_have_been_signed: '¡Los documentos han sido firmados!', create_a_free_account: 'Crear una Cuenta Gratuita', - signed_with: 'Firmado con', + powered_by: 'Desarrollado por', please_check_the_box_to_continue: 'Por favor marque la casilla para continuar', open_source_documents_software: 'software de documentos de código abierto', verified_phone_number: 'Verificar número de teléfono', @@ -212,7 +218,8 @@ const it = { payment: 'Pagamento', number_phone_is_invalid: '{number} telefono non è valido', phone: 'Telefono', - submit_form: 'Invia Modulo', + start_now: 'Inizia ora', + continue: 'Continua', sign_now: 'Firma ora', type_here_: 'Digita qui...', optional: 'opzionale', @@ -233,8 +240,10 @@ const it = { type_signature_here: 'Scrivi la firma qui', type_initial_here: 'Scrivi le iniziali qui', form_has_been_completed: 'Il modulo è stato completato!', + document_has_been_signed: 'Il documento è stato firmato!', + documents_have_been_signed: 'I documenti sono stati firmati!', create_a_free_account: 'Crea un Account Gratuito', - signed_with: 'Firmato con', + powered_by: 'Desarrollado por', please_check_the_box_to_continue: 'Si prega di spuntare la casella per continuare', open_source_documents_software: 'software di documenti open source', verified_phone_number: 'Verifica numero di telefono', @@ -299,7 +308,8 @@ const de = { payment: 'Zahlung', number_phone_is_invalid: '{number} Telefonnummer ist ungültig', phone: 'Telefon', - submit_form: 'Formular absenden', + start_now: 'Jetzt starten', + continue: 'Fortsetzen', sign_now: 'Jetzt unterschreiben', type_here_: 'Hier eingeben...', optional: 'optional', @@ -320,8 +330,10 @@ const de = { type_signature_here: 'Unterschrift hier eingeben', type_initial_here: 'Initialen hier eingeben', form_has_been_completed: 'Formular wurde ausgefüllt!', + document_has_been_signed: 'Dokument wurde unterschrieben!', + documents_have_been_signed: 'Dokumente wurden unterschrieben!', create_a_free_account: 'Kostenloses Konto erstellen', - signed_with: 'Unterschrieben mit', + powered_by: 'Bereitgestellt von', please_check_the_box_to_continue: 'Bitte setzen Sie das Häkchen, um fortzufahren', open_source_documents_software: 'Open-Source-Dokumentensoftware', verified_phone_number: 'Telefonnummer überprüfen', @@ -386,7 +398,8 @@ const fr = { payment: 'Paiement', number_phone_is_invalid: '{number} téléphone est invalide', phone: 'Téléphone', - submit_form: 'Envoyer le Formulaire', + start_now: 'Commencer maintenant', + continue: 'Continuer', sign_now: 'Signer maintenant', type_here_: 'Tapez ici...', optional: 'facultatif', @@ -407,8 +420,10 @@ const fr = { type_signature_here: 'Tapez la signature ici', type_initial_here: 'Tapez les initiales ici', form_has_been_completed: 'Le formulaire a été complété !', + document_has_been_signed: 'Le document a été signé!', + documents_have_been_signed: 'Les documents ont été signés!', create_a_free_account: 'Créer un Compte Gratuit', - signed_with: 'Signé avec', + powered_by: 'Propulsé par', please_check_the_box_to_continue: 'Veuillez cocher la case pour continuer', open_source_documents_software: 'logiciel de documents open source', verified_phone_number: 'Vérifier le numéro de téléphone', @@ -473,7 +488,8 @@ const pl = { payment: 'Płatność', number_phone_is_invalid: '{number} telefon jest nieprawidłowy', phone: 'Telefon', - submit_form: 'Wyślij Formularz', + start_now: 'Zacznij teraz', + continue: 'Kontynuuj', sign_now: 'Podpisz teraz', type_here_: 'Wpisz tutaj...', optional: 'opcjonalny', @@ -494,8 +510,10 @@ const pl = { type_signature_here: 'Wpisz podpis tutaj', type_initial_here: 'Wpisz inicjały tutaj', form_has_been_completed: 'Formularz został wypełniony!', + document_has_been_signed: 'Dokument został podpisany!', + documents_have_been_signed: 'Dokumenty zostały podpisane!', create_a_free_account: 'Utwórz darmowe konto', - signed_with: 'Podpisane za pomocą', + powered_by: 'Napędzany przez', please_check_the_box_to_continue: 'Proszę zaznaczyć pole, aby kontynuować', open_source_documents_software: 'oprogramowanie do dokumentów open source', verified_phone_number: 'Zweryfikuj numer telefonu', @@ -560,7 +578,8 @@ const uk = { payment: 'Платіж', number_phone_is_invalid: '{number} телефон недійсний', phone: 'Телефон', - submit_form: 'Надіслати Форму', + start_now: 'Почати зараз', + continue: 'Продовжити', sign_now: 'Підписати зараз', type_here_: 'Введіть тут', optional: 'необов’язково', @@ -581,8 +600,10 @@ const uk = { type_signature_here: 'Введіть підпис тут', type_initial_here: 'Введіть ініціали тут', form_has_been_completed: 'Форму заповнено!', + document_has_been_signed: 'Документ був підписаний!', + documents_have_been_signed: 'Документи були підписані!', create_a_free_account: 'Створити безкоштовний обліковий запис', - signed_with: 'Підписано за допомогою', + powered_by: 'Працює на базі', please_check_the_box_to_continue: 'Будь ласка, позначте прапорець, щоб продовжити', open_source_documents_software: 'відкритий програмний засіб для документів', verified_phone_number: 'Підтвердіть номер телефону', @@ -647,7 +668,8 @@ const cs = { payment: 'Platba', phone: 'Telefon', number_phone_is_invalid: '{number} telefon je neplatný', - submit_form: 'Odeslat formulář', + start_now: 'Začít nyní', + continue: 'Pokračovat', sign_now: 'Podepsat nyní', type_here_: 'Zadejte zde', optional: 'volitelné', @@ -668,8 +690,10 @@ const cs = { type_signature_here: 'Sem zadejte podpis', type_initial_here: 'Sem zadejte iniciály', form_has_been_completed: 'Formulář byl dokončen!', + document_has_been_signed: 'Dokument byl podepsán!', + documents_have_been_signed: 'Dokumenty byly podepsány!', create_a_free_account: 'Vytvořit bezplatný účet', - signed_with: 'Podepsáno pomocí', + powered_by: 'Poháněno', please_check_the_box_to_continue: 'Prosím, zaškrtněte políčko pro pokračování', open_source_documents_software: 'open source software pro dokumenty', verified_phone_number: 'Ověřte telefonní číslo', @@ -734,7 +758,8 @@ const pt = { payment: 'Pagamento', number_phone_is_invalid: '{number} telefone é inválido', phone: 'Telefone', - submit_form: 'Enviar Formulário', + start_now: 'Começar agora', + continue: 'Continuar', sign_now: 'Assinar agora', type_here_: 'Digite aqui', optional: 'opcional', @@ -755,8 +780,10 @@ const pt = { type_signature_here: 'Digite a assinatura aqui', type_initial_here: 'Digite as iniciais aqui', form_has_been_completed: 'O formulário foi concluído!', + document_has_been_signed: 'O documento foi assinado!', + documents_have_been_signed: 'Os documentos foram assinados!', create_a_free_account: 'Criar uma Conta Gratuita', - signed_with: 'Assinado com', + powered_by: 'Desenvolvido por', please_check_the_box_to_continue: 'Por favor, marque a caixa para continuar', open_source_documents_software: 'software de documentos de código aberto', verified_phone_number: 'Verificar Número de Telefone', @@ -821,7 +848,8 @@ const he = { payment: 'תשלום', phone: 'טלפון', number_phone_is_invalid: '{number} טלפון אינו חוקי', - submit_form: 'שלח טופס', + start_now: 'התחל עכשיו', + continue: 'המשך', sign_now: 'חתום כעת', type_here_: 'הקלד כאן', optional: 'אופציונלי', @@ -843,8 +871,10 @@ const he = { type_signature_here: 'הקלד חתימה כאן', type_initial_here: 'הקלד ציוני ראשי תיבות כאן', form_has_been_completed: 'הטופס הושלם', + document_has_been_signed: 'המסמך נחתם!', + documents_have_been_signed: 'המסמכים נחתמו!', create_a_free_account: 'צור חשבון חינם', - signed_with: 'חתום באמצעות', + powered_by: 'מופעל על ידי', please_check_the_box_to_continue: 'אנא סמן את התיבה כדי להמשיך', open_source_documents_software: 'תוכנה פתוחה למסמכים', verified_phone_number: 'אימות מספר טלפון', @@ -910,7 +940,8 @@ const nl = { payment: 'Betaling', phone: 'Telefoon', number_phone_is_invalid: '{number} telefoon is ongeldig', - submit_form: 'Formulier verzenden', + start_now: 'Nu beginnen', + continue: 'Doorgaan', sign_now: 'Nu ondertekenen', type_here_: 'Typ hier...', optional: 'Optioneel', @@ -931,8 +962,10 @@ const nl = { type_signature_here: 'Typ hier uw handtekening', type_initial_here: 'Typ hier uw initialen', form_has_been_completed: 'Formulier is voltooid!', + document_has_been_signed: 'Document is ondertekend!', + documents_have_been_signed: 'De documenten zijn ondertekend!', create_a_free_account: 'Maak een gratis account aan', - signed_with: 'Ondertekend met', + powered_by: 'Aangedreven door', please_check_the_box_to_continue: 'Vink het vakje aan om door te gaan', open_source_documents_software: 'Open source documenten software', verified_phone_number: 'Geverifieerd telefoonnummer', @@ -997,7 +1030,8 @@ const ar = { payment: 'الدفع', phone: 'هاتف', number_phone_is_invalid: '{number} هاتف غير صالح', - submit_form: 'إرسال النموذج', + start_now: 'ابدأ الآن', + continue: 'متابعة', sign_now: 'وقع الآن', type_here_: 'اكتب هنا', optional: 'اختياري', @@ -1018,8 +1052,10 @@ const ar = { type_signature_here: 'اكتب التوقيع هنا', type_initial_here: 'اكتب الاختصارات هنا', form_has_been_completed: 'تم إكمال النموذج!', + document_has_been_signed: 'تم توقيع الوثيقة!', + documents_have_been_signed: 'تم توقيع الوثائق!', create_a_free_account: 'إنشاء حساب مجاني', - signed_with: 'تم التوقيع بواسطة', + powered_by: 'مدعوم من', please_check_the_box_to_continue: 'الرجاء التحقق من الخانة للمتابعة', open_source_documents_software: 'برنامج وثائق مفتوح المصدر', verified_phone_number: 'تحقق من رقم الهاتف', @@ -1083,7 +1119,8 @@ const ko = { payment: '결제', phone: '전화', number_phone_is_invalid: '{number} 전화번호가 유효하지 않습니다', - submit_form: '양식 제출', + start_now: '지금 시작하기', + continue: '계속하다', sign_now: '지금 서명', type_here_: '여기에 입력...', optional: '선택 사항', @@ -1104,8 +1141,10 @@ const ko = { type_signature_here: '여기에 서명 입력', type_initial_here: '여기에 이니셜 입력', form_has_been_completed: '양식이 완료되었습니다!', + document_has_been_signed: '문서가 서명되었습니다!', + documents_have_been_signed: '문서가 서명되었습니다!', create_a_free_account: '무료 계정 생성', - signed_with: '다음으로 서명:', + powered_by: '구동', please_check_the_box_to_continue: '계속하려면 확인란을 선택하십시오', open_source_documents_software: '오픈 소스 문서 소프트웨어', verified_phone_number: '전화번호 확인됨', diff --git a/app/models/submitter.rb b/app/models/submitter.rb index 0af9d211..6b94e6a1 100644 --- a/app/models/submitter.rb +++ b/app/models/submitter.rb @@ -96,4 +96,12 @@ class Submitter < ApplicationRecord def status_event_at declined_at || completed_at || opened_at || sent_at || created_at end + + def with_signature_fields? + @with_signature_fields ||= begin + fields = submission.template_fields || template.fields + signature_field_types = %w[signature initials] + fields.any? { |f| f['submitter_uuid'] == uuid && signature_field_types.include?(f['type']) } + end + end end diff --git a/app/views/start_form/completed.html.erb b/app/views/start_form/completed.html.erb index e3727074..c4d41b8f 100644 --- a/app/views/start_form/completed.html.erb +++ b/app/views/start_form/completed.html.erb @@ -11,13 +11,15 @@

<%= @submitter.submission.template.name %>

-

<%= t('signed_on_time', time: l(@submitter.completed_at.to_date, format: :long)) %>

+

+ <%= t(@submitter.with_signature_fields? ? 'signed_on_time' : 'completed_on_time', time: l(@submitter.completed_at.to_date, format: :long)) %> +

- <%= t('form_has_been_submitted_already') %> + <%= @submitter.with_signature_fields? ? t('document_has_been_signed_already') : t('form_has_been_submitted_already') %>
<% if Docuseal.multitenant? || Accounts.can_send_emails?(@submitter.account) %> diff --git a/app/views/submissions_preview/completed.html.erb b/app/views/submissions_preview/completed.html.erb index 4edbe368..39643264 100644 --- a/app/views/submissions_preview/completed.html.erb +++ b/app/views/submissions_preview/completed.html.erb @@ -14,8 +14,11 @@

<%= @submission.template.name %>

- <% if completed_at = @submission.submitters.map(&:completed_at).compact.max %> -

<%= t('signed_on_time', time: l(completed_at.to_date, format: :long)) %>

+ <% last_submitter = @submission.submitters.completed.order(:completed_at).last %> + <% if last_submitter %> +

+ <%= t(last_submitter.with_signature_fields? ? 'signed_on_time' : 'completed_on_time', time: l(last_submitter.completed_at.to_date, format: :long)) %> +

<% end %>
diff --git a/app/views/submit_form/completed.html.erb b/app/views/submit_form/completed.html.erb index e54b66d2..85c5a129 100644 --- a/app/views/submit_form/completed.html.erb +++ b/app/views/submit_form/completed.html.erb @@ -11,7 +11,9 @@

<%= @submitter.submission.template.name %>

-

<%= t('signed_on_time', time: l(@submitter.completed_at.to_date, format: :long)) %>

+

+ <%= t(@submitter.with_signature_fields? ? 'signed_on_time' : 'completed_on_time', time: l(@submitter.completed_at.to_date, format: :long)) %> +

diff --git a/config/locales/en.yml b/config/locales/en.yml index 9deda2d1..a2905cf4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -33,6 +33,8 @@ en: &en invited_by_html: 'Invited by %{name}' you_have_been_invited_to_submit_a_form: You have been invited to submit a form signed_on_time: 'Signed on %{time}' + completed_on_time: 'Completed on %{time}' + document_has_been_signed_already: Document has been signed already form_has_been_submitted_already: Form has been submitted already send_copy_to_email: Send copy to Email sending: Sending @@ -101,6 +103,8 @@ es: &es invited_by_html: 'Invitado por %{name}' you_have_been_invited_to_submit_a_form: Has sido invitado/a a enviar un formulario signed_on_time: 'Firmado en %{time}' + completed_on_time: 'Completado el %{time}' + document_has_been_signed_already: 'El documento ya ha sido firmado' form_has_been_submitted_already: El formulario ya ha sido enviado send_copy_to_email: Enviar copia a Correo electrónico sending: Enviando @@ -156,6 +160,8 @@ it: &it invited_by_html: 'Invitato da %{name}' you_have_been_invited_to_submit_a_form: Sei stato invitato a inviare un modulo signed_on_time: 'Firmato alle %{time}' + completed_on_time: 'Completato il %{time}' + document_has_been_signed_already: 'Il documento è già stato firmato' form_has_been_submitted_already: Il modulo è già stato inviato send_copy_to_email: Invia copia via email sending: Inviando @@ -209,6 +215,8 @@ fr: &fr invited_by_html: 'Invité par %{name}' you_have_been_invited_to_submit_a_form: Vous avez été invité à remplir un formulaire signed_on_time: 'Signé le %{time}' + completed_on_time: 'Terminé le %{time}' + document_has_been_signed_already: 'Le document a déjà été signé' form_has_been_submitted_already: Le formulaire a déjà été complété send_copy_to_email: Envoyer une copie par e-mail sending: Envoi en cours @@ -263,6 +271,8 @@ pt: &pt invited_by_html: 'Convidado por %{name}' you_have_been_invited_to_submit_a_form: Foi convidado a submeter um formulário signed_on_time: 'Assinado em %{time}' + completed_on_time: 'Concluído em %{time}' + document_has_been_signed_already: 'O documento já foi assinado' form_has_been_submitted_already: O formulário já foi submetido send_copy_to_email: Enviar cópia para Email sending: Enviando @@ -316,6 +326,8 @@ de: &de invited_by_html: 'Eingeladen von %{name}' you_have_been_invited_to_submit_a_form: Du wurdest eingeladen, ein Formular einzureichen signed_on_time: 'Unterzeichnet um %{time}' + completed_on_time: 'Abgeschlossen am %{time}' + document_has_been_signed_already: 'Das Dokument wurde bereits unterschrieben' form_has_been_submitted_already: Formular wurde bereits eingereicht send_copy_to_email: Kopie per E-Mail senden sending: Senden @@ -369,6 +381,8 @@ pl: invited_by_html: 'Zaproszony przez %{name}' you_have_been_invited_to_submit_a_form: Zostałeś zaproszony do przesłania formularza signed_on_time: 'Podpisano %{time}' + completed_on_time: 'Zakończono %{time}' + document_has_been_signed_already: 'Dokument został już podpisany' form_has_been_submitted_already: Formularz został już przesłany send_copy_to_email: Wyślij kopię na Email sending: Wysyłanie @@ -422,6 +436,8 @@ uk: invited_by_html: 'Запрошений користувачем %{name}' you_have_been_invited_to_submit_a_form: Вас запросили подати форму signed_on_time: 'Підписаний %{time}' + completed_on_time: 'Завершено %{time}' + document_has_been_signed_already: 'Документ уже був підписаний' form_has_been_submitted_already: Форма вже була подана send_copy_to_email: Надіслати копію на Email sending: Надсилання @@ -475,6 +491,8 @@ cs: invited_by_html: 'Pozván uživatelem %{name}' you_have_been_invited_to_submit_a_form: Byli jste pozváni k odeslání formuláře signed_on_time: 'Podepsáno %{time}' + completed_on_time: 'Dokončeno %{time}' + document_has_been_signed_already: 'Dokument již byl podepsán' form_has_been_submitted_already: Formulář již byl odeslán send_copy_to_email: Odeslat kopii na Email sending: Odesílání @@ -528,6 +546,8 @@ he: invited_by_html: 'הוזמן על ידי %{name}' you_have_been_invited_to_submit_a_form: הוזמנת להגיש טופס signed_on_time: 'חתום ב-%{time}' + completed_on_time: 'הושלם ב-%{time}' + document_has_been_signed_already: 'המסמך כבר נחתם' form_has_been_submitted_already: הטופס כבר נשלח send_copy_to_email: שלח עותק לדוא"ל sending: שולח @@ -581,6 +601,8 @@ nl: invited_by_html: 'Uitgenodigd door %{name}' you_have_been_invited_to_submit_a_form: U bent uitgenodigd om een formulier in te dienen signed_on_time: 'Ondertekend op %{time}' + completed_on_time: 'Voltooid op %{time}' + document_has_been_signed_already: 'Het document is al ondertekend' form_has_been_submitted_already: Formulier is al ingediend send_copy_to_email: Stuur kopie naar E-mail sending: Voltooien @@ -635,6 +657,8 @@ ar: form_expired_at_html: 'استمارة انتهت صلاحيتها في %{time}' you_have_been_invited_to_submit_a_form: تمت دعوتك لتقديم استمارة signed_on_time: 'تم التوقيع في %{time}' + completed_on_time: 'تم إكماله في %{time}' + document_has_been_signed_already: 'تم توقيع الوثيقة بالفعل' form_has_been_submitted_already: تم تقديم الاستمارة بالفعل send_copy_to_email: إرسال نسخة إلى البريد الإلكتروني sending: جارٍ الإرسال @@ -689,6 +713,8 @@ ko: you_have_been_invited_to_submit_a_form: 양식을 제출하도록 초대되었습니다. verification_code_code: '확인 코드: %{code}' signed_on_time: '%{time}에 서명됨' + completed_on_time: '%{time}에 완료됨' + document_has_been_signed_already: '문서가 이미 서명되었습니다' form_has_been_submitted_already: 양식이 이미 제출되었습니다. send_copy_to_email: 이메일로 사본 보내기 sending: 전송 중