spree_core 5.2.6 → 5.3.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 +4 -4
- data/app/helpers/spree/addresses_helper.rb +1 -23
- data/app/helpers/spree/base_helper.rb +25 -77
- data/app/helpers/spree/currency_helper.rb +2 -2
- data/app/helpers/spree/images_helper.rb +5 -0
- data/app/helpers/spree/mail_helper.rb +1 -1
- data/app/helpers/spree/products_helper.rb +1 -1
- data/app/jobs/spree/events/subscriber_job.rb +58 -0
- data/app/jobs/spree/products/refresh_metrics_job.rb +14 -0
- data/app/jobs/spree/products/touch_taxons_job.rb +0 -1
- data/app/jobs/spree/variants/touch_job.rb +9 -0
- data/app/models/concerns/spree/adjustment_source.rb +8 -0
- data/app/models/concerns/spree/parameterizable_name.rb +1 -1
- data/app/models/concerns/spree/product_scopes.rb +54 -8
- data/app/models/concerns/spree/publishable.rb +253 -0
- data/app/models/concerns/spree/unique_name.rb +1 -1
- data/app/models/concerns/spree/user_methods.rb +21 -1
- data/app/models/spree/ability.rb +3 -3
- data/app/models/spree/address.rb +0 -3
- data/app/models/spree/adjustable/promotion_accumulator.rb +1 -1
- data/app/models/spree/adjustment.rb +32 -6
- data/app/models/spree/asset.rb +6 -3
- data/app/models/spree/base.rb +3 -1
- data/app/models/spree/classification.rb +2 -2
- data/app/models/spree/credit_card.rb +0 -3
- data/app/models/spree/current.rb +24 -3
- data/app/models/spree/custom_domain.rb +1 -1
- data/app/models/spree/customer_group.rb +94 -0
- data/app/models/spree/customer_group_user.rb +16 -0
- data/app/models/spree/customer_return.rb +2 -3
- data/app/models/spree/digital.rb +2 -4
- data/app/models/spree/digital_link.rb +2 -3
- data/app/models/spree/event.rb +104 -0
- data/app/models/spree/export.rb +7 -1
- data/app/models/spree/gift_card.rb +13 -1
- data/app/models/spree/gift_card_batch.rb +3 -1
- data/app/models/spree/image.rb +20 -5
- data/app/models/spree/import.rb +17 -12
- data/app/models/spree/import_row.rb +13 -26
- data/app/models/spree/inventory_unit.rb +0 -3
- data/app/models/spree/invitation.rb +12 -6
- data/app/models/spree/line_item.rb +57 -4
- data/app/models/spree/newsletter_subscriber.rb +2 -0
- data/app/models/spree/option_type.rb +2 -5
- data/app/models/spree/option_value.rb +1 -4
- data/app/models/spree/order/checkout.rb +7 -2
- data/app/models/spree/order/emails.rb +3 -11
- data/app/models/spree/order/store_credit.rb +5 -1
- data/app/models/spree/order.rb +80 -31
- data/app/models/spree/order_updater.rb +28 -9
- data/app/models/spree/payment/custom_events.rb +37 -0
- data/app/models/spree/payment.rb +13 -4
- data/app/models/spree/payment_capture_event.rb +0 -4
- data/app/models/spree/payment_method.rb +1 -1
- data/app/models/spree/permission_sets/default_customer.rb +3 -3
- data/app/models/spree/policy.rb +1 -8
- data/app/models/spree/post.rb +2 -7
- data/app/models/spree/post_category.rb +2 -0
- data/app/models/spree/price.rb +8 -6
- data/app/models/spree/price_list.rb +263 -0
- data/app/models/spree/price_rule.rb +26 -0
- data/app/models/spree/price_rules/customer_group_rule.rb +21 -0
- data/app/models/spree/price_rules/user_rule.rb +19 -0
- data/app/models/spree/price_rules/volume_rule.rb +21 -0
- data/app/models/spree/price_rules/zone_rule.rb +19 -0
- data/app/models/spree/product.rb +117 -76
- data/app/models/spree/product_property.rb +2 -2
- data/app/models/spree/promotion/rules/customer_group.rb +22 -0
- data/app/models/spree/promotion/rules/user.rb +2 -2
- data/app/models/spree/promotion.rb +3 -4
- data/app/models/spree/promotion_handler/coupon.rb +3 -3
- data/app/models/spree/property.rb +3 -6
- data/app/models/spree/prototype.rb +0 -3
- data/app/models/spree/refund.rb +2 -3
- data/app/models/spree/reimbursement.rb +5 -3
- data/app/models/spree/report.rb +7 -1
- data/app/models/spree/reports/products_performance.rb +1 -1
- data/app/models/spree/reports/sales_total.rb +1 -1
- data/app/models/spree/return_authorization.rb +7 -3
- data/app/models/spree/return_item.rb +15 -4
- data/app/models/spree/shipment/custom_events.rb +47 -0
- data/app/models/spree/shipment.rb +12 -5
- data/app/models/spree/shipping_category.rb +0 -3
- data/app/models/spree/shipping_method.rb +0 -3
- data/app/models/spree/stock/quantifier.rb +1 -1
- data/app/models/spree/stock_item.rb +2 -0
- data/app/models/spree/stock_location.rb +0 -3
- data/app/models/spree/stock_movement/custom_events.rb +44 -0
- data/app/models/spree/stock_movement.rb +3 -0
- data/app/models/spree/stock_transfer.rb +2 -3
- data/app/models/spree/store.rb +64 -92
- data/app/models/spree/store_credit.rb +3 -4
- data/app/models/spree/store_product.rb +14 -0
- data/app/models/spree/subscriber.rb +186 -0
- data/app/models/spree/tax_category.rb +0 -4
- data/app/models/spree/tax_rate.rb +0 -3
- data/app/models/spree/taxon.rb +3 -36
- data/app/models/spree/taxonomy.rb +0 -3
- data/app/models/spree/variant.rb +114 -21
- data/app/models/spree/webhook_delivery.rb +60 -0
- data/app/models/spree/webhook_endpoint.rb +53 -0
- data/app/models/spree/wished_item.rb +2 -4
- data/app/models/spree/wishlist.rb +2 -3
- data/app/models/spree/zone.rb +0 -9
- data/app/paginators/spree/shared/paginate.rb +4 -0
- data/app/serializers/spree/events/asset_serializer.rb +22 -0
- data/app/serializers/spree/events/base_serializer.rb +61 -0
- data/app/serializers/spree/events/customer_return_serializer.rb +20 -0
- data/app/serializers/spree/events/digital_link_serializer.rb +20 -0
- data/app/serializers/spree/events/digital_serializer.rb +18 -0
- data/app/serializers/spree/events/export_serializer.rb +22 -0
- data/app/serializers/spree/events/gift_card_batch_serializer.rb +24 -0
- data/app/serializers/spree/events/gift_card_serializer.rb +29 -0
- data/app/serializers/spree/events/image_serializer.rb +9 -0
- data/app/serializers/spree/events/import_row_serializer.rb +23 -0
- data/app/serializers/spree/events/import_serializer.rb +24 -0
- data/app/serializers/spree/events/invitation_serializer.rb +28 -0
- data/app/serializers/spree/events/line_item_serializer.rb +31 -0
- data/app/serializers/spree/events/newsletter_subscriber_serializer.rb +21 -0
- data/app/serializers/spree/events/order_serializer.rb +39 -0
- data/app/serializers/spree/events/payment_serializer.rb +24 -0
- data/app/serializers/spree/events/post_category_serializer.rb +20 -0
- data/app/serializers/spree/events/post_serializer.rb +26 -0
- data/app/serializers/spree/events/price_serializer.rb +22 -0
- data/app/serializers/spree/events/product_serializer.rb +24 -0
- data/app/serializers/spree/events/promotion_serializer.rb +32 -0
- data/app/serializers/spree/events/refund_serializer.rb +23 -0
- data/app/serializers/spree/events/reimbursement_serializer.rb +22 -0
- data/app/serializers/spree/events/report_serializer.rb +23 -0
- data/app/serializers/spree/events/return_authorization_serializer.rb +22 -0
- data/app/serializers/spree/events/return_item_serializer.rb +27 -0
- data/app/serializers/spree/events/shipment_serializer.rb +24 -0
- data/app/serializers/spree/events/stock_item_serializer.rb +22 -0
- data/app/serializers/spree/events/stock_movement_serializer.rb +22 -0
- data/app/serializers/spree/events/stock_transfer_serializer.rb +22 -0
- data/app/serializers/spree/events/store_credit_serializer.rb +30 -0
- data/app/serializers/spree/events/user_serializer.rb +18 -0
- data/app/serializers/spree/events/variant_serializer.rb +34 -0
- data/app/serializers/spree/events/wished_item_serializer.rb +20 -0
- data/app/serializers/spree/events/wishlist_serializer.rb +22 -0
- data/app/services/spree/addresses/update.rb +1 -1
- data/app/services/spree/cart/add_item.rb +1 -1
- data/app/services/spree/coupon_codes/coupon_codes_handler.rb +2 -1
- data/app/services/spree/data_feeds/google/required_attributes.rb +4 -4
- data/app/services/spree/newsletter/verify.rb +5 -0
- data/app/services/spree/products/auto_match_taxons.rb +1 -1
- data/app/services/spree/seeds/all.rb +1 -1
- data/app/services/spree/taxons/add_products.rb +8 -4
- data/app/services/spree/taxons/regenerate_products.rb +8 -0
- data/app/services/spree/taxons/remove_products.rb +12 -7
- data/app/subscribers/spree/event_log_subscriber.rb +64 -0
- data/app/subscribers/spree/export_subscriber.rb +26 -0
- data/app/subscribers/spree/invitation_email_subscriber.rb +40 -0
- data/app/subscribers/spree/product_metrics_subscriber.rb +29 -0
- data/app/subscribers/spree/report_subscriber.rb +26 -0
- data/config/locales/en.yml +126 -0
- data/db/migrate/20251110120000_create_spree_price_lists.rb +22 -0
- data/db/migrate/20251110120001_create_spree_price_rules.rb +13 -0
- data/db/migrate/20251110120002_add_price_list_id_to_spree_prices.rb +6 -0
- data/db/migrate/20251110120003_add_price_list_id_to_spree_line_items.rb +5 -0
- data/db/migrate/20251201172118_fix_indexes_on_friendly_id_slugs.rb +8 -0
- data/db/migrate/20251214000001_create_spree_webhook_endpoints.rb +19 -0
- data/db/migrate/20251214000002_create_spree_webhook_deliveries.rb +23 -0
- data/db/migrate/20251222000000_add_performance_indexes_to_spree_adjustments.rb +25 -0
- data/db/migrate/20260112000000_fix_spree_prices_unique_indexes.rb +33 -0
- data/db/migrate/20260115120000_create_spree_customer_groups.rb +14 -0
- data/db/migrate/20260115120001_create_spree_customer_group_users.rb +14 -0
- data/db/migrate/20260117140831_remove_not_null_constraint_from_policy_name.rb +5 -0
- data/db/migrate/20260118120000_add_statistics_to_store_products.rb +11 -0
- data/db/migrate/20260119120000_add_counter_caches_to_spree_products.rb +9 -0
- data/db/migrate/20260119170000_add_counter_caches_to_spree_taxons.rb +9 -0
- data/db/migrate/20260120120000_add_image_count_to_spree_variants.rb +9 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +14 -2
- data/lib/spree/core/configuration.rb +1 -0
- data/lib/spree/core/controller_helpers/auth.rb +0 -15
- data/lib/spree/core/controller_helpers/currency.rb +13 -9
- data/lib/spree/core/controller_helpers/search.rb +1 -1
- data/lib/spree/core/controller_helpers/store.rb +5 -1
- data/lib/spree/core/engine.rb +61 -78
- data/lib/spree/core/importer/order.rb +1 -1
- data/lib/spree/core/importer/product.rb +1 -1
- data/lib/spree/core/preferences/preferable.rb +14 -1
- data/lib/spree/core/pricing/context.rb +63 -0
- data/lib/spree/core/pricing/resolver.rb +129 -0
- data/lib/spree/core/search/base.rb +1 -1
- data/lib/spree/core/token_generator.rb +1 -1
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +42 -47
- data/lib/spree/events/adapters/active_support_notifications.rb +112 -0
- data/lib/spree/events/adapters/base.rb +193 -0
- data/lib/spree/events/registry.rb +99 -0
- data/lib/spree/events.rb +240 -0
- data/lib/spree/permitted_attributes.rb +13 -2
- data/lib/spree/testing_support/common_rake.rb +68 -35
- data/lib/spree/testing_support/factories/customer_group_factory.rb +6 -0
- data/lib/spree/testing_support/factories/customer_group_user_factory.rb +6 -0
- data/lib/spree/testing_support/factories/price_factory.rb +4 -0
- data/lib/spree/testing_support/factories/price_list_factory.rb +34 -0
- data/lib/spree/testing_support/factories/price_rule_factory.rb +49 -0
- data/lib/spree/testing_support/factories/promotion_rule_factory.rb +12 -0
- data/lib/spree/testing_support/factories/stock_item_factory.rb +6 -4
- data/lib/spree/testing_support/factories/store_product_factory.rb +6 -0
- data/lib/spree/testing_support/factories/taxon_factory.rb +0 -1
- data/lib/spree/testing_support/factories/webhook_delivery_factory.rb +48 -0
- data/lib/spree/testing_support/factories/webhook_endpoint_factory.rb +22 -0
- data/lib/spree/testing_support/lifecycle_events.rb +38 -0
- data/lib/spree/testing_support/store.rb +4 -2
- data/lib/spree/webhooks.rb +22 -0
- data/lib/tasks/products.rake +40 -0
- data/lib/tasks/taxons.rake +19 -0
- data/lib/tasks/variants.rake +18 -0
- metadata +112 -114
- data/app/jobs/spree/themes/duplicate_components_job.rb +0 -59
- data/app/jobs/spree/themes/screenshot_job.rb +0 -81
- data/app/models/concerns/spree/has_page_links.rb +0 -53
- data/app/models/spree/page.rb +0 -188
- data/app/models/spree/page_block.rb +0 -73
- data/app/models/spree/page_blocks/buttons.rb +0 -29
- data/app/models/spree/page_blocks/heading.rb +0 -18
- data/app/models/spree/page_blocks/image.rb +0 -20
- data/app/models/spree/page_blocks/link.rb +0 -21
- data/app/models/spree/page_blocks/mega_nav.rb +0 -33
- data/app/models/spree/page_blocks/mega_nav_with_subcategories.rb +0 -32
- data/app/models/spree/page_blocks/metafields.rb +0 -18
- data/app/models/spree/page_blocks/nav.rb +0 -15
- data/app/models/spree/page_blocks/newsletter_form.rb +0 -18
- data/app/models/spree/page_blocks/products/brand.rb +0 -15
- data/app/models/spree/page_blocks/products/buy_buttons.rb +0 -24
- data/app/models/spree/page_blocks/products/description.rb +0 -18
- data/app/models/spree/page_blocks/products/price.rb +0 -18
- data/app/models/spree/page_blocks/products/quantity_selector.rb +0 -20
- data/app/models/spree/page_blocks/products/share.rb +0 -8
- data/app/models/spree/page_blocks/products/title.rb +0 -19
- data/app/models/spree/page_blocks/products/variant_picker.rb +0 -13
- data/app/models/spree/page_blocks/subheading.rb +0 -17
- data/app/models/spree/page_blocks/text.rb +0 -16
- data/app/models/spree/page_link.rb +0 -60
- data/app/models/spree/page_section.rb +0 -222
- data/app/models/spree/page_sections/announcement_bar.rb +0 -28
- data/app/models/spree/page_sections/breadcrumbs.rb +0 -12
- data/app/models/spree/page_sections/collection_banner.rb +0 -18
- data/app/models/spree/page_sections/custom_code.rb +0 -11
- data/app/models/spree/page_sections/featured_posts.rb +0 -45
- data/app/models/spree/page_sections/featured_product.rb +0 -50
- data/app/models/spree/page_sections/featured_taxon.rb +0 -90
- data/app/models/spree/page_sections/featured_taxons.rb +0 -45
- data/app/models/spree/page_sections/footer.rb +0 -101
- data/app/models/spree/page_sections/header.rb +0 -62
- data/app/models/spree/page_sections/image_banner.rb +0 -55
- data/app/models/spree/page_sections/image_with_text.rb +0 -65
- data/app/models/spree/page_sections/main_password_footer.rb +0 -18
- data/app/models/spree/page_sections/main_password_header.rb +0 -20
- data/app/models/spree/page_sections/newsletter.rb +0 -54
- data/app/models/spree/page_sections/page_title.rb +0 -19
- data/app/models/spree/page_sections/post_details.rb +0 -19
- data/app/models/spree/page_sections/post_grid.rb +0 -19
- data/app/models/spree/page_sections/product_details.rb +0 -53
- data/app/models/spree/page_sections/product_grid.rb +0 -13
- data/app/models/spree/page_sections/related_products.rb +0 -58
- data/app/models/spree/page_sections/rich_text.rb +0 -31
- data/app/models/spree/page_sections/taxon_banner.rb +0 -18
- data/app/models/spree/page_sections/taxon_grid.rb +0 -17
- data/app/models/spree/page_sections/video.rb +0 -107
- data/app/models/spree/pages/account.rb +0 -19
- data/app/models/spree/pages/cart.rb +0 -19
- data/app/models/spree/pages/checkout.rb +0 -15
- data/app/models/spree/pages/custom.rb +0 -38
- data/app/models/spree/pages/homepage.rb +0 -72
- data/app/models/spree/pages/login.rb +0 -19
- data/app/models/spree/pages/password.rb +0 -59
- data/app/models/spree/pages/post.rb +0 -27
- data/app/models/spree/pages/post_list.rb +0 -36
- data/app/models/spree/pages/product_details.rb +0 -30
- data/app/models/spree/pages/search_results.rb +0 -43
- data/app/models/spree/pages/shop_all.rb +0 -40
- data/app/models/spree/pages/taxon.rb +0 -29
- data/app/models/spree/pages/taxon_list.rb +0 -41
- data/app/models/spree/pages/wishlist.rb +0 -15
- data/app/models/spree/theme.rb +0 -233
- data/app/models/spree/themes/default.rb +0 -97
- data/app/services/spree/taxons/touch_featured_sections.rb +0 -21
- data/db/migrate/20250120094216_create_page_builder_models.rb +0 -78
- data/db/migrate/20250305121352_remove_page_builder_indices.rb +0 -11
- data/db/migrate/20250825175217_add_missing_page_builder_indexes.rb +0 -7
- data/db/migrate/20250913130044_add_page_links_counter_cache_to_spree_stores.rb +0 -10
- data/lib/generators/spree/dummy/templates/initializers/devise.rb +0 -3
- data/lib/generators/spree/install/install_generator.rb +0 -219
- data/lib/generators/spree/install/templates/config/initializers/spree.rb +0 -126
- data/lib/spree/core/webhooks.rb +0 -21
- data/lib/spree/testing_support/factories/page_block_factory.rb +0 -22
- data/lib/spree/testing_support/factories/page_factory.rb +0 -33
- data/lib/spree/testing_support/factories/page_link_factory.rb +0 -7
- data/lib/spree/testing_support/factories/page_section_factory.rb +0 -27
- data/lib/spree/testing_support/factories/theme_factory.rb +0 -14
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
require 'rails/generators'
|
|
2
|
-
require 'highline/import'
|
|
3
|
-
require 'bundler'
|
|
4
|
-
require 'bundler/cli'
|
|
5
|
-
require 'active_support/core_ext/string/indent'
|
|
6
|
-
require 'spree/core'
|
|
7
|
-
|
|
8
|
-
module Spree
|
|
9
|
-
class InstallGenerator < Rails::Generators::Base
|
|
10
|
-
class_option :migrate, type: :boolean, default: true, banner: 'Run Spree migrations'
|
|
11
|
-
class_option :seed, type: :boolean, default: true, banner: 'load seed data (migrations must be run)'
|
|
12
|
-
class_option :sample, type: :boolean, default: false, banner: 'load sample data (migrations must be run)'
|
|
13
|
-
class_option :install_storefront, type: :boolean, default: false, banner: 'installs default rails storefront'
|
|
14
|
-
class_option :install_admin, type: :boolean, default: false, banner: 'installs default rails admin'
|
|
15
|
-
class_option :auto_accept, type: :boolean
|
|
16
|
-
class_option :user_class, type: :string
|
|
17
|
-
class_option :admin_user_class, type: :string
|
|
18
|
-
class_option :admin_email, type: :string
|
|
19
|
-
class_option :admin_password, type: :string
|
|
20
|
-
class_option :lib_name, type: :string, default: 'spree'
|
|
21
|
-
class_option :enforce_available_locales, type: :boolean, default: nil
|
|
22
|
-
class_option :authentication, type: :string, default: 'devise'
|
|
23
|
-
|
|
24
|
-
def self.source_paths
|
|
25
|
-
paths = superclass.source_paths
|
|
26
|
-
paths << File.expand_path('../templates', "../../#{__FILE__}")
|
|
27
|
-
paths << File.expand_path('../templates', "../#{__FILE__}")
|
|
28
|
-
paths << File.expand_path('templates', __dir__)
|
|
29
|
-
paths.flatten
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def prepare_options
|
|
33
|
-
@run_migrations = options[:migrate]
|
|
34
|
-
@load_seed_data = options[:seed]
|
|
35
|
-
@load_sample_data = options[:sample]
|
|
36
|
-
@install_storefront = options[:install_storefront]
|
|
37
|
-
@install_admin = options[:install_admin]
|
|
38
|
-
@authentication = options[:authentication]
|
|
39
|
-
|
|
40
|
-
unless @run_migrations
|
|
41
|
-
@load_seed_data = false
|
|
42
|
-
@load_sample_data = false
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def add_files
|
|
47
|
-
template 'config/initializers/spree.rb', 'config/initializers/spree.rb'
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# Currently we only support devise, in the future we will also add support for default Rails authentication
|
|
51
|
-
def install_authentication
|
|
52
|
-
if @authentication == 'devise'
|
|
53
|
-
generate 'spree:authentication:devise'
|
|
54
|
-
elsif @authentication == 'dummy'
|
|
55
|
-
# this is for dummy / test app
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def install_storefront
|
|
60
|
-
if @install_storefront && Spree::Core::Engine.frontend_available?
|
|
61
|
-
generate 'spree:storefront:install'
|
|
62
|
-
|
|
63
|
-
# generate devise controllers if authentication is devise
|
|
64
|
-
if @authentication == 'devise'
|
|
65
|
-
generate 'spree:storefront:devise'
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def install_admin
|
|
71
|
-
if @install_admin && Spree::Core::Engine.admin_available?
|
|
72
|
-
generate 'spree:admin:install'
|
|
73
|
-
|
|
74
|
-
# generate devise controllers if authentication is devise
|
|
75
|
-
if @authentication == 'devise'
|
|
76
|
-
generate 'spree:admin:devise'
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def configure_application
|
|
82
|
-
application <<-APP.strip_heredoc.indent!(4)
|
|
83
|
-
|
|
84
|
-
config.to_prepare do
|
|
85
|
-
# Load application's model / class decorators
|
|
86
|
-
Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
|
|
87
|
-
Rails.configuration.cache_classes ? require(c) : load(c)
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
APP
|
|
91
|
-
|
|
92
|
-
unless options[:enforce_available_locales].nil?
|
|
93
|
-
application <<-APP.strip_heredoc.indent!(4)
|
|
94
|
-
# Prevent this deprecation message: https://github.com/svenfuchs/i18n/commit/3b6e56e
|
|
95
|
-
I18n.enforce_available_locales = #{options[:enforce_available_locales]}
|
|
96
|
-
APP
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def include_seed_data
|
|
101
|
-
append_file 'db/seeds.rb', <<-SEEDS.strip_heredoc
|
|
102
|
-
|
|
103
|
-
Spree::Core::Engine.load_seed if defined?(Spree::Core)
|
|
104
|
-
SEEDS
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def install_migrations
|
|
108
|
-
say_status :copying, 'migrations'
|
|
109
|
-
silence_stream(STDOUT) do
|
|
110
|
-
silence_warnings { rake 'active_storage:install:migrations' }
|
|
111
|
-
silence_warnings { rake 'action_text:install:migrations' }
|
|
112
|
-
silence_warnings { rake 'spree:install:migrations' }
|
|
113
|
-
silence_warnings { rake 'spree_api:install:migrations' }
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def run_migrations
|
|
118
|
-
if @run_migrations
|
|
119
|
-
say_status :running, 'migrations'
|
|
120
|
-
rake 'db:migrate'
|
|
121
|
-
else
|
|
122
|
-
say_status :skipping, "migrations (don't forget to run rake db:migrate)"
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
def populate_seed_data
|
|
127
|
-
if @load_seed_data
|
|
128
|
-
say_status :loading, 'seed data'
|
|
129
|
-
rake_options = []
|
|
130
|
-
rake_options << 'AUTO_ACCEPT=1' if options[:auto_accept]
|
|
131
|
-
rake_options << "ADMIN_EMAIL=#{options[:admin_email]}" if options[:admin_email]
|
|
132
|
-
rake_options << "ADMIN_PASSWORD=#{options[:admin_password]}" if options[:admin_password]
|
|
133
|
-
|
|
134
|
-
cmd = -> { rake("db:seed #{rake_options.join(' ')}") }
|
|
135
|
-
if options[:auto_accept] || (options[:admin_email] && options[:admin_password])
|
|
136
|
-
silence_warnings &cmd
|
|
137
|
-
else
|
|
138
|
-
cmd.call
|
|
139
|
-
end
|
|
140
|
-
else
|
|
141
|
-
say_status :skipping, 'seed data (you can always run bin/rails db:seed)'
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
def load_sample_data
|
|
146
|
-
return unless Spree::Core::Engine.sample_available?
|
|
147
|
-
|
|
148
|
-
if @load_sample_data
|
|
149
|
-
say_status :loading, 'sample data'
|
|
150
|
-
rake 'spree_sample:load'
|
|
151
|
-
else
|
|
152
|
-
say_status :skipping, 'sample data (you can always run rake spree_sample:load)'
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
def notify_about_routes
|
|
157
|
-
insert_into_file(File.join('config', 'routes.rb'),
|
|
158
|
-
after: "Rails.application.routes.draw do\n") do
|
|
159
|
-
<<-ROUTES.strip_heredoc.indent!(2)
|
|
160
|
-
# This line mounts Spree's routes at the root of your application.
|
|
161
|
-
# This means, any requests to URLs such as /products, will go to
|
|
162
|
-
# Spree::ProductsController.
|
|
163
|
-
# If you would like to change where this engine is mounted, simply change the
|
|
164
|
-
# :at option to something different.
|
|
165
|
-
#
|
|
166
|
-
# We ask that you don't use the :as option here, as Spree relies on it being
|
|
167
|
-
# the default of "spree".
|
|
168
|
-
mount Spree::Core::Engine, at: '/'
|
|
169
|
-
ROUTES
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
unless options[:quiet]
|
|
173
|
-
puts '*' * 50
|
|
174
|
-
puts "We added the following line to your application's config/routes.rb file:"
|
|
175
|
-
puts ' '
|
|
176
|
-
puts " mount Spree::Core::Engine, at: '/'"
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
def complete
|
|
181
|
-
unless options[:quiet]
|
|
182
|
-
puts '*' * 50
|
|
183
|
-
puts "Spree has been installed successfully. You're all ready to go!"
|
|
184
|
-
puts ' '
|
|
185
|
-
puts 'Enjoy!'
|
|
186
|
-
end
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
protected
|
|
190
|
-
|
|
191
|
-
def javascript_exists?(script)
|
|
192
|
-
extensions = %w(.js.coffee .js.erb .js.coffee.erb .js)
|
|
193
|
-
file_exists?(extensions, script)
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
def stylesheet_exists?(stylesheet)
|
|
197
|
-
extensions = %w(.css.scss .css.erb .css.scss.erb .css)
|
|
198
|
-
file_exists?(extensions, stylesheet)
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
def file_exists?(extensions, filename)
|
|
202
|
-
extensions.detect do |extension|
|
|
203
|
-
File.exist?("#{filename}#{extension}")
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
private
|
|
208
|
-
|
|
209
|
-
def silence_stream(stream)
|
|
210
|
-
old_stream = stream.dup
|
|
211
|
-
stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
|
|
212
|
-
stream.sync = true
|
|
213
|
-
yield
|
|
214
|
-
ensure
|
|
215
|
-
stream.reopen(old_stream)
|
|
216
|
-
old_stream.close
|
|
217
|
-
end
|
|
218
|
-
end
|
|
219
|
-
end
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
# Configure Spree Preferences
|
|
2
|
-
#
|
|
3
|
-
# Note: Initializing preferences available within the Admin will overwrite any changes that were made through the user interface when you restart.
|
|
4
|
-
# If you would like users to be able to update a setting with the Admin it should NOT be set here.
|
|
5
|
-
#
|
|
6
|
-
# Note: If a preference is set here it will be stored within the cache & database upon initialization.
|
|
7
|
-
# Just removing an entry from this initializer will not make the preference value go away.
|
|
8
|
-
# Instead you must either set a new value or remove entry, clear cache, and remove database entry.
|
|
9
|
-
#
|
|
10
|
-
# In order to initialize a setting do:
|
|
11
|
-
# config.setting_name = 'new value'
|
|
12
|
-
#
|
|
13
|
-
# More on configuring Spree preferences can be found at:
|
|
14
|
-
# https://docs.spreecommerce.org/developer/customization
|
|
15
|
-
Spree.config do |config|
|
|
16
|
-
# Example:
|
|
17
|
-
# Uncomment to stop tracking inventory levels in the application
|
|
18
|
-
# config.track_inventory_levels = false
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# Background job queue names
|
|
22
|
-
# Spree.queues.default = :default
|
|
23
|
-
# Spree.queues.variants = :default
|
|
24
|
-
# Spree.queues.stock_location_stock_items = :default
|
|
25
|
-
# Spree.queues.coupon_codes = :default
|
|
26
|
-
|
|
27
|
-
# Use a CDN host for images, eg. Cloudfront
|
|
28
|
-
# This is used in the frontend to generate absolute URLs to images
|
|
29
|
-
# Default is nil and your application host will be used
|
|
30
|
-
# Spree.cdn_host = 'cdn.example.com'
|
|
31
|
-
|
|
32
|
-
# Multi-store setup
|
|
33
|
-
# You need to set a wildcard `root_domain` on the store to enable multi-store setup
|
|
34
|
-
# all new stores will be created in a subdomain of the root domain, eg. store1.lvh.me, store2.lvh.me, etc.
|
|
35
|
-
# Spree.root_domain = ENV.fetch('SPREE_ROOT_DOMAIN', 'lvh.me')
|
|
36
|
-
|
|
37
|
-
# Use a different service for storage (S3, google, etc)
|
|
38
|
-
# unless Rails.env.test?
|
|
39
|
-
# Spree.private_storage_service_name = :amazon_public # public assets, such as product images
|
|
40
|
-
# Spree.public_storage_service_name = :amazon_private # private assets, such as invoices, etc
|
|
41
|
-
# end
|
|
42
|
-
|
|
43
|
-
# Enable theme preview screenshots in admin dashboard
|
|
44
|
-
# Spree.screenshot_api_token = <Your Screenshot API token obtained from https://screenshotapi.net/>
|
|
45
|
-
|
|
46
|
-
# Configure Spree Dependencies
|
|
47
|
-
#
|
|
48
|
-
# Note: If a dependency is set here it will NOT be stored within the cache & database upon initialization.
|
|
49
|
-
# Just removing an entry from this initializer will make the dependency value go away.
|
|
50
|
-
#
|
|
51
|
-
# More on how to use Spree dependencies can be found at:
|
|
52
|
-
# https://docs.spreecommerce.org/customization/dependencies
|
|
53
|
-
Spree.dependencies do |dependencies|
|
|
54
|
-
# Example:
|
|
55
|
-
# Uncomment to change the default Service handling adding Items to Cart
|
|
56
|
-
# dependencies.cart_add_item_service = 'MyNewAwesomeService'
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# Spree::Api::Dependencies.storefront_cart_serializer = 'MyRailsApp::CartSerializer'
|
|
60
|
-
|
|
61
|
-
# uncomment lines below to add your own custom business logic
|
|
62
|
-
# such as promotions, shipping methods, etc
|
|
63
|
-
Rails.application.config.after_initialize do
|
|
64
|
-
# Payment methods and shipping calculators
|
|
65
|
-
# Spree.payment_methods << Spree::PaymentMethods::VerySafeAndReliablePaymentMethod
|
|
66
|
-
# Spree.calculators.shipping_methods << Spree::ShippingMethods::SuperExpensiveNotVeryFastShipping
|
|
67
|
-
# Spree.calculators.tax_rates << Spree::TaxRates::FinanceTeamForcedMeToCodeThis
|
|
68
|
-
|
|
69
|
-
# Stock splitters and adjusters
|
|
70
|
-
# Spree.stock_splitters << Spree::Stock::Splitters::SecretLogicSplitter
|
|
71
|
-
# Spree.adjusters << Spree::Adjustable::Adjuster::TaxTheRich
|
|
72
|
-
|
|
73
|
-
# Custom promotions
|
|
74
|
-
# Spree.calculators.promotion_actions_create_adjustments << Spree::Calculators::PromotionActions::CreateAdjustments::AddDiscountForFriends
|
|
75
|
-
# Spree.calculators.promotion_actions_create_item_adjustments << Spree::Calculators::PromotionActions::CreateItemAdjustments::FinanceTeamForcedMeToCodeThis
|
|
76
|
-
# Spree.promotions.rules << Spree::Promotions::Rules::OnlyForVIPCustomers
|
|
77
|
-
# Spree.promotions.actions << Spree::Promotions::Actions::GiftWithPurchase
|
|
78
|
-
|
|
79
|
-
# Taxon rules
|
|
80
|
-
# Spree.taxon_rules << Spree::TaxonRules::ProductsWithColor
|
|
81
|
-
|
|
82
|
-
# Exports and reports
|
|
83
|
-
# Spree.export_types << Spree::Exports::Payments
|
|
84
|
-
# Spree.reports << Spree::Reports::MassivelyOvercomplexReportForCfo
|
|
85
|
-
|
|
86
|
-
# Page builder (themes, pages, sections, blocks)
|
|
87
|
-
# Spree.page_builder.themes << Spree::Themes::NewShinyTheme
|
|
88
|
-
# Spree.page_builder.theme_layout_sections << Spree::PageSections::SuperImportantCeoBio
|
|
89
|
-
# Spree.page_builder.pages << Spree::Pages::CustomLandingPage
|
|
90
|
-
# Spree.page_builder.page_sections << Spree::PageSections::ContactFormToGetInTouch
|
|
91
|
-
# Spree.page_builder.page_blocks << Spree::PageBlocks::BigRedButtonToCallSales
|
|
92
|
-
|
|
93
|
-
# Storefront partials
|
|
94
|
-
# Spree.storefront.partials.head << 'spree/shared/that_js_snippet_that_marketing_forced_me_to_include'
|
|
95
|
-
|
|
96
|
-
# Admin partials
|
|
97
|
-
# Spree.admin.partials.product_form << 'spree/admin/products/custom_section'
|
|
98
|
-
|
|
99
|
-
# Role-based permissions
|
|
100
|
-
# Configure which permission sets are assigned to each role
|
|
101
|
-
# More on permission sets: https://spreecommerce.org/docs/developer/customization/permissions
|
|
102
|
-
Spree.permissions.assign(:default, [Spree::PermissionSets::DefaultCustomer])
|
|
103
|
-
Spree.permissions.assign(:admin, [Spree::PermissionSets::SuperUser])
|
|
104
|
-
|
|
105
|
-
# Example: Create a custom role with specific permissions
|
|
106
|
-
# Spree.permissions.assign(:customer_service, [
|
|
107
|
-
# Spree::PermissionSets::DashboardDisplay,
|
|
108
|
-
# Spree::PermissionSets::OrderManagement,
|
|
109
|
-
# Spree::PermissionSets::UserDisplay
|
|
110
|
-
# ])
|
|
111
|
-
#
|
|
112
|
-
# Available permission sets:
|
|
113
|
-
# - Spree::PermissionSets::SuperUser (full admin access)
|
|
114
|
-
# - Spree::PermissionSets::DefaultCustomer (storefront access)
|
|
115
|
-
# - Spree::PermissionSets::DashboardDisplay (view admin dashboard)
|
|
116
|
-
# - Spree::PermissionSets::OrderDisplay / OrderManagement
|
|
117
|
-
# - Spree::PermissionSets::ProductDisplay / ProductManagement
|
|
118
|
-
# - Spree::PermissionSets::UserDisplay / UserManagement
|
|
119
|
-
# - Spree::PermissionSets::StockDisplay / StockManagement
|
|
120
|
-
# - Spree::PermissionSets::PromotionManagement
|
|
121
|
-
# - Spree::PermissionSets::ConfigurationManagement
|
|
122
|
-
# - Spree::PermissionSets::RoleManagement
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
Spree.user_class = <%= (options[:user_class].blank? ? 'Spree::LegacyUser' : options[:user_class]).inspect %>
|
|
126
|
-
Spree.admin_user_class = <%= (options[:admin_user_class].blank? ? (options[:user_class].blank? ? 'Spree::LegacyUser' : options[:user_class]) : options[:admin_user_class]).inspect %>
|
data/lib/spree/core/webhooks.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Webhooks
|
|
3
|
-
def self.disable_webhooks
|
|
4
|
-
prev_value = disabled?
|
|
5
|
-
RequestStore.store[:disable_spree_webhooks] = true
|
|
6
|
-
yield
|
|
7
|
-
ensure
|
|
8
|
-
RequestStore.store[:disable_spree_webhooks] = prev_value
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def self.disabled?
|
|
12
|
-
# rubocop:disable Style/RedundantFetchBlock
|
|
13
|
-
RequestStore.fetch(:disable_spree_webhooks) { false }
|
|
14
|
-
# rubocop:enable Style/RedundantFetchBlock
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def self.disabled=(value)
|
|
18
|
-
RequestStore.store[:disable_spree_webhooks] = value
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
FactoryBot.define do
|
|
2
|
-
factory :page_block, class: Spree::PageBlock do
|
|
3
|
-
section { create(:page_section) }
|
|
4
|
-
|
|
5
|
-
trait :buttons do
|
|
6
|
-
type { 'Spree::PageBlocks::Buttons' }
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
trait :nav do
|
|
10
|
-
section { create(:header_page_section) }
|
|
11
|
-
|
|
12
|
-
type { 'Spree::PageBlocks::Nav' }
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
trait :heading do
|
|
16
|
-
type { 'Spree::PageBlocks::Heading' }
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
factory :buttons_block, traits: [:buttons], class: Spree::PageBlocks::Buttons
|
|
20
|
-
factory :heading_block, traits: [:heading], class: Spree::PageBlocks::Heading
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
FactoryBot.define do
|
|
2
|
-
factory :page, class: Spree::Page do
|
|
3
|
-
type { 'Spree::Page' }
|
|
4
|
-
pageable { Spree::Theme.first || create(:theme) }
|
|
5
|
-
sequence(:name) { |n| "Page #{n}" }
|
|
6
|
-
meta_description { 'Page Description' }
|
|
7
|
-
|
|
8
|
-
trait :homepage do
|
|
9
|
-
name { 'Homepage' }
|
|
10
|
-
type { 'Spree::Pages::Homepage' }
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
trait :account do
|
|
14
|
-
type { 'Spree::Pages::Account' }
|
|
15
|
-
name { 'Account' }
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
trait :preview do
|
|
19
|
-
parent { create(:page) }
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
trait :for_store do
|
|
23
|
-
pageable { Spree::Store.default }
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
factory :custom_page, class: Spree::Pages::Custom do
|
|
28
|
-
type { 'Spree::Pages::Custom' }
|
|
29
|
-
pageable { Spree::Store.default }
|
|
30
|
-
sequence(:name) { |n| "Custom Page #{n}" }
|
|
31
|
-
meta_description { 'Page Description' }
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
FactoryBot.define do
|
|
2
|
-
factory :page_section, class: Spree::PageSection do
|
|
3
|
-
pageable { Spree::Page.find_by!(name: 'Homepage') }
|
|
4
|
-
|
|
5
|
-
trait :without_links do
|
|
6
|
-
do_not_create_links { true }
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
factory :featured_taxons_page_section, class: Spree::PageSections::FeaturedTaxons
|
|
10
|
-
|
|
11
|
-
factory :featured_taxon_page_section, class: Spree::PageSections::FeaturedTaxon
|
|
12
|
-
|
|
13
|
-
factory :header_page_section, class: Spree::PageSections::Header
|
|
14
|
-
|
|
15
|
-
factory :announcement_bar_page_section, class: Spree::PageSections::AnnouncementBar
|
|
16
|
-
|
|
17
|
-
factory :rich_text_page_section, class: Spree::PageSections::RichText
|
|
18
|
-
|
|
19
|
-
factory :newsletter_page_section, class: Spree::PageSections::Newsletter
|
|
20
|
-
|
|
21
|
-
factory :video_page_section, class: Spree::PageSections::Video
|
|
22
|
-
|
|
23
|
-
factory :image_with_text_page_section, class: Spree::PageSections::ImageWithText
|
|
24
|
-
|
|
25
|
-
factory :featured_posts_page_section, class: Spree::PageSections::FeaturedPosts
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
FactoryBot.define do
|
|
2
|
-
factory :theme, class: Spree::Theme do
|
|
3
|
-
sequence(:name) { |n| "Theme #{n}#{Kernel.rand(9999)}" }
|
|
4
|
-
store { Spree::Store.default || create(:store, default: true) }
|
|
5
|
-
|
|
6
|
-
trait :blank do
|
|
7
|
-
duplicating { true }
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
trait :preview do
|
|
11
|
-
parent { Spree::Store.default.default_theme || create(:theme, store: store) }
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|