spree_core 4.4.1 → 4.5.0
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/products/find.rb +1 -3
- data/app/finders/spree/taxons/find.rb +1 -1
- data/app/helpers/spree/base_helper.rb +12 -9
- data/app/helpers/spree/locale_helper.rb +6 -2
- data/app/helpers/spree/products_helper.rb +9 -4
- data/app/jobs/spree/variants/remove_from_incomplete_orders_job.rb +9 -0
- data/app/jobs/spree/variants/remove_line_item_job.rb +9 -0
- data/app/models/concerns/spree/calculated_adjustments.rb +1 -1
- data/app/models/concerns/spree/display_link.rb +17 -29
- data/app/models/concerns/spree/image_methods.rb +21 -9
- data/app/models/concerns/spree/metadata.rb +2 -2
- data/app/models/concerns/spree/product_scopes.rb +10 -8
- data/app/models/spree/address.rb +7 -1
- data/app/models/spree/asset/support/active_storage.rb +3 -2
- data/app/models/spree/asset.rb +3 -0
- data/app/models/spree/cms_page.rb +4 -0
- data/app/models/spree/cms_section.rb +12 -12
- data/app/models/spree/cms_section_image.rb +15 -0
- data/app/models/spree/cms_section_image_one.rb +4 -0
- data/app/models/spree/cms_section_image_three.rb +4 -0
- data/app/models/spree/cms_section_image_two.rb +4 -0
- data/app/models/spree/credit_card.rb +10 -4
- data/app/models/spree/customer_return.rb +3 -0
- data/app/models/spree/digital.rb +4 -0
- data/app/models/spree/digital_link.rb +7 -0
- data/app/models/spree/gateway/bogus.rb +1 -1
- data/app/models/spree/icon.rb +5 -1
- data/app/models/spree/image/configuration/active_storage.rb +5 -1
- data/app/models/spree/image.rb +3 -3
- data/app/models/spree/inventory_unit.rb +5 -2
- data/app/models/spree/legacy_user.rb +1 -2
- data/app/models/spree/line_item.rb +4 -1
- data/app/models/spree/linkable/homepage.rb +3 -0
- data/app/models/spree/linkable/uri.rb +3 -0
- data/app/models/spree/log_entry.rb +4 -0
- data/app/models/spree/menu.rb +3 -0
- data/app/models/spree/menu_item.rb +7 -11
- data/app/models/spree/option_type.rb +4 -0
- data/app/models/spree/option_value.rb +5 -0
- data/app/models/spree/order/address_book.rb +1 -0
- data/app/models/spree/order/store_credit.rb +0 -8
- data/app/models/spree/order.rb +11 -2
- data/app/models/spree/order_merger.rb +1 -1
- data/app/models/spree/payment/processing.rb +1 -1
- data/app/models/spree/payment.rb +7 -1
- data/app/models/spree/payment_capture_event.rb +4 -0
- data/app/models/spree/payment_method/store_credit.rb +1 -1
- data/app/models/spree/payment_method.rb +3 -0
- data/app/models/spree/payment_source.rb +10 -0
- data/app/models/spree/preference.rb +4 -0
- data/app/models/spree/price.rb +3 -0
- data/app/models/spree/product.rb +56 -14
- data/app/models/spree/product_property.rb +1 -0
- data/app/models/spree/promotion/rules/option_value.rb +2 -2
- data/app/models/spree/promotion.rb +6 -0
- data/app/models/spree/promotion_rule.rb +1 -1
- data/app/models/spree/promotion_rule_user.rb +1 -1
- data/app/models/spree/property.rb +3 -0
- data/app/models/spree/prototype.rb +3 -0
- data/app/models/spree/refund.rb +8 -0
- data/app/models/spree/reimbursement.rb +3 -0
- data/app/models/spree/return_authorization.rb +3 -0
- data/app/models/spree/return_item.rb +4 -0
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/role_user.rb +1 -1
- data/app/models/spree/shipment.rb +7 -0
- data/app/models/spree/shipping_category.rb +3 -0
- data/app/models/spree/shipping_method.rb +6 -0
- data/app/models/spree/state_change.rb +1 -1
- data/app/models/spree/stock/availability_validator.rb +9 -3
- data/app/models/spree/stock/content_item.rb +1 -1
- data/app/models/spree/stock/quantifier.rb +1 -1
- data/app/models/spree/stock_item.rb +5 -0
- data/app/models/spree/stock_location.rb +19 -5
- data/app/models/spree/stock_movement.rb +4 -0
- data/app/models/spree/stock_transfer.rb +3 -0
- data/app/models/spree/store.rb +19 -14
- data/app/models/spree/store_credit.rb +4 -1
- data/app/models/spree/store_favicon_image.rb +17 -0
- data/app/models/spree/store_logo.rb +9 -0
- data/app/models/spree/store_mailer_logo.rb +13 -0
- data/app/models/spree/tax_category.rb +6 -0
- data/app/models/spree/tax_rate.rb +6 -1
- data/app/models/spree/taxon.rb +4 -1
- data/app/models/spree/taxon_image/configuration/active_storage.rb +5 -1
- data/app/models/spree/taxon_image.rb +3 -2
- data/app/models/spree/taxonomy.rb +4 -1
- data/app/models/spree/variant.rb +43 -14
- data/app/models/spree/wished_item.rb +4 -0
- data/app/models/spree/wishlist.rb +4 -1
- data/app/models/spree/zone.rb +3 -0
- data/app/services/spree/addresses/create.rb +1 -1
- data/app/services/spree/addresses/update.rb +7 -2
- data/app/services/spree/cart/remove_line_item.rb +1 -0
- data/app/services/spree/variants/remove_line_items.rb +15 -0
- data/config/locales/en.yml +5 -2
- data/config/routes.rb +43 -0
- data/db/migrate/20211201202851_update_linkable_resource_types.rb +10 -0
- data/db/migrate/20211203082008_add_settings_to_payment_methods.rb +11 -0
- data/db/migrate/20211229162122_disable_propagate_all_variants_by_default.rb +5 -0
- data/db/migrate/20220103082046_add_status_and_make_active_at_to_spree_products.rb +7 -0
- data/db/migrate/20220106230929_add_internal_note_to_spree_orders.rb +5 -0
- data/db/migrate/20220113052823_create_payment_sources.rb +22 -0
- data/db/migrate/20220117100333_add_make_active_at_to_spree_products.rb +17 -0
- data/db/migrate/20220120092821_add_metadata_to_spree_tax_rates.rb +13 -0
- data/db/migrate/20220201103922_add_first_name_and_last_name_to_spree_users.rb +9 -0
- data/db/migrate/20220222083546_add_barcode_to_spree_variants.rb +6 -0
- data/db/migrate/20220329113557_fix_cms_pages_unique_indexes.rb +8 -0
- data/db/migrate/20220613133029_add_metadata_to_spree_stock_items.rb +13 -0
- data/lib/friendly_id/paranoia.rb +4 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +13 -2
- data/lib/generators/spree/dummy/templates/package.json +12 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +2 -0
- data/lib/spree/core/configuration.rb +90 -0
- data/lib/spree/core/controller_helpers/auth.rb +3 -1
- data/lib/spree/core/controller_helpers/currency.rb +7 -5
- data/lib/spree/core/controller_helpers/locale.rb +8 -6
- data/lib/spree/core/controller_helpers/order.rb +4 -2
- data/lib/spree/core/controller_helpers/search.rb +1 -1
- data/lib/spree/core/controller_helpers/store.rb +5 -3
- data/lib/spree/core/dependencies.rb +130 -0
- data/lib/spree/core/engine.rb +47 -37
- data/{app/models/spree → lib/spree/core}/preferences/configuration.rb +3 -0
- data/{app/models/spree → lib/spree/core}/preferences/preferable.rb +3 -0
- data/lib/spree/core/search/base.rb +9 -5
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +25 -5
- data/lib/spree/permitted_attributes.rb +9 -7
- data/lib/spree/testing_support/common_rake.rb +1 -0
- data/lib/spree/testing_support/factories/favicon_image_factory.rb +9 -0
- data/lib/spree/testing_support/factories/icon_factory.rb +3 -1
- data/lib/spree/testing_support/factories/image_factory.rb +3 -1
- data/lib/spree/testing_support/factories/menu_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/order_factory.rb +2 -1
- data/lib/spree/testing_support/factories/product_factory.rb +6 -1
- data/lib/spree/testing_support/factories/product_property_factory.rb +1 -0
- data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +1 -1
- data/lib/spree/testing_support/factories/role_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_location_factory.rb +3 -2
- data/lib/spree/testing_support/factories/store_factory.rb +1 -1
- data/lib/spree/testing_support/factories/taxon_image_factory.rb +3 -1
- data/lib/spree/testing_support/factories/user_factory.rb +4 -0
- data/lib/spree/testing_support/factories/variant_factory.rb +4 -0
- data/lib/spree_core.rb +2 -1
- data/lib/tasks/core.rake +12 -0
- data/spree_core.gemspec +2 -3
- metadata +64 -53
- data/app/models/friendly_id/slug_decorator.rb +0 -9
- data/app/models/spree/app_configuration.rb +0 -86
- data/app/models/spree/order_contents.rb +0 -31
- data/lib/friendly_id/slug_rails5_patch.rb +0 -11
- data/lib/spree/core/app_dependencies.rb +0 -126
- /data/{app/models/spree → lib/spree/core}/preferences/preferable_class_methods.rb +0 -0
- /data/{app/models/spree → lib/spree/core}/preferences/scoped_store.rb +0 -0
- /data/{app/models/spree → lib/spree/core}/preferences/store.rb +0 -0
data/config/routes.rb
CHANGED
|
@@ -1 +1,44 @@
|
|
|
1
|
+
# direct method cannot be used inside engine routes
|
|
2
|
+
# see: https://github.com/rails/rails/issues/34872
|
|
3
|
+
Rails.application.routes.draw do
|
|
4
|
+
direct :cdn_image do |model, options|
|
|
5
|
+
if model.blob.service_name == 'cloudinary' && defined?(Cloudinary)
|
|
6
|
+
if model.class.method_defined?(:has_mvariation)
|
|
7
|
+
Cloudinary::Utils.cloudinary_url(model.blob.key,
|
|
8
|
+
width: model.variation.transformations[:resize_to_limit].first,
|
|
9
|
+
height: model.variation.transformations[:resize_to_limit].last,
|
|
10
|
+
crop: :fill
|
|
11
|
+
)
|
|
12
|
+
else
|
|
13
|
+
Cloudinary::Utils.cloudinary_url(model.blob.key)
|
|
14
|
+
end
|
|
15
|
+
elsif model.respond_to?(:signed_id)
|
|
16
|
+
route_for(
|
|
17
|
+
:rails_service_blob_proxy,
|
|
18
|
+
model.signed_id,
|
|
19
|
+
model.filename,
|
|
20
|
+
options.merge(
|
|
21
|
+
host: Spree.cdn_host || Rails.application.routes.default_url_options[:host],
|
|
22
|
+
port: Rails.application.routes.default_url_options[:port]
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
else
|
|
26
|
+
signed_blob_id = model.blob.signed_id
|
|
27
|
+
variation_key = model.variation.key
|
|
28
|
+
filename = model.blob.filename
|
|
29
|
+
|
|
30
|
+
route_for(
|
|
31
|
+
:rails_blob_representation_proxy,
|
|
32
|
+
signed_blob_id,
|
|
33
|
+
variation_key,
|
|
34
|
+
filename,
|
|
35
|
+
options.merge(
|
|
36
|
+
host: Spree.cdn_host || Rails.application.routes.default_url_options[:host],
|
|
37
|
+
port: Rails.application.routes.default_url_options[:port]
|
|
38
|
+
)
|
|
39
|
+
)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
1
44
|
Spree::Core::Engine.draw_routes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
class UpdateLinkableResourceTypes < ActiveRecord::Migration[5.2]
|
|
2
|
+
def change
|
|
3
|
+
change_column_default :spree_menu_items, :linked_resource_type, 'Spree::Linkable::Uri'
|
|
4
|
+
|
|
5
|
+
Spree::MenuItem.where(linked_resource_type: 'URL').update_all(linked_resource_type: 'Spree::Linkable::Uri')
|
|
6
|
+
Spree::CmsSection.where(linked_resource_type: 'URL').update_all(linked_resource_type: 'Spree::Linkable::Uri')
|
|
7
|
+
Spree::MenuItem.where(linked_resource_type: 'Home Page').update_all(linked_resource_type: 'Spree::Linkable::Homepage')
|
|
8
|
+
Spree::CmsSection.where(linked_resource_type: 'Home Page').update_all(linked_resource_type: 'Spree::Linkable::Homepage')
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class AddSettingsToPaymentMethods < ActiveRecord::Migration[5.2]
|
|
2
|
+
def change
|
|
3
|
+
change_table :spree_payment_methods do |t|
|
|
4
|
+
if t.respond_to? :jsonb
|
|
5
|
+
add_column :spree_payment_methods, :settings, :jsonb
|
|
6
|
+
else
|
|
7
|
+
add_column :spree_payment_methods, :settings, :json
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class CreatePaymentSources < ActiveRecord::Migration[5.2]
|
|
2
|
+
def change
|
|
3
|
+
create_table :spree_payment_sources do |t|
|
|
4
|
+
t.string :gateway_payment_profile_id
|
|
5
|
+
t.string :type, index: true
|
|
6
|
+
|
|
7
|
+
t.references :payment_method, index: true, foreign_key: { to_table: :spree_payment_methods }
|
|
8
|
+
t.references :user, index: true, foreign_key: { to_table: :spree_users }
|
|
9
|
+
|
|
10
|
+
if t.respond_to? :jsonb
|
|
11
|
+
t.jsonb :public_metadata
|
|
12
|
+
t.jsonb :private_metadata
|
|
13
|
+
else
|
|
14
|
+
t.json :public_metadata
|
|
15
|
+
t.json :private_metadata
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
t.index [:type, :gateway_payment_profile_id], unique: true, name: 'index_payment_sources_on_type_and_gateway_payment_profile_id'
|
|
19
|
+
t.timestamps
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class AddMakeActiveAtToSpreeProducts < ActiveRecord::Migration[5.2]
|
|
2
|
+
def change
|
|
3
|
+
add_column :spree_products, :make_active_at, :datetime
|
|
4
|
+
add_index :spree_products, :make_active_at
|
|
5
|
+
|
|
6
|
+
Spree::Product.
|
|
7
|
+
where('discontinue_on IS NULL or discontinue_on > ?', Time.current).
|
|
8
|
+
where('available_on <= ?', Time.current).
|
|
9
|
+
where(status: 'draft').
|
|
10
|
+
update_all(status: 'active', updated_at: Time.current)
|
|
11
|
+
|
|
12
|
+
Spree::Product.
|
|
13
|
+
where('discontinue_on <= ?', Time.current).
|
|
14
|
+
where.not(status: 'archived').
|
|
15
|
+
update_all(status: 'archived', updated_at: Time.current)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class AddMetadataToSpreeTaxRates < ActiveRecord::Migration[5.2]
|
|
2
|
+
def change
|
|
3
|
+
change_table :spree_tax_rates do |t|
|
|
4
|
+
if t.respond_to? :jsonb
|
|
5
|
+
add_column :spree_tax_rates, :public_metadata, :jsonb
|
|
6
|
+
add_column :spree_tax_rates, :private_metadata, :jsonb
|
|
7
|
+
else
|
|
8
|
+
add_column :spree_tax_rates, :public_metadata, :json
|
|
9
|
+
add_column :spree_tax_rates, :private_metadata, :json
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
class AddFirstNameAndLastNameToSpreeUsers < ActiveRecord::Migration[5.2]
|
|
2
|
+
def change
|
|
3
|
+
if Spree.user_class.present?
|
|
4
|
+
users_table_name = Spree.user_class.table_name
|
|
5
|
+
add_column users_table_name, :first_name, :string unless column_exists?(users_table_name, :first_name)
|
|
6
|
+
add_column users_table_name, :last_name, :string unless column_exists?(users_table_name, :last_name)
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
class FixCmsPagesUniqueIndexes < ActiveRecord::Migration[5.2]
|
|
2
|
+
def change
|
|
3
|
+
remove_index :spree_cms_pages, [:slug, :store_id, :deleted_at]
|
|
4
|
+
remove_index :spree_cms_pages, [:slug, :store_id], unique: true
|
|
5
|
+
|
|
6
|
+
add_index :spree_cms_pages, [:slug, :store_id, :deleted_at], unique: true
|
|
7
|
+
end
|
|
8
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class AddMetadataToSpreeStockItems < ActiveRecord::Migration[5.2]
|
|
2
|
+
def change
|
|
3
|
+
change_table :spree_stock_items do |t|
|
|
4
|
+
if t.respond_to? :jsonb
|
|
5
|
+
add_column :spree_stock_items, :public_metadata, :jsonb
|
|
6
|
+
add_column :spree_stock_items, :private_metadata, :jsonb
|
|
7
|
+
else
|
|
8
|
+
add_column :spree_stock_items, :public_metadata, :json
|
|
9
|
+
add_column :spree_stock_items, :private_metadata, :json
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -38,13 +38,12 @@ module Spree
|
|
|
38
38
|
opts[:skip_rc] = true
|
|
39
39
|
opts[:skip_spring] = true
|
|
40
40
|
opts[:skip_test] = true
|
|
41
|
-
opts[:skip_yarn] = true
|
|
42
|
-
opts[:skip_javascript] = true
|
|
43
41
|
opts[:skip_bootsnap] = true
|
|
44
42
|
|
|
45
43
|
puts 'Generating dummy Rails application...'
|
|
46
44
|
invoke Rails::Generators::AppGenerator,
|
|
47
45
|
[File.expand_path(dummy_path, destination_root)], opts
|
|
46
|
+
inject_yaml_permitted_classes
|
|
48
47
|
end
|
|
49
48
|
|
|
50
49
|
def test_dummy_config
|
|
@@ -58,6 +57,10 @@ module Spree
|
|
|
58
57
|
template 'rails/test.rb', "#{dummy_path}/config/environments/test.rb", force: true
|
|
59
58
|
template 'rails/script/rails', "#{dummy_path}/spec/dummy/script/rails", force: true
|
|
60
59
|
template 'initializers/devise.rb', "#{dummy_path}/config/initializers/devise.rb", force: true
|
|
60
|
+
|
|
61
|
+
if lib_name == 'spree/backend'
|
|
62
|
+
template 'package.json', "#{dummy_path}/package.json", force: true
|
|
63
|
+
end
|
|
61
64
|
end
|
|
62
65
|
|
|
63
66
|
def test_dummy_inject_extension_requirements
|
|
@@ -114,6 +117,14 @@ end
|
|
|
114
117
|
], before: /require '#{@lib_name}'/, verbose: true
|
|
115
118
|
end
|
|
116
119
|
|
|
120
|
+
def inject_yaml_permitted_classes
|
|
121
|
+
inside dummy_path do
|
|
122
|
+
inject_into_file 'config/application.rb', %Q[
|
|
123
|
+
config.active_record.yaml_column_permitted_classes = [Symbol, BigDecimal, ActiveSupport::HashWithIndifferentAccess]
|
|
124
|
+
], after: /config\.load_defaults.*$/, verbose: true
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
117
128
|
def dummy_path
|
|
118
129
|
ENV['DUMMY_PATH'] || 'spec/dummy'
|
|
119
130
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "app",
|
|
3
|
+
"private": "true",
|
|
4
|
+
"dependencies": {
|
|
5
|
+
"@hotwired/turbo-rails": "^7.2.0",
|
|
6
|
+
"@spree/dashboard": "^0.2.1",
|
|
7
|
+
"esbuild": "^0.15.10"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# This is the primary location for defining spree preferences
|
|
2
|
+
#
|
|
3
|
+
# The expectation is that this is created once and stored in
|
|
4
|
+
# the spree environment
|
|
5
|
+
#
|
|
6
|
+
# setters:
|
|
7
|
+
# a.color = :blue
|
|
8
|
+
# a[:color] = :blue
|
|
9
|
+
# a.set :color = :blue
|
|
10
|
+
# a.preferred_color = :blue
|
|
11
|
+
#
|
|
12
|
+
# getters:
|
|
13
|
+
# a.color
|
|
14
|
+
# a[:color]
|
|
15
|
+
# a.get :color
|
|
16
|
+
# a.preferred_color
|
|
17
|
+
#
|
|
18
|
+
require 'spree/core/search/base'
|
|
19
|
+
require 'spree/core/preferences/configuration'
|
|
20
|
+
|
|
21
|
+
module Spree
|
|
22
|
+
module Core
|
|
23
|
+
class Configuration < Preferences::Configuration
|
|
24
|
+
# Alphabetized to more easily lookup particular preferences
|
|
25
|
+
preference :address_requires_state, :boolean, default: true # should state/state_name be required
|
|
26
|
+
preference :address_requires_phone, :boolean, default: true # Determines whether we require phone in address
|
|
27
|
+
preference :admin_path, :string, deprecated: true
|
|
28
|
+
preference :admin_products_per_page, :integer, deprecated: true
|
|
29
|
+
preference :admin_orders_per_page, :integer, deprecated: true
|
|
30
|
+
preference :admin_properties_per_page, :integer, deprecated: true
|
|
31
|
+
preference :admin_promotions_per_page, :integer, deprecated: true
|
|
32
|
+
preference :admin_customer_returns_per_page, :integer, deprecated: true
|
|
33
|
+
preference :admin_users_per_page, :integer, deprecated: true
|
|
34
|
+
preference :admin_show_version, :boolean, deprecated: true
|
|
35
|
+
preference :allow_checkout_on_gateway_error, :boolean, default: false
|
|
36
|
+
preference :allow_guest_checkout, :boolean, default: true
|
|
37
|
+
preference :alternative_shipping_phone, :boolean, default: false # Request extra phone for ship addr
|
|
38
|
+
preference :always_include_confirm_step, :boolean, default: false # Ensures confirmation step is always in checkout_progress bar, but does not force a confirm step if your payment methods do not support it.
|
|
39
|
+
preference :always_put_site_name_in_title, :boolean, deprecated: true
|
|
40
|
+
preference :title_site_name_separator, :string, deprecated: true
|
|
41
|
+
preference :auto_capture, :boolean, default: false # automatically capture the credit card (as opposed to just authorize and capture later)
|
|
42
|
+
preference :auto_capture_on_dispatch, :boolean, default: false # Captures payment for each shipment in Shipment#after_ship callback, and makes Shipment.ready when payment authorized.
|
|
43
|
+
preference :binary_inventory_cache, :boolean, default: false # only invalidate product cache when a stock item changes whether it is in_stock
|
|
44
|
+
preference :checkout_zone, :string, default: nil, deprecated: true # replace with the name of a zone if you would like to limit the countries
|
|
45
|
+
preference :company, :boolean, default: false # Request company field for billing and shipping addr
|
|
46
|
+
preference :currency, :string, default: 'USD', deprecated: true
|
|
47
|
+
preference :default_country_id, :integer, deprecated: true
|
|
48
|
+
preference :disable_sku_validation, :boolean, default: false # when turned off disables the built-in SKU uniqueness validation
|
|
49
|
+
preference :disable_store_presence_validation, :boolean, default: false # when turned off disables Store presence validation for Products and Payment Methods
|
|
50
|
+
preference :expedited_exchanges, :boolean, default: false # NOTE this requires payment profiles to be supported on your gateway of choice as well as a delayed job handler to be configured with activejob. kicks off an exchange shipment upon return authorization save. charge customer if they do not return items within timely manner.
|
|
51
|
+
preference :expedited_exchanges_days_window, :integer, default: 14 # the amount of days the customer has to return their item after the expedited exchange is shipped in order to avoid being charged
|
|
52
|
+
preference :layout, :string, deprecated: 'Please use Spree::Frontend::Config[:layout] instead'
|
|
53
|
+
preference :logo, :string, deprecated: true
|
|
54
|
+
preference :mailer_logo, :string, deprecated: true
|
|
55
|
+
preference :max_level_in_taxons_menu, :integer, deprecated: true
|
|
56
|
+
preference :products_per_page, :integer, default: 12
|
|
57
|
+
preference :require_master_price, :boolean, default: true
|
|
58
|
+
preference :restock_inventory, :boolean, default: true # Determines if a return item is restocked automatically once it has been received
|
|
59
|
+
preference :return_eligibility_number_of_days, :integer, default: 365
|
|
60
|
+
preference :send_core_emails, :boolean, default: true # Default mail headers settings
|
|
61
|
+
preference :shipping_instructions, :boolean, deprecated: true
|
|
62
|
+
preference :show_only_complete_orders_by_default, :boolean, deprecated: true
|
|
63
|
+
preference :show_variant_full_price, :boolean, default: false # Displays variant full price or difference with product price. Default false to be compatible with older behavior
|
|
64
|
+
preference :show_products_without_price, :boolean, default: false
|
|
65
|
+
preference :show_raw_product_description, :boolean, deprecated: true
|
|
66
|
+
preference :tax_using_ship_address, :boolean, default: true
|
|
67
|
+
preference :track_inventory_levels, :boolean, default: true # Determines whether to track on_hand values for variants / products.
|
|
68
|
+
|
|
69
|
+
# Store credits configurations
|
|
70
|
+
preference :non_expiring_credit_types, :array, default: []
|
|
71
|
+
preference :credit_to_new_allocation, :boolean, default: false
|
|
72
|
+
|
|
73
|
+
# Multi store configurations
|
|
74
|
+
preference :show_store_selector, :boolean, deprecated: true
|
|
75
|
+
|
|
76
|
+
# searcher_class allows spree extension writers to provide their own Search class
|
|
77
|
+
def searcher_class
|
|
78
|
+
ActiveSupport::Deprecation.warn('`Spree::Config.searcher_class` is deprecated and will be removed in Spree v5, please use `Spree.searcher_class` instead.')
|
|
79
|
+
@searcher_class ||= Spree.searcher_class
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Sets the path used for products, taxons and pages.
|
|
83
|
+
preference :storefront_products_path, :string, default: 'products'
|
|
84
|
+
preference :storefront_taxons_path, :string, default: 't'
|
|
85
|
+
preference :storefront_pages_path, :string, default: 'pages'
|
|
86
|
+
|
|
87
|
+
attr_writer :searcher_class
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -7,7 +7,9 @@ module Spree
|
|
|
7
7
|
|
|
8
8
|
included do
|
|
9
9
|
before_action :set_token
|
|
10
|
-
helper_method
|
|
10
|
+
if defined?(helper_method)
|
|
11
|
+
helper_method :try_spree_current_user
|
|
12
|
+
end
|
|
11
13
|
|
|
12
14
|
rescue_from CanCan::AccessDenied do |_exception|
|
|
13
15
|
redirect_unauthorized_access
|
|
@@ -5,11 +5,13 @@ module Spree
|
|
|
5
5
|
extend ActiveSupport::Concern
|
|
6
6
|
|
|
7
7
|
included do
|
|
8
|
-
helper_method
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
if defined?(helper_method)
|
|
9
|
+
helper_method :supported_currencies
|
|
10
|
+
helper_method :supported_currencies_for_all_stores
|
|
11
|
+
helper_method :current_currency
|
|
12
|
+
helper_method :supported_currency?
|
|
13
|
+
helper_method :currency_param
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
16
|
|
|
15
17
|
def current_currency
|
|
@@ -7,12 +7,14 @@ module Spree
|
|
|
7
7
|
included do
|
|
8
8
|
before_action :set_locale
|
|
9
9
|
|
|
10
|
-
helper_method
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
if defined?(helper_method)
|
|
11
|
+
helper_method :supported_locales
|
|
12
|
+
helper_method :supported_locales_for_all_stores
|
|
13
|
+
helper_method :current_locale
|
|
14
|
+
helper_method :supported_locale?
|
|
15
|
+
helper_method :available_locales
|
|
16
|
+
helper_method :locale_param
|
|
17
|
+
end
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
def set_locale
|
|
@@ -5,8 +5,10 @@ module Spree
|
|
|
5
5
|
extend ActiveSupport::Concern
|
|
6
6
|
|
|
7
7
|
included do
|
|
8
|
-
helper_method
|
|
9
|
-
|
|
8
|
+
if defined?(helper_method)
|
|
9
|
+
helper_method :current_order
|
|
10
|
+
helper_method :simple_current_order
|
|
11
|
+
end
|
|
10
12
|
end
|
|
11
13
|
|
|
12
14
|
# Used in the link_to_cart helper.
|
|
@@ -3,7 +3,7 @@ module Spree
|
|
|
3
3
|
module ControllerHelpers
|
|
4
4
|
module Search
|
|
5
5
|
def build_searcher(params)
|
|
6
|
-
Spree
|
|
6
|
+
Spree.searcher_class.new(params).tap do |searcher|
|
|
7
7
|
searcher.current_user = try_spree_current_user
|
|
8
8
|
searcher.current_currency = current_currency&.upcase
|
|
9
9
|
searcher.current_store = current_store
|
|
@@ -5,9 +5,11 @@ module Spree
|
|
|
5
5
|
extend ActiveSupport::Concern
|
|
6
6
|
|
|
7
7
|
included do
|
|
8
|
-
helper_method
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
if defined?(helper_method)
|
|
9
|
+
helper_method :current_store
|
|
10
|
+
helper_method :current_price_options
|
|
11
|
+
helper_method :available_menus
|
|
12
|
+
end
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
def current_store
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
require_relative 'dependencies_helper'
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Core
|
|
5
|
+
class Dependencies
|
|
6
|
+
include Spree::DependenciesHelper
|
|
7
|
+
|
|
8
|
+
INJECTION_POINTS = [
|
|
9
|
+
:ability_class,
|
|
10
|
+
:cart_create_service, :cart_add_item_service, :cart_remove_item_service,
|
|
11
|
+
:cart_remove_line_item_service, :cart_set_item_quantity_service, :cart_recalculate_service,
|
|
12
|
+
:cms_page_finder, :cart_update_service, :checkout_next_service, :checkout_advance_service, :checkout_update_service,
|
|
13
|
+
:checkout_complete_service, :checkout_add_store_credit_service, :checkout_remove_store_credit_service, :checkout_get_shipping_rates_service,
|
|
14
|
+
:coupon_handler, :menu_finder, :country_finder, :current_order_finder, :credit_card_finder,
|
|
15
|
+
:completed_order_finder, :order_sorter, :cart_compare_line_items_service, :collection_paginator, :products_sorter,
|
|
16
|
+
:products_finder, :taxon_finder, :line_item_by_variant_finder, :cart_estimate_shipping_rates_service,
|
|
17
|
+
:account_create_address_service, :account_update_address_service, :account_create_service, :account_update_service,
|
|
18
|
+
:address_finder, :collection_sorter, :error_handler, :current_store_finder, :cart_empty_service, :cart_destroy_service,
|
|
19
|
+
:classification_reposition_service, :credit_cards_destroy_service, :cart_associate_service, :cart_change_currency_service,
|
|
20
|
+
:line_item_create_service, :line_item_update_service, :line_item_destroy_service,
|
|
21
|
+
:order_approve_service, :order_cancel_service, :shipment_change_state_service, :shipment_update_service,
|
|
22
|
+
:shipment_create_service, :shipment_add_item_service, :shipment_remove_item_service,
|
|
23
|
+
:payment_create_service, :address_create_service, :address_update_service,
|
|
24
|
+
:checkout_select_shipping_method_service
|
|
25
|
+
].freeze
|
|
26
|
+
|
|
27
|
+
attr_accessor *INJECTION_POINTS
|
|
28
|
+
|
|
29
|
+
def initialize
|
|
30
|
+
set_default_ability
|
|
31
|
+
set_default_services
|
|
32
|
+
set_default_finders
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
def set_default_ability
|
|
38
|
+
@ability_class = 'Spree::Ability'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def set_default_services
|
|
42
|
+
# cart
|
|
43
|
+
@cart_compare_line_items_service = 'Spree::CompareLineItems'
|
|
44
|
+
@cart_create_service = 'Spree::Cart::Create'
|
|
45
|
+
@cart_add_item_service = 'Spree::Cart::AddItem'
|
|
46
|
+
@cart_update_service = 'Spree::Cart::Update'
|
|
47
|
+
@cart_recalculate_service = 'Spree::Cart::Recalculate'
|
|
48
|
+
@cart_remove_item_service = 'Spree::Cart::RemoveItem'
|
|
49
|
+
@cart_remove_line_item_service = 'Spree::Cart::RemoveLineItem'
|
|
50
|
+
@cart_set_item_quantity_service = 'Spree::Cart::SetQuantity'
|
|
51
|
+
@cart_estimate_shipping_rates_service = 'Spree::Cart::EstimateShippingRates'
|
|
52
|
+
@cart_empty_service = 'Spree::Cart::Empty'
|
|
53
|
+
@cart_destroy_service = 'Spree::Cart::Destroy'
|
|
54
|
+
@cart_associate_service = 'Spree::Cart::Associate'
|
|
55
|
+
@cart_change_currency_service = 'Spree::Cart::ChangeCurrency'
|
|
56
|
+
|
|
57
|
+
# checkout
|
|
58
|
+
@checkout_next_service = 'Spree::Checkout::Next'
|
|
59
|
+
@checkout_advance_service = 'Spree::Checkout::Advance'
|
|
60
|
+
@checkout_update_service = 'Spree::Checkout::Update'
|
|
61
|
+
@checkout_complete_service = 'Spree::Checkout::Complete'
|
|
62
|
+
@checkout_add_store_credit_service = 'Spree::Checkout::AddStoreCredit'
|
|
63
|
+
@checkout_remove_store_credit_service = 'Spree::Checkout::RemoveStoreCredit'
|
|
64
|
+
@checkout_get_shipping_rates_service = 'Spree::Checkout::GetShippingRates'
|
|
65
|
+
@checkout_select_shipping_method_service = 'Spree::Checkout::SelectShippingMethod'
|
|
66
|
+
|
|
67
|
+
# order
|
|
68
|
+
@order_approve_service = 'Spree::Orders::Approve'
|
|
69
|
+
@order_cancel_service = 'Spree::Orders::Cancel'
|
|
70
|
+
|
|
71
|
+
# shipment
|
|
72
|
+
@shipment_change_state_service = 'Spree::Shipments::ChangeState'
|
|
73
|
+
@shipment_create_service = 'Spree::Shipments::Create'
|
|
74
|
+
@shipment_update_service = 'Spree::Shipments::Update'
|
|
75
|
+
@shipment_add_item_service = 'Spree::Shipments::AddItem'
|
|
76
|
+
@shipment_remove_item_service = 'Spree::Shipments::RemoveItem'
|
|
77
|
+
|
|
78
|
+
# sorter
|
|
79
|
+
@collection_sorter = 'Spree::BaseSorter'
|
|
80
|
+
@order_sorter = 'Spree::BaseSorter'
|
|
81
|
+
@products_sorter = 'Spree::Products::Sort'
|
|
82
|
+
|
|
83
|
+
# paginator
|
|
84
|
+
@collection_paginator = 'Spree::Shared::Paginate'
|
|
85
|
+
|
|
86
|
+
# coupons
|
|
87
|
+
# TODO: we should split this service into 2 separate - Add and Remove
|
|
88
|
+
@coupon_handler = 'Spree::PromotionHandler::Coupon'
|
|
89
|
+
|
|
90
|
+
# account
|
|
91
|
+
@account_create_service = 'Spree::Account::Create'
|
|
92
|
+
@account_update_service = 'Spree::Account::Update'
|
|
93
|
+
|
|
94
|
+
# addresses
|
|
95
|
+
@address_create_service = 'Spree::Addresses::Create'
|
|
96
|
+
@address_update_service = 'Spree::Addresses::Update'
|
|
97
|
+
|
|
98
|
+
# credit cards
|
|
99
|
+
@credit_cards_destroy_service = 'Spree::CreditCards::Destroy'
|
|
100
|
+
|
|
101
|
+
# classifications
|
|
102
|
+
@classification_reposition_service = 'Spree::Classifications::Reposition'
|
|
103
|
+
|
|
104
|
+
# line items
|
|
105
|
+
@line_item_create_service = 'Spree::LineItems::Create'
|
|
106
|
+
@line_item_update_service = 'Spree::LineItems::Update'
|
|
107
|
+
@line_item_destroy_service = 'Spree::LineItems::Destroy'
|
|
108
|
+
|
|
109
|
+
@payment_create_service = 'Spree::Payments::Create'
|
|
110
|
+
|
|
111
|
+
# errors
|
|
112
|
+
@error_handler = 'Spree::ErrorReporter'
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def set_default_finders
|
|
116
|
+
@address_finder = 'Spree::Addresses::Find'
|
|
117
|
+
@country_finder = 'Spree::Countries::Find'
|
|
118
|
+
@cms_page_finder = 'Spree::CmsPages::Find'
|
|
119
|
+
@menu_finder = 'Spree::Menus::Find'
|
|
120
|
+
@current_order_finder = 'Spree::Orders::FindCurrent'
|
|
121
|
+
@current_store_finder = 'Spree::Stores::FindCurrent'
|
|
122
|
+
@completed_order_finder = 'Spree::Orders::FindComplete'
|
|
123
|
+
@credit_card_finder = 'Spree::CreditCards::Find'
|
|
124
|
+
@products_finder = 'Spree::Products::Find'
|
|
125
|
+
@taxon_finder = 'Spree::Taxons::Find'
|
|
126
|
+
@line_item_by_variant_finder = 'Spree::LineItems::FindByVariant'
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|