From cb3ea133e97706e1c9371e25e10e0b99209e91ec Mon Sep 17 00:00:00 2001 From: Andy Brett Date: Tue, 6 Oct 2020 13:35:19 -0700 Subject: [PATCH] add available units to instance prefs page --- .../spree/admin/general_settings_controller.rb | 7 +++++++ app/models/spree/app_configuration.rb | 3 +++ app/views/spree/admin/general_settings/edit.html.haml | 9 +++++++++ config/locales/en.yml | 2 ++ 4 files changed, 21 insertions(+) diff --git a/app/controllers/spree/admin/general_settings_controller.rb b/app/controllers/spree/admin/general_settings_controller.rb index 73fbe619d3..21067ab1df 100644 --- a/app/controllers/spree/admin/general_settings_controller.rb +++ b/app/controllers/spree/admin/general_settings_controller.rb @@ -10,6 +10,13 @@ module Spree end def update + available_units = [] + params.each do |name, value| + if value == "1" && unit = name.match(/available_units_(.*)/)&.captures&.first + available_units << unit + end + end + Spree::Config[:available_units] = available_units.join(",") params.each do |name, value| next unless Spree::Config.has_preference? name diff --git a/app/models/spree/app_configuration.rb b/app/models/spree/app_configuration.rb index d56ca5a6ac..86abe394a3 100644 --- a/app/models/spree/app_configuration.rb +++ b/app/models/spree/app_configuration.rb @@ -144,5 +144,8 @@ module Spree # Enable cache preference :enable_products_cache?, :boolean, default: (Rails.env.production? || Rails.env.staging?) + + # Available units + preference :available_units, :string, default: "g,kg,T,mL,L,kL" end end diff --git a/app/views/spree/admin/general_settings/edit.html.haml b/app/views/spree/admin/general_settings/edit.html.haml index dc1993a08b..fee1138743 100644 --- a/app/views/spree/admin/general_settings/edit.html.haml +++ b/app/views/spree/admin/general_settings/edit.html.haml @@ -87,6 +87,15 @@ .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) + %fieldset.available_units.no-border-bottom + %legend{:align => "center"}= t('admin.available_units') + .field + - all_units = ["g", "oz", "lb", "kg", "T", "mL", "L", "kL"] + - selected_units = Spree::Config[:available_units].split(",") + - all_units.each do |unit| + - selected = selected_units.include?(unit) + = preference_field_tag("available_units_#{unit}", selected, { type: :boolean, selected: selected }) + = label_tag(unit, unit.downcase) + tag(:br) .form-buttons.filter-actions.actions{"data-hook" => "buttons"} = button Spree.t('actions.update'), 'icon-refresh' diff --git a/config/locales/en.yml b/config/locales/en.yml index a684672f2f..dcbedbea23 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -394,6 +394,8 @@ en: unsaved_confirm_leave: "There are unsaved changed on this page. Continue without saving?" unsaved_changes: "You have unsaved changes" + available_units: "Available Units" + shopfront_settings: embedded_shopfront_settings: "Embedded Shopfront Settings" enable_embedded_shopfronts: "Enable Embedded Shopfronts"