spree_backend 4.2.0.rc1 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree/backend.js +1 -2
- data/app/assets/javascripts/spree/backend/address_states.js +20 -9
- data/app/assets/javascripts/spree/backend/admin.js +9 -15
- data/app/assets/javascripts/spree/backend/calculator.js +2 -0
- data/app/assets/javascripts/spree/backend/checkouts/edit.js +99 -71
- data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js +1 -1
- data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +31 -37
- data/app/assets/javascripts/spree/backend/option_value_picker.js +50 -23
- data/app/assets/javascripts/spree/backend/product_picker.js +35 -19
- data/app/assets/javascripts/spree/backend/promotions.js +32 -27
- data/app/assets/javascripts/spree/backend/shipments.js +28 -37
- data/app/assets/javascripts/spree/backend/spree-select2.js +33 -14
- data/app/assets/javascripts/spree/backend/stock_transfer.js +32 -13
- data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +30 -43
- data/app/assets/javascripts/spree/backend/taxons.js +60 -47
- data/app/assets/javascripts/spree/backend/user_picker.js +16 -18
- data/app/assets/javascripts/spree/backend/variant_autocomplete.js +23 -22
- data/app/assets/stylesheets/spree/backend/components/_badges.scss +1 -1
- data/app/assets/stylesheets/spree/backend/components/_tables.scss +2 -2
- data/app/assets/stylesheets/spree/backend/global/_mixins.scss +19 -0
- data/app/assets/stylesheets/spree/backend/global/_variables.scss +1 -1
- data/app/assets/stylesheets/spree/backend/plugins/_flatpickr.scss +94 -76
- data/app/assets/stylesheets/spree/backend/plugins/_select2_custom.scss +11 -0
- data/app/assets/stylesheets/spree/backend/plugins/select2_bootstrap4.scss +622 -0
- data/app/assets/stylesheets/spree/backend/shared/_base.scss +4 -0
- data/app/assets/stylesheets/spree/backend/spree_admin.css.scss +3 -1
- data/app/controllers/spree/admin/base_controller.rb +2 -0
- data/app/controllers/spree/admin/general_settings_controller.rb +1 -1
- data/app/controllers/spree/admin/images_controller.rb +3 -3
- data/app/controllers/spree/admin/orders/customer_details_controller.rb +1 -1
- data/app/controllers/spree/admin/orders_controller.rb +15 -2
- data/app/controllers/spree/admin/prices_controller.rb +0 -13
- data/app/controllers/spree/admin/products_controller.rb +2 -2
- data/app/controllers/spree/admin/states_controller.rb +1 -1
- data/app/controllers/spree/admin/stores_controller.rb +12 -14
- data/app/controllers/spree/admin/taxons_controller.rb +15 -5
- data/app/helpers/spree/admin/base_helper.rb +68 -6
- data/app/helpers/spree/admin/navigation_helper.rb +11 -1
- data/app/helpers/spree/admin/payments_helper.rb +3 -3
- data/app/helpers/spree/admin/stock_movements_helper.rb +2 -0
- data/app/helpers/spree/admin/stores_helper.rb +9 -0
- data/app/views/kaminari/admin-twitter-bootstrap-4/_first_page.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_gap.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_last_page.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_next_page.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_page.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_paginator.html.erb +2 -2
- data/app/views/kaminari/admin-twitter-bootstrap-4/_prev_page.html.erb +2 -2
- data/app/views/spree/admin/adjustments/index.html.erb +2 -2
- data/app/views/spree/admin/countries/index.html.erb +6 -6
- data/app/views/spree/admin/customer_returns/_return_item_decision.html.erb +48 -46
- data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +3 -1
- data/app/views/spree/admin/customer_returns/edit.html.erb +1 -1
- data/app/views/spree/admin/customer_returns/index.html.erb +2 -2
- data/app/views/spree/admin/customer_returns/new.html.erb +1 -1
- data/app/views/spree/admin/general_settings/edit.html.erb +27 -4
- data/app/views/spree/admin/images/edit.html.erb +1 -1
- data/app/views/spree/admin/log_entries/index.html.erb +1 -1
- data/app/views/spree/admin/option_types/_form.html.erb +9 -0
- data/app/views/spree/admin/option_types/index.html.erb +3 -1
- data/app/views/spree/admin/orders/_add_line_item.html.erb +1 -1
- data/app/views/spree/admin/orders/_add_product.html.erb +1 -1
- data/app/views/spree/admin/orders/_adjustments.html.erb +2 -2
- data/app/views/spree/admin/orders/_channel_form.html.erb +18 -0
- data/app/views/spree/admin/orders/_form.html.erb +6 -10
- data/app/views/spree/admin/orders/_line_items.html.erb +1 -1
- data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +5 -8
- data/app/views/spree/admin/orders/_order_actions.html.erb +1 -2
- data/app/views/spree/admin/orders/_risk_analysis.html.erb +3 -3
- data/app/views/spree/admin/orders/_shipment.html.erb +3 -2
- data/app/views/spree/admin/orders/_shipment_manifest.html.erb +1 -1
- data/app/views/spree/admin/orders/_store_form.html.erb +1 -1
- data/app/views/spree/admin/orders/cart.html.erb +1 -1
- data/app/views/spree/admin/orders/channel.html.erb +7 -0
- data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +35 -12
- data/app/views/spree/admin/orders/customer_details/_form.html.erb +3 -3
- data/app/views/spree/admin/orders/customer_details/edit.html.erb +1 -1
- data/app/views/spree/admin/orders/edit.html.erb +1 -1
- data/app/views/spree/admin/orders/index.html.erb +12 -11
- data/app/views/spree/admin/payment_methods/_form.html.erb +65 -46
- data/app/views/spree/admin/payment_methods/index.html.erb +2 -2
- data/app/views/spree/admin/payments/_form.html.erb +2 -3
- data/app/views/spree/admin/payments/show.html.erb +1 -2
- data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +3 -4
- data/app/views/spree/admin/payments/source_views/_gateway.html.erb +1 -1
- data/app/views/spree/admin/prices/_variant_prices.html.erb +5 -5
- data/app/views/spree/admin/prices/index.html.erb +2 -2
- data/app/views/spree/admin/product_properties/index.html.erb +3 -4
- data/app/views/spree/admin/products/_form.html.erb +8 -9
- data/app/views/spree/admin/products/index.html.erb +3 -2
- data/app/views/spree/admin/products/new.html.erb +5 -3
- data/app/views/spree/admin/products/stock.html.erb +2 -2
- data/app/views/spree/admin/promotion_rules/create.js.erb +1 -1
- data/app/views/spree/admin/promotions/_actions.html.erb +2 -3
- data/app/views/spree/admin/promotions/_form.html.erb +10 -11
- data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
- data/app/views/spree/admin/promotions/actions/_create_adjustment.html.erb +1 -1
- data/app/views/spree/admin/promotions/actions/_create_item_adjustments.html.erb +1 -1
- data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +1 -1
- data/app/views/spree/admin/promotions/index.html.erb +7 -5
- data/app/views/spree/admin/promotions/rules/_option_value.html.erb +8 -7
- data/app/views/spree/admin/promotions/rules/_product.html.erb +1 -1
- data/app/views/spree/admin/promotions/rules/_taxon.html.erb +1 -1
- data/app/views/spree/admin/promotions/rules/_user.html.erb +1 -1
- data/app/views/spree/admin/prototypes/_form.html.erb +1 -1
- data/app/views/spree/admin/prototypes/show.html.erb +1 -1
- data/app/views/spree/admin/refunds/edit.html.erb +2 -2
- data/app/views/spree/admin/refunds/new.html.erb +3 -3
- data/app/views/spree/admin/reimbursements/edit.html.erb +5 -4
- data/app/views/spree/admin/reimbursements/show.html.erb +3 -1
- data/app/views/spree/admin/return_authorizations/_form.html.erb +7 -5
- data/app/views/spree/admin/return_authorizations/index.html.erb +2 -2
- data/app/views/spree/admin/return_index/customer_returns.html.erb +2 -2
- data/app/views/spree/admin/return_index/return_authorizations.html.erb +2 -2
- data/app/views/spree/admin/roles/index.html.erb +1 -1
- data/app/views/spree/admin/shared/_account_nav.html.erb +3 -3
- data/app/views/spree/admin/shared/_address_form.html.erb +9 -9
- data/app/views/spree/admin/shared/_error_messages.html.erb +1 -1
- data/app/views/spree/admin/shared/_head.html.erb +6 -2
- data/app/views/spree/admin/shared/_header.html.erb +0 -2
- data/app/views/spree/admin/shared/_main_menu.html.erb +1 -1
- data/app/views/spree/admin/shared/_order_summary.html.erb +25 -21
- data/app/views/spree/admin/shared/_order_tabs.html.erb +9 -0
- data/app/views/spree/admin/shared/_refunds.html.erb +2 -2
- data/app/views/spree/admin/shared/_report_order_criteria.html.erb +4 -2
- data/app/views/spree/admin/shared/_translations.html.erb +9 -38
- data/app/views/spree/admin/shared/_update_order_state.js.erb +6 -2
- data/app/views/spree/admin/shared/named_types/_index.html.erb +1 -1
- data/app/views/spree/admin/shipping_categories/index.html.erb +2 -2
- data/app/views/spree/admin/shipping_methods/_form.html.erb +2 -2
- data/app/views/spree/admin/shipping_methods/index.html.erb +7 -3
- data/app/views/spree/admin/states/index.html.erb +2 -2
- data/app/views/spree/admin/stock_locations/_form.html.erb +2 -2
- data/app/views/spree/admin/stock_locations/_transfer_stock_form.html.erb +1 -1
- data/app/views/spree/admin/stock_locations/index.html.erb +6 -6
- data/app/views/spree/admin/stock_movements/_form.html.erb +1 -1
- data/app/views/spree/admin/stock_movements/index.html.erb +2 -2
- data/app/views/spree/admin/stock_transfers/_stock_movements.html.erb +1 -1
- data/app/views/spree/admin/stock_transfers/index.html.erb +42 -37
- data/app/views/spree/admin/stock_transfers/new.html.erb +1 -1
- data/app/views/spree/admin/stock_transfers/show.html.erb +0 -1
- data/app/views/spree/admin/stores/_form.html.erb +88 -24
- data/app/views/spree/admin/stores/index.html.erb +16 -9
- data/app/views/spree/admin/tax_categories/index.html.erb +3 -3
- data/app/views/spree/admin/tax_rates/index.html.erb +8 -8
- data/app/views/spree/admin/taxonomies/_js_head.html.erb +1 -2
- data/app/views/spree/admin/taxonomies/_list.html.erb +1 -1
- data/app/views/spree/admin/taxons/_form.html.erb +38 -35
- data/app/views/spree/admin/taxons/_taxon_table.html.erb +2 -2
- data/app/views/spree/admin/taxons/index.html.erb +1 -1
- data/app/views/spree/admin/users/_addresses_form.html.erb +4 -6
- data/app/views/spree/admin/users/_form.html.erb +0 -1
- data/app/views/spree/admin/users/edit.html.erb +1 -1
- data/app/views/spree/admin/users/index.html.erb +2 -2
- data/app/views/spree/admin/users/items.html.erb +1 -1
- data/app/views/spree/admin/variants/_form.html.erb +5 -3
- data/app/views/spree/admin/zones/_country_members.html.erb +1 -1
- data/app/views/spree/admin/zones/_form.html.erb +2 -2
- data/app/views/spree/admin/zones/index.html.erb +1 -1
- data/app/views/spree/admin/zones/new.html.erb +1 -1
- data/app/views/spree/layouts/admin.html.erb +2 -3
- data/config/initializers/assets.rb +1 -1
- data/config/routes.rb +7 -1
- data/spree_backend.gemspec +2 -2
- metadata +20 -19
- data/app/assets/javascripts/spree/backend/flatpickr_locals.js +0 -37
- data/app/assets/javascripts/spree/backend/tag_picker.js +0 -52
- data/app/assets/stylesheets/spree/backend/plugins/_select2.scss +0 -190
- data/app/helpers/spree/admin/currency_helper.rb +0 -14
- data/app/views/spree/admin/general_settings/_form.html.erb +0 -27
@@ -1,4 +1,5 @@
|
|
1
1
|
@import 'global/variables';
|
2
|
+
@import 'global/mixins';
|
2
3
|
|
3
4
|
@import 'bootstrap';
|
4
5
|
@import 'glyphicons';
|
@@ -18,9 +19,10 @@
|
|
18
19
|
@import 'components/progress';
|
19
20
|
@import 'components/spinner';
|
20
21
|
|
21
|
-
@import 'plugins/select2';
|
22
22
|
@import 'plugins/jquery_ui';
|
23
23
|
@import 'plugins/flatpickr';
|
24
|
+
@import 'plugins/select2_bootstrap4';
|
25
|
+
@import 'plugins/select2_custom';
|
24
26
|
|
25
27
|
@import 'shared/base';
|
26
28
|
@import 'shared/forms';
|
@@ -18,15 +18,15 @@ module Spree
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def load_index_data
|
21
|
-
@product = Product.friendly.
|
21
|
+
@product = Product.friendly.preload(*variant_index_includes).find(params[:product_id])
|
22
22
|
end
|
23
23
|
|
24
24
|
def load_edit_data
|
25
|
-
@product = Product.friendly.
|
25
|
+
@product = Product.friendly.preload(*variant_edit_includes).find(params[:product_id])
|
26
26
|
@variants = @product.variants.map do |variant|
|
27
27
|
[variant.sku_and_options_text, variant.id]
|
28
28
|
end
|
29
|
-
@variants.insert(0, [Spree.t(:all), @product.
|
29
|
+
@variants.insert(0, [Spree.t(:all), @product.master_id])
|
30
30
|
end
|
31
31
|
|
32
32
|
def set_viewable
|
@@ -11,7 +11,7 @@ module Spree
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def edit
|
14
|
-
country_id = Address.default.
|
14
|
+
country_id = Address.default.country_id
|
15
15
|
@order.build_bill_address(country_id: country_id) if @order.bill_address.nil?
|
16
16
|
@order.build_ship_address(country_id: country_id) if @order.ship_address.nil?
|
17
17
|
|
@@ -2,7 +2,10 @@ module Spree
|
|
2
2
|
module Admin
|
3
3
|
class OrdersController < Spree::Admin::BaseController
|
4
4
|
before_action :initialize_order_events
|
5
|
-
before_action :load_order, only: [
|
5
|
+
before_action :load_order, only: %i[
|
6
|
+
edit update cancel resume approve resend open_adjustments
|
7
|
+
close_adjustments cart store set_store channel set_channel
|
8
|
+
]
|
6
9
|
|
7
10
|
respond_to :html
|
8
11
|
|
@@ -144,11 +147,21 @@ module Spree
|
|
144
147
|
redirect_to store_admin_order_url(@order)
|
145
148
|
end
|
146
149
|
|
150
|
+
def set_channel
|
151
|
+
if @order.update(order_params)
|
152
|
+
flash[:success] = flash_message_for(@order, :successfully_updated)
|
153
|
+
else
|
154
|
+
flash[:error] = @order.errors.full_messages.join(', ')
|
155
|
+
end
|
156
|
+
|
157
|
+
redirect_to channel_admin_order_url(@order)
|
158
|
+
end
|
159
|
+
|
147
160
|
private
|
148
161
|
|
149
162
|
def order_params
|
150
163
|
params[:created_by_id] = try_spree_current_user.try(:id)
|
151
|
-
params.permit(:created_by_id, :user_id, :store_id)
|
164
|
+
params.permit(:created_by_id, :user_id, :store_id, :channel)
|
152
165
|
end
|
153
166
|
|
154
167
|
def load_order
|
@@ -3,8 +3,6 @@ module Spree
|
|
3
3
|
class PricesController < ResourceController
|
4
4
|
belongs_to 'spree/product', find_by: :slug
|
5
5
|
|
6
|
-
helper_method :supported_currencies_for_all_stores
|
7
|
-
|
8
6
|
def create
|
9
7
|
params.require(:vp).permit!
|
10
8
|
params[:vp].each do |variant_id, prices|
|
@@ -23,17 +21,6 @@ module Spree
|
|
23
21
|
flash[:success] = Spree.t('notice_messages.prices_saved')
|
24
22
|
redirect_to admin_product_path(parent)
|
25
23
|
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def supported_currencies_for_all_stores
|
30
|
-
@supported_currencies_for_all_stores = begin
|
31
|
-
(
|
32
|
-
Spree::Store.pluck(:supported_currencies).map { |c| c&.split(',') }.flatten + Spree::Store.pluck(:default_currency)
|
33
|
-
).
|
34
|
-
compact.uniq.map { |code| ::Money::Currency.find(code.strip) }
|
35
|
-
end
|
36
|
-
end
|
37
24
|
end
|
38
25
|
end
|
39
26
|
end
|
@@ -20,10 +20,10 @@ module Spree
|
|
20
20
|
|
21
21
|
def update
|
22
22
|
if params[:product][:taxon_ids].present?
|
23
|
-
params[:product][:taxon_ids] = params[:product][:taxon_ids].
|
23
|
+
params[:product][:taxon_ids] = params[:product][:taxon_ids].reject(&:empty?)
|
24
24
|
end
|
25
25
|
if params[:product][:option_type_ids].present?
|
26
|
-
params[:product][:option_type_ids] = params[:product][:option_type_ids].
|
26
|
+
params[:product][:option_type_ids] = params[:product][:option_type_ids].reject(&:empty?)
|
27
27
|
end
|
28
28
|
invoke_callbacks(:update, :before)
|
29
29
|
if @object.update(permitted_resource_params)
|
@@ -5,14 +5,10 @@ module Spree
|
|
5
5
|
before_action :set_default_currency, only: :new
|
6
6
|
before_action :set_default_locale, only: :new
|
7
7
|
before_action :normalize_supported_currencies, only: [:create, :update]
|
8
|
+
before_action :normalize_supported_locales, only: [:create, :update]
|
8
9
|
before_action :set_default_country_id, only: :new
|
9
10
|
before_action :load_all_countries, only: [:new, :edit, :update, :create]
|
10
|
-
|
11
|
-
if defined?(SpreeI18n)
|
12
|
-
include SpreeI18n::LocaleHelper
|
13
|
-
end
|
14
|
-
|
15
|
-
helper_method :all_locales_options
|
11
|
+
before_action :load_all_zones, only: %i[new edit]
|
16
12
|
|
17
13
|
def index
|
18
14
|
if params[:ids]
|
@@ -114,6 +110,10 @@ module Spree
|
|
114
110
|
@countries = Spree::Country.all
|
115
111
|
end
|
116
112
|
|
113
|
+
def load_all_zones
|
114
|
+
@zones = Spree::Zone.pluck(:name, :id)
|
115
|
+
end
|
116
|
+
|
117
117
|
def set_default_currency
|
118
118
|
@store.default_currency = Spree::Config[:currency]
|
119
119
|
end
|
@@ -128,16 +128,14 @@ module Spree
|
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
131
|
-
def
|
132
|
-
|
131
|
+
def normalize_supported_locales
|
132
|
+
if params[:store][:supported_locales]&.is_a?(Array)
|
133
|
+
params[:store][:supported_locales] = params[:store][:supported_locales].compact.uniq.reject(&:blank?).join(',')
|
134
|
+
end
|
133
135
|
end
|
134
136
|
|
135
|
-
|
136
|
-
|
137
|
-
unless defined?(SpreeI18n)
|
138
|
-
def all_locales_options
|
139
|
-
[['English (EN)', :en]]
|
140
|
-
end
|
137
|
+
def set_default_country_id
|
138
|
+
@store.default_country_id = Spree::Config[:default_country_id]
|
141
139
|
end
|
142
140
|
end
|
143
141
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
class TaxonsController < Spree::Admin::BaseController
|
4
|
-
before_action :load_taxonomy, only: [:create, :edit, :update]
|
5
|
-
before_action :load_taxon, only: [:edit, :update]
|
4
|
+
before_action :load_taxonomy, only: [:create, :edit, :update, :remove_icon]
|
5
|
+
before_action :load_taxon, only: [:edit, :update, :remove_icon]
|
6
6
|
before_action :set_permalink_part, only: [:edit, :update]
|
7
7
|
respond_to :html, :js
|
8
8
|
|
@@ -62,10 +62,22 @@ module Spree
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
def remove_icon
|
66
|
+
if @taxon.icon.destroy
|
67
|
+
flash[:success] = Spree.t('notice_messages.icon_removed')
|
68
|
+
redirect_to edit_admin_taxonomy_taxon_url(@taxonomy.id, @taxon.id)
|
69
|
+
else
|
70
|
+
flash[:error] = Spree.t('errors.messages.cannot_remove_icon')
|
71
|
+
render :edit
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
65
75
|
private
|
66
76
|
|
67
77
|
def set_permalink_part
|
68
78
|
@permalink_part = @taxon.permalink.split('/').last
|
79
|
+
@parent_permalink = @taxon.permalink.split('/')[0...-1].join('/')
|
80
|
+
@parent_permalink += '/' unless @parent_permalink.blank?
|
69
81
|
end
|
70
82
|
|
71
83
|
def taxon_params
|
@@ -95,9 +107,7 @@ module Spree
|
|
95
107
|
|
96
108
|
def set_permalink_params
|
97
109
|
if params.key? 'permalink_part'
|
98
|
-
|
99
|
-
parent_permalink += '/' unless parent_permalink.blank?
|
100
|
-
params[:taxon][:permalink] = parent_permalink + params[:permalink_part]
|
110
|
+
params[:taxon][:permalink] = @parent_permalink + params[:permalink_part]
|
101
111
|
end
|
102
112
|
end
|
103
113
|
|
@@ -1,6 +1,18 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
module BaseHelper
|
4
|
+
SELECT2_SUPPORTED_LOCALES = %w[
|
5
|
+
af ar az bg bn bs ca cs da de dsb el en eo es et eu fa fi fr gl he
|
6
|
+
hi hr hsb hu hy id is it ja ka km ko lt lv mk ms nb ne nl pa pl ps
|
7
|
+
pt pt-BR ro ru sk sl sq sr sr-Cyrl sv th tk tr uk vi zh-CN zh-TW
|
8
|
+
].freeze
|
9
|
+
|
10
|
+
FLATPICKR_SUPPORTED_LOCALES = %w[
|
11
|
+
ar at az be bg bn bs cs cy da de eo es et fa fi fo fr ga gr he
|
12
|
+
hi hr hu id is it ja ka km ko kz lv mk mn ms my nl no pa pl pt ro ru
|
13
|
+
si sk sl sq sr sv th tr uk uz vn zh
|
14
|
+
].freeze
|
15
|
+
|
4
16
|
def flash_alert(flash)
|
5
17
|
if flash.present?
|
6
18
|
message = flash[:error] || flash[:notice] || flash[:success]
|
@@ -46,7 +58,7 @@ module Spree
|
|
46
58
|
|
47
59
|
def datepicker_field_value(date)
|
48
60
|
unless date.blank?
|
49
|
-
l(date, format:
|
61
|
+
l(date, format: '%Y/%m/%d')
|
50
62
|
end
|
51
63
|
end
|
52
64
|
|
@@ -93,7 +105,9 @@ module Spree
|
|
93
105
|
class: 'input_integer form-control'
|
94
106
|
}
|
95
107
|
when :boolean
|
96
|
-
{
|
108
|
+
{
|
109
|
+
class: 'form-check-input'
|
110
|
+
}
|
97
111
|
when :string
|
98
112
|
{
|
99
113
|
size: 10,
|
@@ -127,11 +141,25 @@ module Spree
|
|
127
141
|
|
128
142
|
fields = object.preferences.keys.map do |key|
|
129
143
|
if object.has_preference?(key)
|
130
|
-
|
131
|
-
|
144
|
+
case key
|
145
|
+
when :currency
|
146
|
+
content_tag(:div, form.label("preferred_#{key}", Spree.t(key)) +
|
147
|
+
(form.select "preferred_#{key}", currency_options(object.preferences[key]), {}, { class: 'form-control select2' }),
|
148
|
+
class: 'form-group', id: [object.class.to_s.parameterize, 'preference', key].join('-'))
|
149
|
+
else
|
150
|
+
if object.preference_type(key) == :boolean
|
151
|
+
content_tag(:div, preference_field_for(form, "preferred_#{key}", type: object.preference_type(key)) +
|
152
|
+
form.label("preferred_#{key}", Spree.t(key), class: 'form-check-label'),
|
153
|
+
class: 'form-group form-check', id: [object.class.to_s.parameterize, 'preference', key].join('-'))
|
154
|
+
else
|
155
|
+
content_tag(:div, form.label("preferred_#{key}", Spree.t(key)) +
|
156
|
+
preference_field_for(form, "preferred_#{key}", type: object.preference_type(key)),
|
157
|
+
class: 'form-group', id: [object.class.to_s.parameterize, 'preference', key].join('-'))
|
158
|
+
end
|
159
|
+
end
|
132
160
|
end
|
133
161
|
end
|
134
|
-
safe_join(fields
|
162
|
+
safe_join(fields)
|
135
163
|
end
|
136
164
|
|
137
165
|
# renders hidden field and link to remove record using nested_attributes
|
@@ -163,7 +191,7 @@ module Spree
|
|
163
191
|
end
|
164
192
|
|
165
193
|
def required_span_tag
|
166
|
-
content_tag(:span, ' *', class: 'required')
|
194
|
+
content_tag(:span, ' *', class: 'required font-weight-bold text-danger')
|
167
195
|
end
|
168
196
|
|
169
197
|
def product_preview_link(product)
|
@@ -185,6 +213,40 @@ module Spree
|
|
185
213
|
class: 'btn-outline-secondary', icon: 'view.svg', id: 'admin_preview_taxon', target: :blank
|
186
214
|
)
|
187
215
|
end
|
216
|
+
|
217
|
+
def admin_logout_link
|
218
|
+
if defined?(admin_logout_path)
|
219
|
+
admin_logout_path
|
220
|
+
elsif defined?(spree_logout_path)
|
221
|
+
spree_logout_path
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
def select2_local_fallback
|
226
|
+
stripped_locale = I18n.locale.to_s.split('-').first
|
227
|
+
|
228
|
+
if ['zh-CN', 'zh-TW', 'sr-Cyrl', 'pt-BR'].include?(I18n.locale.to_s)
|
229
|
+
I18n.locale
|
230
|
+
elsif SELECT2_SUPPORTED_LOCALES.include? stripped_locale
|
231
|
+
stripped_locale
|
232
|
+
else
|
233
|
+
'en'
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
def flatpickr_local_fallback
|
238
|
+
stripped_locale = I18n.locale.to_s.split('-').first
|
239
|
+
|
240
|
+
if I18n.locale.to_s == 'zh-TW'
|
241
|
+
# Taiwanese is a popular language in Spree,
|
242
|
+
# it has been well translated.
|
243
|
+
'zh-tw'
|
244
|
+
elsif FLATPICKR_SUPPORTED_LOCALES.include? stripped_locale
|
245
|
+
stripped_locale
|
246
|
+
else
|
247
|
+
'default'
|
248
|
+
end
|
249
|
+
end
|
188
250
|
end
|
189
251
|
end
|
190
252
|
end
|
@@ -130,7 +130,7 @@ module Spree
|
|
130
130
|
|
131
131
|
def link_to_clone(resource, options = {})
|
132
132
|
options[:data] = { action: 'clone', 'original-title': Spree.t(:clone) }
|
133
|
-
options[:class] = 'btn btn-
|
133
|
+
options[:class] = 'btn btn-warning btn-sm with-tip'
|
134
134
|
options[:method] = :post
|
135
135
|
options[:icon] = 'clone.svg'
|
136
136
|
button_link_to '', clone_object_url(resource), options
|
@@ -251,6 +251,16 @@ module Spree
|
|
251
251
|
end
|
252
252
|
end
|
253
253
|
|
254
|
+
def active_badge(condition, options = {})
|
255
|
+
label = options[:label]
|
256
|
+
label ||= condition ? Spree.t(:say_yes) : Spree.t(:say_no)
|
257
|
+
css_class = condition ? 'badge-active' : 'badge-inactive'
|
258
|
+
|
259
|
+
content_tag(:strong, class: "badge #{css_class} text-uppercase") do
|
260
|
+
label
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
254
264
|
def main_part_classes
|
255
265
|
if cookies['sidebar-minimized'] == 'true'
|
256
266
|
'col-12 sidebar-collapsed'
|
@@ -2,9 +2,9 @@ module Spree
|
|
2
2
|
module Admin
|
3
3
|
module PaymentsHelper
|
4
4
|
def payment_method_name(payment)
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
payment_method = payment.payment_method
|
6
|
+
|
7
|
+
link_to payment_method.name, spree.edit_admin_payment_method_path(payment_method)
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -5,6 +5,8 @@ module Spree
|
|
5
5
|
if stock_movement.originator.respond_to?(:number)
|
6
6
|
if stock_movement.originator.respond_to?(:order)
|
7
7
|
link_to stock_movement.originator.number, [:edit, :admin, stock_movement.originator.order]
|
8
|
+
elsif stock_movement.originator.is_a?(Spree::StockTransfer)
|
9
|
+
link_to stock_movement.originator.number, spree.admin_stock_transfer_url(stock_movement.originator)
|
8
10
|
else
|
9
11
|
stock_movement.originator.number
|
10
12
|
end
|
@@ -4,8 +4,8 @@
|
|
4
4
|
current_page: a page object for the currently displayed page
|
5
5
|
total_pages: total number of pages
|
6
6
|
per_page: number of items to fetch per page
|
7
|
-
remote: data-remote
|
8
|
-
|
7
|
+
remote: data-remote -%>
|
8
|
+
|
9
9
|
<% unless current_page.first? %>
|
10
10
|
<li class="first page-item">
|
11
11
|
<%= link_to_unless current_page.first?, svg_icon(name: "double-chevron-left.svg", width: '13', height: '16', classes: 'spree-icon-arrow-left mb-0'), url, remote: remote, class: 'page-link', 'aria-label': 'First page' %>
|