From a49c21cfd158a1db552631a57762da00a2ae554e Mon Sep 17 00:00:00 2001 From: Pierre de Lacroix Date: Wed, 29 Nov 2017 16:35:06 +0100 Subject: [PATCH] Add instance switch to enable number localization --- app/models/spree/app_configuration_decorator.rb | 3 +++ .../edit/number_localization.html.haml.deface | 7 +++++++ config/locales/en.yml | 4 ++++ lib/spree/localized_number.rb | 16 ++++++++++------ 4 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 app/overrides/spree/admin/general_settings/edit/number_localization.html.haml.deface diff --git a/app/models/spree/app_configuration_decorator.rb b/app/models/spree/app_configuration_decorator.rb index a702cecf15..53cf81b3b7 100644 --- a/app/models/spree/app_configuration_decorator.rb +++ b/app/models/spree/app_configuration_decorator.rb @@ -42,4 +42,7 @@ Spree::AppConfiguration.class_eval do # Stripe Connect preference :stripe_connect_enabled, :boolean, default: false + + # Number localization + preference :enable_localized_number?, :boolean, default: false end diff --git a/app/overrides/spree/admin/general_settings/edit/number_localization.html.haml.deface b/app/overrides/spree/admin/general_settings/edit/number_localization.html.haml.deface new file mode 100644 index 0000000000..66b91b2fc7 --- /dev/null +++ b/app/overrides/spree/admin/general_settings/edit/number_localization.html.haml.deface @@ -0,0 +1,7 @@ +/ insert_after "fieldset.currency" + +%fieldset.number_localization.no-border-bottom + %legend{:align => "center"}= t('admin.number_localization.number_localization_settings') + .field + = preference_field_tag(:enable_localized_number?, Spree::Config[:enable_localized_number?], type: Spree::Config.preference_type(:enable_localized_number?)) + = label_tag(:enable_localized_number?, t('admin.number_localization.enable_localized_number')) + tag(:br) diff --git a/config/locales/en.yml b/config/locales/en.yml index dca3de6e83..b63a59a411 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -252,6 +252,10 @@ en: enable_embedded_shopfronts: "Enable Embedded Shopfronts" embedded_shopfronts_whitelist: "External Domains Whitelist" + number_localization: + number_localization_settings: "Number Localization Settings" + enable_localized_number: "Use the international thousand/decimal separator logic" + business_model_configuration: edit: business_model_configuration: "Business Model" diff --git a/lib/spree/localized_number.rb b/lib/spree/localized_number.rb index e13286344b..b666d9f17c 100644 --- a/lib/spree/localized_number.rb +++ b/lib/spree/localized_number.rb @@ -14,12 +14,14 @@ module Spree old_setter = instance_method(setter) if table_exists? && !column_names.include?(attribute.to_s) define_method(setter) do |number| - if Spree::LocalizedNumber.valid_localizable_number?(number) - number = Spree::LocalizedNumber.parse(number) - else - @invalid_localized_number ||= [] - @invalid_localized_number << attribute - number = nil + if Spree::Config.enable_localized_number? + if Spree::LocalizedNumber.valid_localizable_number?(number) + number = Spree::LocalizedNumber.parse(number) + else + @invalid_localized_number ||= [] + @invalid_localized_number << attribute + number = nil + end end if has_attribute?(attribute) @@ -30,6 +32,8 @@ module Spree end define_method(:validate_localizable_number) do + return unless Spree::Config.enable_localized_number? + @invalid_localized_number.andand.each do |error_attribute| errors.set(error_attribute, [I18n.t('spree.localized_number.invalid_format')]) end