Add instance switch to enable number localization

This commit is contained in:
Pierre de Lacroix
2017-11-29 16:35:06 +01:00
committed by Rob Harrington
parent f67a8c1f2d
commit a49c21cfd1
4 changed files with 24 additions and 6 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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"

View File

@@ -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