spree_backend 3.4.6 → 3.5.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 +5 -5
- data/app/assets/javascripts/spree/backend.js +1 -1
- data/app/assets/javascripts/spree/backend/shipments.js +24 -3
- data/app/assets/javascripts/spree/backend/taxonomy.js.coffee +10 -6
- data/app/assets/javascripts/spree/backend/users/edit.js +18 -0
- data/app/assets/stylesheets/spree/backend/components/_buttons.scss +7 -3
- data/app/assets/stylesheets/spree/backend/components/_taxon_products_view.scss +2 -0
- data/app/assets/stylesheets/spree/backend/global/_variables.scss +2 -2
- data/app/controllers/spree/admin/adjustments_controller.rb +1 -1
- data/app/controllers/spree/admin/general_settings_controller.rb +0 -14
- data/app/controllers/spree/admin/orders_controller.rb +15 -1
- data/app/controllers/spree/admin/products_controller.rb +4 -4
- data/app/controllers/spree/admin/promotions_controller.rb +16 -1
- data/app/controllers/spree/admin/shipping_methods_controller.rb +2 -2
- data/app/controllers/spree/admin/stock_locations_controller.rb +4 -3
- data/app/controllers/spree/admin/stores_controller.rb +79 -0
- data/app/controllers/spree/admin/users_controller.rb +8 -6
- data/app/controllers/spree/admin/variants_controller.rb +6 -1
- data/app/helpers/spree/admin/navigation_helper.rb +18 -2
- data/app/models/spree/backend_configuration.rb +2 -1
- data/app/views/spree/admin/general_settings/edit.html.erb +0 -50
- data/app/views/spree/admin/orders/_store_form.html.erb +18 -0
- data/app/views/spree/admin/orders/index.html.erb +11 -4
- data/app/views/spree/admin/orders/store.html.erb +7 -0
- data/app/views/spree/admin/products/_form.html.erb +7 -7
- data/app/views/spree/admin/products/edit.html.erb +3 -0
- data/app/views/spree/admin/promotions/_form.html.erb +7 -0
- data/app/views/spree/admin/promotions/_promotion_action.html.erb +1 -1
- data/app/views/spree/admin/promotions/_promotion_rule.html.erb +1 -1
- data/app/views/spree/admin/promotions/actions/_free_shipping.html.erb +0 -0
- data/app/views/spree/admin/promotions/index.html.erb +1 -0
- data/app/views/spree/admin/shared/_destroy.js.erb +1 -0
- data/app/views/spree/admin/shared/_order_tabs.html.erb +6 -0
- data/app/views/spree/admin/shared/_update_store_credit.js.erb +1 -0
- data/app/views/spree/admin/shared/sub_menu/_configuration.html.erb +1 -1
- data/app/views/spree/admin/shipping_methods/_form.html.erb +1 -1
- data/app/views/spree/admin/shipping_methods/index.html.erb +1 -1
- data/app/views/spree/admin/stores/_form.html.erb +48 -0
- data/app/views/spree/admin/{trackers → stores}/edit.html.erb +5 -5
- data/app/views/spree/admin/stores/index.html.erb +38 -0
- data/app/views/spree/admin/stores/new.html.erb +11 -0
- data/app/views/spree/admin/users/_addresses_form.html.erb +7 -0
- data/app/views/spree/admin/users/_lifetime_stats.html.erb +2 -2
- data/config/routes.rb +11 -1
- data/vendor/assets/javascripts/handlebars.js +7 -2724
- data/vendor/assets/javascripts/modernizr.js +3 -4
- data/vendor/assets/javascripts/underscore-min.js +3 -4
- metadata +20 -16
- data/app/controllers/spree/admin/trackers_controller.rb +0 -6
- data/app/views/spree/admin/trackers/_form.html.erb +0 -36
- data/app/views/spree/admin/trackers/index.html.erb +0 -44
- data/app/views/spree/admin/trackers/new.html.erb +0 -13
- data/vendor/assets/javascripts/underscore-min.map +0 -1
- data/vendor/assets/javascripts/velocity.js +0 -3831
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2abaf3f1c27f9be3bee8cafdca91363f6535665a
|
4
|
+
data.tar.gz: 63934daca736fc690be8336282148c18c8cfab3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8137421d3c391e21e44dba3e38fff09e51698e0b68c484d21104a7809e0fac8101b6e3c892e486dd70aee55766252d4aead2dbe8946319a697a36185f3570475
|
7
|
+
data.tar.gz: 2206c3665bff0cead6c01309c0f0844f0938ae0fa2ae22491b48ac4cc89713751f1efb1437897f532f6eed313686743be68ec39cf8618c7c3b0e249c7c3c0931
|
@@ -10,7 +10,6 @@
|
|
10
10
|
//= require jquery-ui/widgets/autocomplete
|
11
11
|
//= require select2
|
12
12
|
//= require underscore-min.js
|
13
|
-
//= require velocity
|
14
13
|
|
15
14
|
//= require spree
|
16
15
|
//= require spree/backend/spree-select2
|
@@ -45,6 +44,7 @@
|
|
45
44
|
//= require spree/backend/taxon_tree_menu
|
46
45
|
//= require spree/backend/taxonomy
|
47
46
|
//= require spree/backend/taxons
|
47
|
+
//= require spree/backend/users/edit
|
48
48
|
//= require spree/backend/user_picker
|
49
49
|
//= require spree/backend/tag_picker
|
50
50
|
//= require spree/backend/variant_autocomplete
|
@@ -125,6 +125,19 @@ $(document).ready(function () {
|
|
125
125
|
$('a.edit-tracking').click(toggleTrackingEdit);
|
126
126
|
$('a.cancel-tracking').click(toggleTrackingEdit);
|
127
127
|
|
128
|
+
var createTrackingValueContent = function (data) {
|
129
|
+
var selected_shipping_method = data.shipping_methods.filter(function (method) {
|
130
|
+
return method.id === data.selected_shipping_rate.shipping_method_id;
|
131
|
+
})[0];
|
132
|
+
|
133
|
+
if (selected_shipping_method && selected_shipping_method.tracking_url) {
|
134
|
+
var shipmentTrackingUrl = selected_shipping_method.tracking_url.replace(/:tracking/, data.tracking);
|
135
|
+
return '<a target="_blank" href="' + shipmentTrackingUrl + '">' + data.tracking + '<a>';
|
136
|
+
}
|
137
|
+
|
138
|
+
return data.tracking;
|
139
|
+
}
|
140
|
+
|
128
141
|
// handle tracking save
|
129
142
|
$('[data-hook=admin_shipment_form] a.save-tracking').on('click', function (event) {
|
130
143
|
event.preventDefault();
|
@@ -148,7 +161,12 @@ $(document).ready(function () {
|
|
148
161
|
|
149
162
|
var show = link.parents('tbody').find('tr.show-tracking');
|
150
163
|
show.toggle();
|
151
|
-
|
164
|
+
|
165
|
+
if (data.tracking) {
|
166
|
+
show.find('.tracking-value').html($("<strong>").html(Spree.translations.tracking + ": ")).append(createTrackingValueContent(data));
|
167
|
+
} else {
|
168
|
+
show.find('.tracking-value').html(Spree.translations.no_tracking_present);
|
169
|
+
}
|
152
170
|
});
|
153
171
|
});
|
154
172
|
});
|
@@ -212,6 +230,9 @@ toggleItemEdit = function(){
|
|
212
230
|
|
213
231
|
startItemSplit = function(event){
|
214
232
|
event.preventDefault();
|
233
|
+
$('.cancel-split').each(function(){
|
234
|
+
$(this).click()
|
235
|
+
})
|
215
236
|
var link = $(this);
|
216
237
|
link.parent().find('a.edit-item').toggle();
|
217
238
|
link.parent().find('a.split-item').toggle();
|
@@ -279,7 +300,7 @@ completeItemSplit = function(event) {
|
|
279
300
|
token: Spree.api_key
|
280
301
|
}
|
281
302
|
}).error(function(msg) {
|
282
|
-
alert(msg.responseJSON
|
303
|
+
alert(msg.responseJSON.exception);
|
283
304
|
}).done(function(msg) {
|
284
305
|
window.location.reload();
|
285
306
|
});
|
@@ -297,7 +318,7 @@ completeItemSplit = function(event) {
|
|
297
318
|
token: Spree.api_key
|
298
319
|
}
|
299
320
|
}).error(function(msg) {
|
300
|
-
alert(msg.responseJSON
|
321
|
+
alert(msg.responseJSON.exception);
|
301
322
|
}).done(function(msg) {
|
302
323
|
window.location.reload();
|
303
324
|
});
|
@@ -1,6 +1,6 @@
|
|
1
|
-
handle_ajax_error = (
|
1
|
+
handle_ajax_error = (last_rollback) ->
|
2
2
|
$.jstree.rollback(last_rollback)
|
3
|
-
|
3
|
+
show_flash("error", "<strong>" + Spree.translations.server_error + "</strong><br />" + Spree.translations.taxonomy_tree_error)
|
4
4
|
|
5
5
|
handle_move = (e, data) ->
|
6
6
|
last_rollback = data.rlbk
|
@@ -20,7 +20,8 @@ handle_move = (e, data) ->
|
|
20
20
|
"taxon[child_index]": position,
|
21
21
|
token: Spree.api_key
|
22
22
|
},
|
23
|
-
error:
|
23
|
+
error: (XMLHttpRequest, textStatus, errorThrown) ->
|
24
|
+
handle_ajax_error(last_rollback)
|
24
25
|
|
25
26
|
true
|
26
27
|
|
@@ -41,7 +42,8 @@ handle_create = (e, data) ->
|
|
41
42
|
"taxon[child_index]": position,
|
42
43
|
token: Spree.api_key
|
43
44
|
},
|
44
|
-
error:
|
45
|
+
error: (XMLHttpRequest, textStatus, errorThrown) ->
|
46
|
+
handle_ajax_error(last_rollback)
|
45
47
|
success: (data,result) ->
|
46
48
|
node.prop('id', data.id)
|
47
49
|
|
@@ -62,7 +64,8 @@ handle_rename = (e, data) ->
|
|
62
64
|
"taxon[name]": name,
|
63
65
|
token: Spree.api_key
|
64
66
|
},
|
65
|
-
error:
|
67
|
+
error: (XMLHttpRequest, textStatus, errorThrown) ->
|
68
|
+
handle_ajax_error(last_rollback)
|
66
69
|
|
67
70
|
handle_delete = (e, data) ->
|
68
71
|
last_rollback = data.rlbk
|
@@ -79,7 +82,8 @@ handle_delete = (e, data) ->
|
|
79
82
|
_method: "delete",
|
80
83
|
token: Spree.api_key
|
81
84
|
},
|
82
|
-
error:
|
85
|
+
error: (XMLHttpRequest, textStatus, errorThrown) ->
|
86
|
+
handle_ajax_error(last_rollback)
|
83
87
|
else
|
84
88
|
$.jstree.rollback(last_rollback)
|
85
89
|
last_rollback = null
|
@@ -0,0 +1,18 @@
|
|
1
|
+
$( document ).ready(function() {
|
2
|
+
var use_billing = $('#user_use_billing');
|
3
|
+
|
4
|
+
if(use_billing.is(':checked')) {
|
5
|
+
$('#shipping').hide();
|
6
|
+
}
|
7
|
+
|
8
|
+
use_billing.change(function() {
|
9
|
+
if(this.checked){
|
10
|
+
$('#shipping').hide();
|
11
|
+
return $('#shipping input, #shipping select').prop('disabled', true);
|
12
|
+
}
|
13
|
+
else {
|
14
|
+
$('#shipping').show();
|
15
|
+
$('#shipping input, #shipping select').prop('disabled', false);
|
16
|
+
}
|
17
|
+
});
|
18
|
+
});
|
@@ -1,4 +1,5 @@
|
|
1
|
-
.btn,
|
1
|
+
.btn,
|
2
|
+
.nav-pills > li > a {
|
2
3
|
letter-spacing: 1px;
|
3
4
|
vertical-align: middle;
|
4
5
|
transition: color 0.1s linear 0s,background-color 0.1s linear 0s,opacity 0.2s linear 0s !important;
|
@@ -9,25 +10,28 @@
|
|
9
10
|
-webkit-font-feature-settings: "kern" 1;
|
10
11
|
-moz-font-feature-settings: "kern" 1;
|
11
12
|
}
|
13
|
+
|
12
14
|
.btn {
|
13
15
|
text-align: center;
|
14
16
|
|
15
17
|
&:focus {
|
16
18
|
outline: 0 !important;
|
17
19
|
}
|
18
|
-
|
20
|
+
|
19
21
|
&:hover,
|
20
22
|
&:focus,
|
21
23
|
&:active,
|
22
24
|
&.active,
|
23
25
|
&.disabled,
|
24
26
|
&[disabled] {
|
25
|
-
|
27
|
+
box-shadow: none;
|
26
28
|
}
|
27
29
|
|
28
30
|
.glyphicon {
|
29
31
|
padding-right: 3px;
|
30
32
|
}
|
33
|
+
|
34
|
+
.ship { color: $btn-success-color; }
|
31
35
|
}
|
32
36
|
|
33
37
|
.btn-sm .glyphicon { padding: 0; }
|
@@ -19,7 +19,7 @@
|
|
19
19
|
/*------------------------------------------
|
20
20
|
Fonts
|
21
21
|
-----------------------------------------*/
|
22
|
-
$headings-font-family: "Segoe UI",
|
22
|
+
$headings-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
23
23
|
$headings-font-weight: 300;
|
24
24
|
|
25
25
|
/*------------------------------------------
|
@@ -34,4 +34,4 @@
|
|
34
34
|
/*------------------------------------------
|
35
35
|
Wells
|
36
36
|
-----------------------------------------*/
|
37
|
-
$well-bg: #fbfbfb;
|
37
|
+
$well-bg: #fbfbfb;
|
@@ -3,8 +3,6 @@ module Spree
|
|
3
3
|
class GeneralSettingsController < Spree::Admin::BaseController
|
4
4
|
include Spree::Backend::Callbacks
|
5
5
|
|
6
|
-
before_action :set_store
|
7
|
-
|
8
6
|
def edit
|
9
7
|
@preferences_security = []
|
10
8
|
end
|
@@ -15,8 +13,6 @@ module Spree
|
|
15
13
|
Spree::Config[name] = value
|
16
14
|
end
|
17
15
|
|
18
|
-
current_store.update_attributes store_params
|
19
|
-
|
20
16
|
flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:general_settings))
|
21
17
|
redirect_to edit_admin_general_settings_path
|
22
18
|
end
|
@@ -26,16 +22,6 @@ module Spree
|
|
26
22
|
invoke_callbacks(:clear_cache, :after)
|
27
23
|
head :no_content
|
28
24
|
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def store_params
|
33
|
-
params.require(:store).permit(permitted_store_attributes)
|
34
|
-
end
|
35
|
-
|
36
|
-
def set_store
|
37
|
-
@store = current_store
|
38
|
-
end
|
39
25
|
end
|
40
26
|
end
|
41
27
|
end
|
@@ -2,7 +2,7 @@ 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: [:edit, :update, :cancel, :resume, :approve, :resend, :open_adjustments, :close_adjustments, :cart]
|
5
|
+
before_action :load_order, only: [:edit, :update, :cancel, :resume, :approve, :resend, :open_adjustments, :close_adjustments, :cart, :store, :set_store]
|
6
6
|
|
7
7
|
respond_to :html
|
8
8
|
|
@@ -75,6 +75,10 @@ module Spree
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
+
def store
|
79
|
+
@stores = Spree::Store.all
|
80
|
+
end
|
81
|
+
|
78
82
|
def update
|
79
83
|
if @order.update_attributes(params[:order]) && @order.line_items.present?
|
80
84
|
@order.update_with_updater!
|
@@ -130,6 +134,16 @@ module Spree
|
|
130
134
|
respond_with(@order) { |format| format.html { redirect_back fallback_location: spree.admin_order_adjustments_url(@order) } }
|
131
135
|
end
|
132
136
|
|
137
|
+
def set_store
|
138
|
+
if @order.update_attributes(store_id: params[:order][:store_id])
|
139
|
+
flash[:success] = flash_message_for(@order, :successfully_updated)
|
140
|
+
else
|
141
|
+
flash[:error] = @order.errors.full_messages.join(', ')
|
142
|
+
end
|
143
|
+
|
144
|
+
redirect_to store_admin_order_url(@order)
|
145
|
+
end
|
146
|
+
|
133
147
|
private
|
134
148
|
|
135
149
|
def order_params
|
@@ -50,7 +50,7 @@ module Spree
|
|
50
50
|
if @product.destroy
|
51
51
|
flash[:success] = Spree.t('notice_messages.product_deleted')
|
52
52
|
else
|
53
|
-
flash[:error] = Spree.t('notice_messages.product_not_deleted', error: @product.errors.full_messages.
|
53
|
+
flash[:error] = Spree.t('notice_messages.product_not_deleted', error: @product.errors.full_messages.to_sentence)
|
54
54
|
end
|
55
55
|
rescue ActiveRecord::RecordNotDestroyed => e
|
56
56
|
flash[:error] = Spree.t('notice_messages.product_not_deleted', error: e.message)
|
@@ -69,12 +69,12 @@ module Spree
|
|
69
69
|
flash[:success] = Spree.t('notice_messages.product_cloned')
|
70
70
|
redirect_to edit_admin_product_url(@new)
|
71
71
|
else
|
72
|
-
flash[:error] = Spree.t('notice_messages.product_not_cloned')
|
72
|
+
flash[:error] = Spree.t('notice_messages.product_not_cloned', error: @new.errors.full_messages.to_sentence)
|
73
73
|
redirect_to admin_products_url
|
74
74
|
end
|
75
|
-
rescue ActiveRecord::RecordInvalid
|
75
|
+
rescue ActiveRecord::RecordInvalid => e
|
76
76
|
# Handle error on uniqueness validation on product fields
|
77
|
-
flash[:error] = Spree.t('notice_messages.product_not_cloned')
|
77
|
+
flash[:error] = Spree.t('notice_messages.product_not_cloned', error: e.message)
|
78
78
|
redirect_to admin_products_url
|
79
79
|
end
|
80
80
|
|
@@ -1,10 +1,25 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
class PromotionsController < ResourceController
|
4
|
-
before_action :load_data
|
4
|
+
before_action :load_data, except: :clone
|
5
5
|
|
6
6
|
helper 'spree/admin/promotion_rules'
|
7
7
|
|
8
|
+
def clone
|
9
|
+
promotion = Spree::Promotion.find(params[:id])
|
10
|
+
duplicator = Spree::PromotionHandler::PromotionDuplicator.new(promotion)
|
11
|
+
|
12
|
+
@new_promo = duplicator.duplicate
|
13
|
+
|
14
|
+
if @new_promo.errors.empty?
|
15
|
+
flash[:success] = Spree.t('promotion_cloned')
|
16
|
+
redirect_to edit_admin_promotion_url(@new_promo)
|
17
|
+
else
|
18
|
+
flash[:error] = Spree.t('promotion_not_cloned', error: @new_promo.errors.full_messages.to_sentence)
|
19
|
+
redirect_to admin_promotions_url(@new_promo)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
8
23
|
protected
|
9
24
|
|
10
25
|
def location_after_save
|
@@ -19,14 +19,14 @@ module Spree
|
|
19
19
|
private
|
20
20
|
|
21
21
|
def set_shipping_category
|
22
|
-
return true if params['shipping_method'][:shipping_categories]
|
22
|
+
return true if params['shipping_method'][:shipping_categories].blank?
|
23
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['shipping_method'][:zones]
|
29
|
+
return true if params['shipping_method'][:zones].blank?
|
30
30
|
@shipping_method.zones = Spree::Zone.where(id: params['shipping_method'][:zones])
|
31
31
|
@shipping_method.save
|
32
32
|
params[:shipping_method].delete(:zones)
|
@@ -7,9 +7,10 @@ module Spree
|
|
7
7
|
|
8
8
|
def set_country
|
9
9
|
@stock_location.country = Spree::Country.default
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
unless @stock_location.country
|
11
|
+
flash[:error] = Spree.t(:stock_locations_need_a_default_country)
|
12
|
+
redirect_to admin_stock_locations_path
|
13
|
+
end
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
class StoresController < Spree::Admin::BaseController
|
4
|
+
before_action :load_store, only: [:new, :edit, :update]
|
5
|
+
|
6
|
+
def index
|
7
|
+
@stores = Spree::Store.all
|
8
|
+
end
|
9
|
+
|
10
|
+
def create
|
11
|
+
@store = Spree::Store.new(permitted_store_params)
|
12
|
+
|
13
|
+
if @store.save
|
14
|
+
flash[:success] = flash_message_for(@store, :successfully_created)
|
15
|
+
redirect_to admin_stores_path
|
16
|
+
else
|
17
|
+
flash[:error] = "#{Spree.t('store.errors.unable_to_create')}: #{@store.errors.full_messages.join(', ')}"
|
18
|
+
render :new
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def update
|
23
|
+
@store.assign_attributes(permitted_store_params)
|
24
|
+
|
25
|
+
if @store.save
|
26
|
+
flash[:success] = flash_message_for(@store, :successfully_updated)
|
27
|
+
redirect_to admin_stores_path
|
28
|
+
else
|
29
|
+
flash[:error] = "#{Spree.t('store.errors.unable_to_update')}: #{@store.errors.full_messages.join(', ')}"
|
30
|
+
render :edit
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def destroy
|
35
|
+
@store = Spree::Store.find(params[:id])
|
36
|
+
|
37
|
+
if @store.destroy
|
38
|
+
flash[:success] = flash_message_for(@store, :successfully_removed)
|
39
|
+
respond_with(@store) do |format|
|
40
|
+
format.html { redirect_to admin_stores_path }
|
41
|
+
format.js { render_js_for_destroy }
|
42
|
+
end
|
43
|
+
else
|
44
|
+
render plain: "#{Spree.t('store.errors.unable_to_delete')}: #{@store.errors.full_messages.join(', ')}", status: :unprocessable_entity
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def set_default
|
49
|
+
store = Spree::Store.find(params[:id])
|
50
|
+
stores = Spree::Store.where.not(id: params[:id])
|
51
|
+
|
52
|
+
ApplicationRecord.transaction do
|
53
|
+
store.update(default: true)
|
54
|
+
stores.update_all(default: false)
|
55
|
+
end
|
56
|
+
|
57
|
+
if store.errors.empty?
|
58
|
+
flash[:success] = Spree.t(:store_set_as_default, store: store.name)
|
59
|
+
else
|
60
|
+
flash[:error] = "#{Spree.t(:store_not_set_as_default, store: store.name)} #{store.errors.full_messages.join(', ')}"
|
61
|
+
end
|
62
|
+
|
63
|
+
redirect_to admin_stores_path
|
64
|
+
end
|
65
|
+
|
66
|
+
protected
|
67
|
+
|
68
|
+
def permitted_store_params
|
69
|
+
params.require(:store).permit(permitted_store_attributes)
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def load_store
|
75
|
+
@store = Spree::Store.find_by(id: params[:id]) || Spree::Store.new
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|