spree_backend 3.3.6 → 3.4.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree/backend/checkouts/edit.js +1 -8
- data/app/assets/javascripts/spree/backend/handlebar_extensions.js +3 -0
- data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +1 -1
- data/app/assets/javascripts/spree/backend/shipments.js +8 -25
- data/app/assets/javascripts/spree/backend/taxons.js.coffee +1 -6
- data/app/assets/stylesheets/spree/backend/sections/_account.scss +8 -4
- data/app/controllers/spree/admin/adjustments_controller.rb +0 -2
- data/app/controllers/spree/admin/base_controller.rb +5 -5
- data/app/controllers/spree/admin/countries_controller.rb +1 -2
- data/app/controllers/spree/admin/customer_returns_controller.rb +4 -5
- data/app/controllers/spree/admin/general_settings_controller.rb +1 -0
- data/app/controllers/spree/admin/log_entries_controller.rb +0 -1
- data/app/controllers/spree/admin/option_types_controller.rb +10 -10
- data/app/controllers/spree/admin/orders_controller.rb +30 -21
- data/app/controllers/spree/admin/payment_methods_controller.rb +5 -7
- data/app/controllers/spree/admin/payments_controller.rb +3 -3
- data/app/controllers/spree/admin/product_properties_controller.rb +7 -6
- data/app/controllers/spree/admin/products_controller.rb +8 -9
- data/app/controllers/spree/admin/promotion_actions_controller.rb +4 -4
- data/app/controllers/spree/admin/promotion_rules_controller.rb +4 -4
- data/app/controllers/spree/admin/promotions_controller.rb +22 -21
- data/app/controllers/spree/admin/properties_controller.rb +2 -2
- data/app/controllers/spree/admin/prototypes_controller.rb +0 -1
- data/app/controllers/spree/admin/reports_controller.rb +17 -10
- data/app/controllers/spree/admin/resource_controller.rb +6 -15
- data/app/controllers/spree/admin/shipping_methods_controller.rb +5 -5
- data/app/controllers/spree/admin/states_controller.rb +9 -9
- data/app/controllers/spree/admin/stock_items_controller.rb +10 -9
- data/app/controllers/spree/admin/stock_movements_controller.rb +2 -2
- data/app/controllers/spree/admin/stock_transfers_controller.rb +20 -15
- data/app/controllers/spree/admin/store_credits_controller.rb +1 -1
- data/app/controllers/spree/admin/taxons_controller.rb +9 -18
- data/app/controllers/spree/admin/users_controller.rb +7 -7
- data/app/controllers/spree/admin/variants_controller.rb +1 -1
- data/app/controllers/spree/admin/variants_including_master_controller.rb +2 -3
- data/app/controllers/spree/admin/zones_controller.rb +11 -11
- data/app/helpers/spree/admin/adjustments_helper.rb +8 -10
- data/app/helpers/spree/admin/base_helper.rb +43 -49
- data/app/helpers/spree/admin/general_settings_helper.rb +1 -1
- data/app/helpers/spree/admin/images_helper.rb +0 -1
- data/app/helpers/spree/admin/navigation_helper.rb +39 -45
- data/app/helpers/spree/admin/orders_helper.rb +42 -43
- data/app/helpers/spree/admin/payments_helper.rb +1 -1
- data/app/helpers/spree/admin/promotion_rules_helper.rb +2 -2
- data/app/helpers/spree/admin/stock_locations_helper.rb +1 -1
- data/app/helpers/spree/admin/stock_movements_helper.rb +1 -1
- data/app/helpers/spree/admin/taxons_helper.rb +1 -1
- data/app/models/spree/admin/resource.rb +4 -4
- data/app/views/spree/admin/products/_autocomplete.js.erb +1 -1
- data/app/views/spree/admin/return_authorizations/_form.html.erb +1 -1
- data/app/views/spree/admin/shared/_account_nav.html.erb +59 -0
- data/app/views/spree/admin/shared/_header.html.erb +3 -1
- data/app/views/spree/admin/shared/_main_menu.html.erb +0 -6
- data/app/views/spree/admin/shared/_version.html.erb +5 -0
- data/app/views/spree/admin/stock_transfers/new.html.erb +1 -1
- data/app/views/spree/admin/stock_transfers/show.html.erb +1 -1
- data/app/views/spree/admin/users/index.html.erb +1 -1
- data/app/views/spree/layouts/admin.html.erb +2 -0
- data/config/initializers/assets.rb +1 -1
- data/config/initializers/form_builder.rb +2 -3
- data/config/routes.rb +5 -5
- data/lib/spree/backend/action_callbacks.rb +0 -1
- data/lib/spree/backend/callbacks.rb +3 -5
- data/lib/spree/backend/engine.rb +4 -4
- metadata +11 -9
@@ -12,12 +12,12 @@ module Spree
|
|
12
12
|
if report_description_key.nil?
|
13
13
|
report_description_key = "#{report_key}_description"
|
14
14
|
end
|
15
|
-
@@available_reports[report_key] = {name: Spree.t(report_key), description: Spree.t(report_description_key)}
|
15
|
+
@@available_reports[report_key] = { name: Spree.t(report_key), description: Spree.t(report_description_key) }
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
def initialize
|
20
|
-
super
|
20
|
+
super
|
21
21
|
ReportsController.add_available_report!(:sales_total)
|
22
22
|
end
|
23
23
|
|
@@ -28,17 +28,25 @@ module Spree
|
|
28
28
|
def sales_total
|
29
29
|
params[:q] = {} unless params[:q]
|
30
30
|
|
31
|
-
if params[:q][:completed_at_gt].blank?
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
31
|
+
params[:q][:completed_at_gt] = if params[:q][:completed_at_gt].blank?
|
32
|
+
Time.zone.now.beginning_of_month
|
33
|
+
else
|
34
|
+
begin
|
35
|
+
Time.zone.parse(params[:q][:completed_at_gt]).beginning_of_day
|
36
|
+
rescue
|
37
|
+
Time.zone.now.beginning_of_month
|
38
|
+
end
|
39
|
+
end
|
36
40
|
|
37
41
|
if params[:q] && !params[:q][:completed_at_lt].blank?
|
38
|
-
params[:q][:completed_at_lt] =
|
42
|
+
params[:q][:completed_at_lt] = begin
|
43
|
+
Time.zone.parse(params[:q][:completed_at_lt]).end_of_day
|
44
|
+
rescue
|
45
|
+
''
|
46
|
+
end
|
39
47
|
end
|
40
48
|
|
41
|
-
params[:q][:s] ||=
|
49
|
+
params[:q][:s] ||= 'completed_at desc'
|
42
50
|
|
43
51
|
@search = Order.complete.ransack(params[:q])
|
44
52
|
@orders = @search.result
|
@@ -59,7 +67,6 @@ module Spree
|
|
59
67
|
end
|
60
68
|
|
61
69
|
@@available_reports = {}
|
62
|
-
|
63
70
|
end
|
64
71
|
end
|
65
72
|
end
|
@@ -11,18 +11,14 @@ class Spree::Admin::ResourceController < Spree::Admin::BaseController
|
|
11
11
|
invoke_callbacks(:new_action, :before)
|
12
12
|
respond_with(@object) do |format|
|
13
13
|
format.html { render layout: !request.xhr? }
|
14
|
-
if request.xhr?
|
15
|
-
format.js { render layout: false }
|
16
|
-
end
|
14
|
+
format.js { render layout: false } if request.xhr?
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
20
18
|
def edit
|
21
19
|
respond_with(@object) do |format|
|
22
20
|
format.html { render layout: !request.xhr? }
|
23
|
-
if request.xhr?
|
24
|
-
format.js { render layout: false }
|
25
|
-
end
|
21
|
+
format.js { render layout: false } if request.xhr?
|
26
22
|
end
|
27
23
|
end
|
28
24
|
|
@@ -117,9 +113,7 @@ class Spree::Admin::ResourceController < Spree::Admin::BaseController
|
|
117
113
|
|
118
114
|
def resource
|
119
115
|
return @resource if @resource
|
120
|
-
if parent_data
|
121
|
-
parent_model_name = parent_data[:model_name]
|
122
|
-
end
|
116
|
+
parent_model_name = parent_data[:model_name] if parent_data
|
123
117
|
@resource = Spree::Admin::Resource.new controller_path, controller_name, parent_model_name, object_name
|
124
118
|
end
|
125
119
|
|
@@ -158,11 +152,9 @@ class Spree::Admin::ResourceController < Spree::Admin::BaseController
|
|
158
152
|
def parent
|
159
153
|
if parent_data.present?
|
160
154
|
@parent ||= parent_data[:model_class].
|
161
|
-
|
162
|
-
|
155
|
+
# Don't use `find_by_attribute_name` to workaround globalize/globalize#423 bug
|
156
|
+
send(:find_by, parent_data[:find_by].to_s => params["#{resource.model_name}_id"])
|
163
157
|
instance_variable_set("@#{resource.model_name}", @parent)
|
164
|
-
else
|
165
|
-
nil
|
166
158
|
end
|
167
159
|
end
|
168
160
|
|
@@ -237,8 +229,7 @@ class Spree::Admin::ResourceController < Spree::Admin::BaseController
|
|
237
229
|
end
|
238
230
|
|
239
231
|
# This method should be overridden when object_name does not match the controller name
|
240
|
-
def object_name
|
241
|
-
end
|
232
|
+
def object_name; end
|
242
233
|
|
243
234
|
# Allow all attributes to be updatable.
|
244
235
|
#
|
@@ -12,22 +12,22 @@ module Spree
|
|
12
12
|
|
13
13
|
respond_with(@object) do |format|
|
14
14
|
format.html { redirect_to collection_url }
|
15
|
-
format.js
|
15
|
+
format.js { render_js_for_destroy }
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
private
|
20
20
|
|
21
21
|
def set_shipping_category
|
22
|
-
return true if params[
|
23
|
-
@shipping_method.shipping_categories = Spree::ShippingCategory.where(id: params[
|
22
|
+
return true if params['shipping_method'][:shipping_categories] == ''
|
23
|
+
@shipping_method.shipping_categories = Spree::ShippingCategory.where(id: params['shipping_method'][:shipping_categories])
|
24
24
|
@shipping_method.save
|
25
25
|
params[:shipping_method].delete(:shipping_categories)
|
26
26
|
end
|
27
27
|
|
28
28
|
def set_zones
|
29
|
-
return true if params[
|
30
|
-
@shipping_method.zones = Spree::Zone.where(id: params[
|
29
|
+
return true if params['shipping_method'][:zones] == ''
|
30
|
+
@shipping_method.zones = Spree::Zone.where(id: params['shipping_method'][:zones])
|
31
31
|
@shipping_method.save
|
32
32
|
params[:shipping_method].delete(:zones)
|
33
33
|
end
|
@@ -13,17 +13,17 @@ module Spree
|
|
13
13
|
|
14
14
|
protected
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
def location_after_save
|
17
|
+
admin_country_states_url(@country)
|
18
|
+
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
def collection
|
21
|
+
super.order(:name)
|
22
|
+
end
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
def load_data
|
25
|
+
@countries = Country.order(:name)
|
26
|
+
end
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -35,17 +35,18 @@ module Spree
|
|
35
35
|
end
|
36
36
|
|
37
37
|
private
|
38
|
-
def stock_movement_params
|
39
|
-
params.require(:stock_movement).permit(permitted_stock_movement_attributes)
|
40
|
-
end
|
41
38
|
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
def stock_movement_params
|
40
|
+
params.require(:stock_movement).permit(permitted_stock_movement_attributes)
|
41
|
+
end
|
45
42
|
|
46
|
-
|
47
|
-
|
48
|
-
|
43
|
+
def stock_item
|
44
|
+
@stock_item ||= StockItem.find(params[:id])
|
45
|
+
end
|
46
|
+
|
47
|
+
def determine_backorderable
|
48
|
+
stock_item.backorderable = params[:stock_item].present? && params[:stock_item][:backorderable].present?
|
49
|
+
end
|
49
50
|
end
|
50
51
|
end
|
51
52
|
end
|
@@ -7,9 +7,9 @@ module Spree
|
|
7
7
|
@q = StockTransfer.ransack(params[:q])
|
8
8
|
|
9
9
|
@stock_transfers = @q.result.
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
includes(stock_movements: { stock_item: :stock_location }).
|
11
|
+
order(created_at: :desc).
|
12
|
+
page(params[:page])
|
13
13
|
end
|
14
14
|
|
15
15
|
def show
|
@@ -19,27 +19,32 @@ module Spree
|
|
19
19
|
def new; end
|
20
20
|
|
21
21
|
def create
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
if params[:variant].nil?
|
23
|
+
flash[:error] = Spree.t('stock_transfer.errors.must_have_variant')
|
24
|
+
render :new
|
25
|
+
else
|
26
|
+
variants = Hash.new(0)
|
27
|
+
params[:variant].each_with_index do |variant_id, i|
|
28
|
+
variants[variant_id] += params[:quantity][i].to_i
|
29
|
+
end
|
30
|
+
stock_transfer = StockTransfer.create(reference: params[:reference])
|
31
|
+
stock_transfer.transfer(source_location,
|
32
|
+
destination_location,
|
33
|
+
variants)
|
34
|
+
|
35
|
+
flash[:success] = Spree.t(:stock_successfully_transferred)
|
36
|
+
redirect_to admin_stock_transfer_path(stock_transfer)
|
25
37
|
end
|
26
|
-
|
27
|
-
stock_transfer = StockTransfer.create(reference: params[:reference])
|
28
|
-
stock_transfer.transfer(source_location,
|
29
|
-
destination_location,
|
30
|
-
variants)
|
31
|
-
|
32
|
-
flash[:success] = Spree.t(:stock_successfully_transferred)
|
33
|
-
redirect_to admin_stock_transfer_path(stock_transfer)
|
34
38
|
end
|
35
39
|
|
36
40
|
private
|
41
|
+
|
37
42
|
def load_stock_locations
|
38
43
|
@stock_locations = Spree::StockLocation.active.order_default
|
39
44
|
end
|
40
45
|
|
41
46
|
def source_location
|
42
|
-
@source_location ||= params.
|
47
|
+
@source_location ||= params.key?(:transfer_receive_stock) ? nil :
|
43
48
|
StockLocation.find(params[:transfer_source_location_id])
|
44
49
|
end
|
45
50
|
|
@@ -87,7 +87,7 @@ module Spree
|
|
87
87
|
|
88
88
|
def ensure_unused_store_credit
|
89
89
|
unless @store_credit.amount_used.zero?
|
90
|
-
raise StoreCreditError
|
90
|
+
raise StoreCreditError, Spree.t('store_credit.errors.cannot_change_used_store_credit')
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
@@ -1,14 +1,12 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
class TaxonsController < Spree::Admin::BaseController
|
4
|
-
|
5
4
|
before_action :load_taxonomy, only: [:create, :edit, :update]
|
6
5
|
before_action :load_taxon, only: [:edit, :update]
|
7
6
|
before_action :set_permalink_part, only: [:edit, :update]
|
8
7
|
respond_to :html, :js
|
9
8
|
|
10
|
-
def index
|
11
|
-
end
|
9
|
+
def index; end
|
12
10
|
|
13
11
|
def create
|
14
12
|
@taxon = @taxonomy.taxons.build(params[:taxon])
|
@@ -24,12 +22,10 @@ module Spree
|
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
27
|
-
def edit
|
28
|
-
end
|
25
|
+
def edit; end
|
29
26
|
|
30
27
|
def update
|
31
28
|
successful = @taxon.transaction do
|
32
|
-
|
33
29
|
parent_id = params[:taxon][:parent_id]
|
34
30
|
set_position
|
35
31
|
set_parent(parent_id)
|
@@ -41,16 +37,15 @@ module Spree
|
|
41
37
|
|
42
38
|
set_permalink_params
|
43
39
|
|
44
|
-
#check if we need to rename child taxons if parent name or permalink changes
|
40
|
+
# check if we need to rename child taxons if parent name or permalink changes
|
45
41
|
@update_children = true if params[:taxon][:name] != @taxon.name || params[:taxon][:permalink] != @taxon.permalink
|
46
42
|
|
47
43
|
@taxon.update_attributes(taxon_params)
|
48
|
-
|
49
44
|
end
|
50
45
|
if successful
|
51
46
|
flash[:success] = flash_message_for(@taxon, :successfully_updated)
|
52
47
|
|
53
|
-
#rename child taxons
|
48
|
+
# rename child taxons
|
54
49
|
rename_child_taxons if @update_children
|
55
50
|
|
56
51
|
respond_with(@taxon) do |format|
|
@@ -85,21 +80,17 @@ module Spree
|
|
85
80
|
|
86
81
|
def set_position
|
87
82
|
new_position = params[:taxon][:position]
|
88
|
-
if new_position
|
89
|
-
@taxon.child_index = new_position.to_i
|
90
|
-
end
|
83
|
+
@taxon.child_index = new_position.to_i if new_position
|
91
84
|
end
|
92
85
|
|
93
86
|
def set_parent(parent_id)
|
94
|
-
if parent_id
|
95
|
-
@taxon.parent = Taxon.find(parent_id.to_i)
|
96
|
-
end
|
87
|
+
@taxon.parent = Taxon.find(parent_id.to_i) if parent_id
|
97
88
|
end
|
98
89
|
|
99
90
|
def set_permalink_params
|
100
|
-
if params.key?
|
101
|
-
parent_permalink = @taxon.permalink.split(
|
102
|
-
parent_permalink +=
|
91
|
+
if params.key? 'permalink_part'
|
92
|
+
parent_permalink = @taxon.permalink.split('/')[0...-1].join('/')
|
93
|
+
parent_permalink += '/' unless parent_permalink.blank?
|
103
94
|
params[:taxon][:permalink] = parent_permalink + params[:permalink_part]
|
104
95
|
end
|
105
96
|
end
|
@@ -77,12 +77,12 @@ module Spree
|
|
77
77
|
|
78
78
|
protected
|
79
79
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
80
|
+
def collection
|
81
|
+
return @collection if @collection.present?
|
82
|
+
@collection = super
|
83
|
+
@search = @collection.ransack(params[:q])
|
84
|
+
@collection = @search.result.page(params[:page]).per(Spree::Config[:admin_users_per_page])
|
85
|
+
end
|
86
86
|
|
87
87
|
private
|
88
88
|
|
@@ -96,7 +96,7 @@ module Spree
|
|
96
96
|
# handling raise from Spree::Admin::ResourceController#destroy
|
97
97
|
def user_destroy_with_orders_error
|
98
98
|
invoke_callbacks(:destroy, :fails)
|
99
|
-
render status: :forbidden,
|
99
|
+
render status: :forbidden, plain: Spree.t(:error_user_destroy_with_orders)
|
100
100
|
end
|
101
101
|
|
102
102
|
def sign_in_if_change_own_password
|
@@ -1,16 +1,15 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
class VariantsIncludingMasterController < VariantsController
|
4
|
-
belongs_to
|
4
|
+
belongs_to 'spree/product', find_by: :slug
|
5
5
|
|
6
6
|
def model_class
|
7
7
|
Spree::Variant
|
8
8
|
end
|
9
9
|
|
10
10
|
def object_name
|
11
|
-
|
11
|
+
'variant'
|
12
12
|
end
|
13
|
-
|
14
13
|
end
|
15
14
|
end
|
16
15
|
end
|
@@ -9,18 +9,18 @@ module Spree
|
|
9
9
|
|
10
10
|
protected
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
def collection
|
13
|
+
params[:q] ||= {}
|
14
|
+
params[:q][:s] ||= 'name asc'
|
15
|
+
@search = super.ransack(params[:q])
|
16
|
+
@zones = @search.result.page(params[:page]).per(params[:per_page])
|
17
|
+
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
def load_data
|
20
|
+
@countries = Country.order(:name)
|
21
|
+
@states = State.order(:name)
|
22
|
+
@zones = Zone.order(:name)
|
23
|
+
end
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -1,17 +1,15 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
module AdjustmentsHelper
|
4
|
-
|
5
4
|
def display_adjustable(adjustable)
|
6
5
|
case adjustable
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
when Spree::LineItem
|
7
|
+
display_line_item(adjustable)
|
8
|
+
when Spree::Shipment
|
9
|
+
display_shipment(adjustable)
|
10
|
+
when Spree::Order
|
11
|
+
display_order(adjustable)
|
13
12
|
end
|
14
|
-
|
15
13
|
end
|
16
14
|
|
17
15
|
private
|
@@ -22,14 +20,14 @@ module Spree
|
|
22
20
|
parts << variant.product.name
|
23
21
|
parts << "(#{variant.options_text})" if variant.options_text.present?
|
24
22
|
parts << line_item.display_total
|
25
|
-
safe_join(parts,
|
23
|
+
safe_join(parts, '<br />'.html_safe)
|
26
24
|
end
|
27
25
|
|
28
26
|
def display_shipment(shipment)
|
29
27
|
"#{Spree.t(:shipment)} ##{shipment.number}<br>#{shipment.display_cost}".html_safe
|
30
28
|
end
|
31
29
|
|
32
|
-
def display_order(
|
30
|
+
def display_order(_order)
|
33
31
|
Spree.t(:order)
|
34
32
|
end
|
35
33
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
module BaseHelper
|
4
|
-
def flash_alert
|
4
|
+
def flash_alert(flash)
|
5
5
|
if flash.present?
|
6
6
|
close_button = button_tag(class: 'close', 'data-dismiss' => 'alert', 'aria-label' => Spree.t(:close)) do
|
7
7
|
content_tag('span', '×'.html_safe, 'aria-hidden' => true)
|
8
8
|
end
|
9
9
|
message = flash[:error] || flash[:notice] || flash[:success]
|
10
|
-
flash_class =
|
11
|
-
flash_class =
|
12
|
-
flash_class =
|
10
|
+
flash_class = 'danger' if flash[:error]
|
11
|
+
flash_class = 'info' if flash[:notice]
|
12
|
+
flash_class = 'success' if flash[:success]
|
13
13
|
flash_div = content_tag(:div, (close_button + message), class: "alert alert-#{flash_class} alert-auto-disappear")
|
14
14
|
content_tag(:div, flash_div, class: 'col-xs-12')
|
15
15
|
end
|
@@ -18,16 +18,14 @@ module Spree
|
|
18
18
|
def field_container(model, method, options = {}, &block)
|
19
19
|
css_classes = options[:class].to_a
|
20
20
|
css_classes << 'field'
|
21
|
-
if error_message_on(model, method).present?
|
22
|
-
css_classes << 'withError'
|
23
|
-
end
|
21
|
+
css_classes << 'withError' if error_message_on(model, method).present?
|
24
22
|
content_tag(
|
25
23
|
:div, capture(&block),
|
26
24
|
options.merge(class: css_classes.join(' '), id: "#{model}_#{method}_field")
|
27
25
|
)
|
28
26
|
end
|
29
27
|
|
30
|
-
def error_message_on(object, method,
|
28
|
+
def error_message_on(object, method, _options = {})
|
31
29
|
object = convert_to_model(object)
|
32
30
|
obj = object.respond_to?(:errors) ? object : instance_variable_get("@#{object}")
|
33
31
|
|
@@ -42,8 +40,6 @@ module Spree
|
|
42
40
|
def datepicker_field_value(date)
|
43
41
|
unless date.blank?
|
44
42
|
l(date, format: Spree.t('date_picker.format', default: '%Y/%m/%d'))
|
45
|
-
else
|
46
|
-
nil
|
47
43
|
end
|
48
44
|
end
|
49
45
|
|
@@ -53,7 +49,7 @@ module Spree
|
|
53
49
|
text_field_tag(name, value, preference_field_options(options))
|
54
50
|
when :boolean
|
55
51
|
hidden_field_tag(name, 0, id: "#{name}_hidden") +
|
56
|
-
|
52
|
+
check_box_tag(name, 1, value, preference_field_options(options))
|
57
53
|
when :string
|
58
54
|
text_field_tag(name, value, preference_field_options(options))
|
59
55
|
when :password
|
@@ -84,58 +80,56 @@ module Spree
|
|
84
80
|
|
85
81
|
def preference_field_options(options)
|
86
82
|
field_options = case options[:type]
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
83
|
+
when :integer
|
84
|
+
{
|
85
|
+
size: 10,
|
86
|
+
class: 'input_integer form-control'
|
87
|
+
}
|
88
|
+
when :boolean
|
89
|
+
{}
|
90
|
+
when :string
|
91
|
+
{
|
92
|
+
size: 10,
|
93
|
+
class: 'input_string form-control'
|
94
|
+
}
|
95
|
+
when :password
|
96
|
+
{
|
97
|
+
size: 10,
|
98
|
+
class: 'password_string form-control'
|
99
|
+
}
|
100
|
+
when :text
|
101
|
+
{
|
102
|
+
rows: 15,
|
103
|
+
cols: 85,
|
104
|
+
class: 'form-control'
|
105
|
+
}
|
106
|
+
else
|
107
|
+
{
|
108
|
+
size: 10,
|
109
|
+
class: 'input_string form-control'
|
110
|
+
}
|
115
111
|
end
|
116
112
|
|
117
|
-
field_options.merge!(
|
118
|
-
|
119
|
-
|
120
|
-
size: options[:size]
|
121
|
-
})
|
113
|
+
field_options.merge!(readonly: options[:readonly],
|
114
|
+
disabled: options[:disabled],
|
115
|
+
size: options[:size])
|
122
116
|
end
|
123
117
|
|
124
118
|
def preference_fields(object, form)
|
125
119
|
return unless object.respond_to?(:preferences)
|
126
|
-
fields = object.preferences.keys.map
|
120
|
+
fields = object.preferences.keys.map do |key|
|
127
121
|
if object.has_preference?(key)
|
128
|
-
form.label("preferred_#{key}", Spree.t(key) +
|
122
|
+
form.label("preferred_#{key}", Spree.t(key) + ': ') +
|
129
123
|
preference_field_for(form, "preferred_#{key}", type: object.preference_type(key))
|
130
124
|
end
|
131
|
-
|
125
|
+
end
|
132
126
|
safe_join(fields, '<br />'.html_safe)
|
133
127
|
end
|
134
128
|
|
135
129
|
# renders hidden field and link to remove record using nested_attributes
|
136
130
|
def link_to_icon_remove_fields(f)
|
137
131
|
url = f.object.persisted? ? [:admin, f.object] : '#'
|
138
|
-
link_to_with_icon('delete', '', url, class:
|
132
|
+
link_to_with_icon('delete', '', url, class: 'spree_remove_fields btn btn-sm btn-danger', data: { action: 'remove' }, title: Spree.t(:remove)) + f.hidden_field(:_destroy)
|
139
133
|
end
|
140
134
|
|
141
135
|
def spree_dom_id(record)
|
@@ -148,7 +142,7 @@ module Spree
|
|
148
142
|
end
|
149
143
|
|
150
144
|
def order_time(time)
|
151
|
-
[I18n.l(time.to_date), time.strftime(
|
145
|
+
[I18n.l(time.to_date), time.strftime('%l:%M %p').strip].join(' ')
|
152
146
|
end
|
153
147
|
end
|
154
148
|
end
|
@@ -2,7 +2,7 @@ module Spree
|
|
2
2
|
module Admin
|
3
3
|
module GeneralSettingsHelper
|
4
4
|
def currency_options
|
5
|
-
currencies = ::Money::Currency.table.map do |
|
5
|
+
currencies = ::Money::Currency.table.map do |_code, details|
|
6
6
|
iso = details[:iso_code]
|
7
7
|
[iso, "#{details[:name]} (#{iso})"]
|
8
8
|
end
|