spree_core 6.0.0.beta3 → 6.0.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/README.md +2 -2
- data/app/helpers/spree/images_helper.rb +0 -57
- data/app/jobs/spree/base_job.rb +21 -0
- data/app/jobs/spree/carts/reap_expired_job.rb +2 -2
- data/app/jobs/spree/collections/regenerate_time_based_job.rb +6 -3
- data/app/jobs/spree/orders/finalize_stale_drafts_job.rb +8 -5
- data/app/jobs/spree/payments/cancel_unused_sessions_job.rb +61 -0
- data/app/jobs/spree/seller_payouts/sweep_seller_job.rb +2 -0
- data/app/mailers/spree/admin_user_mailer.rb +4 -19
- data/app/mailers/spree/base_mailer.rb +96 -13
- data/app/mailers/spree/email_template_mailer.rb +27 -0
- data/app/mailers/spree/export_mailer.rb +3 -4
- data/app/mailers/spree/import_mailer.rb +3 -4
- data/app/mailers/spree/invitation_mailer.rb +24 -7
- data/app/mailers/spree/seller_user_mailer.rb +4 -16
- data/app/mailers/spree/webhook_mailer.rb +2 -2
- data/app/models/concerns/spree/acted_by.rb +1 -1
- data/app/models/concerns/spree/admin_user_methods.rb +13 -1
- data/app/models/concerns/spree/api_typed.rb +91 -0
- data/app/models/concerns/spree/calculator/tiers.rb +76 -0
- data/app/models/concerns/spree/customer_methods.rb +15 -14
- data/app/models/concerns/spree/email_template_identity.rb +52 -0
- data/app/models/concerns/spree/parameterizable_name.rb +2 -0
- data/app/models/concerns/spree/payment_session_transitions.rb +8 -2
- data/app/models/concerns/spree/post_sale/taxation.rb +54 -0
- data/app/models/concerns/spree/post_sale/taxed_line.rb +51 -0
- data/app/models/concerns/spree/preference_schema.rb +4 -12
- data/app/models/concerns/spree/product_scopes.rb +11 -1
- data/app/models/concerns/spree/provider_listing.rb +41 -0
- data/app/models/concerns/spree/publishable.rb +82 -14
- data/app/models/concerns/spree/purchase/addresses.rb +23 -10
- data/app/models/concerns/spree/purchase/currency.rb +1 -1
- data/app/models/concerns/spree/purchase/deprecated_aliases.rb +87 -0
- data/app/models/concerns/spree/purchase/gift_cards.rb +10 -4
- data/app/models/concerns/spree/purchase/locale.rb +1 -1
- data/app/models/concerns/spree/purchase/payment_processing.rb +7 -3
- data/app/models/concerns/spree/purchase/purchase_order.rb +2 -2
- data/app/models/concerns/spree/purchase/totals.rb +49 -1
- data/app/models/concerns/spree/receivable.rb +1 -1
- data/app/models/concerns/spree/searchable.rb +0 -4
- data/app/models/concerns/spree/secret_preferences.rb +59 -0
- data/app/models/concerns/spree/single_store_resource.rb +1 -1
- data/app/models/concerns/spree/stores/email_branding.rb +31 -0
- data/app/models/concerns/spree/type_labels.rb +38 -0
- data/app/models/concerns/spree/typed_adjustment_line.rb +1 -1
- data/app/models/concerns/spree/typed_associations.rb +6 -0
- data/app/models/spree/address.rb +11 -1
- data/app/models/spree/adjusters/promotion.rb +1 -15
- data/app/models/spree/allowed_origin.rb +0 -1
- data/app/models/spree/api_key.rb +5 -6
- data/app/models/spree/authentication/strategies/oidc_strategy.rb +5 -5
- data/app/models/spree/base.rb +70 -22
- data/app/models/spree/calculator/flat_percent_item_total.rb +1 -3
- data/app/models/spree/calculator/flat_rate.rb +1 -3
- data/app/models/spree/calculator/flexi_rate.rb +1 -3
- data/app/models/spree/calculator/percent_on_line_item.rb +1 -1
- data/app/models/spree/calculator/price_sack.rb +1 -3
- data/app/models/spree/calculator/shipping/digital_delivery.rb +1 -3
- data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -3
- data/app/models/spree/calculator/shipping/flat_rate.rb +1 -3
- data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -3
- data/app/models/spree/calculator/shipping/per_item.rb +1 -3
- data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
- data/app/models/spree/calculator/tiered_flat_rate.rb +6 -23
- data/app/models/spree/calculator/tiered_percent.rb +7 -25
- data/app/models/spree/cart.rb +78 -18
- data/app/models/spree/channel/gating.rb +1 -1
- data/app/models/spree/channel.rb +4 -4
- data/app/models/spree/claim.rb +21 -1
- data/app/models/spree/claim_line_item.rb +41 -6
- data/app/models/spree/collection.rb +0 -1
- data/app/models/spree/collection_rule.rb +5 -21
- data/app/models/spree/commission_line.rb +1 -1
- data/app/models/spree/commission_rate.rb +2 -3
- data/app/models/spree/commission_rate_value.rb +1 -1
- data/app/models/spree/commission_rule.rb +4 -11
- data/app/models/spree/commission_rules/product_rule.rb +1 -1
- data/app/models/spree/company_invitation.rb +1 -0
- data/app/models/spree/consent_record.rb +0 -1
- data/app/models/spree/credit_card.rb +1 -1
- data/app/models/spree/current.rb +23 -0
- data/app/models/spree/custom_field.rb +2 -2
- data/app/models/spree/custom_field_definition.rb +9 -23
- data/app/models/spree/custom_fields/boolean.rb +1 -1
- data/app/models/spree/custom_fields/json.rb +1 -1
- data/app/models/spree/data_feed/google.rb +0 -2
- data/app/models/spree/data_request.rb +1 -1
- data/app/models/spree/delivery_method.rb +30 -13
- data/app/models/spree/delivery_method_rule.rb +4 -11
- data/app/models/spree/delivery_rate.rb +4 -5
- data/app/models/spree/delivery_rate_provider/base.rb +1 -0
- data/app/models/spree/delivery_zone.rb +0 -1
- data/app/models/spree/delivery_zone_member.rb +4 -4
- data/app/models/spree/digital_asset.rb +7 -0
- data/app/models/spree/digital_asset_provider/base.rb +2 -0
- data/app/models/spree/digital_link.rb +2 -5
- data/app/models/spree/discount.rb +1 -1
- data/app/models/spree/email_template.rb +25 -0
- data/app/models/spree/email_template_draft.rb +13 -0
- data/app/models/spree/email_template_revision.rb +17 -0
- data/app/models/spree/email_templates/entry.rb +118 -0
- data/app/models/spree/email_templates/sample_record.rb +16 -0
- data/app/models/spree/emails/branding.rb +80 -0
- data/app/models/spree/exchange.rb +15 -1
- data/app/models/spree/exchange_line_item.rb +121 -5
- data/app/models/spree/export.rb +0 -1
- data/app/models/spree/exports/products.rb +10 -1
- data/app/models/spree/exports/report.rb +1 -1
- data/app/models/spree/fee.rb +4 -2
- data/app/models/spree/fulfillment.rb +53 -27
- data/app/models/spree/fulfillment_changer.rb +2 -2
- data/app/models/spree/fulfillment_item.rb +0 -4
- data/app/models/spree/fulfillment_provider/base.rb +1 -0
- data/app/models/spree/gateway/bogus.rb +4 -0
- data/app/models/spree/gateway/custom_payment_source_method.rb +5 -0
- data/app/models/spree/gateway.rb +5 -1
- data/app/models/spree/gift_card.rb +12 -1
- data/app/models/spree/gift_card_batch.rb +0 -1
- data/app/models/spree/import.rb +2 -7
- data/app/models/spree/import_mapping.rb +1 -2
- data/app/models/spree/import_row.rb +2 -2
- data/app/models/spree/import_schemas/products.rb +1 -0
- data/app/models/spree/integration.rb +8 -18
- data/app/models/spree/invitation.rb +5 -5
- data/app/models/spree/line_item.rb +13 -2
- data/app/models/spree/locale.rb +11 -8
- data/app/models/spree/market.rb +1 -0
- data/app/models/spree/newsletter_subscriber.rb +3 -0
- data/app/models/spree/order.rb +56 -138
- data/app/models/spree/order_group.rb +11 -2
- data/app/models/spree/order_inventory.rb +10 -5
- data/app/models/spree/order_promotion.rb +1 -1
- data/app/models/spree/order_routing/has_strategy_preference.rb +1 -1
- data/app/models/spree/order_routing/strategy/base.rb +4 -2
- data/app/models/spree/order_routing/strategy/rules.rb +1 -1
- data/app/models/spree/order_routing_rule.rb +6 -22
- data/app/models/spree/package_type.rb +1 -2
- data/app/models/spree/payment/gateway_options.rb +14 -52
- data/app/models/spree/payment/processing.rb +2 -4
- data/app/models/spree/payment.rb +20 -5
- data/app/models/spree/payment_method/session_instrumentation.rb +1 -0
- data/app/models/spree/payment_method/store_credit.rb +4 -4
- data/app/models/spree/payment_method.rb +36 -4
- data/app/models/spree/payment_session.rb +5 -1
- data/app/models/spree/payment_setup_session.rb +1 -0
- data/app/models/spree/payout_provider/base.rb +3 -1
- data/app/models/spree/pickup_point_provider/base.rb +2 -0
- data/app/models/spree/price_list.rb +1 -2
- data/app/models/spree/price_rules/channel_rule.rb +1 -1
- data/app/models/spree/price_rules/customer_group_rule.rb +1 -1
- data/app/models/spree/product.rb +31 -7
- data/app/models/spree/product_submission.rb +0 -12
- data/app/models/spree/product_type.rb +0 -1
- data/app/models/spree/promotion/actions/create_line_items.rb +27 -17
- data/app/models/spree/promotion/rules/category.rb +0 -4
- data/app/models/spree/promotion/rules/channel.rb +0 -4
- data/app/models/spree/promotion/rules/country.rb +0 -4
- data/app/models/spree/promotion/rules/currency.rb +0 -4
- data/app/models/spree/promotion/rules/customer_group.rb +0 -4
- data/app/models/spree/promotion/rules/first_order.rb +0 -4
- data/app/models/spree/promotion/rules/item_total.rb +4 -8
- data/app/models/spree/promotion/rules/market.rb +0 -4
- data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -4
- data/app/models/spree/promotion/rules/option_value.rb +0 -3
- data/app/models/spree/promotion/rules/product.rb +0 -4
- data/app/models/spree/promotion/rules/user.rb +0 -4
- data/app/models/spree/promotion/rules/user_logged_in.rb +0 -4
- data/app/models/spree/promotion.rb +35 -6
- data/app/models/spree/promotion_action.rb +7 -14
- data/app/models/spree/promotion_action_line_item.rb +1 -1
- data/app/models/spree/promotion_handler/coupon.rb +59 -27
- data/app/models/spree/promotion_rule.rb +7 -14
- data/app/models/spree/purchase_order.rb +1 -0
- data/app/models/spree/quantity_rule.rb +1 -1
- data/app/models/spree/refund.rb +28 -3
- data/app/models/spree/return.rb +30 -2
- data/app/models/spree/return_line_item.rb +65 -14
- data/app/models/spree/role.rb +7 -7
- data/app/models/spree/saved_report.rb +1 -1
- data/app/models/spree/seller.rb +2 -1
- data/app/models/spree/seller_payout.rb +7 -0
- data/app/models/spree/seller_requirement.rb +4 -12
- data/app/models/spree/seller_requirement_custom_field.rb +1 -2
- data/app/models/spree/seller_requirement_submission.rb +2 -2
- data/app/models/spree/seller_requirements/accept_terms.rb +2 -3
- data/app/models/spree/seller_transfer.rb +5 -0
- data/app/models/spree/shipping_label.rb +1 -0
- data/app/models/spree/stock/availability_validator.rb +2 -2
- data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
- data/app/models/spree/stock/packer.rb +2 -2
- data/app/models/spree/stock/splitter/weight.rb +1 -1
- data/app/models/spree/stock_level/custom_events.rb +6 -0
- data/app/models/spree/stock_level.rb +1 -1
- data/app/models/spree/stock_movement.rb +1 -1
- data/app/models/spree/stock_receipt_item.rb +1 -1
- data/app/models/spree/stock_reservation.rb +2 -2
- data/app/models/spree/stock_transfer.rb +4 -2
- data/app/models/spree/store.rb +33 -7
- data/app/models/spree/store_credit.rb +8 -9
- data/app/models/spree/store_credit_event.rb +5 -5
- data/app/models/spree/tax_exemption_certificate.rb +2 -0
- data/app/models/spree/tax_identifier.rb +3 -1
- data/app/models/spree/tax_line.rb +53 -3
- data/app/models/spree/tax_provider/base.rb +71 -14
- data/app/models/spree/tax_provider/internal.rb +59 -33
- data/app/models/spree/tax_provider/recorded_share.rb +114 -0
- data/app/models/spree/tax_rate.rb +1 -2
- data/app/models/spree/taxonomy.rb +0 -1
- data/app/models/spree/variant.rb +4 -3
- data/app/models/spree/variant_media.rb +1 -1
- data/app/models/spree/webhook_endpoint.rb +10 -13
- data/app/models/spree/wishlist.rb +1 -6
- data/app/models/spree/wishlist_item/custom_events.rb +6 -0
- data/app/presenters/spree/csv/customer_presenter.rb +1 -1
- data/app/presenters/spree/csv/newsletter_subscriber_presenter.rb +1 -1
- data/app/presenters/spree/csv/order_line_item_presenter.rb +1 -1
- data/app/presenters/spree/csv/product_variant_presenter.rb +42 -12
- data/app/serializers/spree/emails/base_serializer.rb +14 -0
- data/app/serializers/spree/emails/export_serializer.rb +13 -0
- data/app/serializers/spree/emails/import_serializer.rb +19 -0
- data/app/serializers/spree/emails/invitation_serializer.rb +28 -0
- data/app/serializers/spree/emails/store_serializer.rb +31 -0
- data/app/serializers/spree/emails/user_serializer.rb +12 -0
- data/app/serializers/spree/emails/webhook_endpoint_serializer.rb +16 -0
- data/app/services/spree/carts/create.rb +8 -2
- data/app/services/spree/carts/destroy.rb +2 -2
- data/app/services/spree/carts/remove_out_of_stock_items.rb +2 -2
- data/app/services/spree/carts/split_by_seller.rb +1 -1
- data/app/services/spree/carts/update.rb +19 -5
- data/app/services/spree/catalogs/set_product_terms.rb +1 -1
- data/app/services/spree/categories/add_products.rb +13 -31
- data/app/services/spree/categories/remove_products.rb +12 -51
- data/app/services/spree/checkout/advance.rb +1 -4
- data/app/services/spree/collections/add_products.rb +10 -23
- data/app/services/spree/collections/remove_products.rb +7 -43
- data/app/services/spree/coupon_codes/bulk_generate.rb +8 -14
- data/app/services/spree/data_requests/create.rb +1 -1
- data/app/services/spree/deliveries/destroy.rb +2 -2
- data/app/services/spree/email_templates/check.rb +58 -0
- data/app/services/spree/email_templates/no_sample_record.rb +7 -0
- data/app/services/spree/email_templates/preview.rb +99 -0
- data/app/services/spree/emails/file_system.rb +23 -0
- data/app/services/spree/emails/filters.rb +84 -0
- data/app/services/spree/emails/liquid_context.rb +48 -0
- data/app/services/spree/emails/rendered_email.rb +14 -0
- data/app/services/spree/emails/renderer.rb +125 -0
- data/app/services/spree/emails/template.rb +51 -0
- data/app/services/spree/emails/template_data.rb +23 -0
- data/app/services/spree/emails/template_resolver.rb +109 -0
- data/app/services/spree/emails/text_converter.rb +72 -0
- data/app/services/spree/emails/translation_inliner.rb +134 -0
- data/app/services/spree/imports/row_processors/price_list_price.rb +10 -10
- data/app/services/spree/imports/row_processors/product_variant.rb +65 -34
- data/app/services/spree/imports/row_processors/purchase_order.rb +13 -13
- data/app/services/spree/locales.rb +4 -5
- data/app/services/spree/newsletter/subscribe.rb +8 -12
- data/app/services/spree/orders/build_fulfillments.rb +3 -2
- data/app/services/spree/orders/create.rb +2 -1
- data/app/services/spree/orders/discounts/create.rb +7 -4
- data/app/services/spree/orders/discounts/destroy.rb +1 -0
- data/app/services/spree/orders/discounts/update.rb +1 -0
- data/app/services/spree/orders/fees/create.rb +1 -0
- data/app/services/spree/orders/fees/destroy.rb +1 -0
- data/app/services/spree/orders/fees/update.rb +1 -0
- data/app/services/spree/orders/remove_line_item.rb +13 -3
- data/app/services/spree/orders/update.rb +10 -6
- data/app/services/spree/orders/update_item.rb +6 -3
- data/app/services/spree/orders/update_statuses.rb +3 -1
- data/app/services/spree/product_memberships.rb +61 -0
- data/app/services/spree/returns/eligibility_validator.rb +1 -1
- data/app/services/spree/search_provider/custom_field_schema.rb +2 -2
- data/app/services/spree/seeds/commission_rates.rb +1 -1
- data/app/services/spree/seeds/digital_delivery.rb +1 -1
- data/app/services/spree/seeds/payment_methods.rb +2 -2
- data/app/services/spree/seeds/saved_reports.rb +3 -3
- data/app/services/spree/sellers/requirements.rb +1 -2
- data/app/services/spree/shipping_labels/confirm_refund.rb +1 -1
- data/app/services/spree/shipping_labels/store_file.rb +3 -3
- data/app/services/spree/stock_levels/correct.rb +3 -3
- data/app/services/spree/stock_reservations/reserve.rb +2 -3
- data/app/services/spree/store_credits/apply.rb +15 -13
- data/app/services/spree/stores/provision_defaults.rb +15 -14
- data/app/subscribers/spree/seller_onboarding_subscriber.rb +1 -1
- data/app/views/layouts/spree/base_mailer.html.erb +2 -43
- data/app/views/layouts/spree/base_mailer.liquid +79 -0
- data/app/views/spree/admin_user_mailer/password_reset_email.liquid +14 -0
- data/app/views/spree/export_mailer/export_done.liquid +12 -0
- data/app/views/spree/import_mailer/import_done.liquid +15 -0
- data/app/views/spree/invitation_mailer/invitation_accepted.liquid +9 -0
- data/app/views/spree/invitation_mailer/invitation_email.liquid +13 -0
- data/app/views/spree/seller_user_mailer/password_reset_email.liquid +14 -0
- data/app/views/spree/shared/_mailer_button.html.erb +4 -5
- data/app/views/spree/shared/_mailer_hero.html.erb +6 -5
- data/app/views/spree/shared/_summary_row.liquid +8 -0
- data/app/views/spree/webhook_mailer/endpoint_disabled.liquid +21 -0
- data/app/workflows/spree/carts/add_item.rb +4 -4
- data/app/workflows/spree/carts/complete.rb +13 -3
- data/app/workflows/spree/carts/merge.rb +1 -1
- data/app/workflows/spree/carts/recalculate_totals.rb +5 -0
- data/app/workflows/spree/carts/upsert_items.rb +18 -9
- data/app/workflows/spree/claims/approve.rb +5 -22
- data/app/workflows/spree/claims/cancel.rb +5 -21
- data/app/workflows/spree/claims/create.rb +15 -0
- data/app/workflows/spree/claims/deny.rb +7 -0
- data/app/workflows/spree/claims/resolve.rb +34 -31
- data/app/workflows/spree/customers/anonymize.rb +3 -4
- data/app/workflows/spree/customers/create.rb +1 -1
- data/app/workflows/spree/data_requests/fulfill.rb +2 -2
- data/app/workflows/spree/deliveries/update_tracking.rb +1 -1
- data/app/workflows/spree/email_templates/discard_draft.rb +20 -0
- data/app/workflows/spree/email_templates/publish.rb +70 -0
- data/app/workflows/spree/email_templates/restore_revision.rb +33 -0
- data/app/workflows/spree/email_templates/revert.rb +29 -0
- data/app/workflows/spree/email_templates/save_draft.rb +85 -0
- data/app/workflows/spree/exchanges/approve.rb +5 -22
- data/app/workflows/spree/exchanges/cancel.rb +5 -21
- data/app/workflows/spree/exchanges/create.rb +6 -0
- data/app/workflows/spree/exchanges/fulfill.rb +75 -51
- data/app/workflows/spree/exchanges/receive.rb +6 -65
- data/app/workflows/spree/fulfillments/cancel.rb +1 -1
- data/app/workflows/spree/fulfillments/create.rb +51 -47
- data/app/workflows/spree/fulfillments/fulfill.rb +23 -27
- data/app/workflows/spree/fulfillments/mark_delivered.rb +1 -1
- data/app/workflows/spree/fulfillments/replacements.rb +59 -0
- data/app/workflows/spree/gift_cards/apply.rb +2 -2
- data/app/workflows/spree/orders/add_item.rb +5 -1
- data/app/workflows/spree/orders/cancel.rb +3 -3
- data/app/workflows/spree/orders/complete.rb +16 -8
- data/app/workflows/spree/payments/process.rb +2 -2
- data/app/workflows/spree/post_sale/approval.rb +35 -0
- data/app/workflows/spree/post_sale/cancellation.rb +44 -0
- data/app/workflows/spree/post_sale/receipt.rb +92 -0
- data/app/workflows/spree/products/nested_attributes.rb +1 -1
- data/app/workflows/spree/purchase_orders/cancel.rb +1 -1
- data/app/workflows/spree/purchase_orders/close.rb +3 -31
- data/app/workflows/spree/purchase_orders/mark_draft.rb +2 -2
- data/app/workflows/spree/purchase_orders/mark_ordered.rb +2 -2
- data/app/workflows/spree/purchase_orders/receive.rb +1 -1
- data/app/workflows/spree/purchase_orders/update.rb +5 -34
- data/app/workflows/spree/receivables/closing_short.rb +46 -0
- data/app/workflows/spree/receivables/draft_editing.rb +48 -0
- data/app/workflows/spree/refunds/create.rb +5 -2
- data/app/workflows/spree/refunds/order_payments.rb +14 -2
- data/app/workflows/spree/refunds/tax_credit.rb +67 -0
- data/app/workflows/spree/returns/approve.rb +5 -22
- data/app/workflows/spree/returns/cancel.rb +5 -22
- data/app/workflows/spree/returns/create.rb +8 -0
- data/app/workflows/spree/returns/receive.rb +5 -76
- data/app/workflows/spree/returns/refund.rb +31 -8
- data/app/workflows/spree/seller_requirement_submissions/create.rb +1 -2
- data/app/workflows/spree/seller_transfers/reverse.rb +28 -1
- data/app/workflows/spree/shipping_labels/purchase.rb +8 -8
- data/app/workflows/spree/shipping_labels/record.rb +5 -5
- data/app/workflows/spree/shipping_labels/refund.rb +2 -2
- data/app/workflows/spree/stock_receipts/recording.rb +4 -4
- data/app/workflows/spree/stock_transfers/cancel.rb +2 -2
- data/app/workflows/spree/stock_transfers/close.rb +3 -30
- data/app/workflows/spree/stock_transfers/mark_draft.rb +1 -1
- data/app/workflows/spree/stock_transfers/mark_in_transit.rb +3 -3
- data/app/workflows/spree/stock_transfers/mark_ready.rb +2 -2
- data/app/workflows/spree/stock_transfers/receive.rb +1 -1
- data/app/workflows/spree/stock_transfers/update.rb +5 -33
- data/config/i18n-tasks.yml +32 -18
- data/config/initializers/alba.rb +7 -0
- data/config/language_names.csv +264 -0
- data/config/locales/ar.yml +811 -0
- data/config/locales/be.yml +855 -0
- data/config/locales/bg.yml +723 -0
- data/config/locales/ca.yml +689 -0
- data/config/locales/cs.yml +855 -0
- data/config/locales/da.yml +771 -0
- data/config/locales/de-CH.yml +248 -0
- data/config/locales/de.yml +835 -0
- data/config/locales/el.yml +769 -0
- data/config/locales/en.yml +37 -503
- data/config/locales/es-CL.yml +301 -0
- data/config/locales/es-EC.yml +186 -0
- data/config/locales/es-MX.yml +334 -0
- data/config/locales/es.yml +831 -0
- data/config/locales/et.yml +644 -0
- data/config/locales/fa.yml +709 -0
- data/config/locales/fi.yml +771 -0
- data/config/locales/fr.yml +830 -0
- data/config/locales/hu.yml +751 -0
- data/config/locales/id.yml +756 -0
- data/config/locales/it.yml +833 -0
- data/config/locales/ja.yml +726 -0
- data/config/locales/km.yml +759 -0
- data/config/locales/ko.yml +575 -0
- data/config/locales/ku.yml +753 -0
- data/config/locales/lt.yml +821 -0
- data/config/locales/lv.yml +685 -0
- data/config/locales/nb.yml +824 -0
- data/config/locales/ne.yml +823 -0
- data/config/locales/nl.yml +826 -0
- data/config/locales/pl.yml +835 -0
- data/config/locales/pt-BR.yml +547 -0
- data/config/locales/pt.yml +636 -0
- data/config/locales/ro.yml +750 -0
- data/config/locales/ru.yml +834 -0
- data/config/locales/sk.yml +680 -0
- data/config/locales/sl-SI.yml +600 -0
- data/config/locales/sv.yml +827 -0
- data/config/locales/th.yml +745 -0
- data/config/locales/tr.yml +777 -0
- data/config/locales/uk.yml +836 -0
- data/config/locales/vi.yml +768 -0
- data/config/locales/zh-CN.yml +786 -0
- data/config/locales/zh-TW.yml +834 -0
- data/db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb +5 -0
- data/db/migrate/20261001000001_add_post_sale_tax.rb +30 -0
- data/db/migrate/20261001000001_convert_preferences_to_json.rb +166 -0
- data/db/migrate/20261001000001_create_spree_email_templates.rb +52 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +0 -9
- data/lib/generators/spree/dummy/templates/rails/test.rb +7 -0
- data/lib/spree/checkout/default_requirements.rb +37 -13
- data/lib/spree/core/configuration.rb +1 -1
- data/lib/spree/core/controller_helpers/store.rb +1 -1
- data/lib/spree/core/dependencies.rb +5 -4
- data/lib/spree/core/emails/escaped_output.rb +60 -0
- data/lib/spree/core/engine.rb +48 -167
- data/lib/spree/core/permissions/default_catalog.rb +5 -0
- data/lib/spree/core/preferences/json_conversion.rb +182 -0
- data/lib/spree/core/preferences/masking.rb +4 -1
- data/lib/spree/core/preferences/preferable.rb +137 -83
- data/lib/spree/core/preferences/preferable_class_methods.rb +81 -146
- data/lib/spree/core/previews/import_preview.rb +10 -0
- data/lib/spree/core/tax/provider_error.rb +37 -0
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +85 -370
- data/lib/spree/emails/editable_templates.rb +82 -0
- data/lib/spree/events/catalog.rb +189 -0
- data/lib/spree/events.rb +21 -1
- data/lib/spree/hooks.rb +0 -17
- data/lib/spree/i18n.rb +32 -15
- data/lib/spree/reporting/adapters/live.rb +6 -6
- data/lib/spree/reporting/default_vocabulary.rb +22 -10
- data/lib/spree/reporting/hydration.rb +1 -1
- data/lib/spree/reporting/query.rb +8 -0
- data/lib/spree/reporting/schema.rb +10 -10
- data/lib/spree/testing_support/editable_email_templates.rb +61 -0
- data/lib/spree/testing_support/emails.rb +22 -0
- data/lib/spree/testing_support/factories/cart_factory.rb +1 -1
- data/lib/spree/testing_support/factories/email_template_factory.rb +28 -0
- data/lib/spree/testing_support/factories/order_factory.rb +2 -2
- data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
- data/lib/spree/testing_support/i18n.rb +3 -94
- data/lib/spree/testing_support/lifecycle_events.rb +1 -1
- data/lib/spree/testing_support/order_walkthrough.rb +1 -1
- data/lib/spree/testing_support/preferences.rb +0 -5
- data/lib/spree/testing_support/store.rb +9 -1
- data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +45 -0
- data/lib/tasks/categories_and_collections.rake +3 -3
- data/lib/tasks/core.rake +6 -4
- data/lib/tasks/media.rake +3 -3
- data/lib/tasks/package_types.rake +1 -1
- data/lib/tasks/preferences_json.rake +101 -0
- data/spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb +4 -0
- metadata +188 -44
- data/app/models/acts_as_taggable_on/tag_decorator.rb +0 -10
- data/app/models/concerns/spree/has_image_alt_text.rb +0 -18
- data/app/models/spree/base_analytics_event_handler.rb +0 -54
- data/app/models/spree/invitations/store.rb +0 -6
- data/app/models/spree/preference.rb +0 -14
- data/app/models/spree/promotion_handler/page.rb +0 -25
- data/app/models/spree/promotion_handler/promotion_duplicator.rb +0 -60
- data/app/models/spree/stock/differentiator.rb +0 -45
- data/app/presenters/spree/filters/options_presenter.rb +0 -47
- data/app/services/spree/carts/empty.rb +0 -42
- data/app/services/spree/country_to_timezone.rb +0 -273
- data/app/services/spree/payments/create.rb +0 -92
- data/app/validators/spree/url_validator.rb +0 -23
- data/app/views/active_storage/blobs/_blob.html.erb +0 -14
- data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +0 -8
- data/app/views/spree/export_mailer/export_done.html.erb +0 -7
- data/app/views/spree/import_mailer/import_done.html.erb +0 -12
- data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +0 -4
- data/app/views/spree/invitation_mailer/invitation_email.html.erb +0 -12
- data/app/views/spree/seller_user_mailer/password_reset_email.html.erb +0 -8
- data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -19
- data/app/views/spree/shared/_base_mailer_header.html.erb +0 -8
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -399
- data/app/views/spree/shared/_mailer_logo.html.erb +0 -41
- data/app/views/spree/shared/_purchased_items_styles.html.erb +0 -119
- data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +0 -51
- data/app/views/spree/webhook_mailer/endpoint_disabled.text.erb +0 -10
- data/app/workflows/spree/fulfillments/purchase_label.rb +0 -40
- data/app/workflows/spree/returns/purchase_label.rb +0 -32
- data/lib/spree/analytics.rb +0 -11
- data/lib/spree/core/preferences/scoped_store.rb +0 -34
- data/lib/spree/core/preferences/store.rb +0 -105
- data/lib/spree/translation_migrations.rb +0 -52
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<%= render layout: 'spree/shared/mailer_hero' do %>
|
|
2
|
-
<h1><%= Spree.t('invitation_mailer.invitation_email.subject', resource_name: @invitation.resource.name) %></h1>
|
|
3
|
-
<p class="greeting"><%= Spree.t('invitation_mailer.greeting', user_name: @invitation.invitee&.first_name || @invitation.email) %></p>
|
|
4
|
-
<p><%= Spree.t('invitation_mailer.invitation_email.body', inviter_name: @invitation.inviter.name, resource_name: @invitation.resource.name) %></p>
|
|
5
|
-
<p><%= Spree.t('invitation_mailer.invitation_email.link_description') %></p>
|
|
6
|
-
<% accept_url = if spree.respond_to?(:admin_invitation_url)
|
|
7
|
-
spree.admin_invitation_url(@invitation, token: @invitation.token, host: @invitation.store.formatted_url)
|
|
8
|
-
else
|
|
9
|
-
main_app.admin_invitation_acceptance_url(@invitation)
|
|
10
|
-
end %>
|
|
11
|
-
<%= render 'spree/shared/mailer_button', url: accept_url, label: Spree.t(:accept) %>
|
|
12
|
-
<% end %>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<%= render layout: 'spree/shared/mailer_hero' do %>
|
|
2
|
-
<h1><%= Spree.t('seller_user_mailer.password_reset_email.action') %></h1>
|
|
3
|
-
<p class="greeting"><%= Spree.t('seller_user_mailer.password_reset_email.greeting', name: @user.first_name.presence || @user.email) %></p>
|
|
4
|
-
<p><%= Spree.t('seller_user_mailer.password_reset_email.instructions', store_name: @current_store.name) %></p>
|
|
5
|
-
<%= render 'spree/shared/mailer_button', url: @reset_url, label: Spree.t('seller_user_mailer.password_reset_email.action') %>
|
|
6
|
-
<p class="sub"><%= Spree.t('seller_user_mailer.password_reset_email.expiry_notice') %></p>
|
|
7
|
-
<p class="sub"><%= Spree.t('seller_user_mailer.password_reset_email.ignore_notice') %></p>
|
|
8
|
-
<% end %>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
<!-- You can override this template to design your own footer. -->
|
|
2
|
-
<table width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
|
3
|
-
<tr>
|
|
4
|
-
<td align="center">
|
|
5
|
-
<div class="footer_content f-fallback">
|
|
6
|
-
<p class="footer_brand">
|
|
7
|
-
<%= link_to current_store.name, current_store.storefront_url %>
|
|
8
|
-
</p>
|
|
9
|
-
<% if current_store.address.present? %>
|
|
10
|
-
<p class="footer_meta"><%= current_store.address %></p>
|
|
11
|
-
<% end %>
|
|
12
|
-
<% if current_store.customer_support_email.present? %>
|
|
13
|
-
<p class="footer_meta"><%= mail_to current_store.customer_support_email %></p>
|
|
14
|
-
<% end %>
|
|
15
|
-
<p class="footer_note">© <%= Time.current.year %> <%= current_store.name %></p>
|
|
16
|
-
</div>
|
|
17
|
-
</td>
|
|
18
|
-
</tr>
|
|
19
|
-
</table>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<!-- You can override this template to design your own header. -->
|
|
2
|
-
<table width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
|
3
|
-
<tr>
|
|
4
|
-
<td class="email-masthead" align="center">
|
|
5
|
-
<%= render 'spree/shared/mailer_logo', logo: current_store.mailer_logo.attached? ? current_store.mailer_logo : current_store.logo, height: 32 %>
|
|
6
|
-
</td>
|
|
7
|
-
</tr>
|
|
8
|
-
</table>
|
|
@@ -1,399 +0,0 @@
|
|
|
1
|
-
<style type="text/css" rel="stylesheet" media="all">
|
|
2
|
-
/* Fonts ------------------------------ */
|
|
3
|
-
/* Same files the react-email Studio templates load; Gmail strips these and falls back to Arial. */
|
|
4
|
-
|
|
5
|
-
@font-face {
|
|
6
|
-
font-family: "Geist";
|
|
7
|
-
font-style: normal;
|
|
8
|
-
font-weight: 500;
|
|
9
|
-
src: url("https://fonts.gstatic.com/s/geist/v4/gyByhwUxId8gMEwcGFU.woff2") format("woff2");
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
@font-face {
|
|
13
|
-
font-family: "Geist";
|
|
14
|
-
font-style: normal;
|
|
15
|
-
font-weight: 600;
|
|
16
|
-
src: url("https://fonts.gstatic.com/s/geist/v4/gyByhwUxId8gMEwcGFU.woff2") format("woff2");
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
@font-face {
|
|
20
|
-
font-family: "Geist";
|
|
21
|
-
font-style: normal;
|
|
22
|
-
font-weight: 700;
|
|
23
|
-
src: url("https://fonts.gstatic.com/s/geist/v4/gyByhwUxId8gMEwcGFU.woff2") format("woff2");
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
@font-face {
|
|
27
|
-
font-family: "Inter";
|
|
28
|
-
font-style: normal;
|
|
29
|
-
font-weight: 400;
|
|
30
|
-
src: url("https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuOKfMZg.ttf") format("truetype");
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
@font-face {
|
|
34
|
-
font-family: "Inter";
|
|
35
|
-
font-style: normal;
|
|
36
|
-
font-weight: 450;
|
|
37
|
-
src: url("https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuOKfMZg.ttf") format("truetype");
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
@font-face {
|
|
41
|
-
font-family: "Inter";
|
|
42
|
-
font-style: normal;
|
|
43
|
-
font-weight: 500;
|
|
44
|
-
src: url("https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuI6fMZg.ttf") format("truetype");
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@font-face {
|
|
48
|
-
font-family: "Inter";
|
|
49
|
-
font-style: normal;
|
|
50
|
-
font-weight: 600;
|
|
51
|
-
src: url("https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuGKYMZg.ttf") format("truetype");
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/* Base ------------------------------ */
|
|
55
|
-
|
|
56
|
-
body {
|
|
57
|
-
width: 100% !important;
|
|
58
|
-
height: 100%;
|
|
59
|
-
margin: 0;
|
|
60
|
-
-webkit-text-size-adjust: none;
|
|
61
|
-
background-color: #FFFFFF;
|
|
62
|
-
color: #726A6A;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
a {
|
|
66
|
-
color: #332C2C;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
a img {
|
|
70
|
-
border: none;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
td {
|
|
74
|
-
word-break: break-word;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.preheader {
|
|
78
|
-
display: none !important;
|
|
79
|
-
visibility: hidden;
|
|
80
|
-
mso-hide: all;
|
|
81
|
-
font-size: 1px;
|
|
82
|
-
line-height: 1px;
|
|
83
|
-
max-height: 0;
|
|
84
|
-
max-width: 0;
|
|
85
|
-
opacity: 0;
|
|
86
|
-
overflow: hidden;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/* Type ------------------------------ */
|
|
90
|
-
|
|
91
|
-
body,
|
|
92
|
-
td,
|
|
93
|
-
th {
|
|
94
|
-
font-family: "Inter", Helvetica, Arial, sans-serif;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
h1 {
|
|
98
|
-
margin: 0 0 24px;
|
|
99
|
-
font-family: "Geist", "Inter", Helvetica, Arial, sans-serif;
|
|
100
|
-
color: #332C2C;
|
|
101
|
-
font-size: 40px;
|
|
102
|
-
line-height: 1.2;
|
|
103
|
-
letter-spacing: -0.8px;
|
|
104
|
-
font-weight: 700;
|
|
105
|
-
text-align: center;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
h2 {
|
|
109
|
-
margin: 0 0 16px;
|
|
110
|
-
font-family: "Geist", "Inter", Helvetica, Arial, sans-serif;
|
|
111
|
-
color: #332C2C;
|
|
112
|
-
font-size: 22px;
|
|
113
|
-
line-height: 1.4;
|
|
114
|
-
letter-spacing: -0.18px;
|
|
115
|
-
font-weight: 500;
|
|
116
|
-
text-align: center;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
h3 {
|
|
120
|
-
margin: 0 0 16px;
|
|
121
|
-
font-family: "Geist", "Inter", Helvetica, Arial, sans-serif;
|
|
122
|
-
color: #726A6A;
|
|
123
|
-
font-size: 16px;
|
|
124
|
-
line-height: 1.5;
|
|
125
|
-
letter-spacing: -0.16px;
|
|
126
|
-
font-weight: 500;
|
|
127
|
-
text-align: left;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
td,
|
|
131
|
-
th {
|
|
132
|
-
font-size: 14px;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
p,
|
|
136
|
-
ul,
|
|
137
|
-
ol,
|
|
138
|
-
blockquote {
|
|
139
|
-
margin: 0 0 16px;
|
|
140
|
-
font-size: 14px;
|
|
141
|
-
line-height: 1.6;
|
|
142
|
-
letter-spacing: -0.042px;
|
|
143
|
-
font-weight: 450;
|
|
144
|
-
color: #726A6A;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
p.sub {
|
|
148
|
-
font-size: 13px;
|
|
149
|
-
color: #726A6A;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
p.sub a {
|
|
153
|
-
color: #726A6A;
|
|
154
|
-
word-break: break-all;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
p.strong {
|
|
158
|
-
margin: 0;
|
|
159
|
-
font-weight: 500;
|
|
160
|
-
color: #332C2C;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/* Utilities ------------------------------ */
|
|
164
|
-
|
|
165
|
-
.align-right {
|
|
166
|
-
text-align: right;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
.align-left {
|
|
170
|
-
text-align: left;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
.align-center {
|
|
174
|
-
text-align: center;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/* Buttons ------------------------------ */
|
|
178
|
-
|
|
179
|
-
.button {
|
|
180
|
-
display: inline-block;
|
|
181
|
-
background-color: #FFFFFF;
|
|
182
|
-
border: 1px solid #E8E9E9;
|
|
183
|
-
border-radius: 8px;
|
|
184
|
-
padding: 12px 20px;
|
|
185
|
-
font-size: 15px;
|
|
186
|
-
line-height: 1.6;
|
|
187
|
-
font-weight: 500;
|
|
188
|
-
color: #1F2222 !important;
|
|
189
|
-
text-decoration: none;
|
|
190
|
-
-webkit-text-size-adjust: none;
|
|
191
|
-
box-sizing: border-box;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
.button--green {
|
|
195
|
-
background-color: #22BC66;
|
|
196
|
-
border-color: #22BC66;
|
|
197
|
-
color: #FFFFFF !important;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
.button--red {
|
|
201
|
-
background-color: #FF6136;
|
|
202
|
-
border-color: #FF6136;
|
|
203
|
-
color: #FFFFFF !important;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
@media only screen and (max-width: 500px) {
|
|
207
|
-
.button {
|
|
208
|
-
width: 100% !important;
|
|
209
|
-
text-align: center !important;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/* Hero ------------------------------ */
|
|
214
|
-
|
|
215
|
-
.hero {
|
|
216
|
-
width: 100%;
|
|
217
|
-
text-align: center;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
.hero_content {
|
|
221
|
-
max-width: 420px;
|
|
222
|
-
margin: 0 auto;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
.hero h1 {
|
|
226
|
-
margin: 0;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
.hero p {
|
|
230
|
-
margin: 12px 0 0;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
.hero .greeting {
|
|
234
|
-
margin: 24px 0 0;
|
|
235
|
-
font-size: 15px;
|
|
236
|
-
font-weight: 500;
|
|
237
|
-
color: #332C2C;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
.hero .sub {
|
|
241
|
-
margin: 24px 0 0;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
.hero .sub + .sub {
|
|
245
|
-
margin: 16px 0 0;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
/* Sections ------------------------------ */
|
|
249
|
-
|
|
250
|
-
.section {
|
|
251
|
-
width: 100%;
|
|
252
|
-
margin: 48px 0 0;
|
|
253
|
-
text-align: left;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
.section .sub {
|
|
257
|
-
margin: 16px 0 0;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/* Structure ------------------------------ */
|
|
261
|
-
|
|
262
|
-
.email-wrapper {
|
|
263
|
-
width: 100%;
|
|
264
|
-
margin: 0;
|
|
265
|
-
padding: 0;
|
|
266
|
-
background-color: #FFFFFF;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
.email-content {
|
|
270
|
-
width: 100%;
|
|
271
|
-
max-width: 640px;
|
|
272
|
-
margin: 0 auto;
|
|
273
|
-
padding: 0;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
/* Masthead ----------------------- */
|
|
277
|
-
|
|
278
|
-
.email-masthead {
|
|
279
|
-
padding: 0 0 32px;
|
|
280
|
-
text-align: center;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
/* Body ------------------------------ */
|
|
284
|
-
|
|
285
|
-
.email-card {
|
|
286
|
-
background-color: #F6F6F6;
|
|
287
|
-
padding: 56px 24px;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
.email-footer {
|
|
291
|
-
padding: 64px 24px;
|
|
292
|
-
text-align: center;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
.email-footer p {
|
|
296
|
-
color: #726A6A;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
.footer_content {
|
|
300
|
-
max-width: 320px;
|
|
301
|
-
margin: 0 auto;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
.footer_brand {
|
|
305
|
-
margin: 0;
|
|
306
|
-
font-size: 13px;
|
|
307
|
-
line-height: 1.5;
|
|
308
|
-
letter-spacing: -0.13px;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
.footer_brand a {
|
|
312
|
-
color: #726A6A;
|
|
313
|
-
font-weight: 500;
|
|
314
|
-
text-decoration: none;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
.footer_meta {
|
|
318
|
-
margin: 12px 0 0;
|
|
319
|
-
font-size: 11px;
|
|
320
|
-
line-height: 1.5;
|
|
321
|
-
letter-spacing: -0.11px;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
.footer_meta a {
|
|
325
|
-
color: #726A6A;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
.footer_note {
|
|
329
|
-
margin: 20px 0 0;
|
|
330
|
-
font-size: 11px;
|
|
331
|
-
line-height: 1.5;
|
|
332
|
-
letter-spacing: -0.11px;
|
|
333
|
-
color: #726A6A;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
.body-action {
|
|
337
|
-
width: 100%;
|
|
338
|
-
margin: 32px auto 0;
|
|
339
|
-
padding: 0;
|
|
340
|
-
text-align: center;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
/* Legacy class hooks ------------------------------ */
|
|
344
|
-
/* Kept for host apps and extensions that override mailer templates with
|
|
345
|
-
pre-5.6 markup; nothing in Spree itself uses these anymore. */
|
|
346
|
-
|
|
347
|
-
.purchase,
|
|
348
|
-
.purchase_content {
|
|
349
|
-
width: 100%;
|
|
350
|
-
margin: 0;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
.purchase_item {
|
|
354
|
-
padding: 10px 4px;
|
|
355
|
-
color: #726A6A;
|
|
356
|
-
font-size: 14px;
|
|
357
|
-
line-height: 1.6;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
.purchase_item--additional {
|
|
361
|
-
font-size: 13px;
|
|
362
|
-
color: #726A6A;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
.purchase_total {
|
|
366
|
-
margin: 0;
|
|
367
|
-
text-align: right;
|
|
368
|
-
font-weight: 500;
|
|
369
|
-
color: #332C2C;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
.purchase_total--name {
|
|
373
|
-
margin: 0;
|
|
374
|
-
text-align: right;
|
|
375
|
-
color: #726A6A;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
/* Media Queries ------------------------------ */
|
|
379
|
-
|
|
380
|
-
@media only screen and (max-width: 600px) {
|
|
381
|
-
.email-card {
|
|
382
|
-
padding: 40px 16px !important;
|
|
383
|
-
}
|
|
384
|
-
.email-footer {
|
|
385
|
-
padding: 48px 16px !important;
|
|
386
|
-
}
|
|
387
|
-
h1 {
|
|
388
|
-
font-size: 32px !important;
|
|
389
|
-
letter-spacing: -0.64px !important;
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
</style>
|
|
393
|
-
<!--[if mso]>
|
|
394
|
-
<style type="text/css">
|
|
395
|
-
.f-fallback {
|
|
396
|
-
font-family: Arial, sans-serif;
|
|
397
|
-
}
|
|
398
|
-
</style>
|
|
399
|
-
<![endif]-->
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<% logo ||= current_store.mailer_logo.attached? ? current_store.mailer_logo : current_store.logo %>
|
|
2
|
-
<% height ||= 64 %>
|
|
3
|
-
<% logo_css ||= '' %>
|
|
4
|
-
|
|
5
|
-
<%= link_to current_store.storefront_url, id: 'site-logo', style: "text-decoration: none;" do %>
|
|
6
|
-
<span style="display: none;"><%= current_store.name %></span>
|
|
7
|
-
<% if logo.present? && logo.attached? && logo.variable? %>
|
|
8
|
-
<% aspect_ratio = spree_asset_aspect_ratio(logo) %>
|
|
9
|
-
<% logo_style = "aspect-ratio: #{aspect_ratio};" %>
|
|
10
|
-
|
|
11
|
-
<% if aspect_ratio.to_f > 10 %>
|
|
12
|
-
<% logo_height = 16 %>
|
|
13
|
-
<% elsif aspect_ratio.to_f > 5 %>
|
|
14
|
-
<% logo_height = 25 %>
|
|
15
|
-
<% elsif aspect_ratio.to_f < 3 %>
|
|
16
|
-
<% logo_height = 32 %>
|
|
17
|
-
<% else %>
|
|
18
|
-
<% logo_height = 32 %>
|
|
19
|
-
<% end %>
|
|
20
|
-
|
|
21
|
-
<% if defined?(height) && height > 0 %>
|
|
22
|
-
<% logo_style += "height: #{height}px;" %>
|
|
23
|
-
<% cdn_height = height %>
|
|
24
|
-
<% elsif aspect_ratio.to_f < 3 %>
|
|
25
|
-
<% cdn_height = 64 %>
|
|
26
|
-
<% logo_style += "height: 64px;" %>
|
|
27
|
-
<% else %>
|
|
28
|
-
<% cdn_height = 32 %>
|
|
29
|
-
<% logo_style += "height: 32px;" %>
|
|
30
|
-
<% end %>
|
|
31
|
-
|
|
32
|
-
<% variant_options = spree_image_variant_options(resize_to_fit: [nil, cdn_height * 3]) %>
|
|
33
|
-
|
|
34
|
-
<%= image_tag main_app.cdn_image_url(logo.variant(variant_options)),
|
|
35
|
-
style: "#{logo_style} width: auto;",
|
|
36
|
-
alt: current_store.name,
|
|
37
|
-
height: cdn_height %>
|
|
38
|
-
<% else %>
|
|
39
|
-
<h1 style="margin: 0; font-size: 22px; font-weight: bold; text-align: center; text-transform: uppercase;"><%= current_store.name %></h1>
|
|
40
|
-
<% end %>
|
|
41
|
-
<% end %>
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
<%# Per-email stylesheet for the line item tiles + order summary rows.
|
|
2
|
-
Render it once at the top of any mailer template that uses these components —
|
|
3
|
-
it lands in the layout <head> via `content_for :head`. %>
|
|
4
|
-
<% content_for :head do %>
|
|
5
|
-
<style type="text/css" rel="stylesheet" media="all">
|
|
6
|
-
/* Line item tiles ------------------------------ */
|
|
7
|
-
|
|
8
|
-
.item {
|
|
9
|
-
width: 100%;
|
|
10
|
-
background-color: #F0F0F0;
|
|
11
|
-
border-radius: 16px;
|
|
12
|
-
margin: 0 0 8px;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.item .item_image {
|
|
16
|
-
padding: 8px;
|
|
17
|
-
width: 96px;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.item .item_thumb {
|
|
21
|
-
display: block;
|
|
22
|
-
width: 80px;
|
|
23
|
-
height: auto;
|
|
24
|
-
border-radius: 12px;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.item .item_thumb_placeholder {
|
|
28
|
-
width: 80px;
|
|
29
|
-
height: 80px;
|
|
30
|
-
background-color: #E4E4E4;
|
|
31
|
-
border-radius: 12px;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.item .item_info {
|
|
35
|
-
padding: 8px 16px 8px 8px;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.item .item_name {
|
|
39
|
-
display: inline-block;
|
|
40
|
-
font-size: 15px;
|
|
41
|
-
line-height: 1.5;
|
|
42
|
-
font-weight: 500;
|
|
43
|
-
color: #332C2C;
|
|
44
|
-
text-decoration: none;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.item .item_meta {
|
|
48
|
-
margin: 2px 0 0;
|
|
49
|
-
font-size: 13px;
|
|
50
|
-
line-height: 1.5;
|
|
51
|
-
color: #726A6A;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.item .item_amount {
|
|
55
|
-
padding: 8px 16px 8px 8px;
|
|
56
|
-
text-align: right;
|
|
57
|
-
white-space: nowrap;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.item .item_qty {
|
|
61
|
-
margin: 0;
|
|
62
|
-
font-size: 13px;
|
|
63
|
-
line-height: 1.5;
|
|
64
|
-
color: #726A6A;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.item .item_price {
|
|
68
|
-
margin: 2px 0 0;
|
|
69
|
-
font-size: 15px;
|
|
70
|
-
line-height: 1.5;
|
|
71
|
-
font-weight: 500;
|
|
72
|
-
color: #332C2C;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/* Summary rows ------------------------------ */
|
|
76
|
-
|
|
77
|
-
.summary {
|
|
78
|
-
width: 100%;
|
|
79
|
-
margin: 16px 0 0;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.summary td {
|
|
83
|
-
padding: 6px 0;
|
|
84
|
-
font-size: 14px;
|
|
85
|
-
line-height: 1.6;
|
|
86
|
-
font-weight: 450;
|
|
87
|
-
color: #726A6A;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.summary .summary_value {
|
|
91
|
-
font-size: 15px;
|
|
92
|
-
font-weight: 500;
|
|
93
|
-
text-align: right;
|
|
94
|
-
white-space: nowrap;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
.summary .summary_sub {
|
|
98
|
-
display: block;
|
|
99
|
-
font-size: 13px;
|
|
100
|
-
line-height: 1.5;
|
|
101
|
-
color: #726A6A;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
.summary .summary_strong {
|
|
105
|
-
color: #332C2C;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.summary_total td {
|
|
109
|
-
padding: 14px 0 0;
|
|
110
|
-
border-top: 1px solid #E8E9E9;
|
|
111
|
-
font-weight: 500;
|
|
112
|
-
color: #332C2C;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.summary_total .summary_value {
|
|
116
|
-
font-weight: 600;
|
|
117
|
-
}
|
|
118
|
-
</style>
|
|
119
|
-
<% end %>
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
<%= render 'spree/shared/purchased_items_styles' %>
|
|
2
|
-
|
|
3
|
-
<%= render layout: 'spree/shared/mailer_hero' do %>
|
|
4
|
-
<h1><%= Spree.t('webhook_mailer.endpoint_disabled.heading') %></h1>
|
|
5
|
-
<p><%= Spree.t('webhook_mailer.endpoint_disabled.message', endpoint_name: @endpoint.name || @endpoint.url) %></p>
|
|
6
|
-
<% end %>
|
|
7
|
-
|
|
8
|
-
<table class="section summary" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
|
9
|
-
<tr>
|
|
10
|
-
<td valign="top">
|
|
11
|
-
<span class="f-fallback"><%= Spree.t('webhook_mailer.endpoint_disabled.url_label') %></span>
|
|
12
|
-
</td>
|
|
13
|
-
<td class="summary_value summary_strong" align="right" valign="top">
|
|
14
|
-
<span class="f-fallback"><%= @endpoint.url %></span>
|
|
15
|
-
</td>
|
|
16
|
-
</tr>
|
|
17
|
-
<% if @endpoint.name.present? %>
|
|
18
|
-
<tr>
|
|
19
|
-
<td valign="top">
|
|
20
|
-
<span class="f-fallback"><%= Spree.t('webhook_mailer.endpoint_disabled.name_label') %></span>
|
|
21
|
-
</td>
|
|
22
|
-
<td class="summary_value summary_strong" align="right" valign="top">
|
|
23
|
-
<span class="f-fallback"><%= @endpoint.name %></span>
|
|
24
|
-
</td>
|
|
25
|
-
</tr>
|
|
26
|
-
<% end %>
|
|
27
|
-
<tr>
|
|
28
|
-
<td valign="top">
|
|
29
|
-
<span class="f-fallback"><%= Spree.t('webhook_mailer.endpoint_disabled.reason_label') %></span>
|
|
30
|
-
</td>
|
|
31
|
-
<td class="summary_value summary_strong" align="right" valign="top">
|
|
32
|
-
<span class="f-fallback"><%= @endpoint.disabled_reason %></span>
|
|
33
|
-
</td>
|
|
34
|
-
</tr>
|
|
35
|
-
<tr>
|
|
36
|
-
<td valign="top">
|
|
37
|
-
<span class="f-fallback"><%= Spree.t('webhook_mailer.endpoint_disabled.disabled_at_label') %></span>
|
|
38
|
-
</td>
|
|
39
|
-
<td class="summary_value summary_strong" align="right" valign="top">
|
|
40
|
-
<span class="f-fallback"><%= @endpoint.disabled_at&.strftime('%Y-%m-%d %H:%M %Z') %></span>
|
|
41
|
-
</td>
|
|
42
|
-
</tr>
|
|
43
|
-
</table>
|
|
44
|
-
|
|
45
|
-
<table class="section" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
|
46
|
-
<tr>
|
|
47
|
-
<td>
|
|
48
|
-
<p class="f-fallback"><%= Spree.t('webhook_mailer.endpoint_disabled.instructions') %></p>
|
|
49
|
-
</td>
|
|
50
|
-
</tr>
|
|
51
|
-
</table>
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<%= Spree.t('webhook_mailer.endpoint_disabled.heading') %>
|
|
2
|
-
|
|
3
|
-
<%= Spree.t('webhook_mailer.endpoint_disabled.message', endpoint_name: @endpoint.name || @endpoint.url) %>
|
|
4
|
-
|
|
5
|
-
URL: <%= @endpoint.url %>
|
|
6
|
-
<% if @endpoint.name.present? %>Name: <%= @endpoint.name %><% end %>
|
|
7
|
-
Reason: <%= @endpoint.disabled_reason %>
|
|
8
|
-
Disabled at: <%= @endpoint.disabled_at&.strftime('%Y-%m-%d %H:%M %Z') %>
|
|
9
|
-
|
|
10
|
-
<%= Spree.t('webhook_mailer.endpoint_disabled.instructions') %>
|