spree_backend 4.3.0.rc1 → 4.3.0.rc2
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/global/select2_autocomplete.es6 +20 -7
- data/app/assets/javascripts/spree/backend/global/tinymce.es6 +1 -1
- data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +6 -0
- data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +7 -1
- data/app/controllers/spree/admin/images_controller.rb +1 -1
- data/app/controllers/spree/admin/orders_controller.rb +1 -1
- data/app/controllers/spree/admin/payment_methods_controller.rb +2 -2
- data/app/controllers/spree/admin/products_controller.rb +1 -1
- data/app/controllers/spree/admin/resource_controller.rb +8 -11
- data/app/views/spree/admin/products/_form.html.erb +13 -2
- data/app/views/spree/admin/properties/index.html.erb +10 -0
- data/app/views/spree/admin/shared/_account_nav.html.erb +2 -2
- data/app/views/spree/admin/users/_lifetime_stats.html.erb +16 -4
- data/spree_backend.gemspec +1 -1
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b552e452716a6965ec77028e7de7ee0ffec1b444fc7b3bbf019f9030754efbda
|
4
|
+
data.tar.gz: a20695449a9e53981d1291f4b306bb837b1b70b328228cf43f0ef142c1e2a19e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5d1ba5defe556748572163de7e1492ab6493b7f40beca608d9b8f490c064396335a661783074cef046fba09460a3b7179aca8886bf31ffab8a20478393eac15
|
7
|
+
data.tar.gz: 43efc1472186e5b332e8733fbacb4a3fee831511c906860704d9b008ecd8e4301ac7ad7be68a8a34d9994c5c208899dcf312d960c0eee77e7b840370cb223ce7
|
@@ -34,11 +34,16 @@
|
|
34
34
|
// data-autocomplete-additional-term-value="Spree::Cms::Pages::Homepage" <- Additional hard coded term | DEFAULT: null (not used)
|
35
35
|
|
36
36
|
document.addEventListener('DOMContentLoaded', function() {
|
37
|
-
|
38
|
-
select2Autocompletes.forEach(element => buildParamsFromDataAttrs(element))
|
37
|
+
loadAutoCompleteParams()
|
39
38
|
})
|
40
39
|
|
41
|
-
|
40
|
+
// eslint-disable-next-line no-unused-vars
|
41
|
+
function loadAutoCompleteParams() {
|
42
|
+
const select2Autocompletes = document.querySelectorAll('select[data-autocomplete-url-value]')
|
43
|
+
select2Autocompletes.forEach(element => buildParamsFromDataAttrs(element))
|
44
|
+
}
|
45
|
+
|
46
|
+
function buildParamsFromDataAttrs(element) {
|
42
47
|
$(element).select2Autocomplete({
|
43
48
|
// Required Attributes
|
44
49
|
apiUrl: Spree.routes[element.dataset.autocompleteUrlValue],
|
@@ -62,6 +67,8 @@ function buildParamsFromDataAttrs (element) {
|
|
62
67
|
$.fn.select2Autocomplete = function(params) {
|
63
68
|
// Required params
|
64
69
|
const apiUrl = params.apiUrl || null
|
70
|
+
const resourcePlural = apiUrl.match(/([^/]*)\/*$/)[1]
|
71
|
+
const resourceSingular = resourcePlural.slice(0, -1)
|
65
72
|
|
66
73
|
// Optional Params
|
67
74
|
const select2placeHolder = params.placeholder || Spree.translations.search
|
@@ -76,14 +83,14 @@ $.fn.select2Autocomplete = function(params) {
|
|
76
83
|
|
77
84
|
function formatList(values) {
|
78
85
|
if (customReturnId) {
|
79
|
-
return values.map(function
|
86
|
+
return values.map(function(obj) {
|
80
87
|
return {
|
81
88
|
id: obj.attributes[customReturnId],
|
82
89
|
text: obj.attributes[returnAttribute]
|
83
90
|
}
|
84
91
|
})
|
85
92
|
} else {
|
86
|
-
return values.map(function
|
93
|
+
return values.map(function(obj) {
|
87
94
|
return {
|
88
95
|
id: obj.id,
|
89
96
|
text: obj.attributes[returnAttribute]
|
@@ -101,8 +108,11 @@ $.fn.select2Autocomplete = function(params) {
|
|
101
108
|
ajax: {
|
102
109
|
url: apiUrl,
|
103
110
|
headers: Spree.apiV2Authentication(),
|
104
|
-
data: function
|
111
|
+
data: function(params) {
|
105
112
|
return {
|
113
|
+
fields: {
|
114
|
+
[resourceSingular]: returnAttribute
|
115
|
+
},
|
106
116
|
filter: {
|
107
117
|
[searchQuery]: params.term
|
108
118
|
}
|
@@ -124,8 +134,11 @@ $.fn.select2Autocomplete = function(params) {
|
|
124
134
|
ajax: {
|
125
135
|
url: apiUrl,
|
126
136
|
headers: Spree.apiV2Authentication(),
|
127
|
-
data: function
|
137
|
+
data: function(params) {
|
128
138
|
return {
|
139
|
+
fields: {
|
140
|
+
[resourceSingular]: returnAttribute
|
141
|
+
},
|
129
142
|
filter: {
|
130
143
|
[searchQuery]: params.term,
|
131
144
|
[additionalQuery]: additionalTerm
|
@@ -6,6 +6,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
6
6
|
'image table paste code link table'
|
7
7
|
],
|
8
8
|
menubar: false,
|
9
|
-
toolbar: 'undo redo | styleselect | bold italic link | alignleft aligncenter alignright alignjustify | table | bullist numlist outdent indent | code '
|
9
|
+
toolbar: 'undo redo | styleselect | bold italic link forecolor backcolor | alignleft aligncenter alignright alignjustify | table | bullist numlist outdent indent | code '
|
10
10
|
});
|
11
11
|
})
|
@@ -1,6 +1,8 @@
|
|
1
1
|
$.fn.optionTypeAutocomplete = function () {
|
2
2
|
'use strict'
|
3
3
|
|
4
|
+
console.warn('optionTypeAutocomplete is deprecated and will be removed in Spree 5.0')
|
5
|
+
|
4
6
|
this.select2({
|
5
7
|
minimumInputLength: 2,
|
6
8
|
multiple: true,
|
@@ -23,5 +25,9 @@ $.fn.optionTypeAutocomplete = function () {
|
|
23
25
|
}
|
24
26
|
|
25
27
|
$(document).ready(function () {
|
28
|
+
var productOptionTypeSelector = document.getElementById('product_option_type_ids')
|
29
|
+
if (productOptionTypeSelector == null) return
|
30
|
+
if (productOptionTypeSelector.hasAttribute('data-autocomplete-url-value')) return
|
31
|
+
|
26
32
|
$('#product_option_type_ids').optionTypeAutocomplete()
|
27
33
|
})
|
@@ -2,6 +2,8 @@ $.fn.taxonAutocomplete = function() {
|
|
2
2
|
'use strict'
|
3
3
|
|
4
4
|
function formatTaxonList(values) {
|
5
|
+
console.warn('taxonAutocomplete is deprecated and will be removed in Spree 5.0')
|
6
|
+
|
5
7
|
return values.map(function (obj) {
|
6
8
|
return {
|
7
9
|
id: obj.id,
|
@@ -20,7 +22,7 @@ $.fn.taxonAutocomplete = function() {
|
|
20
22
|
data: function (params) {
|
21
23
|
return {
|
22
24
|
q: {
|
23
|
-
name_cont: params.term
|
25
|
+
name_cont: params.term
|
24
26
|
},
|
25
27
|
token: Spree.api_key
|
26
28
|
}
|
@@ -35,5 +37,9 @@ $.fn.taxonAutocomplete = function() {
|
|
35
37
|
}
|
36
38
|
|
37
39
|
$(document).ready(function () {
|
40
|
+
var productTaxonSelector = document.getElementById('product_taxon_ids')
|
41
|
+
if (productTaxonSelector == null) return
|
42
|
+
if (productTaxonSelector.hasAttribute('data-autocomplete-url-value')) return
|
43
|
+
|
38
44
|
$('#product_taxon_ids').taxonAutocomplete()
|
39
45
|
})
|
@@ -113,7 +113,7 @@ module Spree
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def resend
|
116
|
-
|
116
|
+
@order.deliver_order_confirmation_email
|
117
117
|
flash[:success] = Spree.t(:order_email_resent)
|
118
118
|
|
119
119
|
redirect_back fallback_location: spree.edit_admin_order_url(@order)
|
@@ -10,7 +10,7 @@ module Spree
|
|
10
10
|
def create
|
11
11
|
@payment_method = params[:payment_method].delete(:type).constantize.new(payment_method_params)
|
12
12
|
@object = @payment_method
|
13
|
-
|
13
|
+
set_current_store
|
14
14
|
invoke_callbacks(:create, :before)
|
15
15
|
if @payment_method.save
|
16
16
|
invoke_callbacks(:create, :after)
|
@@ -39,7 +39,7 @@ module Spree
|
|
39
39
|
end
|
40
40
|
|
41
41
|
if @payment_method.update(attributes)
|
42
|
-
|
42
|
+
set_current_store
|
43
43
|
invoke_callbacks(:update, :after)
|
44
44
|
flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:payment_method))
|
45
45
|
redirect_to spree.edit_admin_payment_method_path(@payment_method)
|
@@ -30,7 +30,7 @@ module Spree
|
|
30
30
|
end
|
31
31
|
invoke_callbacks(:update, :before)
|
32
32
|
if @object.update(permitted_resource_params)
|
33
|
-
|
33
|
+
set_current_store
|
34
34
|
invoke_callbacks(:update, :after)
|
35
35
|
flash[:success] = flash_message_for(@object, :successfully_updated)
|
36
36
|
respond_with(@object) do |format|
|
@@ -3,7 +3,8 @@ class Spree::Admin::ResourceController < Spree::Admin::BaseController
|
|
3
3
|
|
4
4
|
helper_method :new_object_url, :edit_object_url, :object_url, :collection_url
|
5
5
|
before_action :load_resource, except: :update_positions
|
6
|
-
before_action :set_currency, :
|
6
|
+
before_action :set_currency, :set_current_store, only: [:new, :create]
|
7
|
+
|
7
8
|
rescue_from ActiveRecord::RecordNotFound, with: :resource_not_found
|
8
9
|
|
9
10
|
respond_to :html
|
@@ -26,7 +27,7 @@ class Spree::Admin::ResourceController < Spree::Admin::BaseController
|
|
26
27
|
def update
|
27
28
|
invoke_callbacks(:update, :before)
|
28
29
|
if @object.update(permitted_resource_params)
|
29
|
-
|
30
|
+
set_current_store
|
30
31
|
invoke_callbacks(:update, :after)
|
31
32
|
respond_with(@object) do |format|
|
32
33
|
format.html do
|
@@ -207,21 +208,17 @@ class Spree::Admin::ResourceController < Spree::Admin::BaseController
|
|
207
208
|
collection_url
|
208
209
|
end
|
209
210
|
|
210
|
-
def
|
211
|
+
def set_current_store
|
211
212
|
return if @object.nil?
|
212
213
|
|
213
|
-
@object
|
214
|
-
@object.cost_currency = current_currency if model_class.method_defined?(:cost_currency=)
|
214
|
+
ensure_current_store(@object)
|
215
215
|
end
|
216
216
|
|
217
|
-
def
|
217
|
+
def set_currency
|
218
218
|
return if @object.nil?
|
219
219
|
|
220
|
-
|
221
|
-
|
222
|
-
elsif model_class.method_defined?(:stores) && @object.stores.exclude?(current_store)
|
223
|
-
@object.stores << current_store
|
224
|
-
end
|
220
|
+
@object.currency = current_currency if model_class.method_defined?(:currency=)
|
221
|
+
@object.cost_currency = current_currency if model_class.method_defined?(:cost_currency=)
|
225
222
|
end
|
226
223
|
|
227
224
|
# URL helpers
|
@@ -204,7 +204,12 @@
|
|
204
204
|
<%= f.label :taxon_ids, Spree.t(:taxons) %>
|
205
205
|
|
206
206
|
<% if can? :modify, Spree::Classification %>
|
207
|
-
<%= f.select :taxon_ids, options_from_collection_for_select(@product.taxons, :id, :pretty_name, @product.taxon_ids),
|
207
|
+
<%= f.select :taxon_ids, options_from_collection_for_select(@product.taxons, :id, :pretty_name, @product.taxon_ids),
|
208
|
+
{ include_hidden: true },
|
209
|
+
multiple: true,
|
210
|
+
data: { autocomplete_url_value: 'taxons_api_v2',
|
211
|
+
autocomplete_return_attr_value: 'pretty_name',
|
212
|
+
autocomplete_multiple_value: true } %>
|
208
213
|
<% elsif @product.taxons.any? %>
|
209
214
|
<ul class="text_list">
|
210
215
|
<% @product.taxons.each do |taxon| %>
|
@@ -223,7 +228,13 @@
|
|
223
228
|
<%= f.label :option_type_ids, Spree.t(:option_types) %>
|
224
229
|
|
225
230
|
<% if can? :modify, Spree::ProductOptionType %>
|
226
|
-
|
231
|
+
<%= f.select :option_type_ids, options_from_collection_for_select(@product.option_types, :id, :name, @product.option_type_ids),
|
232
|
+
{ include_hidden: true },
|
233
|
+
multiple: true,
|
234
|
+
class: 'select2-hidden-accessible',
|
235
|
+
data: { autocomplete_url_value: 'option_types_api_v2',
|
236
|
+
autocomplete_return_attr_value: 'name',
|
237
|
+
autocomplete_multiple_value: true } %>
|
227
238
|
<% elsif @product.option_types.any? %>
|
228
239
|
<ul class="text_list">
|
229
240
|
<% @product.option_types.each do |type| %>
|
@@ -28,6 +28,16 @@
|
|
28
28
|
</div>
|
29
29
|
</div>
|
30
30
|
|
31
|
+
<div class="row">
|
32
|
+
<div class="col-12 col-lg-6">
|
33
|
+
<div class="form-group">
|
34
|
+
<%= label_tag :q_filterable_eq, Spree.t(:filterable_status) %>
|
35
|
+
<%= f.select :filterable_eq, options_for_select([[Spree.t(:filterable), true], [Spree.t(:non_filterable), false]]), { include_blank: true }, class: 'select2-clear js-filterable' %>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
|
31
41
|
<div class="form-actions" data-hook="admin_pproperties_index_search_buttons">
|
32
42
|
<%= button Spree.t(:search), 'search.svg' %>
|
33
43
|
</div>
|
@@ -37,7 +37,7 @@
|
|
37
37
|
|
38
38
|
<div class="dropdown-divider m-0"></div>
|
39
39
|
|
40
|
-
<%= link_to 'http://
|
40
|
+
<%= link_to 'http://spreecommerce.org/contact', target: :blank, class: 'd-block text-dark py-3 px-4 dropdown-item' do %>
|
41
41
|
<%= svg_icon name: "info.svg", width: '18', height: '18' %>
|
42
42
|
|
43
43
|
<%= Spree.t(:support) %>
|
@@ -49,7 +49,7 @@
|
|
49
49
|
<%= Spree.t(:join_slack) %>
|
50
50
|
<% end %>
|
51
51
|
|
52
|
-
<%= link_to 'https://
|
52
|
+
<%= link_to 'https://dev-docs.spreecommerce.org/extensions/extensions', target: :blank, class: 'd-block text-dark py-3 px-4 dropdown-item' do %>
|
53
53
|
<%= svg_icon name: "extensions.svg", width: '18', height: '18' %>
|
54
54
|
|
55
55
|
<%= Spree.t(:extensions_directory) %>
|
@@ -8,19 +8,31 @@
|
|
8
8
|
<table class="table" id="user-lifetime-stats" data-hook>
|
9
9
|
<tr>
|
10
10
|
<td width="30%"><%= Spree.t(:total_sales) %>:</td>
|
11
|
-
<td
|
11
|
+
<td>
|
12
|
+
<% @user.report_values_for(:lifetime_value, current_store).each do |value| %>
|
13
|
+
<div><%= value %></div>
|
14
|
+
<% end %>
|
15
|
+
</td>
|
12
16
|
</tr>
|
13
17
|
<tr>
|
14
18
|
<td><%= Spree.t(:num_orders) %>:</td>
|
15
|
-
<td><%= @user.order_count %></td>
|
19
|
+
<td><%= @user.order_count(current_store) %></td>
|
16
20
|
</tr>
|
17
21
|
<tr>
|
18
22
|
<td><%= Spree.t(:average_order_value) %>:</td>
|
19
|
-
<td
|
23
|
+
<td>
|
24
|
+
<% @user.report_values_for(:average_order_value, current_store).each do |value| %>
|
25
|
+
<div><%= value %></div>
|
26
|
+
<% end %>
|
27
|
+
</td>
|
20
28
|
</tr>
|
21
29
|
<tr>
|
22
30
|
<td><%= Spree.t('admin.user.store_credits') %>:</td>
|
23
|
-
<td id="store_credit"
|
31
|
+
<td id="store_credit">
|
32
|
+
<% @user.available_store_credits(current_store).each do |value| %>
|
33
|
+
<div><%= value %></div>
|
34
|
+
<% end %>
|
35
|
+
</td>
|
24
36
|
</tr>
|
25
37
|
<tr>
|
26
38
|
<td><%= Spree.t(:member_since) %>:</td>
|
data/spree_backend.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.metadata = {
|
16
16
|
"bug_tracker_uri" => "https://github.com/spree/spree/issues",
|
17
17
|
"changelog_uri" => "https://github.com/spree/spree/releases/tag/v#{s.version}",
|
18
|
-
"documentation_uri" => "https://
|
18
|
+
"documentation_uri" => "https://dev-docs.spreecommerce.org/",
|
19
19
|
"source_code_uri" => "https://github.com/spree/spree/tree/v#{s.version}",
|
20
20
|
}
|
21
21
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_backend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.3.0.
|
4
|
+
version: 4.3.0.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Schofield
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-08-
|
12
|
+
date: 2021-08-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: spree_api
|
@@ -17,28 +17,28 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 4.3.0.
|
20
|
+
version: 4.3.0.rc2
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 4.3.0.
|
27
|
+
version: 4.3.0.rc2
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: spree_core
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 4.3.0.
|
34
|
+
version: 4.3.0.rc2
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 4.3.0.
|
41
|
+
version: 4.3.0.rc2
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: babel-transpiler
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -817,9 +817,9 @@ licenses:
|
|
817
817
|
- BSD-3-Clause
|
818
818
|
metadata:
|
819
819
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
820
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v4.3.0.
|
821
|
-
documentation_uri: https://
|
822
|
-
source_code_uri: https://github.com/spree/spree/tree/v4.3.0.
|
820
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v4.3.0.rc2
|
821
|
+
documentation_uri: https://dev-docs.spreecommerce.org/
|
822
|
+
source_code_uri: https://github.com/spree/spree/tree/v4.3.0.rc2
|
823
823
|
post_install_message:
|
824
824
|
rdoc_options: []
|
825
825
|
require_paths:
|