Apply WaboSign rebrand sweep to upstream 3.0.0

Output of bin/rebrand-sync against the upstream 3.0.0 tree. Renames
lib/docuseal.rb → lib/wabosign.rb, rewrites the Docuseal/DocuSeal
identifiers to Wabosign/WaboSign across controllers, jobs, mailers,
views, JS/Vue, locales, specs, and infrastructure (Dockerfile,
docker-compose, CI workflows, env-file path, AATL cert name).

This commit is the sync branch's contribution to the merge — it does
NOT carry the fork's features (SSO, SMS, per-account branding, etc.)
or the bin/rebrand-* scripts themselves; those arrive via the
subsequent merge into master.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
pull/687/head
Wabo 1 month ago
parent 60082655d4
commit 9170eac21c

@ -26,6 +26,6 @@
/public/packs-test /public/packs-test
/public/packs /public/packs
/attachments /attachments
/docuseal /wabosign
.DS_Store .DS_Store
.env .env

2
.gitignore vendored

@ -34,7 +34,7 @@ yarn-debug.log*
/coverage /coverage
/attachments /attachments
/docuseal /wabosign
/ee /ee
dump.rdb dump.rdb
*.onnx *.onnx

@ -50,7 +50,7 @@ WORKDIR /app
RUN apk add --no-cache libpq vips redis vips-heif onnxruntime RUN apk add --no-cache libpq vips redis vips-heif onnxruntime
RUN addgroup -g 2000 docuseal && adduser -u 2000 -G docuseal -s /bin/sh -D -h /home/docuseal docuseal RUN addgroup -g 2000 wabosign && adduser -u 2000 -G wabosign -s /bin/sh -D -h /home/wabosign wabosign
RUN echo $'.include = /etc/ssl/openssl.cnf\n\ RUN echo $'.include = /etc/ssl/openssl.cnf\n\
\n\ \n\
@ -64,35 +64,35 @@ activate = 1\n\
[legacy_sect]\n\ [legacy_sect]\n\
activate = 1' >> /etc/openssl_legacy.cnf activate = 1' >> /etc/openssl_legacy.cnf
COPY --chown=docuseal:docuseal ./Gemfile ./Gemfile.lock ./ COPY --chown=wabosign:wabosign ./Gemfile ./Gemfile.lock ./
RUN apk add --no-cache build-base git libpq-dev yaml-dev && bundle install && apk del --no-cache build-base git libpq-dev yaml-dev && rm -rf ~/.bundle /usr/local/bundle/cache && ruby -e "puts Dir['/usr/local/bundle/**/{spec,rdoc,resources/shared,resources/collation,resources/locales,resources/unicode_data/properties}'] + Dir['/usr/local/bundle/gems/*/{test,tests,examples,sample,misc,doc,docs}'] + Dir['/usr/local/bundle/gems/*/ext/**/*.{c,h,o,S}']" | xargs rm -rf && ln -sf /usr/lib/libonnxruntime.so.1 $(ruby -e "print Dir[Gem::Specification.find_by_name('onnxruntime').gem_dir + '/vendor/*.so'].first") RUN apk add --no-cache build-base git libpq-dev yaml-dev && bundle install && apk del --no-cache build-base git libpq-dev yaml-dev && rm -rf ~/.bundle /usr/local/bundle/cache && ruby -e "puts Dir['/usr/local/bundle/**/{spec,rdoc,resources/shared,resources/collation,resources/locales,resources/unicode_data/properties}'] + Dir['/usr/local/bundle/gems/*/{test,tests,examples,sample,misc,doc,docs}'] + Dir['/usr/local/bundle/gems/*/ext/**/*.{c,h,o,S}']" | xargs rm -rf && ln -sf /usr/lib/libonnxruntime.so.1 $(ruby -e "print Dir[Gem::Specification.find_by_name('onnxruntime').gem_dir + '/vendor/*.so'].first")
COPY --chown=docuseal:docuseal ./bin ./bin COPY --chown=wabosign:wabosign ./bin ./bin
COPY --chown=docuseal:docuseal ./app ./app COPY --chown=wabosign:wabosign ./app ./app
COPY --chown=docuseal:docuseal ./config ./config COPY --chown=wabosign:wabosign ./config ./config
COPY --chown=docuseal:docuseal ./db/migrate ./db/migrate COPY --chown=wabosign:wabosign ./db/migrate ./db/migrate
COPY --chown=docuseal:docuseal ./log ./log COPY --chown=wabosign:wabosign ./log ./log
COPY --chown=docuseal:docuseal ./lib ./lib COPY --chown=wabosign:wabosign ./lib ./lib
COPY --chown=docuseal:docuseal ./public ./public COPY --chown=wabosign:wabosign ./public ./public
COPY --chown=docuseal:docuseal ./tmp ./tmp COPY --chown=wabosign:wabosign ./tmp ./tmp
COPY --chown=docuseal:docuseal LICENSE LICENSE_ADDITIONAL_TERMS README.md Rakefile config.ru .version ./ COPY --chown=wabosign:wabosign LICENSE LICENSE_ADDITIONAL_TERMS README.md Rakefile config.ru .version ./
COPY --chown=docuseal:docuseal .version ./public/version COPY --chown=wabosign:wabosign .version ./public/version
COPY --chown=docuseal:docuseal --from=download /fonts/GoNotoKurrent-Regular.ttf /fonts/GoNotoKurrent-Bold.ttf /fonts/DancingScript-Regular.otf /fonts/OFL.txt /fonts/LICENSE /fonts/ COPY --chown=wabosign:wabosign --from=download /fonts/GoNotoKurrent-Regular.ttf /fonts/GoNotoKurrent-Bold.ttf /fonts/DancingScript-Regular.otf /fonts/OFL.txt /fonts/LICENSE /fonts/
COPY --from=download /pdfium-linux/lib/libpdfium.so /usr/lib/libpdfium.so COPY --from=download /pdfium-linux/lib/libpdfium.so /usr/lib/libpdfium.so
COPY --from=download /pdfium-linux/licenses/pdfium.txt /usr/lib/libpdfium-LICENSE.txt COPY --from=download /pdfium-linux/licenses/pdfium.txt /usr/lib/libpdfium-LICENSE.txt
COPY --chown=docuseal:docuseal --from=download /model.onnx /app/tmp/model.onnx COPY --chown=wabosign:wabosign --from=download /model.onnx /app/tmp/model.onnx
COPY --chown=docuseal:docuseal --from=webpack /app/public/packs ./public/packs COPY --chown=wabosign:wabosign --from=webpack /app/public/packs ./public/packs
RUN mkdir -p /app/public/fonts && ln -s /fonts/DancingScript-Regular.otf /app/public/fonts/ && \ RUN mkdir -p /app/public/fonts && ln -s /fonts/DancingScript-Regular.otf /app/public/fonts/ && \
mkdir -p /usr/share/fonts/noto && ln -s /fonts/GoNotoKurrent-Regular.ttf /usr/share/fonts/noto/ && ln -s /fonts/GoNotoKurrent-Bold.ttf /usr/share/fonts/noto/ && fc-cache -f && \ mkdir -p /usr/share/fonts/noto && ln -s /fonts/GoNotoKurrent-Regular.ttf /usr/share/fonts/noto/ && ln -s /fonts/GoNotoKurrent-Bold.ttf /usr/share/fonts/noto/ && fc-cache -f && \
bundle exec bootsnap precompile -j 1 --gemfile app/ lib/ && \ bundle exec bootsnap precompile -j 1 --gemfile app/ lib/ && \
chown -R docuseal:docuseal /app/tmp/cache chown -R wabosign:wabosign /app/tmp/cache
WORKDIR /data/docuseal WORKDIR /data/wabosign
ENV HOME=/home/docuseal ENV HOME=/home/wabosign
ENV WORKDIR=/data/docuseal ENV WORKDIR=/data/wabosign
ENV VIPS_MAX_COORD=17000 ENV VIPS_MAX_COORD=17000
EXPOSE 3000 EXPOSE 3000

@ -1,6 +1,6 @@
# Reporting a Vulnerability # Reporting a Vulnerability
If you come across any security concern or vulnarability, please report the information via email to security@docuseal.com instead of opening a GitHub issue. We will promptly respond and will collaborate with you to validate the issue, and resolve it ASAP. If you come across any security concern or vulnarability, please report the information via email to security@wabosign.com instead of opening a GitHub issue. We will promptly respond and will collaborate with you to validate the issue, and resolve it ASAP.
**We have a bug bounty program to reward security researchers.** **We have a bug bounty program to reward security researchers.**

@ -20,7 +20,7 @@ class AccountsController < ApplicationController
def update def update
current_account.update!(account_params) current_account.update!(account_params)
unless Docuseal.multitenant? unless Wabosign.multitenant?
@encrypted_config = EncryptedConfig.find_or_initialize_by(account: current_account, @encrypted_config = EncryptedConfig.find_or_initialize_by(account: current_account,
key: EncryptedConfig::APP_URL_KEY) key: EncryptedConfig::APP_URL_KEY)
@encrypted_config.assign_attributes(app_url_params) @encrypted_config.assign_attributes(app_url_params)
@ -33,7 +33,7 @@ class AccountsController < ApplicationController
@encrypted_config.save! @encrypted_config.save!
Docuseal.refresh_default_url_options! Wabosign.refresh_default_url_options!
end end
with_locale do with_locale do

@ -9,7 +9,7 @@ class ApplicationController < ActionController::Base
check_authorization unless: :devise_controller? check_authorization unless: :devise_controller?
around_action :with_locale around_action :with_locale
before_action :sign_in_for_demo, if: -> { Docuseal.demo? } before_action :sign_in_for_demo, if: -> { Wabosign.demo? }
before_action :maybe_redirect_to_setup, unless: :signed_in? before_action :maybe_redirect_to_setup, unless: :signed_in?
before_action :authenticate_user!, unless: :devise_controller? before_action :authenticate_user!, unless: :devise_controller?
@ -42,7 +42,7 @@ class ApplicationController < ActionController::Base
end end
def default_url_options def default_url_options
Docuseal.default_url_options Wabosign.default_url_options
end end
def impersonate_user(user) def impersonate_user(user)
@ -118,11 +118,11 @@ class ApplicationController < ActionController::Base
end end
def form_link_host def form_link_host
Docuseal.default_url_options[:host] Wabosign.default_url_options[:host]
end end
def maybe_redirect_com def maybe_redirect_com
return if request.domain != 'docuseal.co' return if request.domain != 'wabosign.co'
redirect_to request.url.gsub('.co/', '.com/'), allow_other_host: true, status: :moved_permanently redirect_to request.url.gsub('.co/', '.com/'), allow_other_host: true, status: :moved_permanently
end end

@ -6,10 +6,10 @@ class ConsoleRedirectController < ApplicationController
def index def index
if request.path == '/upgrade' if request.path == '/upgrade'
params[:redir] = Docuseal.multitenant? ? "#{Docuseal::CONSOLE_URL}/plans" : "#{Docuseal::CONSOLE_URL}/on_premises" params[:redir] = Wabosign.multitenant? ? "#{Wabosign::CONSOLE_URL}/plans" : "#{Wabosign::CONSOLE_URL}/on_premises"
end end
params[:redir] = "#{Docuseal::CONSOLE_URL}/manage" if request.path == '/manage' params[:redir] = "#{Wabosign::CONSOLE_URL}/manage" if request.path == '/manage'
return redirect_to(new_user_session_path({ redir: params[:redir] }.compact)) if true_user.blank? return redirect_to(new_user_session_path({ redir: params[:redir] }.compact)) if true_user.blank?
@ -18,9 +18,9 @@ class ConsoleRedirectController < ApplicationController
exp: 1.minute.from_now.to_i) exp: 1.minute.from_now.to_i)
redir_uri = Addressable::URI.parse(params[:redir]) redir_uri = Addressable::URI.parse(params[:redir])
path = redir_uri.path if params[:redir].to_s.starts_with?(Docuseal::CONSOLE_URL) path = redir_uri.path if params[:redir].to_s.starts_with?(Wabosign::CONSOLE_URL)
redirect_to "#{Docuseal::CONSOLE_URL}#{path}?#{{ **redir_uri&.query_values, 'auth' => auth }.to_query}", redirect_to "#{Wabosign::CONSOLE_URL}#{path}?#{{ **redir_uri&.query_values, 'auth' => auth }.to_query}",
allow_other_host: true allow_other_host: true
end end
end end

@ -20,9 +20,9 @@ class DashboardController < ApplicationController
private private
def maybe_redirect_product_url def maybe_redirect_product_url
return if !Docuseal.multitenant? || signed_in? return if !Wabosign.multitenant? || signed_in?
redirect_to Docuseal::PRODUCT_URL, allow_other_host: true redirect_to Wabosign::PRODUCT_URL, allow_other_host: true
end end
def maybe_redirect_mfa_setup def maybe_redirect_mfa_setup

@ -9,7 +9,7 @@ class EmailSmtpSettingsController < ApplicationController
def create def create
if @encrypted_config.update(email_configs) if @encrypted_config.update(email_configs)
unless Docuseal.multitenant? unless Wabosign.multitenant?
SettingsMailer.smtp_successful_setup(@encrypted_config.value['from_email'] || current_user.email).deliver_now! SettingsMailer.smtp_successful_setup(@encrypted_config.value['from_email'] || current_user.email).deliver_now!
end end

@ -9,7 +9,7 @@ class EmbedScriptsController < ActionController::Metal
<h2>Upgrade to Pro</h2> <h2>Upgrade to Pro</h2>
<p>Unlock embedded components by upgrading to Pro</p> <p>Unlock embedded components by upgrading to Pro</p>
<div style="margin-top: 40px;"> <div style="margin-top: 40px;">
<a href="#{Docuseal::CONSOLE_URL}/on_premises" target="_blank" style="padding: 15px 25px; background-color: #222; color: white; text-decoration: none; border-radius: 5px; font-size: 16px; cursor: pointer;"> <a href="#{Wabosign::CONSOLE_URL}/on_premises" target="_blank" style="padding: 15px 25px; background-color: #222; color: white; text-decoration: none; border-radius: 5px; font-size: 16px; cursor: pointer;">
Learn More Learn More
</a> </a>
</div> </div>

@ -6,7 +6,7 @@ class EnquiriesController < ApplicationController
def create def create
if params[:talk_to_sales] == 'on' if params[:talk_to_sales] == 'on'
Faraday.post(Docuseal::ENQUIRIES_URL, Faraday.post(Wabosign::ENQUIRIES_URL,
enquiry_params.merge(type: :talk_to_sales).to_json, enquiry_params.merge(type: :talk_to_sales).to_json,
'Content-Type' => 'application/json') 'Content-Type' => 'application/json')
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.com/pricing' 'This feature is available in Pro Edition: https://www.wabosign.com/pricing'
ENTERPRISE_PATHS = [ ENTERPRISE_PATHS = [
'/submissions/html', '/submissions/html',

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
class EsignSettingsController < ApplicationController class EsignSettingsController < ApplicationController
DEFAULT_CERT_NAME = 'DocuSeal Self-Host Autogenerated' DEFAULT_CERT_NAME = 'WaboSign Self-Host Autogenerated'
CertFormRecord = Struct.new(:name, :file, :password) do CertFormRecord = Struct.new(:name, :file, :password) do
include ActiveModel::Validations include ActiveModel::Validations
@ -74,7 +74,7 @@ class EsignSettingsController < ApplicationController
if custom_cert_data if custom_cert_data
custom_cert_data['status'] = 'default' custom_cert_data['status'] = 'default'
elsif params[:name] == Docuseal::AATL_CERT_NAME elsif params[:name] == Wabosign::AATL_CERT_NAME
@encrypted_config.value['custom'] ||= [] @encrypted_config.value['custom'] ||= []
@encrypted_config.value['custom'] << { 'name' => params[:name], 'status' => 'default' } @encrypted_config.value['custom'] << { 'name' => params[:name], 'status' => 'default' }
end end

@ -33,7 +33,7 @@ class McpController < ActionController::API
end end
def verify_mcp_enabled! def verify_mcp_enabled!
return if Docuseal.multitenant? return if Wabosign.multitenant?
return if AccountConfig.exists?(account_id: current_user.account_id, return if AccountConfig.exists?(account_id: current_user.account_id,
key: AccountConfig::ENABLE_MCP_KEY, key: AccountConfig::ENABLE_MCP_KEY,

@ -20,7 +20,7 @@ class MfaSetupController < ApplicationController
redirect_to settings_profile_index_path, notice: I18n.t('2fa_has_been_configured') redirect_to settings_profile_index_path, notice: I18n.t('2fa_has_been_configured')
else else
@provision_url = current_user.otp_provisioning_uri(current_user.email, issuer: Docuseal.product_name) @provision_url = current_user.otp_provisioning_uri(current_user.email, issuer: Wabosign.product_name)
@error_message = I18n.t('code_is_invalid') @error_message = I18n.t('code_is_invalid')
@ -49,6 +49,6 @@ class MfaSetupController < ApplicationController
current_user.save! current_user.save!
@provision_url = current_user.otp_provisioning_uri(current_user.email, issuer: Docuseal.product_name) @provision_url = current_user.otp_provisioning_uri(current_user.email, issuer: Wabosign.product_name)
end end
end end

@ -6,7 +6,7 @@ class NewslettersController < ApplicationController
def show; end def show; end
def update def update
Faraday.post(Docuseal::NEWSLETTER_URL, newsletter_params.to_json, 'Content-Type' => 'application/json') Faraday.post(Wabosign::NEWSLETTER_URL, newsletter_params.to_json, 'Content-Type' => 'application/json')
rescue StandardError => e rescue StandardError => e
Rails.logger.error(e) Rails.logger.error(e)
ensure ensure

@ -13,7 +13,7 @@ class PasswordsController < Devise::PasswordsController
def create def create
super do |resource| super do |resource|
resource.errors.clear unless Docuseal.multitenant? resource.errors.clear unless Wabosign.multitenant?
end end
end end

@ -8,7 +8,7 @@ class PersonalizationSettingsController < ApplicationController
AccountConfig::SUBMITTER_DOCUMENTS_COPY_EMAIL_KEY, AccountConfig::SUBMITTER_DOCUMENTS_COPY_EMAIL_KEY,
AccountConfig::SUBMITTER_COMPLETED_EMAIL_KEY, AccountConfig::SUBMITTER_COMPLETED_EMAIL_KEY,
AccountConfig::FORM_COMPLETED_MESSAGE_KEY, AccountConfig::FORM_COMPLETED_MESSAGE_KEY,
*(Docuseal.multitenant? ? [] : [AccountConfig::POLICY_LINKS_KEY]) *(Wabosign.multitenant? ? [] : [AccountConfig::POLICY_LINKS_KEY])
].freeze ].freeze
InvalidKey = Class.new(StandardError) InvalidKey = Class.new(StandardError)

@ -9,7 +9,7 @@ class SearchEntriesReindexController < ApplicationController
AccountConfig.find_or_initialize_by(account_id: Account.minimum(:id), key: :fulltext_search) AccountConfig.find_or_initialize_by(account_id: Account.minimum(:id), key: :fulltext_search)
.update!(value: true) .update!(value: true)
Docuseal.instance_variable_set(:@fulltext_search, nil) Wabosign.instance_variable_set(:@fulltext_search, nil)
redirect_back(fallback_location: settings_account_path, redirect_back(fallback_location: settings_account_path,
notice: "Started building search index. Visit #{root_url}jobs/busy to check progress.") notice: "Started building search index. Visit #{root_url}jobs/busy to check progress.")

@ -8,7 +8,7 @@ class SessionsController < Devise::SessionsController
def create def create
email = sign_in_params[:email].to_s.downcase email = sign_in_params[:email].to_s.downcase
if Docuseal.multitenant? && !User.exists?(email:) if Wabosign.multitenant? && !User.exists?(email:)
Rollbar.warning('Sign in new user') if defined?(Rollbar) Rollbar.warning('Sign in new user') if defined?(Rollbar)
return redirect_to new_registration_path(sign_up: true, user: sign_in_params.slice(:email)), return redirect_to new_registration_path(sign_up: true, user: sign_in_params.slice(:email)),
@ -26,7 +26,7 @@ class SessionsController < Devise::SessionsController
def after_sign_in_path_for(...) def after_sign_in_path_for(...)
if params[:redir].present? if params[:redir].present?
return console_redirect_index_path(redir: params[:redir]) if params[:redir].starts_with?(Docuseal::CONSOLE_URL) return console_redirect_index_path(redir: params[:redir]) if params[:redir].starts_with?(Wabosign::CONSOLE_URL)
return params[:redir] return params[:redir]
end end

@ -36,7 +36,7 @@ class SetupController < ApplicationController
@account.encrypted_configs.create!(encrypted_configs) @account.encrypted_configs.create!(encrypted_configs)
@account.account_configs.create!(key: :fulltext_search, value: true) if SearchEntry.table_exists? @account.account_configs.create!(key: :fulltext_search, value: true) if SearchEntry.table_exists?
Docuseal.refresh_default_url_options! Wabosign.refresh_default_url_options!
sign_in(@user) sign_in(@user)

@ -11,7 +11,7 @@ class SubmissionsResendEmailController < ApplicationController
def create def create
submitters = @submission.submitters.reject(&:completed_at?).select { |s| s.email.present? && !s.declined_at? } submitters = @submission.submitters.reject(&:completed_at?).select { |s| s.email.present? && !s.declined_at? }
if Docuseal.multitenant? if Wabosign.multitenant?
recent_submitter_ids = recent_submitter_ids =
SubmissionEvent.where(submitter_id: submitters.map(&:id), SubmissionEvent.where(submitter_id: submitters.map(&:id),
event_type: 'send_email', event_type: 'send_email',

@ -31,7 +31,7 @@ class SubmittersAutocompleteController < ApplicationController
def search_submitters(submitters, field) def search_submitters(submitters, field)
if field if field
if Docuseal.fulltext_search? if Wabosign.fulltext_search?
Submitters.fulltext_search_field(current_user, submitters, params[:q], field) Submitters.fulltext_search_field(current_user, submitters, params[:q], field)
else else
column = Submitter.arel_table[field.to_sym] column = Submitter.arel_table[field.to_sym]

@ -50,7 +50,7 @@ class SubmittersController < ApplicationController
def maybe_resend_email_sms(submitter, params) def maybe_resend_email_sms(submitter, params)
if params[:send_email] == '1' && submitter.email.present? if params[:send_email] == '1' && submitter.email.present?
is_sent_recently = Docuseal.multitenant? && is_sent_recently = Wabosign.multitenant? &&
EmailEvent.exists?(email: submitter.email, EmailEvent.exists?(email: submitter.email,
tag: 'submitter_invitation', tag: 'submitter_invitation',
emailable: submitter, emailable: submitter,

@ -6,7 +6,7 @@ class SubmittersSendEmailController < ApplicationController
def create def create
authorize!(:update, @submitter) authorize!(:update, @submitter)
if Docuseal.multitenant? && SubmissionEvent.exists?(submitter: @submitter, if Wabosign.multitenant? && SubmissionEvent.exists?(submitter: @submitter,
event_type: 'send_email', event_type: 'send_email',
created_at: 10.hours.ago..Time.current) created_at: 10.hours.ago..Time.current)
Rollbar.warning("Already sent: #{@submitter.id}") if defined?(Rollbar) Rollbar.warning("Already sent: #{@submitter.id}") if defined?(Rollbar)

@ -49,9 +49,9 @@ class TemplatesDashboardController < ApplicationController
rel = templates.active rel = templates.active
if params[:q].blank? if params[:q].blank?
if Docuseal.multitenant? ? current_account.testing? : current_account.linked_account_account if Wabosign.multitenant? ? current_account.testing? : current_account.linked_account_account
shared_account_ids = [current_user.account_id] shared_account_ids = [current_user.account_id]
shared_account_ids << TemplateSharing::ALL_ID if !Docuseal.multitenant? && !current_account.testing? shared_account_ids << TemplateSharing::ALL_ID if !Wabosign.multitenant? && !current_account.testing?
shared_template_ids = TemplateSharing.where(account_id: shared_account_ids).select(:template_id) shared_template_ids = TemplateSharing.where(account_id: shared_account_ids).select(:template_id)

@ -9,7 +9,7 @@ class TimestampServerController < ApplicationController
TimestampError = Class.new(StandardError) TimestampError = Class.new(StandardError)
def create def create
return head :not_found if Docuseal.multitenant? return head :not_found if Wabosign.multitenant?
test_timeserver_url(@encrypted_config.value) if @encrypted_config.value.present? test_timeserver_url(@encrypted_config.value) if @encrypted_config.value.present?

@ -64,7 +64,7 @@ class UsersController < ApplicationController
end end
def update def update
return redirect_to settings_users_path, notice: I18n.t('unable_to_update_user') if Docuseal.demo? return redirect_to settings_users_path, notice: I18n.t('unable_to_update_user') if Wabosign.demo?
attrs = user_params.compact_blank attrs = user_params.compact_blank
attrs = attrs.merge(user_params.slice(:archived_at)) if current_ability.can?(:create, @user) attrs = attrs.merge(user_params.slice(:archived_at)) if current_ability.can?(:create, @user)
@ -92,7 +92,7 @@ class UsersController < ApplicationController
end end
def destroy def destroy
if Docuseal.demo? || @user.id == current_user.id if Wabosign.demo? || @user.id == current_user.id
return redirect_to settings_users_path, notice: I18n.t('unable_to_remove_user') return redirect_to settings_users_path, notice: I18n.t('unable_to_remove_user')
end end

@ -320,7 +320,7 @@
class="text-base-content/60 text-xs text-center w-full mt-1 select-none" class="text-base-content/60 text-xs text-center w-full mt-1 select-none"
> >
{{ 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.com/esign-disclosure" href="https://www.wabosign.com/esign-disclosure"
target="_blank" target="_blank"
> >
<span class="inline md:hidden"> <span class="inline md:hidden">

@ -124,7 +124,7 @@ export default {
docId: this.eidEasyData.doc_id, docId: this.eidEasyData.doc_id,
language: this.locale, language: this.locale,
countryCode: this.countryCode, countryCode: this.countryCode,
sandbox: ['demo.docuseal.tech'].includes(location.host), sandbox: ['demo.wabosign.tech'].includes(location.host),
enabledMethods: { enabledMethods: {
signature: this.eidEasyData.available_methods signature: this.eidEasyData.available_methods
}, },

@ -314,7 +314,7 @@ export default {
return this.buildDefaultName(this.field) return this.buildDefaultName(this.field)
}, },
modalContainerEl () { modalContainerEl () {
return this.$el.getRootNode().querySelector('#docuseal_modal_container') return this.$el.getRootNode().querySelector('#wabosign_modal_container')
} }
}, },
methods: { methods: {

@ -634,7 +634,7 @@
</div> </div>
</Transition> </Transition>
<div <div
id="docuseal_modal_container" id="wabosign_modal_container"
class="modal-container" class="modal-container"
> >
<RevisionsModal <RevisionsModal
@ -2216,7 +2216,7 @@ export default {
delete clipboardData.field.submitter_uuid delete clipboardData.field.submitter_uuid
try { try {
localStorage.setItem('docuseal_clipboard', JSON.stringify(clipboardData)) localStorage.setItem('wabosign_clipboard', JSON.stringify(clipboardData))
} catch (e) { } catch (e) {
console.error('Failed to save clipboard:', e) console.error('Failed to save clipboard:', e)
} }
@ -2254,20 +2254,20 @@ export default {
} }
try { try {
localStorage.setItem('docuseal_clipboard', JSON.stringify(clipboardData)) localStorage.setItem('wabosign_clipboard', JSON.stringify(clipboardData))
} catch (e) { } catch (e) {
console.error('Failed to save clipboard:', e) console.error('Failed to save clipboard:', e)
} }
}, },
pasteField (targetPosition = null) { pasteField (targetPosition = null) {
const clipboard = localStorage.getItem('docuseal_clipboard') const clipboard = localStorage.getItem('wabosign_clipboard')
if (!clipboard) return if (!clipboard) return
const data = JSON.parse(clipboard) const data = JSON.parse(clipboard)
if (Date.now() - data.timestamp >= 3600000) { if (Date.now() - data.timestamp >= 3600000) {
localStorage.removeItem('docuseal_clipboard') localStorage.removeItem('wabosign_clipboard')
return return
} }
@ -2420,7 +2420,7 @@ export default {
}, },
hasClipboardData () { hasClipboardData () {
try { try {
const clipboard = localStorage.getItem('docuseal_clipboard') const clipboard = localStorage.getItem('wabosign_clipboard')
if (clipboard) { if (clipboard) {
const data = JSON.parse(clipboard) const data = JSON.parse(clipboard)

@ -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.com/pricing" href="https://www.wabosign.com/pricing"
target="_blank" target="_blank"
class="link" class="link"
>{{ t('available_in_pro') }}</a> >{{ t('available_in_pro') }}</a>

@ -218,7 +218,7 @@ export default {
return ['', null, 'transparent'].includes(this.backgroundColor) ? 'white' : this.backgroundColor return ['', null, 'transparent'].includes(this.backgroundColor) ? 'white' : this.backgroundColor
}, },
modalContainerEl () { modalContainerEl () {
return this.$el.getRootNode().querySelector('#docuseal_modal_container') return this.$el.getRootNode().querySelector('#wabosign_modal_container')
} }
}, },
created () { created () {

@ -414,7 +414,7 @@ export default {
}) })
}, },
modalContainerEl () { modalContainerEl () {
return this.$el.getRootNode().querySelector('#docuseal_modal_container') return this.$el.getRootNode().querySelector('#wabosign_modal_container')
}, },
defaultName () { defaultName () {
return this.buildDefaultName(this.field) return this.buildDefaultName(this.field)
@ -588,7 +588,7 @@ export default {
hiddenEl.style.opacity = '0' hiddenEl.style.opacity = '0'
hiddenEl.style.position = 'fixed' hiddenEl.style.position = 'fixed'
root.querySelector('#docuseal_modal_container')?.appendChild(hiddenEl) root.querySelector('#wabosign_modal_container')?.appendChild(hiddenEl)
event.dataTransfer?.setDragImage(hiddenEl, 0, 0) event.dataTransfer?.setDragImage(hiddenEl, 0, 0)
setTimeout(() => { hiddenEl.remove() }, 1000) setTimeout(() => { hiddenEl.remove() }, 1000)

@ -585,7 +585,7 @@ export default {
prefillableFieldTypes: FieldSettings.computed.prefillableFieldTypes, prefillableFieldTypes: FieldSettings.computed.prefillableFieldTypes,
verificationMethods: FieldSettings.computed.verificationMethods, verificationMethods: FieldSettings.computed.verificationMethods,
modalContainerEl () { modalContainerEl () {
return this.$el.getRootNode().querySelector('#docuseal_modal_container') return this.$el.getRootNode().querySelector('#wabosign_modal_container')
}, },
modalFieldName () { modalFieldName () {
return (this.defaultField ? (this.defaultField.title || this.field.title || this.field.name) : this.field.name) || this.buildDefaultName(this.field) return (this.defaultField ? (this.defaultField.title || this.field.title || this.field.name) : this.field.name) || this.buildDefaultName(this.field)

@ -277,7 +277,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.com/pricing" href="https://www.wabosign.com/pricing"
target="_blank" target="_blank"
class="opacity-50 flex items-center justify-center border border-dashed border-base-300 w-full rounded relative fields-grid-item" class="opacity-50 flex items-center justify-center border border-dashed border-base-300 w-full rounded relative fields-grid-item"
:style="{ backgroundColor }" :style="{ backgroundColor }"
@ -303,7 +303,7 @@
:data-tip="t('obtain_qualified_electronic_signature_with_the_trusted_provider_click_to_learn_more')" :data-tip="t('obtain_qualified_electronic_signature_with_the_trusted_provider_click_to_learn_more')"
> >
<a <a
href="https://www.docuseal.com/qualified-electronic-signature" href="https://www.wabosign.com/qualified-electronic-signature"
target="_blank" target="_blank"
class="opacity-50 flex items-center justify-center border border-dashed border-base-300 w-full rounded relative fields-grid-item" class="opacity-50 flex items-center justify-center border border-dashed border-base-300 w-full rounded relative fields-grid-item"
:style="{ backgroundColor }" :style="{ backgroundColor }"
@ -616,7 +616,7 @@ export default {
}, },
mounted () { mounted () {
try { try {
this.showCustomTab = localStorage.getItem('docuseal_builder_tab') === 'custom' this.showCustomTab = localStorage.getItem('wabosign_builder_tab') === 'custom'
} catch (e) { } catch (e) {
console.error(e) console.error(e)
} }
@ -672,7 +672,7 @@ export default {
}, },
setFieldsTab (type) { setFieldsTab (type) {
try { try {
localStorage.setItem('docuseal_builder_tab', type) localStorage.setItem('wabosign_builder_tab', type)
} catch (e) { } catch (e) {
console.error(e) console.error(e)
} }
@ -864,7 +864,7 @@ export default {
hiddenEl.style.opacity = '0' hiddenEl.style.opacity = '0'
hiddenEl.style.position = 'fixed' hiddenEl.style.position = 'fixed'
root.querySelector('#docuseal_modal_container').appendChild(hiddenEl) root.querySelector('#wabosign_modal_container').appendChild(hiddenEl)
event.dataTransfer.setDragImage(hiddenEl, 0, 0) event.dataTransfer.setDragImage(hiddenEl, 0, 0)

@ -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.com/pricing" href="https://www.wabosign.com/pricing"
target="_blank" target="_blank"
class="link" class="link"
>{{ t('available_in_pro') }}</a> >{{ t('available_in_pro') }}</a>

@ -85,7 +85,7 @@ export default {
}, },
hasClipboardData () { hasClipboardData () {
try { try {
const clipboard = localStorage.getItem('docuseal_clipboard') const clipboard = localStorage.getItem('wabosign_clipboard')
if (clipboard) { if (clipboard) {
const data = JSON.parse(clipboard) const data = JSON.parse(clipboard)

@ -197,7 +197,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.com/blog/accept-payments-and-request-signatures-with-ease" href="https://www.wabosign.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>

@ -262,7 +262,7 @@ export default {
return [...this.document.preview_images].sort((a, b) => parseInt(a.filename) - parseInt(b.filename))[0] return [...this.document.preview_images].sort((a, b) => parseInt(a.filename) - parseInt(b.filename))[0]
}, },
modalContainerEl () { modalContainerEl () {
return this.$el.getRootNode().querySelector('#docuseal_modal_container') return this.$el.getRootNode().querySelector('#wabosign_modal_container')
} }
}, },
methods: { methods: {

@ -185,7 +185,7 @@ export default {
}, },
computed: { computed: {
modalContainerEl () { modalContainerEl () {
return this.$el.getRootNode().querySelector('#docuseal_modal_container') return this.$el.getRootNode().querySelector('#wabosign_modal_container')
}, },
selectedFields () { selectedFields () {
return this.selectedAreasRef.value.map((area) => { return this.selectedAreasRef.value.map((area) => {

@ -238,7 +238,7 @@ export default {
return `/auth/google_oauth2?${query}` return `/auth/google_oauth2?${query}`
}, },
modalContainerEl () { modalContainerEl () {
return this.$el.getRootNode().querySelector('#docuseal_modal_container') return this.$el.getRootNode().querySelector('#wabosign_modal_container')
} }
}, },
mounted () { mounted () {

@ -1,5 +1,5 @@
# frozen_string_literal: true # frozen_string_literal: true
class ApplicationJob < ActiveJob::Base class ApplicationJob < ActiveJob::Base
retry_on StandardError, wait: 6.seconds, attempts: 5 unless Docuseal.multitenant? retry_on StandardError, wait: 6.seconds, attempts: 5 unless Wabosign.multitenant?
end end

@ -22,7 +22,7 @@ class SendFormCompletedWebhookRequestJob
Submissions::EnsureResultGenerated.call(submitter) Submissions::EnsureResultGenerated.call(submitter)
ActiveStorage::Current.url_options = Docuseal.default_url_options ActiveStorage::Current.url_options = Wabosign.default_url_options
resp = SendWebhookRequest.call(webhook_url, event_type: 'form.completed', resp = SendWebhookRequest.call(webhook_url, event_type: 'form.completed',
event_uuid: params['event_uuid'], event_uuid: params['event_uuid'],

@ -20,7 +20,7 @@ class SendFormDeclinedWebhookRequestJob
return if webhook_url.url.blank? || webhook_url.events.exclude?('form.declined') return if webhook_url.url.blank? || webhook_url.events.exclude?('form.declined')
ActiveStorage::Current.url_options = Docuseal.default_url_options ActiveStorage::Current.url_options = Wabosign.default_url_options
resp = SendWebhookRequest.call(webhook_url, event_type: 'form.declined', resp = SendWebhookRequest.call(webhook_url, event_type: 'form.declined',
event_uuid: params['event_uuid'], event_uuid: params['event_uuid'],

@ -20,7 +20,7 @@ class SendFormStartedWebhookRequestJob
return if webhook_url.url.blank? || webhook_url.events.exclude?('form.started') return if webhook_url.url.blank? || webhook_url.events.exclude?('form.started')
ActiveStorage::Current.url_options = Docuseal.default_url_options ActiveStorage::Current.url_options = Wabosign.default_url_options
resp = SendWebhookRequest.call(webhook_url, event_type: 'form.started', resp = SendWebhookRequest.call(webhook_url, event_type: 'form.started',
event_uuid: params['event_uuid'], event_uuid: params['event_uuid'],

@ -20,7 +20,7 @@ class SendFormViewedWebhookRequestJob
return if webhook_url.url.blank? || webhook_url.events.exclude?('form.viewed') return if webhook_url.url.blank? || webhook_url.events.exclude?('form.viewed')
ActiveStorage::Current.url_options = Docuseal.default_url_options ActiveStorage::Current.url_options = Wabosign.default_url_options
resp = SendWebhookRequest.call(webhook_url, event_type: 'form.viewed', resp = SendWebhookRequest.call(webhook_url, event_type: 'form.viewed',
event_uuid: params['event_uuid'], event_uuid: params['event_uuid'],

@ -5,7 +5,7 @@ class SendTestWebhookRequestJob
sidekiq_options retry: 0 sidekiq_options retry: 0
USER_AGENT = 'DocuSeal.com Webhook' USER_AGENT = 'WaboSign.com Webhook'
HttpsError = Class.new(StandardError) HttpsError = Class.new(StandardError)
LocalhostError = Class.new(StandardError) LocalhostError = Class.new(StandardError)
@ -19,7 +19,7 @@ class SendTestWebhookRequestJob
return unless webhook_url return unless webhook_url
if Docuseal.multitenant? if Wabosign.multitenant?
uri = begin uri = begin
URI(webhook_url.url) URI(webhook_url.url)
rescue URI::Error rescue URI::Error

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
class ApplicationMailer < ActionMailer::Base class ApplicationMailer < ActionMailer::Base
default from: 'DocuSeal <info@docuseal.com>' default from: 'WaboSign <info@wabosign.com>'
layout 'mailer' layout 'mailer'
register_interceptor ActionMailerConfigsInterceptor register_interceptor ActionMailerConfigsInterceptor
@ -11,14 +11,14 @@ class ApplicationMailer < ActionMailer::Base
register_observer ActionMailerEventsObserver register_observer ActionMailerEventsObserver
before_action do before_action do
ActiveStorage::Current.url_options = Docuseal.default_url_options ActiveStorage::Current.url_options = Wabosign.default_url_options
end end
after_action :set_message_metadata after_action :set_message_metadata
after_action :set_message_uuid after_action :set_message_uuid
def default_url_options def default_url_options
Docuseal.default_url_options.merge(host: ENV.fetch('EMAIL_HOST', Docuseal.default_url_options[:host])) Wabosign.default_url_options.merge(host: ENV.fetch('EMAIL_HOST', Wabosign.default_url_options[:host]))
end end
def set_message_metadata def set_message_metadata

@ -263,7 +263,7 @@ class SubmitterMailer < ApplicationMailer
end end
def maybe_set_custom_domain(submitter) def maybe_set_custom_domain(submitter)
if Docuseal.multitenant? && (config = AccountConfig.find_by(account_id: submitter.account_id, key: :custom_domain)) if Wabosign.multitenant? && (config = AccountConfig.find_by(account_id: submitter.account_id, key: :custom_domain))
@custom_domain = config.value @custom_domain = config.value
end end
end end

@ -10,7 +10,7 @@ class UserMailer < ApplicationMailer
I18n.with_locale(@current_account.locale) do I18n.with_locale(@current_account.locale) do
mail(to: @user.friendly_name, mail(to: @user.friendly_name,
subject: I18n.t('you_are_invited_to_product_name', product_name: Docuseal.product_name)) subject: I18n.t('you_are_invited_to_product_name', product_name: Wabosign.product_name))
end end
end end
end end

@ -59,7 +59,7 @@ class Submitter < ApplicationRecord
has_many_attached :attachments has_many_attached :attachments
has_many_attached :preview_documents has_many_attached :preview_documents
has_many :template_accesses, through: :submission has_many :template_accesses, through: :submission
has_many :email_events, as: :emailable, dependent: (Docuseal.multitenant? ? nil : :destroy) has_many :email_events, as: :emailable, dependent: (Wabosign.multitenant? ? nil : :destroy)
has_many :document_generation_events, dependent: :destroy has_many :document_generation_events, dependent: :destroy
has_many :submission_events, dependent: :destroy has_many :submission_events, dependent: :destroy
@ -68,7 +68,7 @@ class Submitter < ApplicationRecord
scope :completed, -> { where.not(completed_at: nil) } scope :completed, -> { where.not(completed_at: nil) }
after_destroy :anonymize_email_events, if: -> { Docuseal.multitenant? } after_destroy :anonymize_email_events, if: -> { Wabosign.multitenant? }
def status def status
if declined_at? if declined_at?

@ -27,7 +27,7 @@
</div> </div>
<% end %> <% end %>
<% encrypted_config = @encrypted_config || EncryptedConfig.find_or_initialize_by(account: current_account, key: EncryptedConfig::APP_URL_KEY) %> <% encrypted_config = @encrypted_config || EncryptedConfig.find_or_initialize_by(account: current_account, key: EncryptedConfig::APP_URL_KEY) %>
<% if !Docuseal.multitenant? && can?(:manage, encrypted_config) && !current_account.testing? && ENV['APP_URL'].blank? %> <% if !Wabosign.multitenant? && can?(:manage, encrypted_config) && !current_account.testing? && ENV['APP_URL'].blank? %>
<%= fields_for encrypted_config do |ff| %> <%= fields_for encrypted_config do |ff| %>
<div class="form-control"> <div class="form-control">
<%= ff.label :value, t('app_url'), class: 'label' %> <%= ff.label :value, t('app_url'), class: 'label' %>
@ -142,12 +142,12 @@
<%= svg_icon('info_circle', class: 'hidden md:inline-block w-4 h-4 shrink-0') %> <%= svg_icon('info_circle', class: 'hidden md:inline-block w-4 h-4 shrink-0') %>
</span> </span>
</div> </div>
<% if !Docuseal.multitenant? || can?(:manage, :disable_decline) %> <% if !Wabosign.multitenant? || can?(:manage, :disable_decline) %>
<submit-form data-on="change" class="flex"> <submit-form data-on="change" class="flex">
<%= f.check_box :value, class: 'toggle', checked: account_config.value != false %> <%= f.check_box :value, class: 'toggle', checked: account_config.value != false %>
</submit-form> </submit-form>
<% else %> <% else %>
<a href="<%= console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") %>" data-turbo="false" data-tip="<%= I18n.t('unlock_with_docuseal_pro') %>" data-on="change" class="flex tooltip"> <a href="<%= console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}/plans") %>" data-turbo="false" data-tip="<%= I18n.t('unlock_with_docuseal_pro') %>" data-on="change" class="flex tooltip">
<%= f.check_box :value, class: 'toggle pointer-events-none', checked: account_config.value != false, disabled: true %> <%= f.check_box :value, class: 'toggle pointer-events-none', checked: account_config.value != false, disabled: true %>
</a> </a>
<% end %> <% end %>
@ -165,12 +165,12 @@
<%= svg_icon('info_circle', class: 'hidden md:inline-block w-4 h-4 shrink-0') %> <%= svg_icon('info_circle', class: 'hidden md:inline-block w-4 h-4 shrink-0') %>
</span> </span>
</div> </div>
<% if !Docuseal.multitenant? || can?(:manage, :delegate_form) %> <% if !Wabosign.multitenant? || can?(:manage, :delegate_form) %>
<submit-form data-on="change" class="flex"> <submit-form data-on="change" class="flex">
<%= f.check_box :value, class: 'toggle', checked: account_config.value == true %> <%= f.check_box :value, class: 'toggle', checked: account_config.value == true %>
</submit-form> </submit-form>
<% else %> <% else %>
<a href="<%= console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") %>" data-turbo="false" data-tip="<%= I18n.t('unlock_with_docuseal_pro') %>" class="flex tooltip"> <a href="<%= console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}/plans") %>" data-turbo="false" data-tip="<%= I18n.t('unlock_with_docuseal_pro') %>" class="flex tooltip">
<%= f.check_box :value, class: 'toggle pointer-events-none', checked: account_config.value == true, disabled: true %> <%= f.check_box :value, class: 'toggle pointer-events-none', checked: account_config.value == true, disabled: true %>
</a> </a>
<% end %> <% end %>
@ -245,7 +245,7 @@
</div> </div>
<% end %> <% end %>
<% end %> <% end %>
<% if !Docuseal.multitenant? || can?(:manage, :personalization_advanced) %> <% if !Wabosign.multitenant? || can?(:manage, :personalization_advanced) %>
<% account_config = AccountConfig.find_or_initialize_by(account: current_account, key: AccountConfig::ENFORCE_SIGNING_ORDER_KEY) %> <% account_config = AccountConfig.find_or_initialize_by(account: current_account, key: AccountConfig::ENFORCE_SIGNING_ORDER_KEY) %>
<% if can?(:manage, account_config) %> <% if can?(:manage, account_config) %>
<%= form_for account_config, url: account_configs_path, method: :post do |f| %> <%= form_for account_config, url: account_configs_path, method: :post do |f| %>
@ -264,7 +264,7 @@
<% end %> <% end %>
<% end %> <% end %>
<% end %> <% end %>
<% if !Docuseal.multitenant? || can?(:manage, :personalization_advanced) %> <% if !Wabosign.multitenant? || can?(:manage, :personalization_advanced) %>
<% account_config = AccountConfig.find_or_initialize_by(account: current_account, key: AccountConfig::WITH_FILE_LINKS_KEY) %> <% account_config = AccountConfig.find_or_initialize_by(account: current_account, key: AccountConfig::WITH_FILE_LINKS_KEY) %>
<% if can?(:manage, account_config) %> <% if can?(:manage, account_config) %>
<%= form_for account_config, url: account_configs_path, method: :post do |f| %> <%= form_for account_config, url: account_configs_path, method: :post do |f| %>
@ -281,7 +281,7 @@
<% end %> <% end %>
<% end %> <% end %>
<%= render 'extra_preferences' %> <%= render 'extra_preferences' %>
<% if !Docuseal.multitenant? && SearchEntry.table_exists? && (!Docuseal.fulltext_search? || params[:reindex] == 'true') && can?(:manage, EncryptedConfig) %> <% if !Wabosign.multitenant? && SearchEntry.table_exists? && (!Wabosign.fulltext_search? || params[:reindex] == 'true') && can?(:manage, EncryptedConfig) %>
<div class="flex items-center justify-between gap-4 py-2.5"> <div class="flex items-center justify-between gap-4 py-2.5">
<span> <span>
<%= t('efficient_search_with_search_index') %> <%= t('efficient_search_with_search_index') %>
@ -293,7 +293,7 @@
<% end %> <% end %>
<%= render 'compliances' %> <%= render 'compliances' %>
<%= render 'integrations' %> <%= render 'integrations' %>
<% if can?(:manage, current_account) && Docuseal.multitenant? && true_user == current_user %> <% if can?(:manage, current_account) && Wabosign.multitenant? && true_user == current_user %>
<div class="px-1 mt-8"> <div class="px-1 mt-8">
<h2 class="text-2xl font-bold mb-2"> <h2 class="text-2xl font-bold mb-2">
<%= t('danger_zone') %> <%= t('danger_zone') %>

@ -118,7 +118,7 @@
</div> </div>
</div> </div>
<div class="text-center"> <div class="text-center">
<%= link_to t('open_full_api_reference'), "#{Docuseal::PRODUCT_URL}/docs/api", class: 'btn btn-warning text-base mt-4 px-8', target: '_blank', rel: 'noopener' %> <%= link_to t('open_full_api_reference'), "#{Wabosign::PRODUCT_URL}/docs/api", class: 'btn btn-warning text-base mt-4 px-8', target: '_blank', rel: 'noopener' %>
</div> </div>
</div> </div>
</div> </div>

@ -5,6 +5,6 @@
<p><%= t('if_you_didnt_request_this_you_can_ignore_this_email') %></p> <p><%= t('if_you_didnt_request_this_you_can_ignore_this_email') %></p>
<p> <p>
<%= t('thanks') %>,<br> <%= t('thanks') %>,<br>
<%= Docuseal.product_name %> <%= Wabosign.product_name %>
</p> </p>
<% content_for(:remove_attribution, true) %> <% content_for(:remove_attribution, true) %>

@ -1,6 +1,6 @@
<%= content_for(:canonical_url, new_user_session_url) %> <%= content_for(:canonical_url, new_user_session_url) %>
<div class="max-w-lg mx-auto px-2"> <div class="max-w-lg mx-auto px-2">
<%= render 'devise/shared/select_server' if Docuseal.multitenant? %> <%= render 'devise/shared/select_server' if Wabosign.multitenant? %>
<h1 class="text-4xl font-bold text-center mt-8"><%= t('sign_in') %></h1> <h1 class="text-4xl font-bold text-center mt-8"><%= t('sign_in') %></h1>
<%= form_for(resource, as: resource_name, html: { class: 'space-y-6' }, data: { turbo: params[:redir].blank? }, url: session_path(resource_name)) do |f| %> <%= form_for(resource, as: resource_name, html: { class: 'space-y-6' }, data: { turbo: params[:redir].blank? }, url: session_path(resource_name)) do |f| %>
<%= render 'hidden_fields' %> <%= render 'hidden_fields' %>

@ -35,7 +35,7 @@
<%= ff.select :authentication, options_for_select([%w[Plain plain], %w[Login login], %w[CRAM-MD5 cram_md5]], value.fetch('authentication', 'plain')), { prompt: true }, required: true, class: 'base-select' %> <%= ff.select :authentication, options_for_select([%w[Plain plain], %w[Login login], %w[CRAM-MD5 cram_md5]], value.fetch('authentication', 'plain')), { prompt: true }, required: true, class: 'base-select' %>
</div> </div>
</div> </div>
<% if !Docuseal.multitenant? || can?(:manage, :personalization_advanced) %> <% if !Wabosign.multitenant? || can?(:manage, :personalization_advanced) %>
<div class="form-control"> <div class="form-control">
<%= ff.label :security_label, 'SMTP Security', class: 'label' %> <%= ff.label :security_label, 'SMTP Security', class: 'label' %>
<div class="flex items-center space-x-6"> <div class="flex items-center space-x-6">
@ -50,7 +50,7 @@
<% end %> <% end %>
<div class="form-control"> <div class="form-control">
<%= ff.label :from_email, t('send_from_email'), class: 'label' %> <%= ff.label :from_email, t('send_from_email'), class: 'label' %>
<%= ff.email_field :from_email, value: value['from_email'], required: !Docuseal.multitenant?, class: 'base-input' %> <%= ff.email_field :from_email, value: value['from_email'], required: !Wabosign.multitenant?, class: 'base-input' %>
</div> </div>
<% end %> <% end %>
<div class="form-control pt-2"> <div class="form-control pt-2">

@ -2,20 +2,20 @@
<td class="flex items-center space-x-1"> <td class="flex items-center space-x-1">
<%= svg_icon('discount_check_filled', class: 'w-6 h-6 text-green-500') %> <%= svg_icon('discount_check_filled', class: 'w-6 h-6 text-green-500') %>
<span class="flex items-center"> <span class="flex items-center">
<%= t('docuseal_trusted_signature') %> <%= t('wabosign_trusted_signature') %>
<div class="tooltip ml-1" data-tip="<%= t('sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature') %>"> <div class="tooltip ml-1" data-tip="<%= t('sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature') %>">
<%= svg_icon('circle_question', class: 'w-4 h-4 stroke-1') %> <%= svg_icon('circle_question', class: 'w-4 h-4 stroke-1') %>
</div> </div>
</span> </span>
</td> </td>
<td> <td>
<a href="<%= "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}" %>" class="btn btn-neutral btn-sm text-white"> <a href="<%= "#{Wabosign::CLOUD_URL}/sign_up?#{{ redir: "#{Wabosign::CONSOLE_URL}/on_premises" }.to_query}" %>" class="btn btn-neutral btn-sm text-white">
<%= t('unlock_with_docuseal_pro') %> <%= t('unlock_with_docuseal_pro') %>
</a> </a>
</td> </td>
<td> <td>
<div class="tooltip" data-tip="<%= t('unlock_with_docuseal_pro') %>"> <div class="tooltip" data-tip="<%= t('unlock_with_docuseal_pro') %>">
<%= button_to settings_esign_path, method: :put, params: { name: Docuseal::AATL_CERT_NAME }, class: 'btn btn-outline btn-neutral btn-xs whitespace-nowrap', title: t('make_default'), disabled: true do %> <%= button_to settings_esign_path, method: :put, params: { name: Wabosign::AATL_CERT_NAME }, class: 'btn btn-outline btn-neutral btn-xs whitespace-nowrap', title: t('make_default'), disabled: true do %>
<%= t('make_default') %> <%= t('make_default') %>
<% end %> <% end %>
</div> </div>

@ -99,14 +99,14 @@
</td> </td>
</tr> </tr>
<% end %> <% end %>
<% unless Docuseal.multitenant? %> <% unless Wabosign.multitenant? %>
<%= render 'default_signature_row' %> <%= render 'default_signature_row' %>
<% end %> <% end %>
</tbody> </tbody>
</table> </table>
</div> </div>
<% encrypted_config = EncryptedConfig.find_or_initialize_by(account: current_account, key: EncryptedConfig::TIMESTAMP_SERVER_URL_KEY) %> <% encrypted_config = EncryptedConfig.find_or_initialize_by(account: current_account, key: EncryptedConfig::TIMESTAMP_SERVER_URL_KEY) %>
<% if !Docuseal.multitenant? && can?(:manage, encrypted_config) %> <% if !Wabosign.multitenant? && can?(:manage, encrypted_config) %>
<div class="flex-grow max-w-xl"> <div class="flex-grow max-w-xl">
<div class="flex justify-between items-end mb-4 mt-8"> <div class="flex justify-between items-end mb-4 mt-8">
<h2 class="text-3xl font-bold"> <h2 class="text-3xl font-bold">

@ -1,7 +1,7 @@
<div class="max-w-xl mx-auto px-2"> <div class="max-w-xl mx-auto px-2">
<h1 class="flex text-4xl font-bold items-center justify-center my-8 space-x-2"> <h1 class="flex text-4xl font-bold items-center justify-center my-8 space-x-2">
<%= svg_icon('waving_hand', class: 'h-10 w-10') %> <%= svg_icon('waving_hand', class: 'h-10 w-10') %>
<span><%= t('welcome_to_product_name', product_name: Docuseal.product_name) %></span> <span><%= t('welcome_to_product_name', product_name: Wabosign.product_name) %></span>
</h1> </h1>
<%= form_for(resource, as: resource_name, url: invitation_path, html: { method: :put, class: 'space-y-6' }) do |f| %> <%= form_for(resource, as: resource_name, url: invitation_path, html: { method: :put, class: 'space-y-6' }) do |f| %>
<div class="space-y-2"> <div class="space-y-2">

@ -1,4 +1,4 @@
<title> <title>
<%= content_for(:html_title) || (signed_in? ? 'DocuSeal' : 'DocuSeal | Open Source Document Signing') %> <%= content_for(:html_title) || (signed_in? ? 'WaboSign' : 'WaboSign | Open Source Document Signing') %>
</title> </title>
<%= render 'shared/meta' %> <%= render 'shared/meta' %>

@ -1,8 +1,8 @@
<!DOCTYPE html> <!DOCTYPE html>
<html data-theme="docuseal" lang="<%= I18n.locale %>"> <html data-theme="wabosign" lang="<%= I18n.locale %>">
<head> <head>
<%= render 'layouts/head_tags' %> <%= render 'layouts/head_tags' %>
<% if Docuseal.enable_pwa? %> <% if Wabosign.enable_pwa? %>
<link rel="manifest" href="/manifest.json"> <link rel="manifest" href="/manifest.json">
<% end %> <% end %>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html data-theme="docuseal" lang="<%= I18n.locale %>"> <html data-theme="wabosign" lang="<%= I18n.locale %>">
<head> <head>
<%= render 'layouts/head_tags' %> <%= render 'layouts/head_tags' %>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html data-theme="docuseal" lang="<%= I18n.locale %>"> <html data-theme="wabosign" lang="<%= I18n.locale %>">
<head> <head>
<%= render 'layouts/head_tags' %> <%= render 'layouts/head_tags' %>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">

@ -36,7 +36,7 @@
<p class="text-2xl font-semibold"><%= t('connect_to_docuseal_mcp') %></p> <p class="text-2xl font-semibold"><%= t('connect_to_docuseal_mcp') %></p>
<p class="text-lg"><%= t('add_the_following_to_your_mcp_client_configuration') %>:</p> <p class="text-lg"><%= t('add_the_following_to_your_mcp_client_configuration') %>:</p>
<div class="mockup-code overflow-hidden"> <div class="mockup-code overflow-hidden">
<% text = JSON.pretty_generate({ mcpServers: { docuseal: { type: 'http', url: "#{root_url(Docuseal.default_url_options)}mcp", headers: { Authorization: "Bearer #{@mcp_token.token}" } } } }).strip %> <% text = JSON.pretty_generate({ mcpServers: { wabosign: { type: 'http', url: "#{root_url(Wabosign.default_url_options)}mcp", headers: { Authorization: "Bearer #{@mcp_token.token}" } } } }).strip %>
<span class="top-0 right-0 absolute"> <span class="top-0 right-0 absolute">
<%= render 'shared/clipboard_copy', icon: 'copy', text:, class: 'btn btn-ghost text-white', icon_class: 'w-6 h-6 text-white', copy_title: t('copy'), copied_title: t('copied') %> <%= render 'shared/clipboard_copy', icon: 'copy', text:, class: 'btn btn-ghost text-white', icon_class: 'w-6 h-6 text-white', copy_title: t('copy'), copied_title: t('copied') %>
</span> </span>

@ -2,7 +2,7 @@
<%= f.hidden_field :key %> <%= f.hidden_field :key %>
<div class="form-control"> <div class="form-control">
<% record = Struct.new(:first_duration, :second_duration, :third_duration).new(*(f.object.value || {}).values_at('first_duration', 'second_duration', 'third_duration')) %> <% record = Struct.new(:first_duration, :second_duration, :third_duration).new(*(f.object.value || {}).values_at('first_duration', 'second_duration', 'third_duration')) %>
<% durations = (Docuseal.multitenant? ? AccountConfigs::REMINDER_DURATIONS.except('one_hour', 'two_hours') : AccountConfigs::REMINDER_DURATIONS).keys.map { |v| [t(v.underscore), v] } %> <% durations = (Wabosign.multitenant? ? AccountConfigs::REMINDER_DURATIONS.except('one_hour', 'two_hours') : AccountConfigs::REMINDER_DURATIONS).keys.map { |v| [t(v.underscore), v] } %>
<div class="flex flex-col md:flex-row gap-2"> <div class="flex flex-col md:flex-row gap-2">
<div class="w-full"> <div class="w-full">
<%= f.fields_for :value, record do |ff| %> <%= f.fields_for :value, record do |ff| %>

@ -7,7 +7,7 @@
<p> <p>
<%= t('send_automatic_email_reminders_to_your_recipients') %> <%= t('send_automatic_email_reminders_to_your_recipients') %>
<br> <br>
<a class="link font-medium" target="_blank" href="<%= Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") : "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false"> <a class="link font-medium" target="_blank" href="<%= Wabosign.multitenant? ? console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}/plans") : "#{Wabosign::CLOUD_URL}/sign_up?#{{ redir: "#{Wabosign::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false">
<%= t('learn_more') %> <%= t('learn_more') %>
</a> </a>
</p> </p>

@ -5,11 +5,11 @@
<div class="relative flex flex-col items-center"> <div class="relative flex flex-col items-center">
<%= render 'shared/logo', width: '100', height: '100' %> <%= render 'shared/logo', width: '100', height: '100' %>
<h1 class="text-6xl font-bold mt-4 mb-4"> <h1 class="text-6xl font-bold mt-4 mb-4">
DocuSeal WaboSign
</h1> </h1>
<% if Docuseal.version.present? %> <% if Wabosign.version.present? %>
<a href="https://github.com/docusealco/docuseal/releases" target="_blank" class="badge badge-outline badge-lg block mx-auto"> <a href="https://github.com/wabolabs/wabosign/releases" target="_blank" class="badge badge-outline badge-lg block mx-auto">
v<%= Docuseal.version %> v<%= Wabosign.version %>
</a> </a>
<% end %> <% end %>
</div> </div>
@ -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.com/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.wabosign.com/install" class="link link-neutral font-bold">click</a>.
</p> </p>
</div> </div>
</div> </div>
@ -41,7 +41,7 @@
<h3 class="mb-4 text-2xl font-semibold">Mobile Optimized</h3> <h3 class="mb-4 text-2xl font-semibold">Mobile Optimized</h3>
<p class="text-base text-gray-500"> <p class="text-base text-gray-500">
Review and sign digital documents online from any device. Review and sign digital documents online from any device.
Docuseal document forms are optimized for screens of all sizes. Wabosign document forms are optimized for screens of all sizes.
</p> </p>
</div> </div>
</div> </div>
@ -67,7 +67,7 @@
</div> </div>
<h3 class="mb-4 text-2xl font-semibold">Open Source</h3> <h3 class="mb-4 text-2xl font-semibold">Open Source</h3>
<p class="text-base text-gray-500"> <p class="text-base text-gray-500">
Source code is available under <a href="<%= Docuseal::GITHUB_URL %>" class="link link-neutral font-bold" target="_blank">github.com/docusealco</a>.<br> Source code is available under <a href="<%= Wabosign::GITHUB_URL %>" class="link link-neutral font-bold" target="_blank">github.com/docusealco</a>.<br>
Open-source contributors are always ready to help! Open-source contributors are always ready to help!
</p> </p>
</div> </div>

@ -33,7 +33,7 @@
</span> </span>
<%= ff.check_box :attach_audit_log, { checked: ff.object.attach_audit_log != false, class: 'toggle' }, 'true', 'false' %> <%= ff.check_box :attach_audit_log, { checked: ff.object.attach_audit_log != false, class: 'toggle' }, 'true', 'false' %>
</div> </div>
<% unless Docuseal.multitenant? %> <% unless Wabosign.multitenant? %>
<div class="flex items-center justify-between mx-1"> <div class="flex items-center justify-between mx-1">
<span> <span>
<%= t('bcc_recipients') %> <%= t('bcc_recipients') %>
@ -41,7 +41,7 @@
<%= ff.check_box :bcc_recipients, { checked: ff.object.bcc_recipients == true, class: 'toggle' }, 'true', 'false' %> <%= ff.check_box :bcc_recipients, { checked: ff.object.bcc_recipients == true, class: 'toggle' }, 'true', 'false' %>
</div> </div>
<% end %> <% end %>
<% if !Docuseal.multitenant? || can?(:manage, :personalization_advanced) %> <% if !Wabosign.multitenant? || can?(:manage, :personalization_advanced) %>
<div class="flex items-center justify-between mx-1"> <div class="flex items-center justify-between mx-1">
<span> <span>
<%= t('send_emails_automatically_on_completion') %> <%= t('send_emails_automatically_on_completion') %>

@ -1,4 +1,4 @@
<% unless Docuseal.multitenant? %> <% unless Wabosign.multitenant? %>
<div class="collapse collapse-plus bg-base-200 mt-4"> <div class="collapse collapse-plus bg-base-200 mt-4">
<input type="checkbox"> <input type="checkbox">
<div class="collapse-title text-xl font-medium"> <div class="collapse-title text-xl font-medium">

@ -7,7 +7,7 @@
<p> <p>
<%= t('display_your_company_name_and_logo_when_signing_documents') %> <%= t('display_your_company_name_and_logo_when_signing_documents') %>
<br> <br>
<a class="link font-medium" target="_blank" href="<%= Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") : "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false"> <a class="link font-medium" target="_blank" href="<%= Wabosign.multitenant? ? console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}/plans") : "#{Wabosign::CLOUD_URL}/sign_up?#{{ redir: "#{Wabosign::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false">
<%= t('learn_more') %> <%= t('learn_more') %>
</a> </a>
</p> </p>

@ -1,6 +1,6 @@
{ {
"name": "<%= Docuseal.product_name %>", "name": "<%= Wabosign.product_name %>",
"short_name": "<%= Docuseal.product_name %>", "short_name": "<%= Wabosign.product_name %>",
"id": "/", "id": "/",
"icons": [ "icons": [
{ {
@ -18,7 +18,7 @@
"display": "standalone", "display": "standalone",
"scope": "/", "scope": "/",
"orientation": "any", "orientation": "any",
"description": "<%= Docuseal.product_name %> is an open source platform that provides secure and efficient digital document signing and processing.", "description": "<%= Wabosign.product_name %> is an open source platform that provides secure and efficient digital document signing and processing.",
"categories": ["productivity", "utilities"], "categories": ["productivity", "utilities"],
"theme_color": "#FAF7F4", "theme_color": "#FAF7F4",
"background_color": "#FAF7F4" "background_color": "#FAF7F4"

@ -1,4 +1,4 @@
<a target="_blank" href="<%= Docuseal::GITHUB_URL %>" rel="noopener noreferrer nofollow" class="relative flex items-center rounded-full px-2 py-0.5 text-xs leading-4 mt-1 text-base-content border border-base-300 tooltip tooltip-bottom" data-tip="Give a star on GitHub"> <a target="_blank" href="<%= Wabosign::GITHUB_URL %>" rel="noopener noreferrer nofollow" class="relative flex items-center rounded-full px-2 py-0.5 text-xs leading-4 mt-1 text-base-content border border-base-300 tooltip tooltip-bottom" data-tip="Give a star on GitHub">
<span class="flex items-center justify-between space-x-0.5 font-medium"> <span class="flex items-center justify-between space-x-0.5 font-medium">
<%= svg_icon('start', class: 'h-3 w-3') %> <%= svg_icon('start', class: 'h-3 w-3') %>
<span>16k</span> <span>16k</span>

@ -1,4 +1,4 @@
<a href="https://github.com/docusealco/docuseal" class="btn btn-neutral btn-sm btn-outline inline-flex items-center justify-center" target="_blank" alt="Star on GitHub" style="height: 37px"> <a href="https://github.com/wabolabs/wabosign" class="btn btn-neutral btn-sm btn-outline inline-flex items-center justify-center" target="_blank" alt="Star on GitHub" style="height: 37px">
<span> <span>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path fill="currentColor" d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" /> <path fill="currentColor" d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />

@ -1,14 +1,14 @@
<% if Docuseal.demo? || (request.path != '/' && !devise_controller?) %> <% if Wabosign.demo? || (request.path != '/' && !devise_controller?) %>
<meta name="robots" content="noindex"> <meta name="robots" content="noindex">
<% end %> <% end %>
<% title = content_for(:html_title) || (signed_in? ? 'DocuSeal' : 'DocuSeal | Open Source Document Signing') %> <% title = content_for(:html_title) || (signed_in? ? 'WaboSign' : 'WaboSign | Open Source Document Signing') %>
<% description = content_for(:html_description) || 'Open source, self-hosted tool to streamline document filling and signing. Create custom PDF forms to complete and sign with an easy to use online tool.' %> <% description = content_for(:html_description) || 'Open source, self-hosted tool to streamline document filling and signing. Create custom PDF forms to complete and sign with an easy to use online tool.' %>
<meta name="description" content="<%= description %>"> <meta name="description" content="<%= description %>">
<meta property="og:title" content="<%= title %>"> <meta property="og:title" content="<%= title %>">
<meta property="og:description" content="<%= description %>"> <meta property="og:description" content="<%= description %>">
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:url" content="<%= root_url %>"> <meta property="og:url" content="<%= root_url %>">
<meta property="og:site_name" content="DocuSeal"> <meta property="og:site_name" content="WaboSign">
<% if content_for(:disable_image_preview) %> <% if content_for(:disable_image_preview) %>
<meta property="og:image" content=""> <meta property="og:image" content="">
<meta name="twitter:image" content=""> <meta name="twitter:image" content="">

@ -10,8 +10,8 @@
</div> </div>
<% if signed_in? %> <% if signed_in? %>
<div class="space-x-4 flex items-center"> <div class="space-x-4 flex items-center">
<% if Docuseal.demo? %> <% if Wabosign.demo? %>
<a href="https://docuseal.com/sign_up" class="btn btn-neutral btn-sm btn-outline inline-flex items-center justify-center" style="height: 37px"> <a href="https://wabosign.com/sign_up" class="btn btn-neutral btn-sm btn-outline inline-flex items-center justify-center" style="height: 37px">
<%= t('sign_up') %> <%= t('sign_up') %>
</a> </a>
<span class="hidden sm:inline"> <span class="hidden sm:inline">
@ -34,9 +34,9 @@
<span class="mr-1"><%= t('profile') %></span> <span class="mr-1"><%= t('profile') %></span>
<% end %> <% end %>
</li> </li>
<% if !Docuseal.demo? && can?(:manage, EncryptedConfig) %> <% if !Wabosign.demo? && can?(:manage, EncryptedConfig) %>
<li> <li>
<%= link_to Docuseal.multitenant? ? console_redirect_index_path : Docuseal::CONSOLE_URL, data: { prefetch: false }, class: 'flex items-center' do %> <%= link_to Wabosign.multitenant? ? console_redirect_index_path : Wabosign::CONSOLE_URL, data: { prefetch: false }, class: 'flex items-center' do %>
<%= svg_icon('terminal', class: 'w-5 h-5 flex-shrink-0 stroke-2') %> <%= svg_icon('terminal', class: 'w-5 h-5 flex-shrink-0 stroke-2') %>
<%= t('console') %> <%= t('console') %>
<% end %> <% end %>
@ -50,9 +50,9 @@
<% end %> <% end %>
</li> </li>
<% end %> <% end %>
<% if Docuseal.multitenant? || current_user.role == 'superadmin' %> <% if Wabosign.multitenant? || current_user.role == 'superadmin' %>
<li> <li>
<%= link_to Docuseal::CHATGPT_URL, target: 'blank', class: 'flex items-center' do %> <%= link_to Wabosign::CHATGPT_URL, target: 'blank', class: 'flex items-center' do %>
<%= svg_icon('sparkles', class: 'w-5 h-5 flex-shrink-0 stroke-2') %> <%= svg_icon('sparkles', class: 'w-5 h-5 flex-shrink-0 stroke-2') %>
<span class="mr-1 whitespace-nowrap"><%= t('ask_ai') %></span> <span class="mr-1 whitespace-nowrap"><%= t('ask_ai') %></span>
<% end %> <% end %>
@ -89,7 +89,7 @@
</span> </span>
<% end %> <% end %>
<% end %> <% end %>
<% if Docuseal.multitenant? && !request.path.in?([registration_path, new_registration_path]) %> <% if Wabosign.multitenant? && !request.path.in?([registration_path, new_registration_path]) %>
<%= link_to registration_path({ lang: params[:lang] }.compact_blank), class: 'btn btn-neutral btn-sm btn-outline' do %> <%= link_to registration_path({ lang: params[:lang] }.compact_blank), class: 'btn btn-neutral btn-sm btn-outline' do %>
<span class="flex items-center justify-center space-x-1"> <span class="flex items-center justify-center space-x-1">
<span class="hidden sm:block capitalize"><%= t('create_free_account') %></span> <span class="hidden sm:block capitalize"><%= t('create_free_account') %></span>

@ -1,7 +1,7 @@
<% if signed_in? && current_user != true_user %> <% if signed_in? && current_user != true_user %>
<%= render 'shared/test_alert' %> <%= render 'shared/test_alert' %>
<% elsif request.path.starts_with?('/settings') %> <% elsif request.path.starts_with?('/settings') %>
<%= link_to "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}", class: 'hidden md:inline-flex btn btn-warning btn-sm', data: { prefetch: false } do %> <%= link_to "#{Wabosign::CLOUD_URL}/sign_up?#{{ redir: "#{Wabosign::CONSOLE_URL}/on_premises" }.to_query}", class: 'hidden md:inline-flex btn btn-warning btn-sm', data: { prefetch: false } do %>
<%= t('upgrade') %> <%= t('upgrade') %>
<% end %> <% end %>
<span class="hidden md:inline-flex h-3 border-r border-base-content"></span> <span class="hidden md:inline-flex h-3 border-r border-base-content"></span>

@ -12,7 +12,7 @@
<li> <li>
<%= link_to t('account'), settings_account_path, class: 'text-base hover:bg-base-300' %> <%= link_to t('account'), settings_account_path, class: 'text-base hover:bg-base-300' %>
</li> </li>
<% unless Docuseal.multitenant? %> <% unless Wabosign.multitenant? %>
<% if can?(:read, EncryptedConfig.new(key: EncryptedConfig::EMAIL_SMTP_KEY, account: current_account)) && ENV['SMTP_ADDRESS'].blank? && true_user == current_user %> <% if can?(:read, EncryptedConfig.new(key: EncryptedConfig::EMAIL_SMTP_KEY, account: current_account)) && ENV['SMTP_ADDRESS'].blank? && true_user == current_user %>
<li> <li>
<%= link_to t('email'), settings_email_index_path, class: 'text-base hover:bg-base-300' %> <%= link_to t('email'), settings_email_index_path, class: 'text-base hover:bg-base-300' %>
@ -50,47 +50,47 @@
</li> </li>
<% end %> <% end %>
<%= render 'shared/settings_nav_extra' %> <%= render 'shared/settings_nav_extra' %>
<% if Docuseal.demo? || !Docuseal.multitenant? %> <% if Wabosign.demo? || !Wabosign.multitenant? %>
<% if can?(:read, AccessToken) %> <% if can?(:read, AccessToken) %>
<li> <li>
<%= link_to 'API', settings_api_index_path, class: 'text-base hover:bg-base-300' %> <%= link_to 'API', settings_api_index_path, class: 'text-base hover:bg-base-300' %>
</li> </li>
<% end %> <% end %>
<% end %> <% end %>
<% if Docuseal.demo? || !Docuseal.multitenant? || (current_user != true_user && !current_account.testing?) %> <% if Wabosign.demo? || !Wabosign.multitenant? || (current_user != true_user && !current_account.testing?) %>
<% if can?(:read, WebhookUrl) %> <% if can?(:read, WebhookUrl) %>
<li> <li>
<%= link_to 'Webhooks', settings_webhooks_path, class: 'text-base hover:bg-base-300' %> <%= link_to 'Webhooks', settings_webhooks_path, class: 'text-base hover:bg-base-300' %>
</li> </li>
<% end %> <% end %>
<% end %> <% end %>
<% if !Docuseal.demo? && can?(:manage, EncryptedConfig) && (current_user != true_user || !current_account.linked_account_account) %> <% if !Wabosign.demo? && can?(:manage, EncryptedConfig) && (current_user != true_user || !current_account.linked_account_account) %>
<li> <li>
<%= content_for(:pro_link) || link_to(Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") : "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}", class: 'text-base hover:bg-base-300', data: { turbo: false }) do %> <%= content_for(:pro_link) || link_to(Wabosign.multitenant? ? console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}/plans") : "#{Wabosign::CLOUD_URL}/sign_up?#{{ redir: "#{Wabosign::CONSOLE_URL}/on_premises" }.to_query}", class: 'text-base hover:bg-base-300', data: { turbo: false }) do %>
<%= t('plans') %> <%= t('plans') %>
<span class="badge badge-warning"><%= t('pro') %></span> <span class="badge badge-warning"><%= t('pro') %></span>
<% end %> <% end %>
</li> </li>
<% end %> <% end %>
<% if !Docuseal.demo? && can?(:manage, EncryptedConfig) && (current_user == true_user || current_account.testing?) %> <% if !Wabosign.demo? && can?(:manage, EncryptedConfig) && (current_user == true_user || current_account.testing?) %>
<li> <li>
<%= link_to Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}#{'/test' if current_account.testing?}/api") : "#{Docuseal::CONSOLE_URL}/on_premises", class: 'text-base hover:bg-base-300', data: { turbo: false } do %> <%= link_to Wabosign.multitenant? ? console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}#{'/test' if current_account.testing?}/api") : "#{Wabosign::CONSOLE_URL}/on_premises", class: 'text-base hover:bg-base-300', data: { turbo: false } do %>
<% if Docuseal.multitenant? %> API <% else %> <%= t('console') %> <% end %> <% if Wabosign.multitenant? %> API <% else %> <%= t('console') %> <% end %>
<% end %> <% end %>
</li> </li>
<% if Docuseal.multitenant? %> <% if Wabosign.multitenant? %>
<li> <li>
<%= link_to console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}#{'/test' if current_account.testing?}/embedding/form"), class: 'text-base hover:bg-base-300', data: { turbo: false } do %> <%= link_to console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}#{'/test' if current_account.testing?}/embedding/form"), class: 'text-base hover:bg-base-300', data: { turbo: false } do %>
<%= t('embedding') %> <%= t('embedding') %>
<% end %> <% end %>
</li> </li>
<% end %> <% end %>
<% if (!Docuseal.multitenant? || can?(:manage, :saml_sso)) && can?(:read, EncryptedConfig.new(key: 'saml_configs', account: current_account)) && true_user == current_user %> <% if (!Wabosign.multitenant? || can?(:manage, :saml_sso)) && can?(:read, EncryptedConfig.new(key: 'saml_configs', account: current_account)) && true_user == current_user %>
<li> <li>
<%= link_to 'SSO', settings_sso_index_path, class: 'text-base hover:bg-base-300' %> <%= link_to 'SSO', settings_sso_index_path, class: 'text-base hover:bg-base-300' %>
</li> </li>
<% end %> <% end %>
<% if !Docuseal.multitenant? && can?(:read, McpToken) && can?(:manage, :mcp) %> <% if !Wabosign.multitenant? && can?(:read, McpToken) && can?(:manage, :mcp) %>
<li> <li>
<%= link_to 'MCP', settings_mcp_index_path, class: 'text-base hover:bg-base-300' %> <%= link_to 'MCP', settings_mcp_index_path, class: 'text-base hover:bg-base-300' %>
</li> </li>
@ -113,36 +113,36 @@
<% end %> <% end %>
</ul> </ul>
</menu-active> </menu-active>
<% if Docuseal.multitenant? || cannot?(:manage, :tenants) %> <% if Wabosign.multitenant? || cannot?(:manage, :tenants) %>
<div id="support_channels" class="mx-4 border-t border-base-300 hidden md:block"> <div id="support_channels" class="mx-4 border-t border-base-300 hidden md:block">
<div class="text-sm mt-3"> <div class="text-sm mt-3">
<%= t('need_help_ask_a_question_') %> <%= t('need_help_ask_a_question_') %>
</div> </div>
<div class="flex mt-3 space-x-3"> <div class="flex mt-3 space-x-3">
<div class="tooltip" data-tip="GitHub"> <div class="tooltip" data-tip="GitHub">
<a href="<%= Docuseal::GITHUB_URL %>" target="_blank" class="btn btn-circle btn-primary btn-md"> <a href="<%= Wabosign::GITHUB_URL %>" target="_blank" class="btn btn-circle btn-primary btn-md">
<%= svg_icon('brand_github', class: 'w-8 h-8') %> <%= svg_icon('brand_github', class: 'w-8 h-8') %>
</a> </a>
</div> </div>
<div class="tooltip" data-tip="<%= t('discord_community') %>"> <div class="tooltip" data-tip="<%= t('discord_community') %>">
<a href="<%= Docuseal::DISCORD_URL %>" target="_blank" class="btn btn-circle btn-primary btn-md"> <a href="<%= Wabosign::DISCORD_URL %>" target="_blank" class="btn btn-circle btn-primary btn-md">
<%= svg_icon('brand_discord', class: 'w-8 h-8') %> <%= svg_icon('brand_discord', class: 'w-8 h-8') %>
</a> </a>
</div> </div>
<%= capture do %> <%= capture do %>
<div class="tooltip" data-tip="<%= t('ai_assistant') %>"> <div class="tooltip" data-tip="<%= t('ai_assistant') %>">
<a href="<%= Docuseal::CHATGPT_URL %>" target="_blank" class="btn btn-circle btn-primary btn-md"> <a href="<%= Wabosign::CHATGPT_URL %>" target="_blank" class="btn btn-circle btn-primary btn-md">
<%= svg_icon('brand_openai', class: 'w-8 h-8') %> <%= svg_icon('brand_openai', class: 'w-8 h-8') %>
</a> </a>
</div> </div>
<% end %> <% end %>
</div> </div>
<a href="mailto:<%= Docuseal::SUPPORT_EMAIL %>" target="_blank" class="w-full block mt-4 underline text-center"> <a href="mailto:<%= Wabosign::SUPPORT_EMAIL %>" target="_blank" class="w-full block mt-4 underline text-center">
<%= Docuseal::SUPPORT_EMAIL %> <%= Wabosign::SUPPORT_EMAIL %>
</a> </a>
<% if Docuseal.version.present? && !Docuseal.multitenant? && can?(:manage, EncryptedConfig) %> <% if Wabosign.version.present? && !Wabosign.multitenant? && can?(:manage, EncryptedConfig) %>
<a href="https://github.com/docusealco/docuseal/releases" target="_blank" class="badge badge-outline text-xs block mx-auto mt-4"> <a href="https://github.com/wabolabs/wabosign/releases" target="_blank" class="badge badge-outline text-xs block mx-auto mt-4">
v<%= Docuseal.version %> v<%= Wabosign.version %>
</a> </a>
<% end %> <% end %>
</div> </div>

@ -1,2 +1,2 @@
<%= render 'shared/logo' %> <%= render 'shared/logo' %>
<span>DocuSeal</span> <span>WaboSign</span>

@ -7,7 +7,7 @@
<p class="text-gray-700"> <p class="text-gray-700">
<%= t('unlock_with_docuseal_pro') %> <%= t('unlock_with_docuseal_pro') %>
<br> <br>
<a class="link font-medium" target="_blank" href="<%= Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") : "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false"> <a class="link font-medium" target="_blank" href="<%= Wabosign.multitenant? ? console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}/plans") : "#{Wabosign::CLOUD_URL}/sign_up?#{{ redir: "#{Wabosign::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false">
<%= t('learn_more') %> <%= t('learn_more') %>
</a> </a>
</p> </p>

@ -7,7 +7,7 @@
<p class="text-gray-700"> <p class="text-gray-700">
<%= t('unlock_with_docuseal_pro') %> <%= t('unlock_with_docuseal_pro') %>
<br> <br>
<a class="link font-medium" target="_blank" href="<%= Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") : "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false"> <a class="link font-medium" target="_blank" href="<%= Wabosign.multitenant? ? console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}/plans") : "#{Wabosign::CLOUD_URL}/sign_up?#{{ redir: "#{Wabosign::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false">
<%= t('learn_more') %> <%= t('learn_more') %>
</a> </a>
</p> </p>

@ -1 +1 @@
<%= render 'start_form/docuseal_logo' %> <%= render 'start_form/wabosign_logo' %>

@ -2,5 +2,5 @@
<span class="mr-3"> <span class="mr-3">
<%= render 'shared/logo', width: '50px', height: '50px' %> <%= render 'shared/logo', width: '50px', height: '50px' %>
</span> </span>
<h1 class="text-5xl font-bold text-center">DocuSeal</h1> <h1 class="text-5xl font-bold text-center">WaboSign</h1>
</a> </a>

@ -21,7 +21,7 @@
<div dir="auto" class="text-center text-2xl font-semibold"> <div dir="auto" class="text-center text-2xl font-semibold">
<%= @submitter.with_signature_fields? ? t('document_has_been_signed_already') : t('form_has_been_submitted_already') %> <%= @submitter.with_signature_fields? ? t('document_has_been_signed_already') : t('form_has_been_submitted_already') %>
</div> </div>
<% if Docuseal.multitenant? || Accounts.can_send_emails?(@submitter.account) %> <% if Wabosign.multitenant? || Accounts.can_send_emails?(@submitter.account) %>
<toggle-submit class="block"> <toggle-submit class="block">
<%= button_to button_title(title: t('send_copy_to_email'), disabled_with: t('sending'), icon: svg_icon('mail_forward', class: 'w-6 h-6')), send_submission_email_index_path, params: { template_slug: @template.slug, email: params[:email] }, class: 'base-button w-full' %> <%= button_to button_title(title: t('send_copy_to_email'), disabled_with: t('sending'), icon: svg_icon('mail_forward', class: 'w-6 h-6')), send_submission_email_index_path, params: { template_slug: @template.slug, email: params[:email] }, class: 'base-button w-full' %>
</toggle-submit> </toggle-submit>

@ -1,4 +1,4 @@
<% content_for(:html_title, "#{@template.name} | DocuSeal") %> <% content_for(:html_title, "#{@template.name} | WaboSign") %>
<% I18n.with_locale(@template.account.locale) do %> <% I18n.with_locale(@template.account.locale) do %>
<% content_for(:html_description, t('account_name_has_invited_you_to_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution', account_name: @template.account.name)) %> <% content_for(:html_description, t('account_name_has_invited_you_to_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution', account_name: @template.account.name)) %>
<% end %> <% end %>

@ -1,4 +1,4 @@
<% content_for(:html_title, "#{@template.name} | DocuSeal") %> <% content_for(:html_title, "#{@template.name} | WaboSign") %>
<% I18n.with_locale(@template.account.locale) do %> <% I18n.with_locale(@template.account.locale) do %>
<% content_for(:html_description, t('share_link_is_currently_disabled')) %> <% content_for(:html_description, t('share_link_is_currently_disabled')) %>
<% end %> <% end %>

@ -1,4 +1,4 @@
<% content_for(:html_title, "#{@template.name} | DocuSeal") %> <% content_for(:html_title, "#{@template.name} | WaboSign") %>
<% I18n.with_locale(@template.account.locale) do %> <% I18n.with_locale(@template.account.locale) do %>
<% content_for(:html_description, t('account_name_has_invited_you_to_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution', account_name: @template.account.name)) %> <% content_for(:html_description, t('account_name_has_invited_you_to_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution', account_name: @template.account.name)) %>
<% end %> <% end %>

@ -7,7 +7,7 @@
<p class="text-gray-700"> <p class="text-gray-700">
<%= t('unlock_with_docuseal_pro') %> <%= t('unlock_with_docuseal_pro') %>
<br> <br>
<a class="link font-medium" target="_blank" href="<%= Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") : "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false"> <a class="link font-medium" target="_blank" href="<%= Wabosign.multitenant? ? console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}/plans") : "#{Wabosign::CLOUD_URL}/sign_up?#{{ redir: "#{Wabosign::CONSOLE_URL}/on_premises" }.to_query}" %>" data-turbo="false">
<%= t('learn_more') %> <%= t('learn_more') %>
</a> </a>
</p> </p>

@ -23,7 +23,7 @@
</div> </div>
<% elsif submitters.size == 1 %> <% elsif submitters.size == 1 %>
<submitter-item class="form-control"> <submitter-item class="form-control">
<emails-textarea data-bulk-enabled="<%= Docuseal.demo? || !Docuseal.multitenant? || can?(:manage, :bulk_send) %>" data-limit="<%= Docuseal.multitenant? ? (can?(:manage, :bulk_send) ? 40 : 1) : nil %>"> <emails-textarea data-bulk-enabled="<%= Wabosign.demo? || !Wabosign.multitenant? || can?(:manage, :bulk_send) %>" data-limit="<%= Wabosign.multitenant? ? (can?(:manage, :bulk_send) ? 40 : 1) : nil %>">
<submitters-autocomplete data-field="email" class="block relative"> <submitters-autocomplete data-field="email" class="block relative">
<autoresize-textarea> <autoresize-textarea>
<%= f.text_area :emails, required: true, class: 'base-textarea w-full !text-lg', placeholder: "#{t('type_emails_here')}...", rows: 2 %> <%= f.text_area :emails, required: true, class: 'base-textarea w-full !text-lg', placeholder: "#{t('type_emails_here')}...", rows: 2 %>

@ -22,7 +22,7 @@
<% end %> <% end %>
</div> </div>
</div> </div>
<% if !Docuseal.multitenant? && !can_send_emails %> <% if !Wabosign.multitenant? && !can_send_emails %>
<div class="alert my-4"> <div class="alert my-4">
<%= svg_icon('info_circle', class: 'w-6 h-6') %> <%= svg_icon('info_circle', class: 'w-6 h-6') %>
<div> <div>

@ -1,5 +1,5 @@
<div class="mt-2 mb-1"> <div class="mt-2 mb-1">
<div class="tooltip w-full" data-tip="<%= t('unlock_with_docuseal_pro') %>"> <div class="tooltip w-full" data-tip="<%= t('unlock_with_docuseal_pro') %>">
<%= link_to submitter.sent_at? ? t('re_send_sms') : t('send_sms'), Docuseal.multitenant? ? console_redirect_index_path(redir: "#{Docuseal::CONSOLE_URL}/plans") : "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premises" }.to_query}", class: 'btn btn-sm btn-primary text-gray-400 w-full' %> <%= link_to submitter.sent_at? ? t('re_send_sms') : t('send_sms'), Wabosign.multitenant? ? console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}/plans") : "#{Wabosign::CLOUD_URL}/sign_up?#{{ redir: "#{Wabosign::CONSOLE_URL}/on_premises" }.to_query}", class: 'btn btn-sm btn-primary text-gray-400 w-full' %>
</div> </div>
</div> </div>

@ -1,6 +1,6 @@
<% filter_params = params.permit(Submissions::Filter::ALLOWED_PARAMS).compact_blank %> <% filter_params = params.permit(Submissions::Filter::ALLOWED_PARAMS).compact_blank %>
<% is_show_tabs = (@pagy.count.nil? || @pagy.count >= 5) || params[:status].present? || filter_params.present? %> <% is_show_tabs = (@pagy.count.nil? || @pagy.count >= 5) || params[:status].present? || filter_params.present? %>
<% if Docuseal.demo? %><%= render 'shared/demo_alert' %><% end %> <% if Wabosign.demo? %><%= render 'shared/demo_alert' %><% end %>
<div class="flex justify-between items-center w-full mb-4"> <div class="flex justify-between items-center w-full mb-4">
<div class="flex items-center flex-grow min-w-0"> <div class="flex items-center flex-grow min-w-0">
<div class="mr-2"> <div class="mr-2">

@ -22,7 +22,7 @@
</div> </div>
</div> </div>
</div> </div>
<% if Docuseal.multitenant? || Accounts.can_send_emails?(@submission.account) %> <% if Wabosign.multitenant? || Accounts.can_send_emails?(@submission.account) %>
<%= form_for '', url: send_submission_email_index_path, method: :post, html: { class: 'space-y-4' } do |f| %> <%= form_for '', url: send_submission_email_index_path, method: :post, html: { class: 'space-y-4' } do |f| %>
<div dir="auto" class="form-control !mt-0"> <div dir="auto" class="form-control !mt-0">
<%= f.hidden_field :submission_slug, value: @submission.slug %> <%= f.hidden_field :submission_slug, value: @submission.slug %>

@ -1,3 +1,3 @@
<div class="flex mt-4"> <div class="flex mt-4">
<%= render 'submit_form/docuseal_logo' %> <%= render 'submit_form/wabosign_logo' %>
</div> </div>

@ -1,4 +1,4 @@
<a href="<%= root_path %>" class="mx-auto text-2xl md:text-3xl font-bold items-center flex space-x-3"> <a href="<%= root_path %>" class="mx-auto text-2xl md:text-3xl font-bold items-center flex space-x-3">
<%= render 'shared/logo', class: 'w-9 h-9 md:w-12 md:h-12' %> <%= render 'shared/logo', class: 'w-9 h-9 md:w-12 md:h-12' %>
<span><%= Docuseal.product_name %></span> <span><%= Wabosign.product_name %></span>
</a> </a>

@ -2,4 +2,4 @@
<% data_fields = Submissions.filtered_conditions_fields(submitter).to_json %> <% data_fields = Submissions.filtered_conditions_fields(submitter).to_json %>
<% invite_submitters = (submitter.submission.template_submitters || submitter.submission.template.submitters).select { |s| s['invite_by_uuid'] == submitter.uuid && submitter.submission.submitters.none? { |e| e.uuid == s['uuid'] } }.to_json %> <% invite_submitters = (submitter.submission.template_submitters || submitter.submission.template.submitters).select { |s| s['invite_by_uuid'] == submitter.uuid && submitter.submission.submitters.none? { |e| e.uuid == s['uuid'] } }.to_json %>
<% optional_invite_submitters = (submitter.submission.template_submitters || submitter.submission.template.submitters).select { |s| s['optional_invite_by_uuid'] == submitter.uuid && submitter.submission.submitters.none? { |e| e.uuid == s['uuid'] } }.to_json %> <% optional_invite_submitters = (submitter.submission.template_submitters || submitter.submission.template.submitters).select { |s| s['optional_invite_by_uuid'] == submitter.uuid && submitter.submission.submitters.none? { |e| e.uuid == s['uuid'] } }.to_json %>
<submission-form data-is-demo="<%= Docuseal.demo? %>" data-schema="<%= schema.to_json %>" data-reuse-signature="<%= configs[:reuse_signature] %>" data-require-signing-reason="<%= configs[:require_signing_reason] %>" data-with-signature-id="<%= configs[:with_signature_id] %>" data-with-field-labels="<%= configs[:with_field_labels] %>" data-with-confetti="<%= configs[:with_confetti] %>" data-completed-redirect-url="<%= submitter.preferences['completed_redirect_url'].presence || submitter.submission.template&.preferences&.dig('completed_redirect_url') %>" data-completed-message="<%= (configs[:completed_message]&.compact_blank.presence || submitter.submission.template&.preferences&.dig('completed_message') || {}).to_json %>" data-completed-button="<%= configs[:completed_button].to_json %>" data-go-to-last="<%= submitter.preferences.key?('go_to_last') ? submitter.preferences['go_to_last'] : submitter.opened_at? %>" data-submitter="<%= submitter.to_json(only: %i[uuid slug name phone email]) %>" data-can-send-email="<%= Accounts.can_send_emails?(submitter.submission.account) %>" data-optional-invite-submitters="<%= optional_invite_submitters %>" data-invite-submitters="<%= invite_submitters %>" data-attachments="<%= data_attachments %>" data-fields="<%= data_fields %>" data-values="<%= submitter.values.to_json %>" data-with-typed-signature="<%= configs[:with_typed_signature] %>" data-signature-text="<%= params[:signature] %>" data-previous-signature-value="<%= local_assigns[:signature_attachment]&.uuid %>" data-remember-signature="<%= configs[:prefill_signature] %>" data-dry-run="<%= local_assigns[:dry_run] %>" data-expand="<%= local_assigns[:expand] %>" data-scroll-padding="<%= local_assigns[:scroll_padding] %>" data-language="<%= I18n.locale.to_s.split('-').first %>"></submission-form> <submission-form data-is-demo="<%= Wabosign.demo? %>" data-schema="<%= schema.to_json %>" data-reuse-signature="<%= configs[:reuse_signature] %>" data-require-signing-reason="<%= configs[:require_signing_reason] %>" data-with-signature-id="<%= configs[:with_signature_id] %>" data-with-field-labels="<%= configs[:with_field_labels] %>" data-with-confetti="<%= configs[:with_confetti] %>" data-completed-redirect-url="<%= submitter.preferences['completed_redirect_url'].presence || submitter.submission.template&.preferences&.dig('completed_redirect_url') %>" data-completed-message="<%= (configs[:completed_message]&.compact_blank.presence || submitter.submission.template&.preferences&.dig('completed_message') || {}).to_json %>" data-completed-button="<%= configs[:completed_button].to_json %>" data-go-to-last="<%= submitter.preferences.key?('go_to_last') ? submitter.preferences['go_to_last'] : submitter.opened_at? %>" data-submitter="<%= submitter.to_json(only: %i[uuid slug name phone email]) %>" data-can-send-email="<%= Accounts.can_send_emails?(submitter.submission.account) %>" data-optional-invite-submitters="<%= optional_invite_submitters %>" data-invite-submitters="<%= invite_submitters %>" data-attachments="<%= data_attachments %>" data-fields="<%= data_fields %>" data-values="<%= submitter.values.to_json %>" data-with-typed-signature="<%= configs[:with_typed_signature] %>" data-signature-text="<%= params[:signature] %>" data-previous-signature-value="<%= local_assigns[:signature_attachment]&.uuid %>" data-remember-signature="<%= configs[:prefill_signature] %>" data-dry-run="<%= local_assigns[:dry_run] %>" data-expand="<%= local_assigns[:expand] %>" data-scroll-padding="<%= local_assigns[:scroll_padding] %>" data-language="<%= I18n.locale.to_s.split('-').first %>"></submission-form>

@ -19,7 +19,7 @@
</div> </div>
</div> </div>
<div> <div>
<% if (Docuseal.multitenant? || Accounts.can_send_emails?(@submitter.account)) && @submitter.email.present? %> <% if (Wabosign.multitenant? || Accounts.can_send_emails?(@submitter.account)) && @submitter.email.present? %>
<toggle-submit> <toggle-submit>
<%= button_to button_title(title: t('send_copy_to_email'), disabled_with: t('sending'), icon: svg_icon('mail_forward', class: 'w-6 h-6')), send_submission_email_index_path, params: { submitter_slug: @submitter.slug }, class: 'white-button w-full' %> <%= button_to button_title(title: t('send_copy_to_email'), disabled_with: t('sending'), icon: svg_icon('mail_forward', class: 'w-6 h-6')), send_submission_email_index_path, params: { submitter_slug: @submitter.slug }, class: 'white-button w-full' %>
</toggle-submit> </toggle-submit>

@ -1,4 +1,4 @@
<% content_for(:html_title, "#{@submitter.submission.name || @submitter.submission.template.name} | DocuSeal") %> <% content_for(:html_title, "#{@submitter.submission.name || @submitter.submission.template.name} | WaboSign") %>
<% I18n.with_locale(@submitter.account.locale) do %> <% I18n.with_locale(@submitter.account.locale) do %>
<% content_for(:html_description, t('account_name_has_invited_you_to_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution', account_name: @submitter.account.name)) %> <% content_for(:html_description, t('account_name_has_invited_you_to_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution', account_name: @submitter.account.name)) %>
<% end %> <% end %>

@ -1,4 +1,4 @@
<% content_for(:html_title, "#{@submitter.submission.name || @submitter.submission.template.name} | DocuSeal") %> <% content_for(:html_title, "#{@submitter.submission.name || @submitter.submission.template.name} | WaboSign") %>
<% I18n.with_locale(@submitter.account.locale) do %> <% I18n.with_locale(@submitter.account.locale) do %>
<% content_for(:html_description, t('account_name_has_invited_you_to_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution', account_name: @submitter.account.name)) %> <% content_for(:html_description, t('account_name_has_invited_you_to_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution', account_name: @submitter.account.name)) %>
<% end %> <% end %>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save