Merge from docusealco/wip
This commit is contained in:
+1
-1
@@ -437,7 +437,7 @@ GEM
|
|||||||
actionpack (>= 5.2)
|
actionpack (>= 5.2)
|
||||||
railties (>= 5.2)
|
railties (>= 5.2)
|
||||||
retriable (3.1.2)
|
retriable (3.1.2)
|
||||||
rexml (3.3.8)
|
rexml (3.3.9)
|
||||||
rotp (6.3.0)
|
rotp (6.3.0)
|
||||||
rqrcode (2.2.0)
|
rqrcode (2.2.0)
|
||||||
chunky_png (~> 1.0)
|
chunky_png (~> 1.0)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<h1 align="center" style="border-bottom: none">
|
<h1 align="center" style="border-bottom: none">
|
||||||
<div>
|
<div>
|
||||||
<a href="https://www.docuseal.co">
|
<a href="https://www.docuseal.com">
|
||||||
<img alt="DocuSeal" src="https://github.com/docusealco/docuseal/assets/5418788/c12cd051-81cd-4402-bc3a-92f2cfdc1b06" width="80" />
|
<img alt="DocuSeal" src="https://github.com/docusealco/docuseal/assets/5418788/c12cd051-81cd-4402-bc3a-92f2cfdc1b06" width="80" />
|
||||||
<br>
|
<br>
|
||||||
</a>
|
</a>
|
||||||
@@ -54,11 +54,11 @@ DocuSeal is an open source platform that provides secure and efficient digital d
|
|||||||
- Conditional fields and formulas
|
- Conditional fields and formulas
|
||||||
- Bulk send with CSV, XLSX spreadsheet import
|
- Bulk send with CSV, XLSX spreadsheet import
|
||||||
- SSO / SAML
|
- SSO / SAML
|
||||||
- Template creation with HTML API ([Guide](https://www.docuseal.co/guides/create-pdf-document-fillable-form-with-html-api))
|
- Template creation with HTML API ([Guide](https://www.docuseal.com/guides/create-pdf-document-fillable-form-with-html-api))
|
||||||
- Template creation with PDF or DOCX and field tags API ([Guide](https://www.docuseal.co/guides/use-embedded-text-field-tags-in-the-pdf-to-create-a-fillable-form))
|
- Template creation with PDF or DOCX and field tags API ([Guide](https://www.docuseal.com/guides/use-embedded-text-field-tags-in-the-pdf-to-create-a-fillable-form))
|
||||||
- Embedded signing form ([React](https://github.com/docusealco/docuseal-react), [Vue](https://github.com/docusealco/docuseal-vue), [Angular](https://github.com/docusealco/docuseal-angular) or [JavaScript](https://www.docuseal.co/docs/embedded))
|
- Embedded signing form ([React](https://github.com/docusealco/docuseal-react), [Vue](https://github.com/docusealco/docuseal-vue), [Angular](https://github.com/docusealco/docuseal-angular) or [JavaScript](https://www.docuseal.com/docs/embedded))
|
||||||
- Embedded document form builder ([React](https://github.com/docusealco/docuseal-react), [Vue](https://github.com/docusealco/docuseal-vue), [Angular](https://github.com/docusealco/docuseal-angular) or [JavaScript](https://www.docuseal.co/docs/embedded))
|
- Embedded document form builder ([React](https://github.com/docusealco/docuseal-react), [Vue](https://github.com/docusealco/docuseal-vue), [Angular](https://github.com/docusealco/docuseal-angular) or [JavaScript](https://www.docuseal.com/docs/embedded))
|
||||||
- [Learn more](https://www.docuseal.co/pricing)
|
- [Learn more](https://www.docuseal.com/pricing)
|
||||||
|
|
||||||
## Deploy
|
## Deploy
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ sudo HOST=your-domain-name.com docker compose up
|
|||||||
|
|
||||||
At DocuSeal we have expertise and technologies to make documents creation, filling, signing and processing seamlessly integrated with your product. We specialize in working with various industries, including **Banking, Healthcare, Transport, Real Estate, eCommerce, KYC, CRM, and other software products** that require bulk document signing. By leveraging DocuSeal, we can assist in reducing the overall cost of developing and processing electronic documents while ensuring security and compliance with local electronic document laws.
|
At DocuSeal we have expertise and technologies to make documents creation, filling, signing and processing seamlessly integrated with your product. We specialize in working with various industries, including **Banking, Healthcare, Transport, Real Estate, eCommerce, KYC, CRM, and other software products** that require bulk document signing. By leveraging DocuSeal, we can assist in reducing the overall cost of developing and processing electronic documents while ensuring security and compliance with local electronic document laws.
|
||||||
|
|
||||||
[Book a Meeting](https://www.docuseal.co/contact)
|
[Book a Meeting](https://www.docuseal.com/contact)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
@@ -102,6 +102,6 @@ Unless otherwise noted, all files © 2023 DocuSeal LLC.
|
|||||||
|
|
||||||
## Tools
|
## Tools
|
||||||
|
|
||||||
- [Signature Maker](https://www.docuseal.co/online-signature)
|
- [Signature Maker](https://www.docuseal.com/online-signature)
|
||||||
- [Sign Document Online](https://www.docuseal.co/sign-documents-online)
|
- [Sign Document Online](https://www.docuseal.com/sign-documents-online)
|
||||||
- [Fill PDF Online](https://www.docuseal.co/fill-pdf)
|
- [Fill PDF Online](https://www.docuseal.com/fill-pdf)
|
||||||
|
|||||||
@@ -104,4 +104,10 @@ class ApplicationController < ActionController::Base
|
|||||||
def svg_icon(icon_name, class: '')
|
def svg_icon(icon_name, class: '')
|
||||||
render_to_string(partial: "icons/#{icon_name}", locals: { class: })
|
render_to_string(partial: "icons/#{icon_name}", locals: { class: })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def maybe_redirect_com
|
||||||
|
return if request.domain != 'docuseal.co'
|
||||||
|
|
||||||
|
redirect_to request.url.gsub('.co/', '.com/'), allow_other_host: true, status: :moved_permanently
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
class ErrorsController < ActionController::Base
|
class ErrorsController < ActionController::Base
|
||||||
ENTERPRISE_FEATURE_MESSAGE =
|
ENTERPRISE_FEATURE_MESSAGE =
|
||||||
'This feature is available in Pro Edition: https://www.docuseal.co/pricing'
|
'This feature is available in Pro Edition: https://www.docuseal.com/pricing'
|
||||||
|
|
||||||
ENTERPRISE_PATHS = [
|
ENTERPRISE_PATHS = [
|
||||||
'/templates/html',
|
'/templates/html',
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ class StartFormController < ApplicationController
|
|||||||
skip_authorization_check
|
skip_authorization_check
|
||||||
|
|
||||||
around_action :with_browser_locale, only: %i[show completed]
|
around_action :with_browser_locale, only: %i[show completed]
|
||||||
|
before_action :maybe_redirect_com, only: %i[show completed]
|
||||||
before_action :load_template
|
before_action :load_template
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ class SubmissionsPreviewController < ApplicationController
|
|||||||
skip_before_action :authenticate_user!
|
skip_before_action :authenticate_user!
|
||||||
skip_authorization_check
|
skip_authorization_check
|
||||||
|
|
||||||
|
before_action :maybe_redirect_com, only: %i[show completed]
|
||||||
|
|
||||||
TTL = 40.minutes
|
TTL = 40.minutes
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class SubmissionsUnarchiveController < ApplicationController
|
||||||
|
load_and_authorize_resource :submission
|
||||||
|
|
||||||
|
def create
|
||||||
|
@submission.update!(archived_at: nil)
|
||||||
|
|
||||||
|
redirect_to submission_path(@submission), notice: I18n.t('submission_has_been_unarchived')
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -7,6 +7,8 @@ class SubmitFormController < ApplicationController
|
|||||||
skip_before_action :authenticate_user!
|
skip_before_action :authenticate_user!
|
||||||
skip_authorization_check
|
skip_authorization_check
|
||||||
|
|
||||||
|
before_action :maybe_redirect_com, only: %i[show completed]
|
||||||
|
|
||||||
CONFIG_KEYS = [].freeze
|
CONFIG_KEYS = [].freeze
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
|||||||
@@ -21,7 +21,10 @@ class SubmitFormDeclineController < ApplicationController
|
|||||||
|
|
||||||
user = submitter.submission.created_by_user || submitter.template.author
|
user = submitter.submission.created_by_user || submitter.template.author
|
||||||
|
|
||||||
SubmitterMailer.declined_email(submitter, user).deliver_later!
|
if user.user_configs.find_by(key: UserConfig::RECEIVE_DECLINED_EMAIL)&.value != false
|
||||||
|
SubmitterMailer.declined_email(submitter, user).deliver_later!
|
||||||
|
end
|
||||||
|
|
||||||
SendFormDeclinedWebhookRequestJob.perform_async('submitter_id' => submitter.id)
|
SendFormDeclinedWebhookRequestJob.perform_async('submitter_id' => submitter.id)
|
||||||
|
|
||||||
redirect_to submit_form_path(submitter.slug)
|
redirect_to submit_form_path(submitter.slug)
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
>
|
>
|
||||||
{{ t('powered_by') }}
|
{{ t('powered_by') }}
|
||||||
<a
|
<a
|
||||||
href="https://www.docuseal.co/start"
|
href="https://www.docuseal.com/start"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
class="underline"
|
class="underline"
|
||||||
>DocuSeal</a> - {{ t('open_source_documents_software') }}
|
>DocuSeal</a> - {{ t('open_source_documents_software') }}
|
||||||
|
|||||||
@@ -145,6 +145,10 @@
|
|||||||
{{ t('clear') }}
|
{{ t('clear') }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="isTextSignature"
|
||||||
|
class="absolute top-0 right-0 left-0 bottom-0"
|
||||||
|
/>
|
||||||
<canvas
|
<canvas
|
||||||
v-show="!modelValue && !computedPreviousValue"
|
v-show="!modelValue && !computedPreviousValue"
|
||||||
ref="canvas"
|
ref="canvas"
|
||||||
@@ -255,7 +259,7 @@
|
|||||||
class="text-base-content/60 text-xs text-center w-full mt-1"
|
class="text-base-content/60 text-xs text-center w-full mt-1"
|
||||||
>
|
>
|
||||||
{{ t('by_clicking_you_agree_to_the').replace('{button}', buttonText.charAt(0).toUpperCase() + buttonText.slice(1)) }} <a
|
{{ t('by_clicking_you_agree_to_the').replace('{button}', buttonText.charAt(0).toUpperCase() + buttonText.slice(1)) }} <a
|
||||||
href="https://www.docuseal.co/esign-disclosure"
|
href="https://www.docuseal.com/esign-disclosure"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
>
|
>
|
||||||
<span class="inline md:hidden">
|
<span class="inline md:hidden">
|
||||||
|
|||||||
@@ -415,6 +415,7 @@ import Contenteditable from './contenteditable'
|
|||||||
import DocumentPreview from './preview'
|
import DocumentPreview from './preview'
|
||||||
import DocumentControls from './controls'
|
import DocumentControls from './controls'
|
||||||
import MobileFields from './mobile_fields'
|
import MobileFields from './mobile_fields'
|
||||||
|
import FieldSubmitter from './field_submitter'
|
||||||
import { IconPlus, IconUsersPlus, IconDeviceFloppy, IconChevronDown, IconEye, IconWritingSign, IconInnerShadowTop, IconInfoCircle, IconAdjustments } from '@tabler/icons-vue'
|
import { IconPlus, IconUsersPlus, IconDeviceFloppy, IconChevronDown, IconEye, IconWritingSign, IconInnerShadowTop, IconInfoCircle, IconAdjustments } from '@tabler/icons-vue'
|
||||||
import { v4 } from 'uuid'
|
import { v4 } from 'uuid'
|
||||||
import { ref, computed } from 'vue'
|
import { ref, computed } from 'vue'
|
||||||
@@ -558,6 +559,11 @@ export default {
|
|||||||
required: false,
|
required: false,
|
||||||
default: () => []
|
default: () => []
|
||||||
},
|
},
|
||||||
|
defineSubmitters: {
|
||||||
|
type: Array,
|
||||||
|
required: false,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
acceptFileTypes: {
|
acceptFileTypes: {
|
||||||
type: String,
|
type: String,
|
||||||
required: false,
|
required: false,
|
||||||
@@ -677,6 +683,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
submitterDefaultNames: FieldSubmitter.computed.names,
|
||||||
selectedAreaRef: () => ref(),
|
selectedAreaRef: () => ref(),
|
||||||
fieldsDragFieldRef: () => ref(),
|
fieldsDragFieldRef: () => ref(),
|
||||||
language () {
|
language () {
|
||||||
@@ -749,6 +756,18 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
this.defineSubmitters.forEach((name, index) => {
|
||||||
|
const submitter = (this.template.submitters[index] ||= {})
|
||||||
|
|
||||||
|
submitter.name = name || this.submitterDefaultNames[index]
|
||||||
|
|
||||||
|
if (existingSubmittersUuids.filter(Boolean).length) {
|
||||||
|
submitter.uuid = existingSubmittersUuids[index] || submitter.uuid || v4()
|
||||||
|
} else {
|
||||||
|
submitter.uuid ||= v4()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
this.selectedSubmitter = this.template.submitters[0]
|
this.selectedSubmitter = this.template.submitters[0]
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
class="bg-base-300 rounded-xl py-2 px-3 text-center"
|
class="bg-base-300 rounded-xl py-2 px-3 text-center"
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="https://www.docuseal.co/pricing"
|
href="https://www.docuseal.com/pricing"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
class="link"
|
class="link"
|
||||||
>{{ t('available_in_pro') }}</a>
|
>{{ t('available_in_pro') }}</a>
|
||||||
|
|||||||
@@ -140,7 +140,7 @@
|
|||||||
:data-tip="t('unlock_sms_verified_phone_number_field_with_paid_plan_use_text_field_for_phone_numbers_without_verification')"
|
:data-tip="t('unlock_sms_verified_phone_number_field_with_paid_plan_use_text_field_for_phone_numbers_without_verification')"
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="https://www.docuseal.co/pricing"
|
href="https://www.docuseal.com/pricing"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
class="opacity-50 flex items-center justify-center border border-dashed border-base-300 w-full rounded relative"
|
class="opacity-50 flex items-center justify-center border border-dashed border-base-300 w-full rounded relative"
|
||||||
:style="{ backgroundColor }"
|
:style="{ backgroundColor }"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
class="bg-base-300 rounded-xl py-2 px-3 text-center"
|
class="bg-base-300 rounded-xl py-2 px-3 text-center"
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="https://www.docuseal.co/pricing"
|
href="https://www.docuseal.com/pricing"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
class="link"
|
class="link"
|
||||||
>{{ t('available_in_pro') }}</a>
|
>{{ t('available_in_pro') }}</a>
|
||||||
|
|||||||
@@ -77,7 +77,7 @@
|
|||||||
<div class="w-full relative">
|
<div class="w-full relative">
|
||||||
<select
|
<select
|
||||||
class="base-select !select-sm !h-10"
|
class="base-select !select-sm !h-10"
|
||||||
:class="{ '!text-gray-300': !mapping.column_index }"
|
:class="{ '!text-gray-300': !mapping.column_index && mapping.column_index != 0 }"
|
||||||
required
|
required
|
||||||
@change="mapping.column_index = parseInt($event.target.value)"
|
@change="mapping.column_index = parseInt($event.target.value)"
|
||||||
>
|
>
|
||||||
@@ -285,7 +285,7 @@ export default {
|
|||||||
submittersIndex[mapping.submitter_uuid][mapping.field_name.toLowerCase()] = row[mapping.column_index]
|
submittersIndex[mapping.submitter_uuid][mapping.field_name.toLowerCase()] = row[mapping.column_index]
|
||||||
}
|
}
|
||||||
|
|
||||||
const fieldType = this.fieldTypesIndex[mapping.submitter_uuid][mapping.field_name]
|
const fieldType = this.fieldTypesIndex[mapping.submitter_uuid]?.[mapping.field_name]
|
||||||
|
|
||||||
if (fieldType && fieldType !== 'phone') {
|
if (fieldType && fieldType !== 'phone') {
|
||||||
submittersIndex[mapping.submitter_uuid].fields.push({
|
submittersIndex[mapping.submitter_uuid].fields.push({
|
||||||
|
|||||||
@@ -178,7 +178,7 @@
|
|||||||
<a
|
<a
|
||||||
v-if="!isConnected"
|
v-if="!isConnected"
|
||||||
class="block link text-center mt-1"
|
class="block link text-center mt-1"
|
||||||
href="https://www.docuseal.co/blog/accept-payments-and-request-signatures-with-ease"
|
href="https://www.docuseal.com/blog/accept-payments-and-request-signatures-with-ease"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
data-turbo="false"
|
data-turbo="false"
|
||||||
>{{ t('learn_more') }}</a>
|
>{{ t('learn_more') }}</a>
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ class UserConfig < ApplicationRecord
|
|||||||
SIGNATURE_KEY = 'signature'
|
SIGNATURE_KEY = 'signature'
|
||||||
INITIALS_KEY = 'initials'
|
INITIALS_KEY = 'initials'
|
||||||
RECEIVE_COMPLETED_EMAIL = 'receive_completed_email'
|
RECEIVE_COMPLETED_EMAIL = 'receive_completed_email'
|
||||||
|
RECEIVE_DECLINED_EMAIL = 'receive_declined_email'
|
||||||
|
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<h3 class="mb-4 text-2xl font-semibold">Easy to Start</h3>
|
<h3 class="mb-4 text-2xl font-semibold">Easy to Start</h3>
|
||||||
<p class="text-base text-gray-500">
|
<p class="text-base text-gray-500">
|
||||||
Run on your own host using Docker container, or deploy on your favorite managed PaaS with a single <a href="https://www.docuseal.co/install" class="link link-neutral font-bold">click</a>.
|
Run on your own host using Docker container, or deploy on your favorite managed PaaS with a single <a href="https://www.docuseal.com/install" class="link link-neutral font-bold">click</a>.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
<a href="<%= Docuseal::GITHUB_URL %>" target="_blank" class="inline">
|
<a href="<%= Docuseal::GITHUB_URL %>" target="_blank" class="inline">
|
||||||
<img alt="GitHub Repo stars" src="https://www.docuseal.co/github-badge.svg" style="height: 22px">
|
<img alt="GitHub Repo stars" src="https://www.docuseal.com/github-badge.svg" style="height: 22px">
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -9,14 +9,18 @@
|
|||||||
<span class="text-xl md:text-3xl font-semibold focus:text-clip" style="overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;"><% @submission.template.name.split(/(_)/).each do |item| %><%= item %><wbr><% end %></span>
|
<span class="text-xl md:text-3xl font-semibold focus:text-clip" style="overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;"><% @submission.template.name.split(/(_)/).each do |item| %><%= item %><wbr><% end %></span>
|
||||||
</a>
|
</a>
|
||||||
<div class="space-x-3 flex items-center">
|
<div class="space-x-3 flex items-center">
|
||||||
|
<% last_submitter = @submission.submitters.to_a.select(&:completed_at?).max_by(&:completed_at) %>
|
||||||
|
<% is_all_completed = @submission.submitters.to_a.all?(&:completed_at?) %>
|
||||||
|
<% if signed_in? && can?(:create, @submission) && @submission.archived_at? && !is_all_completed %>
|
||||||
|
<%= button_to button_title(title: t('unarchive'), disabled_with: t('unarchive')[0..-2], icon: svg_icon('rotate', class: 'w-6 h-6')), submission_unarchive_index_path(@submission), class: 'btn btn-primary btn-ghost text-base hidden md:flex' %>
|
||||||
|
<% end %>
|
||||||
<% if @submission.audit_trail.present? %>
|
<% if @submission.audit_trail.present? %>
|
||||||
<a href="<%= ActiveStorage::Blob.proxy_url(@submission.audit_trail.blob, expires_at: 4.hours.from_now) %>" class="white-button" target="_blank">
|
<a href="<%= ActiveStorage::Blob.proxy_url(@submission.audit_trail.blob, expires_at: 4.hours.from_now) %>" class="white-button" target="_blank">
|
||||||
<%= svg_icon('external_link', class: 'w-6 h-6') %>
|
<%= svg_icon('external_link', class: 'w-6 h-6') %>
|
||||||
<span class="hidden md:inline"><%= t('audit_log') %></span>
|
<span class="hidden md:inline"><%= t('audit_log') %></span>
|
||||||
</a>
|
</a>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if last_submitter = @submission.submitters.to_a.select(&:completed_at?).max_by(&:completed_at) %>
|
<% if last_submitter %>
|
||||||
<% is_all_completed = @submission.submitters.to_a.all?(&:completed_at?) %>
|
|
||||||
<% if is_all_completed || !is_combined_enabled %>
|
<% if is_all_completed || !is_combined_enabled %>
|
||||||
<div class="join relative">
|
<div class="join relative">
|
||||||
<download-button data-src="<%= submitter_download_index_path(last_submitter.slug, { sig: params[:sig], combined: is_combined_enabled }.compact) %>" class="base-button <%= '!rounded-r-none !pr-2' if is_all_completed && !is_combined_enabled %>">
|
<download-button data-src="<%= submitter_download_index_path(last_submitter.slug, { sig: params[:sig], combined: is_combined_enabled }.compact) %>" class="base-button <%= '!rounded-r-none !pr-2' if is_all_completed && !is_combined_enabled %>">
|
||||||
@@ -54,7 +58,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% elsif @submission.submitters.to_a.size == 1 && !@submission.expired? && !@submission.submitters.to_a.first.declined_at? %>
|
<% elsif @submission.submitters.to_a.size == 1 && !@submission.expired? && !@submission.submitters.to_a.first.declined_at? && !@submission.archived_at? %>
|
||||||
<%= render 'shared/clipboard_copy', text: submit_form_url(slug: @submission.submitters.to_a.first.slug), class: 'base-button', icon_class: 'w-6 h-6 text-white', copy_title: t('copy_share_link'), copied_title: t('copied_to_clipboard') %>
|
<%= render 'shared/clipboard_copy', text: submit_form_url(slug: @submission.submitters.to_a.first.slug), class: 'base-button', icon_class: 'w-6 h-6 text-white', copy_title: t('copy_share_link'), copied_title: t('copied_to_clipboard') %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
<a href="<%= submission_path(submission) %>" class="text-lg break-all peer">
|
<a href="<%= submission_path(submission) %>" class="text-lg break-all peer">
|
||||||
<%= submitter.name || submitter.email || submitter.phone %>
|
<%= submitter.name || submitter.email || submitter.phone %>
|
||||||
</a>
|
</a>
|
||||||
<% if can?(:update, submitter) && !submitter.start_form_submission_events.any? && !submission.archived_at? && !submission.expired? %>
|
<% if can?(:update, submitter) && !submitter.start_form_submission_events.any? && !submission.archived_at? && !submission.expired? && !submitter.declined_at? %>
|
||||||
<span class="pl-0.5 tooltip tooltip-top md:opacity-0 md:hover:opacity-100 md:peer-hover:opacity-100" data-tip="<%= t('edit') %>">
|
<span class="pl-0.5 tooltip tooltip-top md:opacity-0 md:hover:opacity-100 md:peer-hover:opacity-100" data-tip="<%= t('edit') %>">
|
||||||
<%= link_to edit_submitter_path(submitter), class: 'shrink-0', data: { turbo_frame: 'modal' } do %>
|
<%= link_to edit_submitter_path(submitter), class: 'shrink-0', data: { turbo_frame: 'modal' } do %>
|
||||||
<%= svg_icon('pencil', class: 'w-5 h-5') %>
|
<%= svg_icon('pencil', class: 'w-5 h-5') %>
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
<a href="<%= submission_path(submission) %>" class="text-lg break-all peer">
|
<a href="<%= submission_path(submission) %>" class="text-lg break-all peer">
|
||||||
<%= submitter.name || submitter.email || submitter.phone %>
|
<%= submitter.name || submitter.email || submitter.phone %>
|
||||||
</a>
|
</a>
|
||||||
<% if can?(:update, submitter) && !submitter.start_form_submission_events.any? && !submission.archived_at? && !submission.expired? %>
|
<% if can?(:update, submitter) && !submitter.start_form_submission_events.any? && !submission.archived_at? && !submission.expired? && !submitter.declined_at? %>
|
||||||
<span class="pl-0.5 tooltip tooltip-top md:opacity-0 md:hover:opacity-100 md:peer-hover:opacity-100" data-tip="<%= t('edit') %>">
|
<span class="pl-0.5 tooltip tooltip-top md:opacity-0 md:hover:opacity-100 md:peer-hover:opacity-100" data-tip="<%= t('edit') %>">
|
||||||
<%= link_to edit_submitter_path(submitter), class: 'shrink-0', data: { turbo_frame: 'modal' } do %>
|
<%= link_to edit_submitter_path(submitter), class: 'shrink-0', data: { turbo_frame: 'modal' } do %>
|
||||||
<%= svg_icon('pencil', class: 'w-5 h-5') %>
|
<%= svg_icon('pencil', class: 'w-5 h-5') %>
|
||||||
|
|||||||
+25
-13
@@ -20,6 +20,7 @@ en: &en
|
|||||||
language_ko: 한국어
|
language_ko: 한국어
|
||||||
hi_there: Hi there
|
hi_there: Hi there
|
||||||
thanks: Thanks
|
thanks: Thanks
|
||||||
|
unarchive: Unarchive
|
||||||
first_party: 'First Party'
|
first_party: 'First Party'
|
||||||
docuseal_trusted_signature: DocuSeal Trusted Signature
|
docuseal_trusted_signature: DocuSeal Trusted Signature
|
||||||
hello_name: Hello %{name}
|
hello_name: Hello %{name}
|
||||||
@@ -119,7 +120,7 @@ en: &en
|
|||||||
profile_details: Profile Details
|
profile_details: Profile Details
|
||||||
sign_up_with_google: Sign up with Google
|
sign_up_with_google: Sign up with Google
|
||||||
sign_up_with_microsoft: Sign up with Microsoft
|
sign_up_with_microsoft: Sign up with Microsoft
|
||||||
by_creating_an_account_you_agree_to_our_html: 'By creating an account, you agree to our <a target="_blank" href="https://www.docuseal.co/privacy">Privacy Policy</a> and <a target="_blank" href="https://www.docuseal.co/terms">Terms of Service</a>.'
|
by_creating_an_account_you_agree_to_our_html: 'By creating an account, you agree to our <a target="_blank" href="https://www.docuseal.com/privacy">Privacy Policy</a> and <a target="_blank" href="https://www.docuseal.com/terms">Terms of Service</a>.'
|
||||||
enter_email_to_continue: Enter email to continue
|
enter_email_to_continue: Enter email to continue
|
||||||
account: Account
|
account: Account
|
||||||
preferences: Preferences
|
preferences: Preferences
|
||||||
@@ -498,6 +499,7 @@ en: &en
|
|||||||
document_template_has_been_moved: Document template has been moved.
|
document_template_has_been_moved: Document template has been moved.
|
||||||
unable_to_move_template_into_folder: Unable to move template into folder.
|
unable_to_move_template_into_folder: Unable to move template into folder.
|
||||||
template_has_been_unarchived: Template has been unarchived.
|
template_has_been_unarchived: Template has been unarchived.
|
||||||
|
submission_has_been_unarchived: Submission has been unarchived.
|
||||||
unable_to_update_file: Unable to upload file.
|
unable_to_update_file: Unable to upload file.
|
||||||
user_has_been_invited: User has been invited.
|
user_has_been_invited: User has been invited.
|
||||||
unable_to_update_user: Unable to update user.
|
unable_to_update_user: Unable to update user.
|
||||||
@@ -658,6 +660,7 @@ en: &en
|
|||||||
read: Read your data
|
read: Read your data
|
||||||
|
|
||||||
es: &es
|
es: &es
|
||||||
|
unarchive: Desarchivar
|
||||||
awaiting_completion_by_the_other_party: "Esperando la finalización por la otra parte"
|
awaiting_completion_by_the_other_party: "Esperando la finalización por la otra parte"
|
||||||
enforce_recipients_order: 'Hacer cumplir el orden de los destinatarios'
|
enforce_recipients_order: 'Hacer cumplir el orden de los destinatarios'
|
||||||
first_party: 'Primera Parte'
|
first_party: 'Primera Parte'
|
||||||
@@ -759,7 +762,7 @@ es: &es
|
|||||||
profile_details: Detalles del perfil
|
profile_details: Detalles del perfil
|
||||||
sign_up_with_google: Registrarse con Google
|
sign_up_with_google: Registrarse con Google
|
||||||
sign_up_with_microsoft: Registrarse con Microsoft
|
sign_up_with_microsoft: Registrarse con Microsoft
|
||||||
by_creating_an_account_you_agree_to_our_html: 'Al crear una cuenta, aceptas nuestra <a target="_blank" href="https://www.docuseal.co/privacy">Política de Privacidad</a> y <a target="_blank" href="https://www.docuseal.co/terms">Términos de Servicio</a>.'
|
by_creating_an_account_you_agree_to_our_html: 'Al crear una cuenta, aceptas nuestra <a target="_blank" href="https://www.docuseal.com/privacy">Política de Privacidad</a> y <a target="_blank" href="https://www.docuseal.com/terms">Términos de Servicio</a>.'
|
||||||
enter_email_to_continue: Ingresa tu correo electrónico para continuar
|
enter_email_to_continue: Ingresa tu correo electrónico para continuar
|
||||||
account: Cuenta
|
account: Cuenta
|
||||||
preferences: Preferencias
|
preferences: Preferencias
|
||||||
@@ -1138,6 +1141,7 @@ es: &es
|
|||||||
document_template_has_been_moved: La plantilla de documento ha sido movida.
|
document_template_has_been_moved: La plantilla de documento ha sido movida.
|
||||||
unable_to_move_template_into_folder: No se pudo mover la plantilla a la carpeta.
|
unable_to_move_template_into_folder: No se pudo mover la plantilla a la carpeta.
|
||||||
template_has_been_unarchived: La plantilla ha sido desarchivada.
|
template_has_been_unarchived: La plantilla ha sido desarchivada.
|
||||||
|
submission_has_been_unarchived: La presentación ha sido desarchivada.
|
||||||
unable_to_update_file: No se pudo subir el archivo.
|
unable_to_update_file: No se pudo subir el archivo.
|
||||||
user_has_been_invited: El usuario ha sido invitado.
|
user_has_been_invited: El usuario ha sido invitado.
|
||||||
unable_to_update_user: No se pudo actualizar el usuario.
|
unable_to_update_user: No se pudo actualizar el usuario.
|
||||||
@@ -1297,6 +1301,7 @@ es: &es
|
|||||||
read: Leer tus datos
|
read: Leer tus datos
|
||||||
|
|
||||||
it: &it
|
it: &it
|
||||||
|
unarchive: Ripristina
|
||||||
awaiting_completion_by_the_other_party: "In attesa di completamento da parte dell'altra parte"
|
awaiting_completion_by_the_other_party: "In attesa di completamento da parte dell'altra parte"
|
||||||
enforce_recipients_order: Aplicar el orden de los destinatarios
|
enforce_recipients_order: Aplicar el orden de los destinatarios
|
||||||
first_party: 'Prima parte'
|
first_party: 'Prima parte'
|
||||||
@@ -1398,7 +1403,7 @@ it: &it
|
|||||||
profile_details: Dettagli del profilo
|
profile_details: Dettagli del profilo
|
||||||
sign_up_with_google: Registrati con Google
|
sign_up_with_google: Registrati con Google
|
||||||
sign_up_with_microsoft: Registrati con Microsoft
|
sign_up_with_microsoft: Registrati con Microsoft
|
||||||
by_creating_an_account_you_agree_to_our_html: 'Creando un account, accetti la nostra <a target="_blank" href="https://www.docuseal.co/privacy">Privacy Policy</a> e i nostri <a target="_blank" href="https://www.docuseal.co/terms">Termini di servizio</a>.'
|
by_creating_an_account_you_agree_to_our_html: 'Creando un account, accetti la nostra <a target="_blank" href="https://www.docuseal.com/privacy">Privacy Policy</a> e i nostri <a target="_blank" href="https://www.docuseal.com/terms">Termini di servizio</a>.'
|
||||||
enter_email_to_continue: "Inserisci l'email per continuare"
|
enter_email_to_continue: "Inserisci l'email per continuare"
|
||||||
account: Account
|
account: Account
|
||||||
preferences: Preferenze
|
preferences: Preferenze
|
||||||
@@ -1777,6 +1782,7 @@ it: &it
|
|||||||
document_template_has_been_moved: Il modello di documento è stato spostato.
|
document_template_has_been_moved: Il modello di documento è stato spostato.
|
||||||
unable_to_move_template_into_folder: Impossibile spostare il modello nella cartella.
|
unable_to_move_template_into_folder: Impossibile spostare il modello nella cartella.
|
||||||
template_has_been_unarchived: Il modello è stato disarchiviato.
|
template_has_been_unarchived: Il modello è stato disarchiviato.
|
||||||
|
submission_has_been_unarchived: La sottomissione è stata dearchiviata.
|
||||||
unable_to_update_file: Impossibile caricare il file.
|
unable_to_update_file: Impossibile caricare il file.
|
||||||
user_has_been_invited: "L'utente è stato invitato."
|
user_has_been_invited: "L'utente è stato invitato."
|
||||||
unable_to_update_user: Impossibile aggiornare l'utente.
|
unable_to_update_user: Impossibile aggiornare l'utente.
|
||||||
@@ -1936,6 +1942,7 @@ it: &it
|
|||||||
read: Leggi i tuoi dati
|
read: Leggi i tuoi dati
|
||||||
|
|
||||||
fr: &fr
|
fr: &fr
|
||||||
|
unarchive: Désarchiver
|
||||||
awaiting_completion_by_the_other_party: "En attente de la complétion par l'autre partie"
|
awaiting_completion_by_the_other_party: "En attente de la complétion par l'autre partie"
|
||||||
enforce_recipients_order: "Respecter l'ordre des destinataires"
|
enforce_recipients_order: "Respecter l'ordre des destinataires"
|
||||||
first_party: 'Première partie'
|
first_party: 'Première partie'
|
||||||
@@ -2038,7 +2045,7 @@ fr: &fr
|
|||||||
sign_up_with_google: S'inscrire avec Google
|
sign_up_with_google: S'inscrire avec Google
|
||||||
sign_up_with_microsoft: S'inscrire avec Microsoft
|
sign_up_with_microsoft: S'inscrire avec Microsoft
|
||||||
by_creating_an_account_you_agree_to_our_html: |
|
by_creating_an_account_you_agree_to_our_html: |
|
||||||
En créant un compte, vous acceptez notre <a target="_blank" href="https://www.docuseal.co/privacy">Politique de Confidentialité</a> et nos <a target="_blank" href="https://www.docuseal.co/terms">Conditions d'Utilisation</a>.
|
En créant un compte, vous acceptez notre <a target="_blank" href="https://www.docuseal.com/privacy">Politique de Confidentialité</a> et nos <a target="_blank" href="https://www.docuseal.com/terms">Conditions d'Utilisation</a>.
|
||||||
enter_email_to_continue: Entrez votre e-mail pour continuer
|
enter_email_to_continue: Entrez votre e-mail pour continuer
|
||||||
account: Compte
|
account: Compte
|
||||||
preferences: Préférences
|
preferences: Préférences
|
||||||
@@ -2417,6 +2424,7 @@ fr: &fr
|
|||||||
document_template_has_been_moved: Le modèle de document a été déplacé.
|
document_template_has_been_moved: Le modèle de document a été déplacé.
|
||||||
unable_to_move_template_into_folder: Impossible de déplacer le modèle dans le dossier.
|
unable_to_move_template_into_folder: Impossible de déplacer le modèle dans le dossier.
|
||||||
template_has_been_unarchived: Le modèle a été désarchivé.
|
template_has_been_unarchived: Le modèle a été désarchivé.
|
||||||
|
submission_has_been_unarchived: La soumission a été désarchivée.
|
||||||
unable_to_update_file: Impossible de télécharger le fichier.
|
unable_to_update_file: Impossible de télécharger le fichier.
|
||||||
user_has_been_updated: "L'utilisateur a été mis à jour."
|
user_has_been_updated: "L'utilisateur a été mis à jour."
|
||||||
unable_to_remove_user: Impossible de supprimer l'utilisateur.
|
unable_to_remove_user: Impossible de supprimer l'utilisateur.
|
||||||
@@ -2576,6 +2584,7 @@ fr: &fr
|
|||||||
read: Lire vos données
|
read: Lire vos données
|
||||||
|
|
||||||
pt: &pt
|
pt: &pt
|
||||||
|
unarchive: Desarquivar
|
||||||
awaiting_completion_by_the_other_party: "Aguardando a conclusão pela outra parte"
|
awaiting_completion_by_the_other_party: "Aguardando a conclusão pela outra parte"
|
||||||
enforce_recipients_order: 'Forçar a ordem dos recipientes'
|
enforce_recipients_order: 'Forçar a ordem dos recipientes'
|
||||||
first_party: 'Primeira Parte'
|
first_party: 'Primeira Parte'
|
||||||
@@ -2677,7 +2686,7 @@ pt: &pt
|
|||||||
profile_details: Detalhes do perfil
|
profile_details: Detalhes do perfil
|
||||||
sign_up_with_google: Inscrever-se com Google
|
sign_up_with_google: Inscrever-se com Google
|
||||||
sign_up_with_microsoft: Inscrever-se com Microsoft
|
sign_up_with_microsoft: Inscrever-se com Microsoft
|
||||||
by_creating_an_account_you_agree_to_our_html: 'Ao criar uma conta, você concorda com nossa <a target="_blank" href="https://www.docuseal.co/privacy">Política de Privacidade</a> e <a target="_blank" href="https://www.docuseal.co/terms">Termos de Serviço</a>.'
|
by_creating_an_account_you_agree_to_our_html: 'Ao criar uma conta, você concorda com nossa <a target="_blank" href="https://www.docuseal.com/privacy">Política de Privacidade</a> e <a target="_blank" href="https://www.docuseal.com/terms">Termos de Serviço</a>.'
|
||||||
enter_email_to_continue: Insira o e-mail para continuar
|
enter_email_to_continue: Insira o e-mail para continuar
|
||||||
account: Conta
|
account: Conta
|
||||||
preferences: Preferências
|
preferences: Preferências
|
||||||
@@ -3056,6 +3065,7 @@ pt: &pt
|
|||||||
document_template_has_been_moved: O modelo de documento foi movido.
|
document_template_has_been_moved: O modelo de documento foi movido.
|
||||||
unable_to_move_template_into_folder: Não foi possível mover o modelo para a pasta.
|
unable_to_move_template_into_folder: Não foi possível mover o modelo para a pasta.
|
||||||
template_has_been_unarchived: O modelo foi desarquivado.
|
template_has_been_unarchived: O modelo foi desarquivado.
|
||||||
|
submission_has_been_unarchived: A submissao foi desarquivada.
|
||||||
unable_to_update_file: Não foi possível atualizar o arquivo.
|
unable_to_update_file: Não foi possível atualizar o arquivo.
|
||||||
user_has_been_updated: O usuário foi atualizado.
|
user_has_been_updated: O usuário foi atualizado.
|
||||||
unable_to_remove_user: Não foi possível remover o usuário.
|
unable_to_remove_user: Não foi possível remover o usuário.
|
||||||
@@ -3215,6 +3225,7 @@ pt: &pt
|
|||||||
read: Ler seus dados
|
read: Ler seus dados
|
||||||
|
|
||||||
de: &de
|
de: &de
|
||||||
|
unarchive: Wiederherstellen
|
||||||
awaiting_completion_by_the_other_party: "Warten auf die Fertigstellung durch die andere Partei"
|
awaiting_completion_by_the_other_party: "Warten auf die Fertigstellung durch die andere Partei"
|
||||||
enforce_recipients_order: 'Empfängerreihenfolge durchsetzen'
|
enforce_recipients_order: 'Empfängerreihenfolge durchsetzen'
|
||||||
first_party: 'Erste Partei'
|
first_party: 'Erste Partei'
|
||||||
@@ -3316,7 +3327,7 @@ de: &de
|
|||||||
profile_details: Profildetails
|
profile_details: Profildetails
|
||||||
sign_up_with_google: Mit Google registrieren
|
sign_up_with_google: Mit Google registrieren
|
||||||
sign_up_with_microsoft: Mit Microsoft registrieren
|
sign_up_with_microsoft: Mit Microsoft registrieren
|
||||||
by_creating_an_account_you_agree_to_our_html: 'Durch die Erstellung eines Kontos stimmst du unseren <a target="_blank" href="https://www.docuseal.co/privacy">Datenschutzrichtlinien</a> und <a target="_blank" href="https://www.docuseal.co/terms">Nutzungsbedingungen</a> zu.'
|
by_creating_an_account_you_agree_to_our_html: 'Durch die Erstellung eines Kontos stimmst du unseren <a target="_blank" href="https://www.docuseal.com/privacy">Datenschutzrichtlinien</a> und <a target="_blank" href="https://www.docuseal.com/terms">Nutzungsbedingungen</a> zu.'
|
||||||
enter_email_to_continue: E-Mail eingeben, um fortzufahren
|
enter_email_to_continue: E-Mail eingeben, um fortzufahren
|
||||||
account: Konto
|
account: Konto
|
||||||
preferences: Einstellungen
|
preferences: Einstellungen
|
||||||
@@ -3695,6 +3706,7 @@ de: &de
|
|||||||
document_template_has_been_moved: Die Dokumentvorlage wurde verschoben.
|
document_template_has_been_moved: Die Dokumentvorlage wurde verschoben.
|
||||||
unable_to_move_template_into_folder: Vorlage konnte nicht in den Ordner verschoben werden.
|
unable_to_move_template_into_folder: Vorlage konnte nicht in den Ordner verschoben werden.
|
||||||
template_has_been_unarchived: Die Vorlage wurde entarchiviert.
|
template_has_been_unarchived: Die Vorlage wurde entarchiviert.
|
||||||
|
submission_has_been_unarchived: Die Einreichung wurde wiederhergestellt.
|
||||||
unable_to_update_file: Datei konnte nicht hochgeladen werden.
|
unable_to_update_file: Datei konnte nicht hochgeladen werden.
|
||||||
user_has_been_updated: Der Benutzer wurde aktualisiert.
|
user_has_been_updated: Der Benutzer wurde aktualisiert.
|
||||||
unable_to_remove_user: Benutzer konnte nicht entfernt werden.
|
unable_to_remove_user: Benutzer konnte nicht entfernt werden.
|
||||||
@@ -3904,7 +3916,7 @@ pl:
|
|||||||
profile_details: Szczegóły profilu
|
profile_details: Szczegóły profilu
|
||||||
sign_up_with_google: Zarejestruj się przez Google
|
sign_up_with_google: Zarejestruj się przez Google
|
||||||
sign_up_with_microsoft: Zarejestruj się przez Microsoft
|
sign_up_with_microsoft: Zarejestruj się przez Microsoft
|
||||||
by_creating_an_account_you_agree_to_our_html: 'Tworząc konto, akceptujesz naszą <a target="_blank" href="https://www.docuseal.co/privacy">Politykę Prywatności</a> i <a target="_blank" href="https://www.docuseal.co/terms">Regulamin</a>.'
|
by_creating_an_account_you_agree_to_our_html: 'Tworząc konto, akceptujesz naszą <a target="_blank" href="https://www.docuseal.com/privacy">Politykę Prywatności</a> i <a target="_blank" href="https://www.docuseal.com/terms">Regulamin</a>.'
|
||||||
enter_email_to_continue: Wprowadź e-mail, aby kontynuować
|
enter_email_to_continue: Wprowadź e-mail, aby kontynuować
|
||||||
|
|
||||||
uk:
|
uk:
|
||||||
@@ -3958,7 +3970,7 @@ uk:
|
|||||||
profile_details: Дані профілю
|
profile_details: Дані профілю
|
||||||
sign_up_with_google: Зареєструватися через Google
|
sign_up_with_google: Зареєструватися через Google
|
||||||
sign_up_with_microsoft: Зареєструватися через Microsoft
|
sign_up_with_microsoft: Зареєструватися через Microsoft
|
||||||
by_creating_an_account_you_agree_to_our_html: 'Створюючи акаунт, ви погоджуєтесь з нашою <a target="_blank" href="https://www.docuseal.co/privacy">Політикою конфіденційності</a> і <a target="_blank" href="https://www.docuseal.co/terms">Умовами надання послуг</a>.'
|
by_creating_an_account_you_agree_to_our_html: 'Створюючи акаунт, ви погоджуєтесь з нашою <a target="_blank" href="https://www.docuseal.com/privacy">Політикою конфіденційності</a> і <a target="_blank" href="https://www.docuseal.com/terms">Умовами надання послуг</a>.'
|
||||||
enter_email_to_continue: Введіть електронну пошту, щоб продовжити
|
enter_email_to_continue: Введіть електронну пошту, щоб продовжити
|
||||||
|
|
||||||
cs:
|
cs:
|
||||||
@@ -4012,7 +4024,7 @@ cs:
|
|||||||
profile_details: Detaily profilu
|
profile_details: Detaily profilu
|
||||||
sign_up_with_google: Zaregistrovat se pomocí Googlu
|
sign_up_with_google: Zaregistrovat se pomocí Googlu
|
||||||
sign_up_with_microsoft: Zaregistrovat se pomocí Microsoftu
|
sign_up_with_microsoft: Zaregistrovat se pomocí Microsoftu
|
||||||
by_creating_an_account_you_agree_to_our_html: 'Vytvořením účtu souhlasíte s našimi <a target="_blank" href="https://www.docuseal.co/privacy">Zásadami ochrany osobních údajů</a> a <a target="_blank" href="https://www.docuseal.co/terms">Podmínkami služby</a>.'
|
by_creating_an_account_you_agree_to_our_html: 'Vytvořením účtu souhlasíte s našimi <a target="_blank" href="https://www.docuseal.com/privacy">Zásadami ochrany osobních údajů</a> a <a target="_blank" href="https://www.docuseal.com/terms">Podmínkami služby</a>.'
|
||||||
enter_email_to_continue: Zadejte e-mail pro pokračování
|
enter_email_to_continue: Zadejte e-mail pro pokračování
|
||||||
|
|
||||||
he:
|
he:
|
||||||
@@ -4066,7 +4078,7 @@ he:
|
|||||||
profile_details: פרטי הפרופיל
|
profile_details: פרטי הפרופיל
|
||||||
sign_up_with_google: הירשם עם גוגל
|
sign_up_with_google: הירשם עם גוגל
|
||||||
sign_up_with_microsoft: הירשם עם מיקרוסופט
|
sign_up_with_microsoft: הירשם עם מיקרוסופט
|
||||||
by_creating_an_account_you_agree_to_our_html: 'על ידי יצירת חשבון, אתה מסכים ל<a target="_blank" href="https://www.docuseal.co/privacy">מדיניות הפרטיות</a> ול<a target="_blank" href="https://www.docuseal.co/terms">תנאי השירות</a> שלנו.'
|
by_creating_an_account_you_agree_to_our_html: 'על ידי יצירת חשבון, אתה מסכים ל<a target="_blank" href="https://www.docuseal.com/privacy">מדיניות הפרטיות</a> ול<a target="_blank" href="https://www.docuseal.com/terms">תנאי השירות</a> שלנו.'
|
||||||
enter_email_to_continue: הכנס דוא"ל כדי להמשיך
|
enter_email_to_continue: הכנס דוא"ל כדי להמשיך
|
||||||
|
|
||||||
nl:
|
nl:
|
||||||
@@ -4120,7 +4132,7 @@ nl:
|
|||||||
profile_details: Profielgegevens
|
profile_details: Profielgegevens
|
||||||
sign_up_with_google: Aanmelden met Google
|
sign_up_with_google: Aanmelden met Google
|
||||||
sign_up_with_microsoft: Aanmelden met Microsoft
|
sign_up_with_microsoft: Aanmelden met Microsoft
|
||||||
by_creating_an_account_you_agree_to_our_html: 'Door een account aan te maken, ga je akkoord met ons <a target="_blank" href="https://www.docuseal.co/privacy">Privacybeleid</a> en onze <a target="_blank" href="https://www.docuseal.co/terms">Gebruiksvoorwaarden</a>.'
|
by_creating_an_account_you_agree_to_our_html: 'Door een account aan te maken, ga je akkoord met ons <a target="_blank" href="https://www.docuseal.com/privacy">Privacybeleid</a> en onze <a target="_blank" href="https://www.docuseal.com/terms">Gebruiksvoorwaarden</a>.'
|
||||||
enter_email_to_continue: Voer e-mail in om door te gaan
|
enter_email_to_continue: Voer e-mail in om door te gaan
|
||||||
|
|
||||||
ar:
|
ar:
|
||||||
@@ -4174,7 +4186,7 @@ ar:
|
|||||||
profile_details: تفاصيل الملف الشخصي
|
profile_details: تفاصيل الملف الشخصي
|
||||||
sign_up_with_google: الاشتراك باستخدام جوجل
|
sign_up_with_google: الاشتراك باستخدام جوجل
|
||||||
sign_up_with_microsoft: الاشتراك باستخدام مايكروسوفت
|
sign_up_with_microsoft: الاشتراك باستخدام مايكروسوفت
|
||||||
by_creating_an_account_you_agree_to_our_html: 'من خلال إنشاء حساب، فإنك توافق على <a target="_blank" href="https://www.docuseal.co/privacy">سياسة الخصوصية</a> و<a target="_blank" href="https://www.docuseal.co/terms">شروط الخدمة</a> الخاصة بنا.'
|
by_creating_an_account_you_agree_to_our_html: 'من خلال إنشاء حساب، فإنك توافق على <a target="_blank" href="https://www.docuseal.com/privacy">سياسة الخصوصية</a> و<a target="_blank" href="https://www.docuseal.com/terms">شروط الخدمة</a> الخاصة بنا.'
|
||||||
enter_email_to_continue: أدخل البريد الإلكتروني للمتابعة
|
enter_email_to_continue: أدخل البريد الإلكتروني للمتابعة
|
||||||
|
|
||||||
ko:
|
ko:
|
||||||
@@ -4228,7 +4240,7 @@ ko:
|
|||||||
profile_details: 프로필 세부 정보
|
profile_details: 프로필 세부 정보
|
||||||
sign_up_with_google: Google로 가입
|
sign_up_with_google: Google로 가입
|
||||||
sign_up_with_microsoft: Microsoft로 가입
|
sign_up_with_microsoft: Microsoft로 가입
|
||||||
by_creating_an_account_you_agree_to_our_html: '계정을 생성함으로써, 귀하는 우리의 <a target="_blank" href="https://www.docuseal.co/privacy">개인정보 보호정책</a> 및 <a target="_blank" href="https://www.docuseal.co/terms">서비스 약관</a>에 동의하는 것입니다.'
|
by_creating_an_account_you_agree_to_our_html: '계정을 생성함으로써, 귀하는 우리의 <a target="_blank" href="https://www.docuseal.com/privacy">개인정보 보호정책</a> 및 <a target="_blank" href="https://www.docuseal.com/terms">서비스 약관</a>에 동의하는 것입니다.'
|
||||||
enter_email_to_continue: 계속하려면 이메일을 입력하세요
|
enter_email_to_continue: 계속하려면 이메일을 입력하세요
|
||||||
|
|
||||||
en-US:
|
en-US:
|
||||||
|
|||||||
+3
-1
@@ -69,7 +69,9 @@ Rails.application.routes.draw do
|
|||||||
resource :user_initials, only: %i[edit update destroy]
|
resource :user_initials, only: %i[edit update destroy]
|
||||||
resources :submissions_archived, only: %i[index], path: 'submissions/archived'
|
resources :submissions_archived, only: %i[index], path: 'submissions/archived'
|
||||||
resources :submissions, only: %i[index], controller: 'submissions_dashboard'
|
resources :submissions, only: %i[index], controller: 'submissions_dashboard'
|
||||||
resources :submissions, only: %i[show destroy]
|
resources :submissions, only: %i[show destroy] do
|
||||||
|
resources :unarchive, only: %i[create], controller: 'submissions_unarchive'
|
||||||
|
end
|
||||||
resources :submitters, only: %i[edit update]
|
resources :submitters, only: %i[edit update]
|
||||||
resources :console_redirect, only: %i[index]
|
resources :console_redirect, only: %i[index]
|
||||||
resources :upgrade, only: %i[index], controller: 'console_redirect'
|
resources :upgrade, only: %i[index], controller: 'console_redirect'
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
module Docuseal
|
module Docuseal
|
||||||
URL_CACHE = ActiveSupport::Cache::MemoryStore.new
|
URL_CACHE = ActiveSupport::Cache::MemoryStore.new
|
||||||
PRODUCT_URL = 'https://www.docuseal.co'
|
PRODUCT_URL = 'https://www.docuseal.com'
|
||||||
NEWSLETTER_URL = "#{PRODUCT_URL}/newsletters".freeze
|
NEWSLETTER_URL = "#{PRODUCT_URL}/newsletters".freeze
|
||||||
ENQUIRIES_URL = "#{PRODUCT_URL}/enquiries".freeze
|
ENQUIRIES_URL = "#{PRODUCT_URL}/enquiries".freeze
|
||||||
PRODUCT_NAME = 'DocuSeal'
|
PRODUCT_NAME = 'DocuSeal'
|
||||||
|
|||||||
@@ -291,7 +291,16 @@ module Submissions
|
|||||||
),
|
),
|
||||||
if field['type'].in?(%w[image signature initials stamp])
|
if field['type'].in?(%w[image signature initials stamp])
|
||||||
attachment = submitter.attachments.find { |a| a.uuid == value }
|
attachment = submitter.attachments.find { |a| a.uuid == value }
|
||||||
image = Vips::Image.new_from_buffer(attachment.download, '').autorot
|
|
||||||
|
image =
|
||||||
|
begin
|
||||||
|
Vips::Image.new_from_buffer(attachment.download, '').autorot
|
||||||
|
rescue Vips::Error
|
||||||
|
next unless attachment.content_type.starts_with?('image/')
|
||||||
|
next if attachment.byte_size.zero?
|
||||||
|
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
|
||||||
scale = [600.0 / image.width, 600.0 / image.height].min
|
scale = [600.0 / image.width, 600.0 / image.height].min
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,10 @@ module Submissions
|
|||||||
name: column_name(I18n.t('phone'), submitter_name, submitters_count),
|
name: column_name(I18n.t('phone'), submitter_name, submitters_count),
|
||||||
value: submitter.phone
|
value: submitter.phone
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: column_name(I18n.t('status'), submitter_name, submitters_count),
|
||||||
|
value: submitter.status
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: column_name(I18n.t('completed_at'), submitter_name, submitters_count),
|
name: column_name(I18n.t('completed_at'), submitter_name, submitters_count),
|
||||||
value: submitter.completed_at.to_s
|
value: submitter.completed_at.to_s
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ module Submissions
|
|||||||
'Helvetica'
|
'Helvetica'
|
||||||
end
|
end
|
||||||
|
|
||||||
SIGN_REASON = 'Signed by %<name>s with DocuSeal.co'
|
SIGN_REASON = 'Signed by %<name>s with DocuSeal.com'
|
||||||
|
|
||||||
RTL_REGEXP = TextUtils::RTL_REGEXP
|
RTL_REGEXP = TextUtils::RTL_REGEXP
|
||||||
|
|
||||||
@@ -19,7 +19,6 @@ module Submissions
|
|||||||
MAX_PAGE_ROTATE = 20
|
MAX_PAGE_ROTATE = 20
|
||||||
|
|
||||||
A4_SIZE = [595, 842].freeze
|
A4_SIZE = [595, 842].freeze
|
||||||
SUPPORTED_IMAGE_TYPES = ['image/png', 'image/jpeg'].freeze
|
|
||||||
|
|
||||||
TESTING_FOOTER = 'Testing Document - NOT LEGALLY BINDING'
|
TESTING_FOOTER = 'Testing Document - NOT LEGALLY BINDING'
|
||||||
|
|
||||||
@@ -273,7 +272,15 @@ module Submissions
|
|||||||
|
|
||||||
attachments_data_cache[attachment.uuid] ||= attachment.download
|
attachments_data_cache[attachment.uuid] ||= attachment.download
|
||||||
|
|
||||||
image = Vips::Image.new_from_buffer(attachments_data_cache[attachment.uuid], '').autorot
|
image =
|
||||||
|
begin
|
||||||
|
Vips::Image.new_from_buffer(attachments_data_cache[attachment.uuid], '').autorot
|
||||||
|
rescue Vips::Error
|
||||||
|
next unless attachment.content_type.starts_with?('image/')
|
||||||
|
next if attachment.byte_size.zero?
|
||||||
|
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
|
||||||
scale = [(area['w'] * width) / image.width,
|
scale = [(area['w'] * width) / image.width,
|
||||||
(area['h'] * height) / image.height].min
|
(area['h'] * height) / image.height].min
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ module Submissions
|
|||||||
|
|
||||||
TimestampError = Class.new(StandardError)
|
TimestampError = Class.new(StandardError)
|
||||||
|
|
||||||
attr_reader :tsa_url
|
attr_reader :tsa_url, :tsa_fallback_url
|
||||||
|
|
||||||
def initialize(tsa_url:)
|
def initialize(tsa_url:)
|
||||||
@tsa_url = tsa_url
|
@tsa_url, @tsa_fallback_url = tsa_url.split(',')
|
||||||
end
|
end
|
||||||
|
|
||||||
def finalize_objects(_signature_field, signature)
|
def finalize_objects(_signature_field, signature)
|
||||||
@@ -37,7 +37,16 @@ module Submissions
|
|||||||
response = conn.post(uri.path, build_payload(digest.digest),
|
response = conn.post(uri.path, build_payload(digest.digest),
|
||||||
'content-type' => 'application/timestamp-query')
|
'content-type' => 'application/timestamp-query')
|
||||||
|
|
||||||
raise TimestampError if response.status != 200 || response.body.blank?
|
if response.status != 200 || response.body.blank?
|
||||||
|
raise TimestampError if tsa_fallback_url.blank?
|
||||||
|
|
||||||
|
Rollbar.error('TimestampError: use fallback URL') if defined?(Rollbar)
|
||||||
|
|
||||||
|
response = Faraday.post(tsa_fallback_url, build_payload(digest.digest),
|
||||||
|
'content-type' => 'application/timestamp-query')
|
||||||
|
|
||||||
|
raise TimestampError if response.status != 200 || response.body.blank?
|
||||||
|
end
|
||||||
|
|
||||||
OpenSSL::Timestamp::Response.new(response.body).token.to_der
|
OpenSSL::Timestamp::Response.new(response.body).token.to_der
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -25,9 +25,15 @@ module Templates
|
|||||||
name: :preview_images)
|
name: :preview_images)
|
||||||
.preload(:blob)
|
.preload(:blob)
|
||||||
|
|
||||||
json[:documents] = template.schema.map do |item|
|
json[:documents] = template.schema.filter_map do |item|
|
||||||
attachment = schema_documents.find { |e| e.uuid == item['attachment_uuid'] }
|
attachment = schema_documents.find { |e| e.uuid == item['attachment_uuid'] }
|
||||||
|
|
||||||
|
unless attachment
|
||||||
|
Rollbar.error("Documents missing: #{template.id}") if defined?(Rollbar)
|
||||||
|
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
first_page_blob = preview_image_attachments.find { |e| e.record_id == attachment.id }&.blob
|
first_page_blob = preview_image_attachments.find { |e| e.record_id == attachment.id }&.blob
|
||||||
first_page_blob ||= attachment.preview_images.joins(:blob).find_by(blob: { filename: ['0.jpg', '0.png'] })&.blob
|
first_page_blob ||= attachment.preview_images.joins(:blob).find_by(blob: { filename: ['0.jpg', '0.png'] })&.blob
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user