spree_core 4.2.0.beta → 4.2.0.rc5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/spree/base_controller.rb +2 -3
- data/app/controllers/spree/errors_controller.rb +11 -0
- data/app/finders/spree/addresses/find.rb +6 -0
- data/app/finders/spree/base_finder.rb +14 -0
- data/app/finders/spree/countries/find.rb +11 -3
- data/app/finders/spree/credit_cards/find.rb +2 -2
- data/app/finders/spree/orders/find_current.rb +2 -2
- data/app/finders/spree/products/find.rb +12 -1
- data/app/helpers/spree/base_helper.rb +38 -18
- data/app/helpers/spree/locale_helper.rb +19 -0
- data/app/helpers/spree/mail_helper.rb +12 -7
- data/app/helpers/spree/products_helper.rb +39 -13
- data/app/mailers/spree/base_mailer.rb +5 -5
- data/app/mailers/spree/order_mailer.rb +3 -3
- data/app/mailers/spree/reimbursement_mailer.rb +1 -1
- data/app/mailers/spree/shipment_mailer.rb +1 -1
- data/app/models/concerns/spree/default_price.rb +1 -5
- data/app/models/concerns/spree/user_methods.rb +2 -2
- data/app/models/concerns/spree/user_payment_source.rb +1 -1
- data/app/models/spree/ability.rb +45 -34
- data/app/models/spree/address.rb +17 -1
- data/app/models/spree/adjustment.rb +1 -0
- data/app/models/spree/app_configuration.rb +2 -3
- data/app/models/spree/app_dependencies.rb +10 -2
- data/app/models/spree/base.rb +5 -0
- data/app/models/spree/credit_card.rb +5 -0
- data/app/models/spree/fulfilment_changer.rb +58 -16
- data/app/models/spree/image.rb +14 -14
- data/app/models/spree/inventory_unit.rb +2 -7
- data/app/models/spree/line_item.rb +9 -16
- data/app/models/spree/log_entry.rb +1 -1
- data/app/models/spree/option_type.rb +2 -0
- data/app/models/spree/order.rb +12 -6
- data/app/models/spree/order/address_book.rb +7 -20
- data/app/models/spree/order/payments.rb +10 -2
- data/app/models/spree/payment.rb +18 -4
- data/app/models/spree/payment/processing.rb +2 -2
- data/app/models/spree/payment_method.rb +3 -3
- data/app/models/spree/preferences/store.rb +1 -1
- data/app/models/spree/price.rb +1 -6
- data/app/models/spree/product.rb +24 -17
- data/app/models/spree/promotion.rb +10 -15
- data/app/models/spree/promotion/rules/option_value.rb +1 -1
- data/app/models/spree/promotion/rules/product.rb +2 -1
- data/app/models/spree/promotion/rules/user.rb +2 -1
- data/app/models/spree/promotion_handler/coupon.rb +1 -2
- data/app/models/spree/promotion_handler/promotion_duplicator.rb +9 -3
- data/app/models/spree/refund.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/default.rb +0 -2
- data/app/models/spree/return_item/eligibility_validator/{r_m_a_required.rb → rma_required.rb} +0 -0
- data/app/models/spree/shipment.rb +1 -1
- data/app/models/spree/shipping_method.rb +1 -5
- data/app/models/spree/shipping_rate.rb +2 -11
- data/app/models/spree/stock/availability_validator.rb +3 -4
- data/app/models/spree/stock_item.rb +1 -5
- data/app/models/spree/store.rb +45 -1
- data/app/models/spree/store_credit.rb +1 -1
- data/app/models/spree/variant.rb +8 -15
- data/app/models/spree/zone.rb +17 -4
- data/app/presenters/spree/variant_presenter.rb +4 -6
- data/app/services/spree/account/addresses/create.rb +23 -0
- data/app/services/spree/account/addresses/helper.rb +37 -0
- data/app/services/spree/account/addresses/update.rb +23 -0
- data/app/services/spree/cart/estimate_shipping_rates.rb +1 -1
- data/app/services/spree/checkout/update.rb +13 -2
- data/app/services/spree/compare_line_items.rb +4 -2
- data/app/sorters/spree/base_sorter.rb +35 -0
- data/app/sorters/spree/orders/sort.rb +1 -37
- data/app/sorters/spree/products/sort.rb +9 -32
- data/app/validators/email_validator.rb +1 -1
- data/app/views/spree/errors/forbidden.html.erb +0 -0
- data/app/views/spree/errors/unauthorized.html.erb +0 -0
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -2
- data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +1 -1
- data/config/initializers/inflections.rb +3 -0
- data/config/initializers/rails61_fixes.rb +3 -0
- data/config/locales/en.yml +42 -63
- data/config/routes.rb +2 -1
- data/db/default/spree/countries.rb +10 -4
- data/db/default/spree/states.rb +42 -5
- data/db/default/spree/stores.rb +18 -13
- data/db/default/spree/zones.rb +5 -2
- data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
- data/db/migrate/20200610113542_add_label_to_spree_addresses.rb +5 -0
- data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +12 -0
- data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +6 -0
- data/db/migrate/20201013084504_add_seo_robots_to_spree_stores.rb +5 -0
- data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +5 -0
- data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +5 -0
- data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +10 -0
- data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +15 -0
- data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +5 -0
- data/db/migrate/20210120142527_ensure_default_locale_in_spree_stores.rb +5 -0
- data/lib/generators/spree/install/templates/config/spree_storefront.yml +9 -9
- data/lib/spree/core.rb +3 -1
- data/lib/spree/core/controller_helpers/auth.rb +3 -1
- data/lib/spree/core/controller_helpers/common.rb +6 -8
- data/lib/spree/core/controller_helpers/currency.rb +45 -0
- data/lib/spree/core/controller_helpers/locale.rb +57 -0
- data/lib/spree/core/controller_helpers/order.rb +9 -4
- data/lib/spree/core/controller_helpers/store.rb +4 -16
- data/lib/spree/core/importer/order.rb +9 -9
- data/lib/spree/core/product_filters.rb +3 -3
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/i18n.rb +7 -21
- data/lib/spree/permitted_attributes.rb +3 -3
- data/lib/spree/service_module.rb +6 -2
- data/lib/spree/testing_support/capybara_config.rb +1 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +29 -17
- data/lib/spree/testing_support/factories/shipment_factory.rb +7 -9
- data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -2
- data/lib/spree/testing_support/factories/zone_factory.rb +16 -13
- data/lib/spree/testing_support/i18n.rb +1 -1
- data/lib/spree/testing_support/order_walkthrough.rb +8 -3
- data/lib/spree/testing_support/rspec_retry_config.rb +10 -0
- data/spree_core.gemspec +7 -5
- metadata +90 -28
- data/lib/spree/core/controller_helpers/currency_helpers.rb +0 -15
- data/lib/spree/i18n/base.rb +0 -17
- data/lib/spree/i18n/initializer.rb +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3d0f9d56b3e68e0ff69cfa46d00d61872b775e2e92ddf76a3eccd85899ca863b
|
|
4
|
+
data.tar.gz: 80879be83858cb06f69c5e78f975b9cbf1846941d62282290c8403bd8b509363
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 82e15e51f5847c472eac8cd4e24e549dc28705b328f082860009c638277f203adbfe42ff898105862e3385b4ed5935e102200cd247ee998b09b4b2f3912b77d3
|
|
7
|
+
data.tar.gz: c843177415698e0d50d2d9d81b2803f84713db0dfe7d9098c41a7de69cb9c1c15158d97b93a2ecc97dc62752078797adbd03436bad2a8674c87eef07ecb97e35
|
|
@@ -7,9 +7,8 @@ class Spree::BaseController < ApplicationController
|
|
|
7
7
|
include Spree::Core::ControllerHelpers::Search
|
|
8
8
|
include Spree::Core::ControllerHelpers::Store
|
|
9
9
|
include Spree::Core::ControllerHelpers::StrongParameters
|
|
10
|
-
include Spree::Core::ControllerHelpers::
|
|
10
|
+
include Spree::Core::ControllerHelpers::Locale
|
|
11
|
+
include Spree::Core::ControllerHelpers::Currency
|
|
11
12
|
|
|
12
13
|
respond_to :html
|
|
13
14
|
end
|
|
14
|
-
|
|
15
|
-
require 'spree/i18n/initializer'
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Countries
|
|
3
|
-
class Find
|
|
4
|
-
def initialize(scope
|
|
3
|
+
class Find < ::Spree::BaseFinder
|
|
4
|
+
def initialize(scope:, params:)
|
|
5
5
|
@scope = scope
|
|
6
6
|
|
|
7
7
|
@shippable = String(params[:filter][:shippable]) unless params[:filter].nil?
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def call
|
|
11
|
+
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
|
12
|
+
Spree::Countries::Find.new.call is deprecated and will be removed in Spree 5.0.
|
|
13
|
+
Please use Spree::Countries::Find.new.execute instead
|
|
14
|
+
DEPRECATION
|
|
15
|
+
execute
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def execute
|
|
11
19
|
countries = by_shippability(scope)
|
|
12
20
|
|
|
13
21
|
countries
|
|
@@ -15,7 +23,7 @@ module Spree
|
|
|
15
23
|
|
|
16
24
|
private
|
|
17
25
|
|
|
18
|
-
attr_reader :shippable
|
|
26
|
+
attr_reader :shippable
|
|
19
27
|
|
|
20
28
|
def shippable?
|
|
21
29
|
shippable.present?
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module CreditCards
|
|
3
|
-
class Find
|
|
4
|
-
def execute
|
|
3
|
+
class Find < ::Spree::BaseFinder
|
|
4
|
+
def execute
|
|
5
5
|
return scope.default.take if params[:id].eql?('default')
|
|
6
6
|
return scope.where(payment_method_id: params[:filter]['payment_method_id']) if params[:filter].present?
|
|
7
7
|
|
|
@@ -9,13 +9,13 @@ module Spree
|
|
|
9
9
|
return order unless order.nil?
|
|
10
10
|
return if user.nil?
|
|
11
11
|
|
|
12
|
-
incomplete_orders.order(created_at: :desc).find_by(store: store, user: user)
|
|
12
|
+
incomplete_orders.order(created_at: :desc).find_by(store: store, user: user, currency: params[:currency])
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
private
|
|
16
16
|
|
|
17
17
|
def incomplete_orders
|
|
18
|
-
Spree::Order.incomplete.includes(scope_includes)
|
|
18
|
+
Spree::Order.incomplete.not_canceled.includes(scope_includes)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def scope_includes
|
|
@@ -22,6 +22,7 @@ module Spree
|
|
|
22
22
|
products = by_ids(scope)
|
|
23
23
|
products = by_skus(products)
|
|
24
24
|
products = by_price(products)
|
|
25
|
+
products = by_currency(products)
|
|
25
26
|
products = by_taxons(products)
|
|
26
27
|
products = by_concat_taxons(products)
|
|
27
28
|
products = by_name(products)
|
|
@@ -51,6 +52,10 @@ module Spree
|
|
|
51
52
|
price.present?
|
|
52
53
|
end
|
|
53
54
|
|
|
55
|
+
def currency?
|
|
56
|
+
currency.present?
|
|
57
|
+
end
|
|
58
|
+
|
|
54
59
|
def taxons?
|
|
55
60
|
taxons.present?
|
|
56
61
|
end
|
|
@@ -94,7 +99,7 @@ module Spree
|
|
|
94
99
|
def by_price(products)
|
|
95
100
|
return products unless price?
|
|
96
101
|
|
|
97
|
-
products.joins(master: :
|
|
102
|
+
products.joins(master: :prices).
|
|
98
103
|
where(
|
|
99
104
|
spree_prices: {
|
|
100
105
|
amount: price.min..price.max,
|
|
@@ -103,6 +108,12 @@ module Spree
|
|
|
103
108
|
)
|
|
104
109
|
end
|
|
105
110
|
|
|
111
|
+
def by_currency(products)
|
|
112
|
+
return products unless currency?
|
|
113
|
+
|
|
114
|
+
products.joins(master: :prices).where(spree_prices: { currency: currency })
|
|
115
|
+
end
|
|
116
|
+
|
|
106
117
|
def by_taxons(products)
|
|
107
118
|
return products unless taxons?
|
|
108
119
|
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module BaseHelper
|
|
3
3
|
def available_countries
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
countries = if checkout_zone && checkout_zone.kind == 'country'
|
|
7
|
-
checkout_zone.country_list
|
|
8
|
-
else
|
|
9
|
-
Spree::Country.all
|
|
10
|
-
end
|
|
4
|
+
countries = current_store.countries_available_for_checkout
|
|
11
5
|
|
|
12
6
|
countries.collect do |country|
|
|
13
7
|
country.name = Spree.t(country.iso, scope: 'country_names', default: country.name)
|
|
@@ -57,8 +51,33 @@ module Spree
|
|
|
57
51
|
end
|
|
58
52
|
end
|
|
59
53
|
|
|
54
|
+
def object
|
|
55
|
+
instance_variable_get('@' + controller_name.singularize)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def og_meta_data
|
|
59
|
+
og_meta = {}
|
|
60
|
+
|
|
61
|
+
if object.is_a? Spree::Product
|
|
62
|
+
image = default_image_for_product_or_variant(object)
|
|
63
|
+
og_meta['og:image'] = main_app.url_for(image.attachment) if image&.attachment
|
|
64
|
+
|
|
65
|
+
og_meta['og:url'] = spree.url_for(object) if frontend_available? # url_for product needed
|
|
66
|
+
og_meta['og:type'] = object.class.name.demodulize.downcase
|
|
67
|
+
og_meta['og:title'] = object.name
|
|
68
|
+
og_meta['og:description'] = object.description
|
|
69
|
+
|
|
70
|
+
price = object.price_in(current_currency)
|
|
71
|
+
if price
|
|
72
|
+
og_meta['product:price:amount'] = price.amount
|
|
73
|
+
og_meta['product:price:currency'] = current_currency
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
og_meta
|
|
78
|
+
end
|
|
79
|
+
|
|
60
80
|
def meta_data
|
|
61
|
-
object = instance_variable_get('@' + controller_name.singularize)
|
|
62
81
|
meta = {}
|
|
63
82
|
|
|
64
83
|
if object.is_a? ApplicationRecord
|
|
@@ -82,16 +101,10 @@ module Spree
|
|
|
82
101
|
meta
|
|
83
102
|
end
|
|
84
103
|
|
|
85
|
-
def
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
image = default_image_for_product_or_variant(object)
|
|
90
|
-
image&.attachment.present? ? main_app.url_for(image.attachment) : asset_path(Spree::Config[:logo])
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def meta_image_data_tag
|
|
94
|
-
tag('meta', property: 'og:image', content: meta_image_url_path) if meta_image_url_path
|
|
104
|
+
def og_meta_data_tags
|
|
105
|
+
og_meta_data.map do |property, content|
|
|
106
|
+
tag('meta', property: property, content: content) unless property.nil? || content.nil?
|
|
107
|
+
end.join("\n")
|
|
95
108
|
end
|
|
96
109
|
|
|
97
110
|
def meta_data_tags
|
|
@@ -189,5 +202,12 @@ module Spree
|
|
|
189
202
|
style if style.in? Spree::Image.styles.with_indifferent_access
|
|
190
203
|
end
|
|
191
204
|
end
|
|
205
|
+
|
|
206
|
+
def meta_robots
|
|
207
|
+
return unless current_store.respond_to?(:seo_robots)
|
|
208
|
+
return if current_store.seo_robots.blank?
|
|
209
|
+
|
|
210
|
+
tag('meta', name: 'robots', content: current_store.seo_robots)
|
|
211
|
+
end
|
|
192
212
|
end
|
|
193
213
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module LocaleHelper
|
|
3
|
+
def all_locales_options
|
|
4
|
+
supported_locales_for_all_stores.map { |locale| locale_presentation(locale) }
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def available_locales_options
|
|
8
|
+
available_locales.map { |locale| locale_presentation(locale) }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def locale_presentation(locale)
|
|
12
|
+
if defined?(SpreeI18n)
|
|
13
|
+
[Spree.t('i18n.this_file_language', locale: locale), locale]
|
|
14
|
+
else
|
|
15
|
+
locale.to_s == 'en' ? ['English (US)', :en] : [locale, locale]
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -11,14 +11,19 @@ module Spree
|
|
|
11
11
|
order.name || Spree.t('customer')
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
def store_logo
|
|
15
|
+
@order&.store&.mailer_logo || @order&.store&.logo || current_store.mailer_logo || current_store.logo
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def default_logo
|
|
19
|
+
Spree::Config.mailer_logo || Spree::Config.logo
|
|
20
|
+
end
|
|
21
|
+
|
|
14
22
|
def logo_path
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
else
|
|
20
|
-
Spree::Config.mailer_logo || Spree::Config.logo
|
|
21
|
-
end
|
|
23
|
+
return default_logo unless store_logo.attached?
|
|
24
|
+
return main_app.url_for(store_logo.variant(resize: '244x104>')) if store_logo.variable?
|
|
25
|
+
|
|
26
|
+
return main_app.url_for(store_logo) if store_logo.image?
|
|
22
27
|
end
|
|
23
28
|
end
|
|
24
29
|
end
|
|
@@ -35,6 +35,11 @@ module Spree
|
|
|
35
35
|
variants_option_types_presenter(variants, product).default_variant || product.default_variant
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
def should_display_compare_at_price?(default_variant)
|
|
39
|
+
default_variant_price = default_variant.price_in(current_currency)
|
|
40
|
+
default_variant_price.compare_at_amount.present? && (default_variant_price.compare_at_amount > default_variant_price.amount)
|
|
41
|
+
end
|
|
42
|
+
|
|
38
43
|
def used_variants_options(variants, product)
|
|
39
44
|
variants_option_types_presenter(variants, product).options
|
|
40
45
|
end
|
|
@@ -110,23 +115,44 @@ module Spree
|
|
|
110
115
|
variants: @variants,
|
|
111
116
|
is_product_available_in_currency: is_product_available_in_currency,
|
|
112
117
|
current_currency: current_currency,
|
|
113
|
-
current_price_options: current_price_options
|
|
118
|
+
current_price_options: current_price_options,
|
|
119
|
+
current_store: current_store
|
|
114
120
|
).call.to_json
|
|
115
121
|
end
|
|
116
122
|
|
|
123
|
+
def product_relation_types
|
|
124
|
+
@product_relation_types ||= @product.respond_to?(:relation_types) ? @product.relation_types : []
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def product_relations_by_type(relation_type)
|
|
128
|
+
return [] if product_relation_types.none? || !@product.respond_to?(:relations)
|
|
129
|
+
|
|
130
|
+
product_ids = @product.relations.where(relation_type: relation_type).pluck(:related_to_id).uniq
|
|
131
|
+
|
|
132
|
+
return [] if product_ids.empty?
|
|
133
|
+
|
|
134
|
+
Spree::Product.
|
|
135
|
+
available.not_discontinued.distinct.
|
|
136
|
+
where(id: product_ids).
|
|
137
|
+
includes(
|
|
138
|
+
:tax_category,
|
|
139
|
+
master: [
|
|
140
|
+
:prices,
|
|
141
|
+
{ images: { attachment_attachment: :blob } },
|
|
142
|
+
]
|
|
143
|
+
).
|
|
144
|
+
limit(Spree::Config[:products_per_page])
|
|
145
|
+
end
|
|
146
|
+
|
|
117
147
|
def related_products
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
images: { attachment_attachment: :blob },
|
|
127
|
-
]
|
|
128
|
-
).
|
|
129
|
-
limit(Spree::Config[:products_per_page])
|
|
148
|
+
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
|
149
|
+
ProductsHelper#related_products is deprecated and will be removed in Spree 5.0.
|
|
150
|
+
Please use ProductsHelper#relations from now on.
|
|
151
|
+
DEPRECATION
|
|
152
|
+
|
|
153
|
+
return [] unless @product.respond_to?(:has_related_products?)
|
|
154
|
+
|
|
155
|
+
@related_products ||= relations_by_type('related_products')
|
|
130
156
|
end
|
|
131
157
|
|
|
132
158
|
def product_available_in_currency?
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
class BaseMailer < ActionMailer::Base
|
|
3
|
-
|
|
3
|
+
helper Spree::MailHelper
|
|
4
4
|
|
|
5
5
|
def current_store
|
|
6
6
|
@current_store ||= Spree::Store.current
|
|
@@ -8,7 +8,7 @@ module Spree
|
|
|
8
8
|
helper_method :current_store
|
|
9
9
|
|
|
10
10
|
def from_address
|
|
11
|
-
current_store.mail_from_address
|
|
11
|
+
@order&.store&.mail_from_address || current_store.mail_from_address
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def money(amount, currency = nil)
|
|
@@ -23,7 +23,7 @@ module Spree
|
|
|
23
23
|
helper_method :frontend_available?
|
|
24
24
|
|
|
25
25
|
def mail(headers = {}, &block)
|
|
26
|
-
ensure_default_action_mailer_url_host
|
|
26
|
+
ensure_default_action_mailer_url_host(headers[:store_url])
|
|
27
27
|
set_email_locale
|
|
28
28
|
super if Spree::Config[:send_core_emails]
|
|
29
29
|
end
|
|
@@ -33,9 +33,9 @@ module Spree
|
|
|
33
33
|
# this ensures that ActionMailer::Base.default_url_options[:host] is always set
|
|
34
34
|
# this is only a fail-safe solution if developer didn't set this in environment files
|
|
35
35
|
# http://guides.rubyonrails.org/action_mailer_basics.html#generating-urls-in-action-mailer-views
|
|
36
|
-
def ensure_default_action_mailer_url_host
|
|
36
|
+
def ensure_default_action_mailer_url_host(store_url = nil)
|
|
37
37
|
ActionMailer::Base.default_url_options ||= {}
|
|
38
|
-
ActionMailer::Base.default_url_options[:host] ||= current_store.url
|
|
38
|
+
ActionMailer::Base.default_url_options[:host] ||= store_url || current_store.url
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def set_email_locale
|
|
@@ -5,14 +5,14 @@ module Spree
|
|
|
5
5
|
current_store = @order.store
|
|
6
6
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
|
7
7
|
subject += "#{current_store.name} #{Spree.t('order_mailer.confirm_email.subject')} ##{@order.number}"
|
|
8
|
-
mail(to: @order.email, from: from_address, subject: subject)
|
|
8
|
+
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.url)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def store_owner_notification_email(order)
|
|
12
12
|
@order = order.respond_to?(:id) ? order : Spree::Order.find(order)
|
|
13
13
|
current_store = @order.store
|
|
14
14
|
subject = Spree.t('order_mailer.store_owner_notification_email.subject', store_name: current_store.name)
|
|
15
|
-
mail(to: current_store.new_order_notifications_email, from: from_address, subject: subject)
|
|
15
|
+
mail(to: current_store.new_order_notifications_email, from: from_address, subject: subject, store_url: current_store.url)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def cancel_email(order, resend = false)
|
|
@@ -20,7 +20,7 @@ module Spree
|
|
|
20
20
|
current_store = @order.store
|
|
21
21
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
|
22
22
|
subject += "#{current_store.name} #{Spree.t('order_mailer.cancel_email.subject')} ##{@order.number}"
|
|
23
|
-
mail(to: @order.email, from: from_address, subject: subject)
|
|
23
|
+
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.url)
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -6,7 +6,7 @@ module Spree
|
|
|
6
6
|
current_store = @reimbursement.store || Spree::Store.current
|
|
7
7
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
|
8
8
|
subject += "#{current_store.name} #{Spree.t('reimbursement_mailer.reimbursement_email.subject')} ##{@order.number}"
|
|
9
|
-
mail(to: @order.email, from: current_store.mail_from_address, subject: subject)
|
|
9
|
+
mail(to: @order.email, from: current_store.mail_from_address, subject: subject, store_url: current_store.url)
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -6,7 +6,7 @@ module Spree
|
|
|
6
6
|
current_store = @shipment.store
|
|
7
7
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
|
8
8
|
subject += "#{current_store.name} #{Spree.t('shipment_mailer.shipped_email.subject')} ##{@order.number}"
|
|
9
|
-
mail(to: @order.email, from: from_address, subject: subject)
|
|
9
|
+
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.url)
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
end
|