spree_core 4.3.0.rc2 → 4.3.0.rc3
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/finders/spree/taxons/find.rb +22 -6
- data/app/helpers/spree/base_helper.rb +7 -5
- data/app/models/concerns/spree/image_methods.rb +24 -0
- data/app/models/spree/gateway/bogus.rb +6 -4
- data/app/models/spree/image.rb +5 -24
- data/app/models/spree/payment_method.rb +12 -0
- data/app/models/spree/taxon_image.rb +1 -0
- data/app/sorters/spree/base_sorter.rb +23 -11
- data/app/sorters/spree/products/sort.rb +17 -7
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/permitted_attributes.rb +7 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fd663cedb276d7b23b137c9ff65cb153f986deee175e19672198a5ba9078707
|
4
|
+
data.tar.gz: d9105ced36ac4078df6963e6ca7cd9c2e45bfec3dbed2b2872ff76c99d05dfb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db4eb2dfeeca9a7acb56d3146b1e73a97485eec348e9b9537b3145f3ce1c8fc66a7b48d3a68c177fac4cf5d9c93ed7a47738487e034a9698e0eb2f5dba2025de
|
7
|
+
data.tar.gz: fecab76acd9f180cc9cbe79d23a11f26a2cd86c86ca83e9157b9d8dbe1e475de8d59fea914b75bcab2dc29a4edc1b40074ed056f528abbd96a2750e3088f80df
|
@@ -3,16 +3,18 @@ module Spree
|
|
3
3
|
class Find
|
4
4
|
def initialize(scope:, params:)
|
5
5
|
@scope = scope
|
6
|
-
@ids
|
7
|
-
@parent
|
8
|
-
@
|
9
|
-
@
|
10
|
-
@
|
6
|
+
@ids = String(params.dig(:filter, :ids)).split(',')
|
7
|
+
@parent = params.dig(:filter, :parent_id)
|
8
|
+
@parent_permalink = params.dig(:filter, :parent_permalink)
|
9
|
+
@taxonomy = params.dig(:filter, :taxonomy_id)
|
10
|
+
@name = params.dig(:filter, :name)
|
11
|
+
@roots = params.dig(:filter, :roots)
|
11
12
|
end
|
12
13
|
|
13
14
|
def execute
|
14
15
|
taxons = by_ids(scope)
|
15
16
|
taxons = by_parent(taxons)
|
17
|
+
taxons = by_parent_permalink(taxons)
|
16
18
|
taxons = by_taxonomy(taxons)
|
17
19
|
taxons = by_roots(taxons)
|
18
20
|
taxons = by_name(taxons)
|
@@ -22,7 +24,7 @@ module Spree
|
|
22
24
|
|
23
25
|
private
|
24
26
|
|
25
|
-
attr_reader :ids, :parent, :taxonomy, :roots, :name, :scope
|
27
|
+
attr_reader :ids, :parent, :parent_permalink, :taxonomy, :roots, :name, :scope
|
26
28
|
|
27
29
|
def ids?
|
28
30
|
ids.present?
|
@@ -32,6 +34,10 @@ module Spree
|
|
32
34
|
parent.present?
|
33
35
|
end
|
34
36
|
|
37
|
+
def parent_permalink?
|
38
|
+
parent_permalink.present?
|
39
|
+
end
|
40
|
+
|
35
41
|
def taxonomy?
|
36
42
|
taxonomy.present?
|
37
43
|
end
|
@@ -60,6 +66,16 @@ module Spree
|
|
60
66
|
taxons.where(parent_id: parent)
|
61
67
|
end
|
62
68
|
|
69
|
+
def by_parent_permalink(taxons)
|
70
|
+
return taxons unless parent_permalink?
|
71
|
+
|
72
|
+
if Rails::VERSION::STRING >= '6.1'
|
73
|
+
taxons.joins(:parent).where(parent: { permalink: parent_permalink })
|
74
|
+
else
|
75
|
+
taxons.joins("INNER JOIN #{Spree::Taxon.table_name} AS parent_taxon ON parent_taxon.id = #{Spree::Taxon.table_name}.parent_id").where(["parent_taxon.permalink = ?", parent_permalink])
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
63
79
|
def by_taxonomy(taxons)
|
64
80
|
return taxons unless taxonomy?
|
65
81
|
|
@@ -246,11 +246,13 @@ module Spree
|
|
246
246
|
options = options.first || {}
|
247
247
|
options[:alt] ||= product.name
|
248
248
|
image_path = default_image_for_product_or_variant(product)
|
249
|
-
if image_path.present?
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
249
|
+
img = if image_path.present?
|
250
|
+
create_product_image_tag image_path, product, options, style
|
251
|
+
else
|
252
|
+
inline_svg_tag "noimage/backend-missing-image.svg", class: "noimage", size: "60%*60%"
|
253
|
+
end
|
254
|
+
|
255
|
+
content_tag(:div, img, class: "admin-product-image-container #{style}-img")
|
254
256
|
end
|
255
257
|
end
|
256
258
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Spree
|
2
|
+
module ImageMethods
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
def generate_url(size:, gravity: 'center', quality: 80, background: 'show')
|
6
|
+
return if size.blank?
|
7
|
+
size = size.gsub(/\s+/, '')
|
8
|
+
|
9
|
+
return unless size.match(/(\d+)x(\d+)/)
|
10
|
+
|
11
|
+
polymorphic_path(attachment.variant(
|
12
|
+
gravity: gravity,
|
13
|
+
resize: size,
|
14
|
+
extent: size,
|
15
|
+
background: background,
|
16
|
+
quality: quality.to_i
|
17
|
+
), only_path: true)
|
18
|
+
end
|
19
|
+
|
20
|
+
def original_url
|
21
|
+
polymorphic_path(attachment, only_path: true)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -9,14 +9,12 @@ module Spree
|
|
9
9
|
|
10
10
|
attr_accessor :test
|
11
11
|
|
12
|
+
preference :dummy_key, :string, default: 'PUBLICKEY123'
|
13
|
+
|
12
14
|
def provider_class
|
13
15
|
self.class
|
14
16
|
end
|
15
17
|
|
16
|
-
def preferences
|
17
|
-
{}
|
18
|
-
end
|
19
|
-
|
20
18
|
def create_profile(payment)
|
21
19
|
return if payment.source.has_payment_profile?
|
22
20
|
|
@@ -88,5 +86,9 @@ module Spree
|
|
88
86
|
end
|
89
87
|
random
|
90
88
|
end
|
89
|
+
|
90
|
+
def public_preference_keys
|
91
|
+
[:dummy_key]
|
92
|
+
end
|
91
93
|
end
|
92
94
|
end
|
data/app/models/spree/image.rb
CHANGED
@@ -2,6 +2,7 @@ module Spree
|
|
2
2
|
class Image < Asset
|
3
3
|
include Configuration::ActiveStorage
|
4
4
|
include Rails.application.routes.url_helpers
|
5
|
+
include ::Spree::ImageMethods
|
5
6
|
|
6
7
|
# In Rails 5.x class constants are being undefined/redefined during the code reloading process
|
7
8
|
# in a rails development environment, after which the actual ruby objects stored in those class constants
|
@@ -15,13 +16,8 @@ module Spree
|
|
15
16
|
width, height = size.chop.split('x')
|
16
17
|
|
17
18
|
{
|
18
|
-
url:
|
19
|
-
|
20
|
-
resize: size,
|
21
|
-
extent: size,
|
22
|
-
background: 'snow2',
|
23
|
-
quality: 80
|
24
|
-
), only_path: true),
|
19
|
+
url: generate_url(size: size),
|
20
|
+
size: size,
|
25
21
|
width: width,
|
26
22
|
height: height
|
27
23
|
}
|
@@ -35,13 +31,7 @@ module Spree
|
|
35
31
|
width, height = size.chop.split('x')
|
36
32
|
|
37
33
|
{
|
38
|
-
url:
|
39
|
-
gravity: 'center',
|
40
|
-
resize: size,
|
41
|
-
extent: size,
|
42
|
-
background: 'snow2',
|
43
|
-
quality: 80
|
44
|
-
), only_path: true),
|
34
|
+
url: generate_url(size: size),
|
45
35
|
size: size,
|
46
36
|
width: width,
|
47
37
|
height: height
|
@@ -59,16 +49,7 @@ module Spree
|
|
59
49
|
end
|
60
50
|
|
61
51
|
def plp_url
|
62
|
-
size
|
63
|
-
variant = attachment.variant(
|
64
|
-
gravity: 'center',
|
65
|
-
resize: size,
|
66
|
-
extent: size,
|
67
|
-
background: 'snow2',
|
68
|
-
quality: 80
|
69
|
-
)
|
70
|
-
|
71
|
-
polymorphic_path(variant, only_path: true)
|
52
|
+
generate_url(size: self.class.styles[:plp_and_carousel])
|
72
53
|
end
|
73
54
|
end
|
74
55
|
end
|
@@ -87,5 +87,17 @@ module Spree
|
|
87
87
|
|
88
88
|
store_ids.include?(store.id)
|
89
89
|
end
|
90
|
+
|
91
|
+
def public_preferences
|
92
|
+
public_preference_keys.each_with_object({}) do |key, hash|
|
93
|
+
hash[key] = preferences[key]
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
protected
|
98
|
+
|
99
|
+
def public_preference_keys
|
100
|
+
[]
|
101
|
+
end
|
90
102
|
end
|
91
103
|
end
|
@@ -2,34 +2,46 @@ module Spree
|
|
2
2
|
class BaseSorter
|
3
3
|
def initialize(scope, params = {}, allowed_sort_attributes = [])
|
4
4
|
@scope = scope
|
5
|
-
@sort = params[:sort]
|
6
5
|
@allowed_sort_attributes = allowed_sort_attributes
|
6
|
+
@sort = sort_fields(params[:sort])
|
7
7
|
end
|
8
8
|
|
9
9
|
def call
|
10
|
-
|
10
|
+
by_param_attributes(scope)
|
11
11
|
end
|
12
12
|
|
13
13
|
protected
|
14
14
|
|
15
15
|
attr_reader :scope, :collection, :sort, :allowed_sort_attributes
|
16
16
|
|
17
|
-
def
|
18
|
-
return scope if
|
17
|
+
def by_param_attributes(scope)
|
18
|
+
return scope if sort.empty?
|
19
19
|
|
20
|
-
|
20
|
+
sort.each do |value, order|
|
21
|
+
next if value.blank? || allowed_sort_attributes.exclude?(value.to_sym)
|
22
|
+
|
23
|
+
scope = scope.order("#{value}": order)
|
24
|
+
end
|
25
|
+
|
26
|
+
scope
|
27
|
+
end
|
28
|
+
|
29
|
+
def sort_fields(sort)
|
30
|
+
return [] if sort.nil?
|
31
|
+
|
32
|
+
sort.split(',').map { |field| [sort_field(field), order_direction(field)] }
|
21
33
|
end
|
22
34
|
|
23
|
-
def desc_order
|
24
|
-
|
35
|
+
def desc_order(field)
|
36
|
+
String(field)[0] == '-'
|
25
37
|
end
|
26
38
|
|
27
|
-
def sort_field
|
28
|
-
|
39
|
+
def sort_field(field)
|
40
|
+
desc_order(field) ? field[1..-1] : field
|
29
41
|
end
|
30
42
|
|
31
|
-
def order_direction
|
32
|
-
desc_order ? :desc : :asc
|
43
|
+
def order_direction(field)
|
44
|
+
desc_order(field) ? :desc : :asc
|
33
45
|
end
|
34
46
|
end
|
35
47
|
end
|
@@ -7,8 +7,9 @@ module Spree
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def call
|
10
|
-
products =
|
10
|
+
products = by_param_attributes(scope)
|
11
11
|
products = by_price(products)
|
12
|
+
products = by_sku(products)
|
12
13
|
|
13
14
|
products.distinct
|
14
15
|
end
|
@@ -17,18 +18,27 @@ module Spree
|
|
17
18
|
|
18
19
|
attr_reader :sort, :scope, :currency, :allowed_sort_attributes
|
19
20
|
|
20
|
-
def price?
|
21
|
-
sort_field == 'price'
|
22
|
-
end
|
23
|
-
|
24
21
|
def by_price(scope)
|
25
|
-
return scope unless price
|
22
|
+
return scope unless (value = sort_by?('price'))
|
26
23
|
|
27
24
|
scope.joins(master: :prices).
|
28
25
|
select("#{Spree::Product.table_name}.*, #{Spree::Price.table_name}.amount").
|
29
26
|
distinct.
|
30
27
|
where(spree_prices: { currency: currency }).
|
31
|
-
order("#{Spree::Price.table_name}.amount #{
|
28
|
+
order("#{Spree::Price.table_name}.amount #{value[1]}")
|
29
|
+
end
|
30
|
+
|
31
|
+
def by_sku(scope)
|
32
|
+
return scope unless (value = sort_by?('sku'))
|
33
|
+
|
34
|
+
scope.joins(:master).
|
35
|
+
select("#{Spree::Product.table_name}.*, #{Spree::Variant.table_name}.sku").
|
36
|
+
where(Spree::Variant.table_name.to_s => { is_master: true }).
|
37
|
+
order("#{Spree::Variant.table_name}.sku #{value[1]}")
|
38
|
+
end
|
39
|
+
|
40
|
+
def sort_by?(field)
|
41
|
+
sort.detect { |s| s[0] == field }
|
32
42
|
end
|
33
43
|
end
|
34
44
|
end
|
data/lib/spree/core/version.rb
CHANGED
@@ -8,6 +8,8 @@ module Spree
|
|
8
8
|
:image_attributes,
|
9
9
|
:inventory_unit_attributes,
|
10
10
|
:line_item_attributes,
|
11
|
+
:menu_attributes,
|
12
|
+
:menu_item_attributes,
|
11
13
|
:option_type_attributes,
|
12
14
|
:option_value_attributes,
|
13
15
|
:payment_attributes,
|
@@ -62,6 +64,11 @@ module Spree
|
|
62
64
|
|
63
65
|
@@line_item_attributes = [:id, :variant_id, :quantity]
|
64
66
|
|
67
|
+
@@menu_attributes = [:name, :locale, :location]
|
68
|
+
|
69
|
+
@@menu_item_attributes = [:name, :subtite, :destination, :new_window, :item_type,
|
70
|
+
:linked_resource_type, :linked_resource_id, :code, :menu_id]
|
71
|
+
|
65
72
|
@@option_type_attributes = [:name, :presentation, :option_values_attributes]
|
66
73
|
|
67
74
|
@@option_value_attributes = [:name, :presentation]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.3.0.
|
4
|
+
version: 4.3.0.rc3
|
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-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -472,6 +472,7 @@ files:
|
|
472
472
|
- app/models/concerns/spree/display_link.rb
|
473
473
|
- app/models/concerns/spree/display_money.rb
|
474
474
|
- app/models/concerns/spree/filter_param.rb
|
475
|
+
- app/models/concerns/spree/image_methods.rb
|
475
476
|
- app/models/concerns/spree/memoized_data.rb
|
476
477
|
- app/models/concerns/spree/multi_store_resource.rb
|
477
478
|
- app/models/concerns/spree/named_type.rb
|
@@ -1193,9 +1194,9 @@ licenses:
|
|
1193
1194
|
- BSD-3-Clause
|
1194
1195
|
metadata:
|
1195
1196
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
1196
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v4.3.0.
|
1197
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v4.3.0.rc3
|
1197
1198
|
documentation_uri: https://dev-docs.spreecommerce.org/
|
1198
|
-
source_code_uri: https://github.com/spree/spree/tree/v4.3.0.
|
1199
|
+
source_code_uri: https://github.com/spree/spree/tree/v4.3.0.rc3
|
1199
1200
|
post_install_message:
|
1200
1201
|
rdoc_options: []
|
1201
1202
|
require_paths:
|