spree_backend 4.3.0.rc1 → 4.3.0.rc2
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/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:
|