solidus_core 3.0.0 → 4.5.1
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/README.md +1 -2
- data/Rakefile +7 -2
- data/app/assets/images/logo/solidus.svg +18 -1
- data/app/assets/images/logo/solidus_logo.png +0 -0
- data/app/controllers/spree/base_controller.rb +1 -3
- data/app/helpers/spree/base_helper.rb +3 -3
- data/app/helpers/spree/core/controller_helpers/auth.rb +66 -0
- data/app/helpers/spree/core/controller_helpers/common.rb +82 -0
- data/app/helpers/spree/core/controller_helpers/order.rb +86 -0
- data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +165 -0
- data/{lib/spree/core/controller_helpers/current_host.rb → app/helpers/spree/core/controller_helpers/pricing.rb} +6 -4
- data/app/helpers/spree/core/controller_helpers/search.rb +16 -0
- data/app/helpers/spree/core/controller_helpers/store.rb +19 -0
- data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +74 -0
- data/app/helpers/spree/products_helper.rb +2 -2
- data/app/mailers/spree/base_mailer.rb +1 -1
- data/app/mailers/spree/carton_mailer.rb +1 -1
- data/app/mailers/spree/order_mailer.rb +3 -3
- data/app/mailers/spree/reimbursement_mailer.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +30 -11
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter.rb +1 -18
- data/app/models/concerns/spree/default_price.rb +30 -10
- data/app/models/concerns/spree/display_money.rb +1 -1
- data/app/models/concerns/spree/metadata.rb +64 -0
- data/app/models/concerns/spree/named_type.rb +2 -0
- data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
- data/app/models/concerns/spree/ransackable_attributes.rb +9 -5
- data/app/models/concerns/spree/user_address_book.rb +19 -10
- data/app/models/concerns/spree/user_methods.rb +40 -6
- data/app/models/spree/address.rb +11 -9
- data/app/models/spree/adjustment.rb +15 -76
- data/app/models/spree/adjustment_reason.rb +2 -0
- data/app/models/spree/calculator/flat_fee.rb +21 -0
- data/app/models/spree/calculator/returns/default_refund_amount.rb +1 -1
- data/app/models/spree/carton.rb +3 -3
- data/app/models/spree/core/state_machines/inventory_unit.rb +42 -0
- data/app/models/spree/core/state_machines/order/class_methods.rb +217 -0
- data/app/models/spree/core/state_machines/order.rb +42 -0
- data/app/models/spree/core/state_machines/payment.rb +61 -0
- data/app/models/spree/core/state_machines/reimbursement.rb +33 -0
- data/app/models/spree/core/state_machines/return_authorization.rb +32 -0
- data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
- data/app/models/spree/core/state_machines/return_item/reception_status.rb +42 -0
- data/app/models/spree/core/state_machines/shipment.rb +58 -0
- data/app/models/spree/country.rb +1 -1
- data/app/models/spree/credit_card.rb +13 -10
- data/app/models/spree/customer_return.rb +6 -3
- data/app/models/spree/deprecated_configurable_class.rb +40 -0
- data/app/models/spree/fulfilment_changer.rb +56 -29
- data/app/models/spree/image/active_storage_attachment.rb +2 -7
- data/app/models/spree/image/paperclip_attachment.rb +2 -2
- data/app/models/spree/inventory_unit.rb +2 -2
- data/app/models/spree/item_total.rb +28 -0
- data/app/models/spree/legacy_user.rb +1 -0
- data/app/models/spree/line_item.rb +26 -8
- data/app/models/spree/log_entry.rb +98 -1
- data/app/models/spree/money.rb +120 -0
- data/app/models/spree/null_promotion_adjuster.rb +13 -0
- data/app/models/spree/null_promotion_advertiser.rb +9 -0
- data/app/models/spree/null_promotion_finder.rb +9 -0
- data/app/models/spree/null_promotion_handler.rb +44 -0
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +4 -3
- data/app/models/spree/order/number_generator.rb +7 -1
- data/app/models/spree/order.rb +143 -96
- data/app/models/spree/order_cancellations.rb +8 -8
- data/app/models/spree/order_inventory.rb +7 -5
- data/app/models/spree/order_merger.rb +5 -7
- data/app/models/spree/order_mutex.rb +2 -2
- data/app/models/spree/order_shipping.rb +15 -19
- data/app/models/spree/order_taxation.rb +7 -4
- data/app/models/spree/order_update_attributes.rb +3 -1
- data/app/models/spree/order_updater.rb +25 -63
- data/app/models/spree/payment/processing.rb +60 -57
- data/app/models/spree/payment.rb +14 -27
- data/app/models/spree/payment_create.rb +1 -1
- data/app/models/spree/payment_method/bogus_credit_card.rb +18 -14
- data/app/models/spree/payment_method/credit_card.rb +0 -4
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +18 -4
- data/app/models/spree/payment_method/store_credit.rb +1 -1
- data/app/models/spree/payment_method.rb +29 -10
- data/app/models/spree/payment_source.rb +5 -1
- data/app/models/spree/permission_set.rb +11 -0
- data/app/models/spree/permission_sets/base.rb +45 -0
- data/app/models/spree/permission_sets/configuration_display.rb +53 -0
- data/app/models/spree/permission_sets/configuration_management.rb +52 -0
- data/app/models/spree/permission_sets/dashboard_display.rb +28 -0
- data/app/models/spree/permission_sets/default_customer.rb +83 -0
- data/app/models/spree/permission_sets/order_display.rb +50 -0
- data/app/models/spree/permission_sets/order_management.rb +50 -0
- data/app/models/spree/permission_sets/product_display.rb +43 -0
- data/app/models/spree/permission_sets/product_management.rb +47 -0
- data/app/models/spree/permission_sets/restricted_stock_display.rb +33 -0
- data/app/models/spree/permission_sets/restricted_stock_management.rb +33 -0
- data/app/models/spree/permission_sets/stock_display.rb +26 -0
- data/app/models/spree/permission_sets/stock_management.rb +26 -0
- data/app/models/spree/permission_sets/super_user.rb +26 -0
- data/app/models/spree/permission_sets/user_display.rb +27 -0
- data/app/models/spree/permission_sets/user_management.rb +44 -0
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +3 -3
- data/app/models/spree/product/scopes.rb +23 -10
- data/app/models/spree/product.rb +30 -23
- data/app/models/spree/product_property.rb +1 -1
- data/app/models/spree/property.rb +1 -1
- data/app/models/spree/refund.rb +13 -3
- data/app/models/spree/refund_reason.rb +6 -1
- data/app/models/spree/reimbursement.rb +6 -6
- data/app/models/spree/reimbursement_performer.rb +3 -3
- data/app/models/spree/reimbursement_tax_calculator.rb +3 -3
- data/app/models/spree/reimbursement_type/credit.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +6 -6
- data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
- data/app/models/spree/reimbursement_type.rb +6 -1
- data/app/models/spree/return_authorization.rb +3 -1
- data/app/models/spree/return_item.rb +13 -15
- data/app/models/spree/return_reason.rb +6 -1
- data/app/models/spree/role.rb +3 -1
- data/app/models/spree/role_permission.rb +8 -0
- data/app/models/spree/shipment.rb +12 -10
- data/app/models/spree/shipping_category.rb +2 -0
- data/app/models/spree/shipping_rate.rb +2 -3
- data/app/models/spree/shipping_rate_tax.rb +1 -1
- data/app/models/spree/{order_contents.rb → simple_order_contents.rb} +10 -13
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/stock/allocator/on_hand_first.rb +2 -2
- data/app/models/spree/stock/availability.rb +11 -3
- data/app/models/spree/stock/estimator.rb +1 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
- data/app/models/spree/stock/package.rb +2 -2
- data/app/models/spree/stock/quantifier.rb +12 -8
- data/app/models/spree/stock/simple_coordinator.rb +38 -28
- data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
- data/app/models/spree/stock_item.rb +2 -1
- data/app/models/spree/stock_location.rb +7 -7
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/store.rb +3 -1
- data/app/models/spree/store_credit.rb +31 -16
- data/app/models/spree/store_credit_event.rb +4 -3
- data/app/models/spree/store_credit_prioritizer.rb +17 -0
- data/app/models/spree/store_credit_reason.rb +6 -1
- data/app/models/spree/store_selector/by_server_name.rb +1 -1
- data/app/models/spree/tax/item_tax.rb +3 -2
- data/app/models/spree/tax/order_tax.rb +3 -1
- data/app/models/spree/tax/tax_helpers.rb +14 -3
- data/app/models/spree/tax/tax_location.rb +4 -7
- data/app/models/spree/tax_calculator/default.rb +32 -1
- data/app/models/spree/tax_calculator/shipping_rate.rb +2 -2
- data/app/models/spree/tax_category.rb +3 -1
- data/app/models/spree/tax_rate.rb +14 -1
- data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
- data/app/models/spree/taxon/paperclip_attachment.rb +4 -4
- data/app/models/spree/taxon.rb +25 -3
- data/app/models/spree/taxon_brand_selector.rb +22 -0
- data/app/models/spree/taxonomy.rb +4 -3
- data/app/models/spree/unauthorized_redirect_handler.rb +24 -0
- data/app/models/spree/unit_cancel.rb +1 -2
- data/app/models/spree/user_address.rb +9 -3
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +1 -1
- data/app/models/spree/variant/price_selector.rb +25 -8
- data/app/models/spree/variant/scopes.rb +4 -0
- data/app/models/spree/variant/vat_price_generator.rb +1 -1
- data/app/models/spree/variant.rb +64 -37
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
- data/app/models/spree/wallet.rb +2 -2
- data/app/models/spree/zone.rb +1 -1
- data/app/subscribers/spree/order_mailer_subscriber.rb +35 -0
- data/app/views/layouts/spree/base_mailer.html.erb +2 -2
- data/app/views/spree/order_mailer/cancel_email.html.erb +1 -1
- data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
- data/app/views/spree/order_mailer/confirm_email.html.erb +5 -5
- data/app/views/spree/order_mailer/confirm_email.text.erb +5 -5
- data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +0 -1
- data/config/i18n-tasks.yml +134 -0
- data/config/locales/en.yml +439 -338
- data/db/default/spree/permission_sets.rb +10 -0
- data/db/default/spree/return_reasons.rb +3 -1
- data/db/default/spree/states.rb +2 -2
- data/db/migrate/20160101010000_solidus_one_four.rb +0 -127
- data/db/migrate/20180710170104_create_spree_store_credit_reasons_table.rb +2 -2
- data/db/migrate/20201127212108_add_type_before_removal_to_spree_payment_methods.rb +7 -0
- data/db/migrate/20210312061050_change_column_null_on_prices.rb +7 -0
- data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +16 -0
- data/db/migrate/20220419170826_remove_archived_user_addresses.rb +12 -0
- data/db/migrate/20220805202442_add_level_to_spree_tax_rates.rb +5 -0
- data/db/migrate/20221123152807_add_shipping_category_to_spree_variants.rb +5 -0
- data/db/migrate/20230321161854_change_column_null_option_values_option_type_id.rb +5 -0
- data/db/migrate/20230425103509_remove_taxon_position.rb +5 -0
- data/db/migrate/20230427095534_drop_deprecated_address_id_from_shipments.rb +11 -0
- data/db/migrate/20240821173254_create_spree_permission_sets_in_core.rb +9 -0
- data/db/migrate/20240821173341_create_spree_roles_permissions_in_core.rb +9 -0
- data/db/migrate/20240821173641_add_description_to_spree_roles.rb +5 -0
- data/db/migrate/20240904152041_add_privilege_and_category_to_spree_permission_sets.rb +6 -0
- data/db/migrate/20250129061658_add_metadata_to_spree_resources.rb +28 -0
- data/db/migrate/20250201172950_add_gtin_and_condition_to_spree_variant.rb +6 -0
- data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +7 -0
- data/db/migrate/20250221152004_add_metadata_to_users.rb +13 -0
- data/db/seeds.rb +5 -1
- data/lib/generators/solidus/install/app_templates/authentication/custom.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/devise.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/existing.rb +10 -0
- data/lib/generators/solidus/install/app_templates/authentication/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +5 -0
- data/lib/generators/solidus/install/app_templates/payment_method/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +5 -0
- data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +5 -0
- data/lib/generators/solidus/install/install_generator.rb +210 -156
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +27 -33
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/backend/all.js +2 -2
- data/lib/generators/solidus/update/templates/config/initializers/new_solidus_defaults.rb.tt +30 -0
- data/lib/generators/solidus/update/update_generator.rb +124 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -4
- data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +2 -6
- data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -3
- data/lib/generators/spree/dummy/dummy_generator.rb +12 -9
- data/lib/generators/spree/dummy/templates/rails/application.rb.tt +1 -2
- data/lib/generators/spree/dummy/templates/rails/database.yml +48 -63
- data/lib/generators/spree/dummy/templates/rails/manifest.js +3 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +7 -2
- data/lib/spree/app_configuration.rb +220 -71
- data/lib/spree/bus.rb +11 -0
- data/lib/spree/core/class_constantizer.rb +2 -2
- data/lib/spree/core/controller_helpers/auth.rb +5 -69
- data/lib/spree/core/controller_helpers/common.rb +5 -80
- data/lib/spree/core/controller_helpers/order.rb +5 -86
- data/lib/spree/core/controller_helpers/payment_parameters.rb +5 -165
- data/lib/spree/core/controller_helpers/pricing.rb +5 -17
- data/lib/spree/core/controller_helpers/search.rb +5 -14
- data/lib/spree/core/controller_helpers/store.rb +5 -17
- data/lib/spree/core/controller_helpers/strong_parameters.rb +5 -71
- data/lib/spree/core/engine.rb +49 -16
- data/lib/spree/core/environment/calculators.rb +35 -3
- data/lib/spree/core/environment/promotions.rb +25 -4
- data/lib/spree/core/environment_extension.rb +16 -2
- data/lib/spree/core/importer/order.rb +6 -6
- data/lib/spree/core/importer/product.rb +3 -3
- data/lib/spree/core/nested_class_set.rb +28 -0
- data/lib/spree/core/null_promotion_configuration.rb +84 -0
- data/lib/spree/core/product_duplicator.rb +1 -1
- data/lib/spree/core/product_filters.rb +2 -2
- data/lib/spree/core/search/base.rb +18 -9
- data/lib/spree/core/search/variant.rb +2 -2
- data/lib/spree/core/state_machines/inventory_unit.rb +5 -40
- data/lib/spree/core/state_machines/order.rb +5 -247
- data/lib/spree/core/state_machines/payment.rb +5 -59
- data/lib/spree/core/state_machines/reimbursement.rb +5 -31
- data/lib/spree/core/state_machines/return_authorization.rb +5 -30
- data/lib/spree/core/state_machines/return_item/acceptance_status.rb +5 -49
- data/lib/spree/core/state_machines/return_item/reception_status.rb +5 -40
- data/lib/spree/core/state_machines/shipment.rb +5 -56
- data/lib/spree/core/state_machines.rb +48 -81
- data/lib/spree/core/stock_configuration.rb +18 -0
- data/lib/spree/core/validators/email.rb +2 -4
- data/lib/spree/core/version.rb +5 -1
- data/lib/spree/core/versioned_value.rb +75 -0
- data/lib/spree/core.rb +40 -16
- data/lib/spree/deprecated_instance_variable_proxy.rb +57 -0
- data/lib/spree/deprecation.rb +3 -51
- data/lib/spree/deprecator.rb +9 -0
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/mailer_previews/carton_preview.rb +1 -1
- data/lib/spree/migration_helpers.rb +3 -3
- data/lib/spree/migrations.rb +13 -11
- data/lib/spree/money.rb +5 -118
- data/lib/spree/permission_sets/base.rb +5 -30
- data/lib/spree/permission_sets/configuration_display.rb +5 -23
- data/lib/spree/permission_sets/configuration_management.rb +5 -23
- data/lib/spree/permission_sets/dashboard_display.rb +5 -9
- data/lib/spree/permission_sets/default_customer.rb +5 -35
- data/lib/spree/permission_sets/order_display.rb +5 -19
- data/lib/spree/permission_sets/order_management.rb +5 -20
- data/lib/spree/permission_sets/product_display.rb +5 -17
- data/lib/spree/permission_sets/product_management.rb +5 -19
- data/lib/spree/permission_sets/restricted_stock_display.rb +5 -16
- data/lib/spree/permission_sets/restricted_stock_management.rb +5 -16
- data/lib/spree/permission_sets/stock_display.rb +5 -10
- data/lib/spree/permission_sets/stock_management.rb +5 -10
- data/lib/spree/permission_sets/super_user.rb +5 -9
- data/lib/spree/permission_sets/user_display.rb +5 -11
- data/lib/spree/permission_sets/user_management.rb +5 -23
- data/lib/spree/permission_sets.rb +5 -18
- data/lib/spree/permitted_attributes.rb +35 -14
- data/lib/spree/preferences/configuration.rb +88 -0
- data/lib/spree/preferences/persistable.rb +7 -1
- data/lib/spree/preferences/preferable.rb +13 -0
- data/lib/spree/preferences/preferable_class_methods.rb +12 -4
- data/lib/spree/preferences/preference_differentiator.rb +29 -0
- data/lib/spree/preferences/static_model_preferences.rb +25 -10
- data/lib/spree/preferences/store.rb +2 -2
- data/lib/spree/testing_support/blacklist_urls.rb +1 -1
- data/lib/spree/testing_support/bus_helpers.rb +101 -0
- data/lib/spree/testing_support/capybara_ext.rb +11 -1
- data/lib/spree/testing_support/common_rake.rb +76 -23
- data/lib/spree/testing_support/dummy_ability.rb +7 -0
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/backend/all.js +1 -1
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/solidus_admin/tailwind.css +1 -0
- data/lib/spree/testing_support/dummy_app/database.yml +39 -28
- data/lib/spree/testing_support/dummy_app/migrations.rb +8 -15
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +3 -10
- data/lib/spree/testing_support/dummy_app.rb +71 -42
- data/lib/spree/testing_support/extension_rake.rb +2 -2
- data/lib/spree/testing_support/factories/address_factory.rb +9 -13
- data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -13
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/calculator_factory.rb +4 -10
- data/lib/spree/testing_support/factories/carton_factory.rb +2 -10
- data/lib/spree/testing_support/factories/country_factory.rb +1 -7
- data/lib/spree/testing_support/factories/credit_card_factory.rb +0 -5
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -11
- data/lib/spree/testing_support/factories/image_factory.rb +0 -5
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -14
- data/lib/spree/testing_support/factories/line_item_factory.rb +0 -8
- data/lib/spree/testing_support/factories/option_type_factory.rb +0 -8
- data/lib/spree/testing_support/factories/option_value_factory.rb +0 -5
- data/lib/spree/testing_support/factories/order_factory.rb +19 -38
- data/lib/spree/testing_support/factories/payment_factory.rb +0 -10
- data/lib/spree/testing_support/factories/payment_method_factory.rb +0 -5
- data/lib/spree/testing_support/factories/price_factory.rb +0 -7
- data/lib/spree/testing_support/factories/product_factory.rb +5 -13
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +0 -8
- data/lib/spree/testing_support/factories/product_property_factory.rb +0 -8
- data/lib/spree/testing_support/factories/property_factory.rb +0 -5
- data/lib/spree/testing_support/factories/refund_factory.rb +0 -8
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +0 -7
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +0 -5
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +0 -9
- data/lib/spree/testing_support/factories/return_item_factory.rb +0 -9
- data/lib/spree/testing_support/factories/return_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/role_factory.rb +0 -5
- data/lib/spree/testing_support/factories/shipment_factory.rb +1 -11
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +0 -5
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +0 -9
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +0 -8
- data/lib/spree/testing_support/factories/state_factory.rb +8 -10
- data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -9
- data/lib/spree/testing_support/factories/stock_location_factory.rb +0 -9
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +0 -7
- data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -9
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +0 -8
- data/lib/spree/testing_support/factories/store_credit_factory.rb +4 -13
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_factory.rb +0 -5
- data/lib/spree/testing_support/factories/tax_category_factory.rb +0 -8
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +0 -9
- data/lib/spree/testing_support/factories/taxon_factory.rb +5 -10
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -6
- data/lib/spree/testing_support/factories/user_factory.rb +6 -9
- data/lib/spree/testing_support/factories/variant_factory.rb +0 -10
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +0 -8
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +0 -9
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +0 -8
- data/lib/spree/testing_support/factories/zone_factory.rb +1 -9
- data/lib/spree/testing_support/factory_bot.rb +6 -29
- data/lib/spree/testing_support/flaky.rb +22 -0
- data/lib/spree/testing_support/order_walkthrough.rb +7 -6
- data/lib/spree/testing_support/sequences.rb +0 -5
- data/lib/spree/testing_support/shared_examples/calculator.rb +10 -0
- data/lib/spree/testing_support/shared_examples/order_factory.rb +141 -0
- data/lib/spree/testing_support/shared_examples/working_factory.rb +15 -0
- data/lib/spree/testing_support/silence_deprecations.rb +9 -0
- data/lib/spree/user_class_handle.rb +2 -2
- data/lib/tasks/colorado_delivery_fee.rake +28 -0
- data/lib/tasks/payment_method.rake +29 -0
- data/lib/tasks/solidus/delete_prices_with_nil_amount.rake +8 -0
- data/solidus_core.gemspec +18 -8
- metadata +233 -117
- data/app/jobs/spree/promotion_code_batch_job.rb +0 -26
- data/app/mailers/spree/promotion_code_batch_mailer.rb +0 -15
- data/app/models/spree/calculator/distributed_amount.rb +0 -33
- data/app/models/spree/calculator/flat_percent_item_total.rb +0 -23
- data/app/models/spree/calculator/flexi_rate.rb +0 -22
- data/app/models/spree/calculator/percent_on_line_item.rb +0 -13
- data/app/models/spree/calculator/tiered_flat_rate.rb +0 -52
- data/app/models/spree/calculator/tiered_percent.rb +0 -62
- data/app/models/spree/line_item_action.rb +0 -8
- data/app/models/spree/order_promotion.rb +0 -27
- data/app/models/spree/promotion/actions/create_adjustment.rb +0 -77
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -99
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
- data/app/models/spree/promotion/actions/free_shipping.rb +0 -58
- data/app/models/spree/promotion/rules/first_order.rb +0 -38
- data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +0 -36
- data/app/models/spree/promotion/rules/item_total.rb +0 -53
- data/app/models/spree/promotion/rules/nth_order.rb +0 -45
- data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -25
- data/app/models/spree/promotion/rules/option_value.rb +0 -50
- data/app/models/spree/promotion/rules/product.rb +0 -74
- data/app/models/spree/promotion/rules/store.rb +0 -22
- data/app/models/spree/promotion/rules/taxon.rb +0 -87
- data/app/models/spree/promotion/rules/user.rb +0 -30
- data/app/models/spree/promotion/rules/user_logged_in.rb +0 -20
- data/app/models/spree/promotion/rules/user_role.rb +0 -45
- data/app/models/spree/promotion.rb +0 -284
- data/app/models/spree/promotion_action.rb +0 -43
- data/app/models/spree/promotion_category.rb +0 -8
- data/app/models/spree/promotion_chooser.rb +0 -34
- data/app/models/spree/promotion_code/batch_builder.rb +0 -64
- data/app/models/spree/promotion_code.rb +0 -50
- data/app/models/spree/promotion_code_batch.rb +0 -27
- data/app/models/spree/promotion_handler/cart.rb +0 -55
- data/app/models/spree/promotion_handler/coupon.rb +0 -123
- data/app/models/spree/promotion_handler/page.rb +0 -26
- data/app/models/spree/promotion_handler/shipping.rb +0 -61
- data/app/models/spree/promotion_rule.rb +0 -55
- data/app/models/spree/promotion_rule_role.rb +0 -8
- data/app/models/spree/promotion_rule_store.rb +0 -10
- data/app/models/spree/promotion_rule_taxon.rb +0 -8
- data/app/models/spree/promotion_rule_user.rb +0 -10
- data/app/models/spree/tax/shipping_rate_taxer.rb +0 -24
- data/app/subscribers/spree/mailer_subscriber.rb +0 -25
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +0 -2
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +0 -2
- data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +0 -38
- data/db/migrate/20180202190713_create_promotion_rule_stores.rb +0 -12
- data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +0 -11
- data/db/migrate/20190106184413_remove_code_from_spree_promotions.rb +0 -42
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/generators/solidus/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -9
- data/lib/generators/spree/dummy/templates/rails/script/rails +0 -6
- data/lib/solidus/migrations/promotions_with_code_handlers.rb +0 -66
- data/lib/spree/event/adapters/active_support_notifications.rb +0 -67
- data/lib/spree/event/configuration.rb +0 -25
- data/lib/spree/event/subscriber.rb +0 -86
- data/lib/spree/event/subscriber_registry.rb +0 -94
- data/lib/spree/event.rb +0 -119
- data/lib/spree/permission_sets/promotion_display.rb +0 -15
- data/lib/spree/permission_sets/promotion_management.rb +0 -15
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/frontend/all.css +0 -9
- data/lib/spree/testing_support/dummy_app/views/layouts/application.html.erb +0 -1
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -16
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -12
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -16
- data/lib/spree/testing_support/factories/promotion_factory.rb +0 -92
- data/lib/spree/testing_support/factories.rb +0 -11
- data/lib/spree/testing_support.rb +0 -31
- data/lib/tasks/upgrade.rake +0 -15
@@ -1,50 +1,121 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'rails/version'
|
3
4
|
require 'rails/generators'
|
5
|
+
require 'rails/generators/app_base'
|
4
6
|
|
5
7
|
module Solidus
|
6
8
|
# @private
|
7
|
-
class InstallGenerator < Rails::Generators::
|
9
|
+
class InstallGenerator < Rails::Generators::AppBase
|
10
|
+
argument :app_path, type: :string, default: Rails.root
|
11
|
+
|
8
12
|
CORE_MOUNT_ROUTE = "mount Spree::Core::Engine"
|
9
13
|
|
10
|
-
|
11
|
-
'
|
12
|
-
'none'
|
13
|
-
|
14
|
+
FRONTENDS = [
|
15
|
+
{ name: 'starter', description: 'Generate all necessary controllers and views directly in your Rails app', default: true },
|
16
|
+
{ name: 'none', description: 'Skip installing a frontend' }
|
17
|
+
]
|
18
|
+
|
19
|
+
AUTHENTICATIONS = [
|
20
|
+
{ name: 'devise', description: 'Install and configure the standard `devise` integration', default: true },
|
21
|
+
{ name: 'existing', description: 'Integrate and configure an existing `devise` setup' },
|
22
|
+
{ name: 'custom', description: 'A starter configuration for rolling your own authentication system' },
|
23
|
+
{ name: 'none', description: 'Don\'t add any configuration for authentication' }
|
24
|
+
]
|
25
|
+
|
26
|
+
PAYMENT_METHODS = [
|
27
|
+
{ name: 'paypal', description: 'Install `solidus_paypal_commerce_platform`', default: true },
|
28
|
+
{ name: 'stripe', description: 'Install `solidus_stripe`', default: false },
|
29
|
+
{ name: 'braintree', description: 'Install `solidus_braintree`', default: false },
|
30
|
+
{ name: 'none', description: 'Skip installing a payment method', default: false }
|
31
|
+
]
|
14
32
|
|
15
33
|
class_option :migrate, type: :boolean, default: true, banner: 'Run Solidus migrations'
|
16
34
|
class_option :seed, type: :boolean, default: true, banner: 'Load seed data (migrations must be run)'
|
17
|
-
class_option :sample, type: :boolean, default: true, banner: 'Load sample data (migrations must be run)'
|
35
|
+
class_option :sample, type: :boolean, default: true, banner: 'Load sample data (migrations and seeds must be run)'
|
18
36
|
class_option :active_storage, type: :boolean, default: true, banner: 'Install ActiveStorage as image attachments handler for products and taxons'
|
37
|
+
class_option :admin_preview, type: :boolean, default: true, desc: 'Install the admin preview'
|
38
|
+
class_option :build_admin_tailwind, type: :boolean, default: true, desc: 'Build and install Solidus Admin Tailwind CSS file and rake tasks'
|
19
39
|
class_option :auto_accept, type: :boolean
|
20
40
|
class_option :user_class, type: :string
|
21
41
|
class_option :admin_email, type: :string
|
22
42
|
class_option :admin_password, type: :string
|
23
|
-
class_option :
|
24
|
-
|
25
|
-
class_option :
|
26
|
-
class_option :
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
paths = superclass.source_paths
|
34
|
-
paths << File.expand_path('../templates', "../../#{__FILE__}")
|
35
|
-
paths << File.expand_path('../templates', "../#{__FILE__}")
|
36
|
-
paths << File.expand_path('templates', __dir__)
|
37
|
-
paths.flatten
|
43
|
+
class_option :mount_point, type: :string, desc: "Indicates where Solidus should be mounted. Defaults to '/'"
|
44
|
+
|
45
|
+
class_option :frontend, type: :string, enum: FRONTENDS.map { _1[:name] }, default: nil, desc: "Indicates which frontend to install."
|
46
|
+
class_option :authentication, type: :string, enum: AUTHENTICATIONS.map { _1[:name] }, default: nil, desc: "Indicates which authentication system to install."
|
47
|
+
class_option :payment_method, type: :string, enum: PAYMENT_METHODS.map { _1[:name] }, default: nil, desc: "Indicates which payment method to install."
|
48
|
+
|
49
|
+
source_root "#{__dir__}/templates"
|
50
|
+
|
51
|
+
def self.exit_on_failure?
|
52
|
+
true
|
38
53
|
end
|
39
54
|
|
40
55
|
def prepare_options
|
41
56
|
@run_migrations = options[:migrate]
|
42
|
-
@load_seed_data = options[:seed]
|
43
|
-
@load_sample_data = options[:sample]
|
57
|
+
@load_seed_data = options[:seed] && @run_migrations
|
58
|
+
@load_sample_data = options[:sample] && @run_migrations && @load_seed_data
|
59
|
+
|
60
|
+
@selected_frontend = selected_option_for(
|
61
|
+
'frontend',
|
62
|
+
selected: ENV['FRONTEND'] || options[:frontend],
|
63
|
+
available_options: FRONTENDS,
|
64
|
+
)
|
65
|
+
|
66
|
+
@selected_authentication = selected_option_for(
|
67
|
+
'authentication',
|
68
|
+
selected:
|
69
|
+
('devise' if @selected_frontend == 'starter') ||
|
70
|
+
('devise' if has_gem?('solidus_auth_devise')) ||
|
71
|
+
ENV['AUTHENTICATION'] || options[:authentication],
|
72
|
+
available_options: AUTHENTICATIONS,
|
73
|
+
)
|
74
|
+
|
75
|
+
@selected_payment_method = selected_option_for(
|
76
|
+
'payment method',
|
77
|
+
selected:
|
78
|
+
('paypal' if has_gem?('solidus_paypal_commerce_platform')) ||
|
79
|
+
('stripe' if has_gem?('solidus_stripe')) ||
|
80
|
+
('bolt' if has_gem?('solidus_bolt')) ||
|
81
|
+
ENV['PAYMENT_METHOD'] || options[:payment_method],
|
82
|
+
available_options: PAYMENT_METHODS,
|
83
|
+
)
|
84
|
+
|
85
|
+
# Silence verbose output (e.g. Rails migrations will rely on this environment variable)
|
86
|
+
ENV['VERBOSE'] = 'false'
|
87
|
+
|
88
|
+
# No reason to check for their presence if we're about to install them
|
89
|
+
ENV['SOLIDUS_SKIP_MIGRATIONS_CHECK'] = 'true'
|
90
|
+
end
|
44
91
|
|
45
|
-
|
46
|
-
|
47
|
-
|
92
|
+
def install_routes
|
93
|
+
if Pathname(app_path).join('config', 'routes.rb').read.include? CORE_MOUNT_ROUTE
|
94
|
+
say_status :route_exist, CORE_MOUNT_ROUTE, :blue
|
95
|
+
else
|
96
|
+
say_status :installing, "solidus routes"
|
97
|
+
mount_point = options[:mount_point] || ask_with_default(
|
98
|
+
desc: 'Where would you like to mount Solidus? (E.g. "/store" or "/shop")',
|
99
|
+
default: '/',
|
100
|
+
)
|
101
|
+
|
102
|
+
shell.mute do
|
103
|
+
route <<~RUBY
|
104
|
+
# This line mounts Solidus's routes at the root of your application.
|
105
|
+
#
|
106
|
+
# Unless you manually picked only a subset of Solidus components, this will mount routes for:
|
107
|
+
# - solidus_backend
|
108
|
+
# - solidus_api
|
109
|
+
# This means, any requests to URLs such as /admin/products, will go to Spree::Admin::ProductsController.
|
110
|
+
#
|
111
|
+
# If you are using the Starter Frontend as your frontend, be aware that all the storefront routes are defined
|
112
|
+
# separately in this file and are not part of the Solidus::Core::Engine engine.
|
113
|
+
#
|
114
|
+
# If you would like to change where this engine is mounted, simply change the :at option to something different.
|
115
|
+
# We ask that you don't use the :as option here, as Solidus relies on it being the default of "spree"
|
116
|
+
#{CORE_MOUNT_ROUTE}, at: '#{mount_point}'
|
117
|
+
RUBY
|
118
|
+
end
|
48
119
|
end
|
49
120
|
end
|
50
121
|
|
@@ -54,45 +125,22 @@ module Solidus
|
|
54
125
|
|
55
126
|
def install_file_attachment
|
56
127
|
if options[:active_storage]
|
57
|
-
|
128
|
+
say_status :assets, "Active Storage", :green
|
58
129
|
rake 'active_storage:install'
|
59
130
|
else
|
60
|
-
|
61
|
-
gsub_file 'config/initializers/spree.rb', "ActiveStorageAttachment", "PaperclipAttachment"
|
131
|
+
say_status :assets, "Paperclip", :green
|
132
|
+
gsub_file 'config/initializers/spree.rb', "::ActiveStorageAttachment", "::PaperclipAttachment"
|
62
133
|
end
|
63
134
|
end
|
64
135
|
|
65
|
-
def additional_tweaks
|
66
|
-
return unless File.exist? 'public/robots.txt'
|
67
|
-
|
68
|
-
append_file "public/robots.txt", <<-ROBOTS.strip_heredoc
|
69
|
-
User-agent: *
|
70
|
-
Disallow: /checkout
|
71
|
-
Disallow: /cart
|
72
|
-
Disallow: /orders
|
73
|
-
Disallow: /user
|
74
|
-
Disallow: /account
|
75
|
-
Disallow: /api
|
76
|
-
Disallow: /password
|
77
|
-
ROBOTS
|
78
|
-
end
|
79
|
-
|
80
136
|
def setup_assets
|
81
|
-
@lib_name = 'spree'
|
82
|
-
|
83
137
|
empty_directory 'app/assets/images'
|
84
138
|
|
85
139
|
%w{javascripts stylesheets images}.each do |path|
|
86
|
-
empty_directory "vendor/assets/#{path}/spree/
|
87
|
-
empty_directory "vendor/assets/#{path}/spree/backend" if defined? Spree::Backend || Rails.env.test?
|
140
|
+
empty_directory "vendor/assets/#{path}/spree/backend" if defined?(Spree::Backend) || Rails.env.test?
|
88
141
|
end
|
89
142
|
|
90
|
-
if defined?
|
91
|
-
template "vendor/assets/javascripts/spree/frontend/all.js"
|
92
|
-
template "vendor/assets/stylesheets/spree/frontend/all.css"
|
93
|
-
end
|
94
|
-
|
95
|
-
if defined? Spree::Backend || Rails.env.test?
|
143
|
+
if defined?(Spree::Backend) || Rails.env.test?
|
96
144
|
template "vendor/assets/javascripts/spree/backend/all.js"
|
97
145
|
template "vendor/assets/stylesheets/spree/backend/all.css"
|
98
146
|
end
|
@@ -102,73 +150,15 @@ module Solidus
|
|
102
150
|
empty_directory "app/overrides"
|
103
151
|
end
|
104
152
|
|
105
|
-
def configure_application
|
106
|
-
application <<-RUBY
|
107
|
-
# Load application's model / class decorators
|
108
|
-
initializer 'spree.decorators' do |app|
|
109
|
-
config.to_prepare do
|
110
|
-
Dir.glob(Rails.root.join('app/**/*_decorator*.rb')) do |path|
|
111
|
-
require_dependency(path)
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
RUBY
|
116
|
-
|
117
|
-
if !options[:enforce_available_locales].nil?
|
118
|
-
application <<-RUBY
|
119
|
-
# Prevent this deprecation message: https://github.com/svenfuchs/i18n/commit/3b6e56e
|
120
|
-
I18n.enforce_available_locales = #{options[:enforce_available_locales]}
|
121
|
-
RUBY
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
def plugin_install_preparation
|
126
|
-
@plugins_to_be_installed = []
|
127
|
-
@plugin_generators_to_run = []
|
128
|
-
end
|
129
|
-
|
130
|
-
def install_auth_plugin
|
131
|
-
if options[:with_authentication] && (options[:auto_accept] || !no?("
|
132
|
-
Solidus has a default authentication extension that uses Devise.
|
133
|
-
You can find more info at https://github.com/solidusio/solidus_auth_devise.
|
134
|
-
|
135
|
-
Would you like to install it? (y/n)"))
|
136
|
-
|
137
|
-
@plugins_to_be_installed << 'solidus_auth_devise'
|
138
|
-
@plugin_generators_to_run << 'solidus:auth:install'
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
def install_payment_method
|
143
|
-
name = options[:payment_method]
|
144
|
-
|
145
|
-
unless options[:auto_accept]
|
146
|
-
available_names = PAYMENT_METHODS.keys
|
147
|
-
|
148
|
-
name = ask("
|
149
|
-
You can select a payment method to be included in the installation process.
|
150
|
-
Please select a payment method name:", limited_to: available_names, default: available_names.first)
|
151
|
-
end
|
152
|
-
|
153
|
-
gem_name = PAYMENT_METHODS.fetch(name)
|
154
|
-
|
155
|
-
if gem_name
|
156
|
-
@plugins_to_be_installed << gem_name
|
157
|
-
@plugin_generators_to_run << "#{gem_name}:install"
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
153
|
def include_seed_data
|
162
|
-
append_file "db/seeds.rb",
|
163
|
-
|
164
|
-
Spree::Core::Engine.load_seed if defined?(Spree::Core)
|
165
|
-
Spree::Auth::Engine.load_seed if defined?(Spree::Auth)
|
154
|
+
append_file "db/seeds.rb", <<~RUBY
|
155
|
+
Spree::Core::Engine.load_seed
|
166
156
|
RUBY
|
167
157
|
end
|
168
158
|
|
169
159
|
def install_migrations
|
170
160
|
say_status :copying, "migrations"
|
171
|
-
|
161
|
+
rake 'railties:install:migrations'
|
172
162
|
end
|
173
163
|
|
174
164
|
def create_database
|
@@ -176,32 +166,35 @@ module Solidus
|
|
176
166
|
rake 'db:create'
|
177
167
|
end
|
178
168
|
|
179
|
-
def run_bundle_install_if_needed_by_plugins
|
180
|
-
@plugins_to_be_installed.each do |plugin_name|
|
181
|
-
gem plugin_name
|
182
|
-
end
|
183
|
-
|
184
|
-
bundle_cleanly{ run "bundle install" } if @plugins_to_be_installed.any?
|
185
|
-
run "spring stop" if defined?(Spring)
|
186
|
-
|
187
|
-
@plugin_generators_to_run.each do |plugin_generator_name|
|
188
|
-
generate "#{plugin_generator_name} --skip_migrations=true"
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
169
|
def run_migrations
|
193
170
|
if @run_migrations
|
194
171
|
say_status :running, "migrations"
|
195
172
|
|
196
|
-
rake 'db:migrate
|
173
|
+
rake 'db:migrate'
|
197
174
|
else
|
198
175
|
say_status :skipping, "migrations (don't forget to run rake db:migrate)"
|
199
176
|
end
|
200
177
|
end
|
201
178
|
|
179
|
+
def install_subcomponents
|
180
|
+
apply_template_for :authentication, @selected_authentication
|
181
|
+
apply_template_for :frontend, @selected_frontend
|
182
|
+
apply_template_for :payment_method, @selected_payment_method
|
183
|
+
end
|
184
|
+
|
185
|
+
def install_solidus_admin
|
186
|
+
return unless options[:admin_preview]
|
187
|
+
|
188
|
+
say_status :installing, "SolidusAdmin", :blue
|
189
|
+
unless File.read(app_path.join('Gemfile')).include?('solidus_admin')
|
190
|
+
bundle_command 'add solidus_admin -v ">= 0.2"'
|
191
|
+
end
|
192
|
+
generate "solidus_admin:install #{'--tailwind' if options[:build_admin_tailwind]}"
|
193
|
+
end
|
194
|
+
|
202
195
|
def populate_seed_data
|
203
196
|
if @load_seed_data
|
204
|
-
say_status :loading,
|
197
|
+
say_status :loading, "seed data"
|
205
198
|
rake_options = []
|
206
199
|
rake_options << "AUTO_ACCEPT=1" if options[:auto_accept]
|
207
200
|
rake_options << "ADMIN_EMAIL=#{options[:admin_email]}" if options[:admin_email]
|
@@ -222,43 +215,104 @@ module Solidus
|
|
222
215
|
end
|
223
216
|
end
|
224
217
|
|
225
|
-
def
|
226
|
-
|
227
|
-
|
228
|
-
insert_into_file routes_file_path, after: "Rails.application.routes.draw do\n" do
|
229
|
-
<<-RUBY
|
230
|
-
# This line mounts Solidus's routes at the root of your application.
|
231
|
-
# This means, any requests to URLs such as /products, will go to Spree::ProductsController.
|
232
|
-
# If you would like to change where this engine is mounted, simply change the :at option to something different.
|
233
|
-
#
|
234
|
-
# We ask that you don't use the :as option here, as Solidus relies on it being the default of "spree"
|
235
|
-
#{CORE_MOUNT_ROUTE}, at: '/'
|
218
|
+
def complete
|
219
|
+
say_status :complete, "Solidus has been installed successfully. Enjoy!"
|
220
|
+
end
|
236
221
|
|
237
|
-
|
222
|
+
private
|
223
|
+
|
224
|
+
def bundle_command(command, env = {})
|
225
|
+
# Make `bundle install` less verbose by skipping the "Using ..." messages
|
226
|
+
super(command, env.reverse_merge('BUNDLE_SUPPRESS_INSTALL_USING_MESSAGES' => 'true'))
|
227
|
+
ensure
|
228
|
+
Bundler.reset_paths!
|
229
|
+
end
|
230
|
+
|
231
|
+
def ask_with_default(desc:, default:)
|
232
|
+
if options[:auto_accept]
|
233
|
+
say_status :using, "#{default} (default)"
|
234
|
+
return default
|
235
|
+
end
|
236
|
+
|
237
|
+
default_label = " (#{set_color :default, :bold}: \"#{default}\")" if default
|
238
|
+
|
239
|
+
say_status :question, "#{desc}#{default_label}.", :yellow
|
240
|
+
answer = ask(set_color("answer:".rjust(13), :blue, :bold)).to_s.downcase.presence
|
241
|
+
|
242
|
+
case answer
|
243
|
+
when nil
|
244
|
+
say_status :using, "#{default} (default)"
|
245
|
+
default
|
246
|
+
else
|
247
|
+
say_status :using, answer
|
248
|
+
answer
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
def ask_with_description(desc:, limited_to:, default:)
|
253
|
+
loop do
|
254
|
+
say_status :question, desc, :yellow
|
255
|
+
answer = ask(set_color("answer:".rjust(13), :blue, :bold)).to_s.downcase.presence
|
256
|
+
|
257
|
+
case answer
|
258
|
+
when nil
|
259
|
+
say_status :using, "#{default} (default)"
|
260
|
+
break default
|
261
|
+
when *limited_to.map(&:to_s)
|
262
|
+
say_status :using, answer
|
263
|
+
break answer
|
264
|
+
else say_status :error, "Please select a valid answer:", :red
|
238
265
|
end
|
239
266
|
end
|
267
|
+
end
|
268
|
+
|
269
|
+
def apply_template_for(topic, selected)
|
270
|
+
template_path = Dir["#{__dir__}/app_templates/#{topic}/*.rb"].find do |path|
|
271
|
+
File.basename(path, '.rb') == selected
|
272
|
+
end
|
240
273
|
|
241
|
-
unless
|
242
|
-
|
243
|
-
|
244
|
-
puts " "
|
245
|
-
puts " #{CORE_MOUNT_ROUTE}, at: '/'"
|
274
|
+
unless template_path
|
275
|
+
say_status :warning, "Unknown #{topic}: #{selected.inspect}, attempting to run it with `rails app:template`"
|
276
|
+
template_path = selected
|
246
277
|
end
|
278
|
+
|
279
|
+
say_status :installing, "[#{topic}] #{selected}", :blue
|
280
|
+
apply template_path
|
247
281
|
end
|
248
282
|
|
249
|
-
def
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
283
|
+
def with_env(vars)
|
284
|
+
original = ENV.to_hash
|
285
|
+
vars.each { |k, v| ENV[k] = v }
|
286
|
+
|
287
|
+
begin
|
288
|
+
yield
|
289
|
+
ensure
|
290
|
+
ENV.replace(original)
|
255
291
|
end
|
256
292
|
end
|
257
293
|
|
258
|
-
|
294
|
+
def has_gem?(name)
|
295
|
+
Bundler.locked_gems.dependencies[name]
|
296
|
+
end
|
297
|
+
|
298
|
+
def selected_option_for(name, selected:, available_options:)
|
299
|
+
return selected if selected
|
300
|
+
|
301
|
+
option_description = ->(name:, description:, default: false, **) do
|
302
|
+
default_label = " (#{set_color :default, :bold})" if default
|
303
|
+
|
304
|
+
"- [#{set_color name, :bold}] #{description}#{default_label}."
|
305
|
+
end
|
259
306
|
|
260
|
-
|
261
|
-
|
307
|
+
default = available_options.find { _1[:default] }
|
308
|
+
(options[:auto_accept] && default[:name]) || ask_with_description(
|
309
|
+
default: default[:name],
|
310
|
+
limited_to: available_options.map { _1[:name] },
|
311
|
+
desc: <<~TEXT
|
312
|
+
Which #{name} would you like to use?
|
313
|
+
#{available_options.map { option_description[**_1] }.join("\n")}
|
314
|
+
TEXT
|
315
|
+
)
|
262
316
|
end
|
263
317
|
end
|
264
318
|
end
|
@@ -1,15 +1,14 @@
|
|
1
1
|
# Configure Solidus Preferences
|
2
2
|
# See http://docs.solidus.io/Spree/AppConfiguration.html for details
|
3
3
|
|
4
|
+
# Solidus version defaults for preferences that are not overridden
|
5
|
+
Spree.load_defaults '<%= Spree.solidus_version %>'
|
6
|
+
|
4
7
|
Spree.config do |config|
|
5
8
|
# Core:
|
6
|
-
|
7
9
|
# Default currency for new sites
|
8
10
|
config.currency = "USD"
|
9
11
|
|
10
|
-
# from address for transactional emails
|
11
|
-
config.mails_from = "store@example.com"
|
12
|
-
|
13
12
|
# Uncomment to stop tracking inventory levels in the application
|
14
13
|
# config.track_inventory_levels = false
|
15
14
|
|
@@ -29,43 +28,27 @@ Spree.config do |config|
|
|
29
28
|
# to a custom users role:
|
30
29
|
# config.roles.assign_permissions :role_name, ['Spree::PermissionSets::CustomPermissionSet']
|
31
30
|
|
32
|
-
|
33
|
-
# Frontend:
|
34
|
-
|
35
|
-
# Custom logo for the frontend
|
36
|
-
# config.logo = "logo/solidus.svg"
|
37
|
-
|
38
|
-
# Template to use when rendering layout
|
39
|
-
# config.layout = "spree/layouts/spree_application"
|
40
|
-
|
41
|
-
|
42
31
|
# Admin:
|
43
32
|
|
44
33
|
# Custom logo for the admin
|
45
34
|
# config.admin_interface_logo = "logo/solidus.svg"
|
46
35
|
|
47
|
-
#
|
36
|
+
# Payment gateway credentials can be configured statically here and referenced from
|
48
37
|
# the admin. They can also be fully configured from the admin.
|
49
38
|
#
|
50
|
-
# Please note that
|
51
|
-
#
|
39
|
+
# Please note that the example below requires the `solidus_stripe` ~> 5.0 gem
|
40
|
+
# in order to work properly (see https://github.com/solidusio-contrib/solidus_stripe).
|
52
41
|
#
|
53
42
|
# config.static_model_preferences.add(
|
54
|
-
#
|
55
|
-
# '
|
56
|
-
#
|
57
|
-
# publishable_key: ENV
|
58
|
-
#
|
59
|
-
#
|
43
|
+
# 'SolidusStripe::PaymentMethod',
|
44
|
+
# 'solidus_stripe_env_credentials',
|
45
|
+
# api_key: ENV.fetch('SOLIDUS_STRIPE_API_KEY'),
|
46
|
+
# publishable_key: ENV.fetch('SOLIDUS_STRIPE_PUBLISHABLE_KEY'),
|
47
|
+
# test_mode: ENV.fetch('SOLIDUS_STRIPE_API_KEY').start_with?('sk_test_'),
|
48
|
+
# webhook_endpoint_signing_secret: ENV.fetch('SOLIDUS_STRIPE_WEBHOOK_SIGNING_SECRET')
|
60
49
|
# )
|
61
50
|
end
|
62
51
|
|
63
|
-
<% if defined?(Spree::Frontend::Engine) -%>
|
64
|
-
Spree::Frontend::Config.configure do |config|
|
65
|
-
config.locale = 'en'
|
66
|
-
end
|
67
|
-
<% end -%>
|
68
|
-
|
69
52
|
<% if defined?(Spree::Backend::Engine) -%>
|
70
53
|
Spree::Backend::Config.configure do |config|
|
71
54
|
config.locale = 'en'
|
@@ -74,10 +57,19 @@ Spree::Backend::Config.configure do |config|
|
|
74
57
|
# a new menu item:
|
75
58
|
#
|
76
59
|
# config.menu_items << config.class::MenuItem.new(
|
77
|
-
#
|
78
|
-
# '
|
79
|
-
# url:
|
60
|
+
# label: :my_reports,
|
61
|
+
# icon: 'file-text-o', # see https://fontawesome.com/v4/icons/
|
62
|
+
# url: :my_admin_reports_path,
|
63
|
+
# condition: -> { can?(:admin, MyReports) },
|
64
|
+
# partial: 'spree/admin/shared/my_reports_sub_menu',
|
65
|
+
# match_path: '/reports',
|
80
66
|
# )
|
67
|
+
|
68
|
+
# Custom frontend product path
|
69
|
+
#
|
70
|
+
# config.frontend_product_path = ->(template_context, product) {
|
71
|
+
# template_context.spree.product_path(product)
|
72
|
+
# }
|
81
73
|
end
|
82
74
|
<% end -%>
|
83
75
|
|
@@ -87,7 +79,9 @@ Spree::Api::Config.configure do |config|
|
|
87
79
|
end
|
88
80
|
<% end -%>
|
89
81
|
|
90
|
-
|
82
|
+
<% if options[:user_class].present? -%>
|
83
|
+
Spree.user_class = <%= options[:user_class].inspect %>
|
84
|
+
<% end -%>
|
91
85
|
|
92
86
|
# Rules for avoiding to store the current path into session for redirects
|
93
87
|
# When at least one rule is matched, the request path will not be stored
|
data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/backend/all.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
// This is a manifest file that'll be compiled into including all the files listed below.
|
2
|
-
// Add new JavaScript
|
2
|
+
// Add new JavaScript code in separate files in this directory and they'll automatically
|
3
3
|
// be included in the compiled file accessible from http://example.com/assets/application.js
|
4
4
|
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
5
5
|
// the compiled file.
|
6
6
|
//
|
7
|
-
//= require
|
7
|
+
//= require jquery3
|
8
8
|
//= require rails-ujs
|
9
9
|
//= require spree/backend
|
10
10
|
//= require_tree .
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# This initializer lets you preview the defaults that have changed on the new
|
2
|
+
# Solidus version.
|
3
|
+
#
|
4
|
+
# It allows you to enable them one by one while you adapt your application.
|
5
|
+
# When you're done with all of them, you can safely remove this file and add
|
6
|
+
# the updated `load_defaults` calls to the top of the config blocks in your
|
7
|
+
# Solidus main initializer. You can also call `Spree.load_defaults(version)` to
|
8
|
+
# target all components at once.
|
9
|
+
|
10
|
+
Spree.config do |config|
|
11
|
+
<%= @core_changes %>
|
12
|
+
end
|
13
|
+
|
14
|
+
<% if defined?(Spree::Frontend::Engine) -%>
|
15
|
+
Spree::Frontend::Config.configure do |config|
|
16
|
+
<%= @frontend_changes %>
|
17
|
+
end
|
18
|
+
<% end -%>
|
19
|
+
|
20
|
+
<% if defined?(Spree::Backend::Engine) -%>
|
21
|
+
Spree::Backend::Config.configure do |config|
|
22
|
+
<%= @backend_changes %>
|
23
|
+
end
|
24
|
+
<% end -%>
|
25
|
+
|
26
|
+
<% if defined?(Spree::Api::Engine) -%>
|
27
|
+
Spree::Api::Config.configure do |config|
|
28
|
+
<%= @api_changes %>
|
29
|
+
end
|
30
|
+
<% end -%>
|