From 738d531467cf1a9ca44d4ad4decd083fb9989a26 Mon Sep 17 00:00:00 2001 From: Wabo Date: Tue, 2 Jun 2026 19:52:53 -0400 Subject: [PATCH] Fix merge damage: restore WaboSign branding, SMS form, remove Console/Pro/Upgrade MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Post-sync remediation: - Restore WaboSign 'W' logo SVG (was reverted to DocuSeal abstract shape) - Restore SMS config form with BulkVS, Twilio, VoIP.ms, SignalWire providers - Add AGPL §7(b) upstream attribution to footer (DocuSeal link alongside WaboSign) - Remove Console feature entirely (controller deleted, routes/constants removed) - Remove all Pro/Plan/Upgrade gating — features now freely available - Make all user roles selectable (editor/viewer no longer disabled) - Remove upgrade button from navbar, plans link from settings nav - Remove console redirect from sessions controller - Add _logo.html.erb to rebrand-sync DENY_PATHS to prevent future overwrites --- .../console_redirect_controller.rb | 26 --- app/controllers/embed_scripts_controller.rb | 2 +- app/controllers/sessions_controller.rb | 2 - app/controllers/sms_settings_controller.rb | 25 ++- app/views/accounts/show.html.erb | 24 +-- .../_default_signature_row.html.erb | 14 +- .../_reminder_placeholder.html.erb | 16 +- .../_logo_placeholder.html.erb | 34 +-- app/views/shared/_logo.html.erb | 3 +- app/views/shared/_navbar.html.erb | 8 - app/views/shared/_navbar_buttons.html.erb | 5 - app/views/shared/_powered_by.html.erb | 4 +- app/views/shared/_settings_nav.html.erb | 23 +- app/views/sms_settings/_placeholder.html.erb | 16 +- app/views/sms_settings/index.html.erb | 196 +++++++++++++++++- app/views/sso_settings/_placeholder.html.erb | 6 +- .../_bulk_send_placeholder.html.erb | 16 +- .../submissions/_send_sms_button.html.erb | 4 +- app/views/templates/_embedding.html.erb | 12 +- .../_placeholder.html.erb | 16 +- app/views/users/_role_select.html.erb | 9 +- bin/rebrand-sync | 1 + config/routes.rb | 3 - lib/wabosign.rb | 21 -- 24 files changed, 263 insertions(+), 223 deletions(-) delete mode 100644 app/controllers/console_redirect_controller.rb diff --git a/app/controllers/console_redirect_controller.rb b/app/controllers/console_redirect_controller.rb deleted file mode 100644 index b4d17ea0..00000000 --- a/app/controllers/console_redirect_controller.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true - -class ConsoleRedirectController < ApplicationController - skip_before_action :authenticate_user! - skip_authorization_check - - def index - if request.path == '/upgrade' - params[:redir] = Wabosign.multitenant? ? "#{Wabosign::CONSOLE_URL}/plans" : "#{Wabosign::CONSOLE_URL}/on_premises" - end - - 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? - - auth = JsonWebToken.encode(uuid: true_user.uuid, - scope: :console, - exp: 1.minute.from_now.to_i) - - redir_uri = Addressable::URI.parse(params[:redir]) - path = redir_uri.path if params[:redir].to_s.starts_with?(Wabosign::CONSOLE_URL) - - redirect_to "#{Wabosign::CONSOLE_URL}#{path}?#{{ **redir_uri&.query_values, 'auth' => auth }.to_query}", - allow_other_host: true - end -end diff --git a/app/controllers/embed_scripts_controller.rb b/app/controllers/embed_scripts_controller.rb index ed5d4483..a64f2dcc 100644 --- a/app/controllers/embed_scripts_controller.rb +++ b/app/controllers/embed_scripts_controller.rb @@ -9,7 +9,7 @@ class EmbedScriptsController < ActionController::Metal

Upgrade to Pro

Unlock embedded components by upgrading to Pro

- + Learn More
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 2f94ea4c..649f3d87 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -26,8 +26,6 @@ class SessionsController < Devise::SessionsController def after_sign_in_path_for(...) if params[:redir].present? - return console_redirect_index_path(redir: params[:redir]) if params[:redir].starts_with?(Wabosign::CONSOLE_URL) - return params[:redir] end diff --git a/app/controllers/sms_settings_controller.rb b/app/controllers/sms_settings_controller.rb index f8a732d1..ff65e794 100644 --- a/app/controllers/sms_settings_controller.rb +++ b/app/controllers/sms_settings_controller.rb @@ -46,13 +46,22 @@ class SmsSettingsController < ApplicationController end def build_sms_value - params.require(:encrypted_config).permit( - :provider, :account_sid, :auth_token, :from_number, - :bulkvs_api_key, :bulkvs_sender_id, - :signalwire_app_id, :signalwire_app_token, - :signalwire_url, :signalwire_message_profile_id, - :twilio_sid, :twilio_token, :twilio_from_number, - :voipms_user, :voipms_pass, :voipms_sender_id - )[:encrypted_config] + params.require(:encrypted_config).require(:value).permit( + :enabled, + :provider, + :basic_auth_token, + :from_number, + :delivery_webhook_url, + :twilio_account_sid, + :twilio_auth_token, + :twilio_from, + :voipms_api_username, + :voipms_api_password, + :voipms_did, + :signalwire_space_url, + :signalwire_project_id, + :signalwire_api_token, + :signalwire_from + ) end end diff --git a/app/views/accounts/show.html.erb b/app/views/accounts/show.html.erb index 41d2ccea..b625487d 100644 --- a/app/views/accounts/show.html.erb +++ b/app/views/accounts/show.html.erb @@ -142,15 +142,9 @@ <%= svg_icon('info_circle', class: 'hidden md:inline-block w-4 h-4 shrink-0') %> - <% if !Wabosign.multitenant? || can?(:manage, :disable_decline) %> - - <%= f.check_box :value, class: 'toggle', checked: account_config.value != false %> - - <% else %> - " 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 %> - - <% end %> + + <%= f.check_box :value, class: 'toggle', checked: account_config.value != false %> + <% end %> <% end %> @@ -165,15 +159,9 @@ <%= svg_icon('info_circle', class: 'hidden md:inline-block w-4 h-4 shrink-0') %> - <% if !Wabosign.multitenant? || can?(:manage, :delegate_form) %> - - <%= f.check_box :value, class: 'toggle', checked: account_config.value == true %> - - <% else %> - " 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 %> - - <% end %> + + <%= f.check_box :value, class: 'toggle', checked: account_config.value == true %> + <% end %> <% end %> diff --git a/app/views/esign_settings/_default_signature_row.html.erb b/app/views/esign_settings/_default_signature_row.html.erb index b8dda50d..accd3e4a 100644 --- a/app/views/esign_settings/_default_signature_row.html.erb +++ b/app/views/esign_settings/_default_signature_row.html.erb @@ -8,17 +8,11 @@ + - " class="btn btn-neutral btn-sm text-white"> - <%= t('unlock_with_docuseal_pro') %> - - - -
- <%= 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') %> - <% end %> -
+ <%= 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') %> + <% end %> diff --git a/app/views/notifications_settings/_reminder_placeholder.html.erb b/app/views/notifications_settings/_reminder_placeholder.html.erb index f030668d..9c256025 100644 --- a/app/views/notifications_settings/_reminder_placeholder.html.erb +++ b/app/views/notifications_settings/_reminder_placeholder.html.erb @@ -1,15 +1 @@ -
- <%= svg_icon('info_circle', class: 'w-6 h-6') %> -
-

- <%= t('unlock_with_docuseal_pro') %> -

-

- <%= t('send_automatic_email_reminders_to_your_recipients') %> -
- " data-turbo="false"> - <%= t('learn_more') %> - -

-
-
+<%# Reminders are freely available. No Pro gate needed. %> diff --git a/app/views/personalization_settings/_logo_placeholder.html.erb b/app/views/personalization_settings/_logo_placeholder.html.erb index a4759ad3..a44316c6 100644 --- a/app/views/personalization_settings/_logo_placeholder.html.erb +++ b/app/views/personalization_settings/_logo_placeholder.html.erb @@ -1,15 +1,21 @@ -
- <%= svg_icon('info_circle', class: 'w-6 h-6') %> -
-

- <%= t('unlock_with_docuseal_pro') %> -

-

- <%= t('display_your_company_name_and_logo_when_signing_documents') %> -
- " data-turbo="false"> - <%= t('learn_more') %> - -

-
+
+ <% if current_account.logo.attached? %> +
+ <%= image_tag current_account.logo, class: 'w-16 h-16 object-contain rounded-lg', alt: 'Company logo' %> +
+

<%= current_account.logo.filename %>

+ <%= button_to t('remove'), account_logo_path, method: :delete, class: 'btn btn-sm btn-outline btn-error mt-1', data: { turbo: false } %> +
+
+ <% end %> + <%= form_with url: account_logo_path, local: true, class: 'space-y-3' do |f| %> +
+ <%= f.label :logo, 'Upload logo', class: 'label' %> + <%= f.file_field :logo, accept: 'image/png,image/jpeg,image/svg+xml', class: 'file-input file-input-bordered w-full' %> + PNG, JPEG, or SVG. Max 2 MB. +
+
+ <%= f.submit 'Upload', class: 'base-button' %> +
+ <% end %>
diff --git a/app/views/shared/_logo.html.erb b/app/views/shared/_logo.html.erb index 57e6e0d9..c1e345e0 100644 --- a/app/views/shared/_logo.html.erb +++ b/app/views/shared/_logo.html.erb @@ -1,4 +1,3 @@ - - + diff --git a/app/views/shared/_navbar.html.erb b/app/views/shared/_navbar.html.erb index 4fe90a4a..fee6cacf 100644 --- a/app/views/shared/_navbar.html.erb +++ b/app/views/shared/_navbar.html.erb @@ -34,14 +34,6 @@ <%= t('profile') %> <% end %> - <% if !Wabosign.demo? && can?(:manage, EncryptedConfig) %> -
  • - <%= 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') %> - <%= t('console') %> - <% end %> -
  • - <% end %> <% if can?(:read, EncryptedConfig.new(key: EncryptedConfig::ESIGN_CERTS_KEY, account: current_account)) %>
  • <%= link_to settings_esign_path, class: 'flex items-center' do %> diff --git a/app/views/shared/_navbar_buttons.html.erb b/app/views/shared/_navbar_buttons.html.erb index 9ae02f3d..242af660 100644 --- a/app/views/shared/_navbar_buttons.html.erb +++ b/app/views/shared/_navbar_buttons.html.erb @@ -1,8 +1,3 @@ <% if signed_in? && current_user != true_user %> <%= render 'shared/test_alert' %> -<% elsif request.path.starts_with?('/settings') %> - <%= 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') %> - <% end %> - <% end %> diff --git a/app/views/shared/_powered_by.html.erb b/app/views/shared/_powered_by.html.erb index ce85644c..bfc6e6f0 100644 --- a/app/views/shared/_powered_by.html.erb +++ b/app/views/shared/_powered_by.html.erb @@ -9,5 +9,7 @@ <% else %> <%= t('powered_by') %> <% end %> - <%= Wabosign.product_name %> - <%= t('open_source_documents_software') %> + <%= Wabosign.product_name %> + — <%= Wabosign::UPSTREAM_NAME %> — + <%= t('open_source_documents_software') %>
  • diff --git a/app/views/shared/_settings_nav.html.erb b/app/views/shared/_settings_nav.html.erb index ab61de6c..d4b2ee76 100644 --- a/app/views/shared/_settings_nav.html.erb +++ b/app/views/shared/_settings_nav.html.erb @@ -64,28 +64,7 @@ <% end %> <% end %> - <% if !Wabosign.demo? && can?(:manage, EncryptedConfig) && (current_user != true_user || !current_account.linked_account_account) %> -
  • - <%= 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('pro') %> - <% end %> -
  • - <% end %> - <% if !Wabosign.demo? && can?(:manage, EncryptedConfig) && (current_user == true_user || current_account.testing?) %> -
  • - <%= 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 Wabosign.multitenant? %> API <% else %> <%= t('console') %> <% end %> - <% end %> -
  • - <% if Wabosign.multitenant? %> -
  • - <%= 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') %> - <% end %> -
  • - <% end %> - <% if (!Wabosign.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 %>
  • <%= link_to 'SSO', settings_sso_index_path, class: 'text-base hover:bg-base-300' %>
  • diff --git a/app/views/sms_settings/_placeholder.html.erb b/app/views/sms_settings/_placeholder.html.erb index 15fa33b0..19ba19f1 100644 --- a/app/views/sms_settings/_placeholder.html.erb +++ b/app/views/sms_settings/_placeholder.html.erb @@ -1,15 +1 @@ -
    - <%= svg_icon('info_circle', class: 'w-6 h-6') %> -
    -

    - <%= t('send_signature_requests_via_sms') %> -

    -

    - <%= t('unlock_with_docuseal_pro') %> -
    - " data-turbo="false"> - <%= t('learn_more') %> - -

    -
    -
    +<%# SMS is freely available. Configure via the SMS form above. %> diff --git a/app/views/sms_settings/index.html.erb b/app/views/sms_settings/index.html.erb index ce3d516c..e41ad9b2 100644 --- a/app/views/sms_settings/index.html.erb +++ b/app/views/sms_settings/index.html.erb @@ -2,7 +2,201 @@ <%= render 'shared/settings_nav' %>

    SMS

    - <%= render 'placeholder' %> + + <% value = @encrypted_config.value || {} %> + <% sms_live = Sms.enabled_for?(current_account) %> + <% + provider_labels = { + 'bulkvs' => 'BulkVS', + 'twilio' => 'Twilio', + 'voipms' => 'VoIP.ms', + 'signalwire' => 'SignalWire' + } + sending_number = case value['provider'].to_s + when 'twilio' then value['twilio_from'] + when 'voipms' then value['voipms_did'] + when 'signalwire' then value['signalwire_from'] + else value['from_number'] + end + selected_provider = value['provider'].presence || 'bulkvs' + %> + + <% if sms_live %> +
    + <%= svg_icon('discount_check_filled', class: 'w-6 h-6') %> +
    +

    SMS is enabled

    +

    + Provider: <%= provider_labels[value['provider'].to_s] || value['provider'].to_s.upcase %>. + From: <%= sending_number %>. +

    +
    +
    + <% else %> +
    + <%= svg_icon('info_circle', class: 'w-6 h-6') %> +
    +

    SMS provider is not configured

    +

    + WaboSign supports + BulkVS, + Twilio, + VoIP.ms, and + SignalWire. + Pick a provider below and paste its credentials. +

    +
    +
    + <% end %> + + <%= form_for @encrypted_config, url: settings_sms_path, method: :post, html: { autocomplete: 'off', class: 'space-y-4', id: 'sms_settings_form' } do |f| %> + <%= f.fields_for :value do |ff| %> +
    + +
    +
    + <%= ff.label :provider, 'Provider', class: 'label' %> + <%= ff.select :provider, + Sms::SUPPORTED_PROVIDERS.map { |p| [provider_labels[p] || p, p] }, + { selected: selected_provider }, + class: 'base-select', + id: 'sms_provider_select' %> +
    + +
    +
    + <%= ff.label :basic_auth_token, 'BulkVS Basic Auth Token', class: 'label' %> + <%= ff.password_field :basic_auth_token, value: '', class: 'base-input', placeholder: value['basic_auth_token'].present? ? '*************' : 'Paste from BulkVS portal' %> + <% if value['basic_auth_token'].present? %> + Leave blank to keep the saved token. + <% else %> + In the BulkVS portal, open the API tab and copy the pre-encoded Basic Auth header value (do not include "Basic "). + <% end %> +
    +
    + <%= ff.label :from_number, 'From Number', class: 'label' %> + <%= ff.text_field :from_number, value: value['from_number'], class: 'base-input', placeholder: '15551234567' %> + E.164 format (digits only, country code first; e.g. 15551234567). +
    +
    + <%= ff.label :delivery_webhook_url, 'Delivery Status Webhook (optional)', class: 'label' %> + <%= ff.url_field :delivery_webhook_url, value: value['delivery_webhook_url'], class: 'base-input', placeholder: 'https://your-app.example/webhooks/sms' %> + If set, BulkVS will POST delivery-status events here for each message. +
    +
    + +
    +
    + <%= ff.label :twilio_account_sid, 'Twilio Account SID', class: 'label' %> + <%= ff.text_field :twilio_account_sid, value: value['twilio_account_sid'], class: 'base-input', placeholder: 'AC...' %> + From your Twilio Console "Account Info" panel. +
    +
    + <%= ff.label :twilio_auth_token, 'Twilio Auth Token', class: 'label' %> + <%= ff.password_field :twilio_auth_token, value: '', class: 'base-input', placeholder: value['twilio_auth_token'].present? ? '*************' : 'Click "show" in the Console to reveal' %> + <% if value['twilio_auth_token'].present? %> + Leave blank to keep the saved token. + <% else %> + Found next to the Account SID in the Twilio Console. + <% end %> +
    +
    + <%= ff.label :twilio_from, 'From Number', class: 'label' %> + <%= ff.text_field :twilio_from, value: value['twilio_from'], class: 'base-input', placeholder: '+15551234567' %> + Twilio number purchased in Phone Numbers → Manage. Use full E.164 with leading +. +
    +
    + +
    +
    + <%= ff.label :voipms_api_username, 'API Username', class: 'label' %> + <%= ff.text_field :voipms_api_username, value: value['voipms_api_username'], class: 'base-input', placeholder: 'your-account@example.com' %> + Your VoIP.ms portal login email. +
    +
    + <%= ff.label :voipms_api_password, 'API Password', class: 'label' %> + <%= ff.password_field :voipms_api_password, value: '', class: 'base-input', placeholder: value['voipms_api_password'].present? ? '*************' : 'Set this at voip.ms/m/api.php' %> + <% if value['voipms_api_password'].present? %> + Leave blank to keep the saved password. + <% else %> + Set the dedicated API password at voip.ms/m/api.php — this is not your portal login password. On the same page, enable API access and whitelist this server's egress IP, or every call will fail with ip_not_authorized. + <% end %> +
    +
    + <%= ff.label :voipms_did, 'DID (Sending Number)', class: 'label' %> + <%= ff.text_field :voipms_did, value: value['voipms_did'], class: 'base-input', placeholder: '5551234567' %> + An SMS-enabled DID from Manage DIDs. Digits only, no +. The DID must have the SMS feature enabled. +
    +
    + +
    +
    + <%= ff.label :signalwire_space_url, 'Space URL', class: 'label' %> + <%= ff.text_field :signalwire_space_url, value: value['signalwire_space_url'], class: 'base-input', placeholder: 'yourname.signalwire.com' %> + From Dashboard → API. Omit https://. +
    +
    + <%= ff.label :signalwire_project_id, 'Project ID', class: 'label' %> + <%= ff.text_field :signalwire_project_id, value: value['signalwire_project_id'], class: 'base-input', placeholder: '00000000-0000-0000-0000-000000000000' %> + The UUID labelled "Your Project ID" on the API tab. +
    +
    + <%= ff.label :signalwire_api_token, 'API Token', class: 'label' %> + <%= ff.password_field :signalwire_api_token, value: '', class: 'base-input', placeholder: value['signalwire_api_token'].present? ? '*************' : 'PT...' %> + <% if value['signalwire_api_token'].present? %> + Leave blank to keep the saved token. + <% else %> + Generate on the API tab. The token must have the Messaging scope enabled or sends return 401. + <% end %> +
    +
    + <%= ff.label :signalwire_from, 'From Number', class: 'label' %> + <%= ff.text_field :signalwire_from, value: value['signalwire_from'], class: 'base-input', placeholder: '+15551234567' %> + A SignalWire number from Phone Numbers. Full E.164 with leading +. +
    +
    + <% end %> +
    + <%= f.button button_title(title: t('save'), disabled_with: t('saving')), class: 'base-button' %> +
    + <% end %> + + <% if sms_live %> +
    +
    +

    Send a test SMS

    + <%= form_with url: test_message_settings_sms_path, method: :post, html: { autocomplete: 'off', class: 'space-y-3' } do |f| %> +
    + + + A short test message is sent to this number using your saved config. +
    +
    + +
    + <% end %> +
    +
    + <% end %>
    + +<%= javascript_tag nonce: true do %> + (function () { + const select = document.getElementById('sms_provider_select') + if (!select) return + const blocks = document.querySelectorAll('[data-provider-block]') + const sync = () => { + const current = select.value + blocks.forEach((block) => { + block.classList.toggle('hidden', block.dataset.providerBlock !== current) + }) + } + select.addEventListener('change', sync) + sync() + })() +<% end %> diff --git a/app/views/sso_settings/_placeholder.html.erb b/app/views/sso_settings/_placeholder.html.erb index 709f892a..1f8f35de 100644 --- a/app/views/sso_settings/_placeholder.html.erb +++ b/app/views/sso_settings/_placeholder.html.erb @@ -5,11 +5,7 @@ <%= t('single_sign_on_with_saml_2_0') %>

    - <%= t('unlock_with_docuseal_pro') %> -
    - " data-turbo="false"> - <%= t('learn_more') %> - + Configure SAML SSO via the SAML_CONFIGS environment variable or through the encrypted config.

    diff --git a/app/views/submissions/_bulk_send_placeholder.html.erb b/app/views/submissions/_bulk_send_placeholder.html.erb index 80315e3a..a187ae60 100644 --- a/app/views/submissions/_bulk_send_placeholder.html.erb +++ b/app/views/submissions/_bulk_send_placeholder.html.erb @@ -1,15 +1 @@ -
    - <%= svg_icon('info_circle', class: 'w-6 h-6') %> -
    -

    - <%= t('bulk_send_from_excel_xlsx_or_csv') %> -

    -

    - <%= t('unlock_with_docuseal_pro') %> -
    - " data-turbo="false"> - <%= t('learn_more') %> - -

    -
    -
    +<%# Bulk send is freely available. No Pro gate needed. %> diff --git a/app/views/submissions/_send_sms_button.html.erb b/app/views/submissions/_send_sms_button.html.erb index 203a6099..918c8d20 100644 --- a/app/views/submissions/_send_sms_button.html.erb +++ b/app/views/submissions/_send_sms_button.html.erb @@ -1,5 +1,3 @@
    -
    - <%= 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' %> -
    + <%= button_to submitter.sent_at? ? t('re_send_sms') : t('send_sms'), submitter_send_sms_index_path(submitter), class: 'btn btn-sm btn-primary w-full' %>
    diff --git a/app/views/templates/_embedding.html.erb b/app/views/templates/_embedding.html.erb index 03bb7056..56d8b3e6 100644 --- a/app/views/templates/_embedding.html.erb +++ b/app/views/templates/_embedding.html.erb @@ -55,8 +55,8 @@
    - <%= link_to t('learn_more'), console_redirect_index_path(redir: "#{Wabosign::CONSOLE_URL}/embedding/form"), target: '_blank', data: { turbo: false }, class: 'btn btn-ghost text-gray-100 flex', rel: 'noopener' %> - "> "> @@ -78,7 +78,7 @@ -
    <script src="<%= Wabosign::CDN_URL %>/js/form.js"></script>
    +      
    <script src="https://wabosign.com/js/form.js"></script>
     
     <docuseal-form data-src="<%= start_form_url(slug: template.slug) %>"></docuseal-form>
     
    @@ -88,7 +88,7 @@