spree_emails 5.4.0.beta7 → 5.4.0.beta8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/helpers/spree/mail_helper.rb +1 -1
- data/app/mailers/spree/customer_mailer.rb +33 -0
- data/app/mailers/spree/newsletter_mailer.rb +1 -1
- data/app/mailers/spree/order_mailer.rb +5 -5
- data/app/mailers/spree/reimbursement_mailer.rb +1 -1
- data/app/mailers/spree/shipment_mailer.rb +1 -1
- data/app/subscribers/spree/customer_email_subscriber.rb +38 -0
- data/app/views/spree/customer_mailer/password_reset_email.html.erb +26 -0
- data/app/views/spree/customer_mailer/password_reset_email.text.erb +13 -0
- data/lib/spree/emails/engine.rb +2 -1
- metadata +10 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 67f60d55f4678131cc6aef5fa9c225b3e189d853a64637d833a1e3fb2dfa6200
|
|
4
|
+
data.tar.gz: 997cf645f50e346c7bf8e901e9cadfea738760dff15d3919e7e5d04a1c603344
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d98ec2dc83c4f9d7065680e57968b9dc98f83cee1bf077b1a0ec989f325e481ec3dc1e156585bd35d6eedb0f112d89bbfcaec1ab22beb193811c534d0db65f25
|
|
7
|
+
data.tar.gz: 79cdfd6c7dc8bb11c1d0305dab76a061e3b279212da428dfa7c45c330c312f622ea43e8dd8bc465255a5ccbb613f9a84f1b17fae6fdabaed7a532267d9a67190
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
class CustomerMailer < BaseMailer
|
|
5
|
+
def password_reset_email(user_id, store_id, reset_token, redirect_url = nil)
|
|
6
|
+
@user = Spree.user_class.find(user_id)
|
|
7
|
+
@current_store = Spree::Store.find(store_id)
|
|
8
|
+
@reset_token = reset_token
|
|
9
|
+
@reset_url = build_reset_url(redirect_url, reset_token)
|
|
10
|
+
|
|
11
|
+
subject = "#{@current_store.name} #{Spree.t('customer_mailer.password_reset_email.subject')}"
|
|
12
|
+
mail(
|
|
13
|
+
to: @user.email,
|
|
14
|
+
from: from_address,
|
|
15
|
+
subject: subject,
|
|
16
|
+
store_url: @current_store.storefront_url,
|
|
17
|
+
reply_to: reply_to_address
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def build_reset_url(redirect_url, token)
|
|
24
|
+
return nil if redirect_url.blank?
|
|
25
|
+
|
|
26
|
+
uri = URI.parse(redirect_url)
|
|
27
|
+
params = URI.decode_www_form(uri.query || '')
|
|
28
|
+
params << ['token', token]
|
|
29
|
+
uri.query = URI.encode_www_form(params)
|
|
30
|
+
uri.to_s
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -2,7 +2,7 @@ module Spree
|
|
|
2
2
|
class NewsletterMailer < BaseMailer
|
|
3
3
|
def email_confirmation(subscriber)
|
|
4
4
|
@subscriber = subscriber
|
|
5
|
-
@confirm_email_url = spree.verify_newsletter_subscribers_url(token: @subscriber.verification_token, host: Spree::Current.store.
|
|
5
|
+
@confirm_email_url = spree.verify_newsletter_subscribers_url(token: @subscriber.verification_token, host: Spree::Current.store.storefront_url)
|
|
6
6
|
mail(to: @subscriber.email, from: from_address, subject: Spree.t('newsletter_mailer.email_confirmation.subject'))
|
|
7
7
|
end
|
|
8
8
|
end
|
|
@@ -7,14 +7,14 @@ module Spree
|
|
|
7
7
|
current_store = @order.store
|
|
8
8
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
|
9
9
|
subject += "#{current_store.name} #{Spree.t('order_mailer.confirm_email.subject')} ##{@order.number}"
|
|
10
|
-
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.
|
|
10
|
+
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.storefront_url, reply_to: reply_to_address)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def store_owner_notification_email(order)
|
|
14
14
|
@order = order.respond_to?(:id) ? order : Spree::Order.find(order)
|
|
15
15
|
current_store = @order.store
|
|
16
16
|
subject = Spree.t('order_mailer.store_owner_notification_email.subject', store_name: current_store.name)
|
|
17
|
-
mail(to: current_store.new_order_notifications_email, from: from_address, subject: subject, store_url: current_store.
|
|
17
|
+
mail(to: current_store.new_order_notifications_email, from: from_address, subject: subject, store_url: current_store.storefront_url, reply_to: reply_to_address)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def cancel_email(order, resend = false)
|
|
@@ -22,16 +22,16 @@ module Spree
|
|
|
22
22
|
current_store = @order.store
|
|
23
23
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
|
24
24
|
subject += "#{current_store.name} #{Spree.t('order_mailer.cancel_email.subject')} ##{@order.number}"
|
|
25
|
-
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.
|
|
25
|
+
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.storefront_url, reply_to: reply_to_address)
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def payment_link_email(order_id)
|
|
29
29
|
@order = Spree::Order.incomplete.not_canceled.find(order_id)
|
|
30
30
|
@current_store = @order.store
|
|
31
|
-
@checkout_payment_url = spree.checkout_state_url(@order.token, :payment, host: @current_store.
|
|
31
|
+
@checkout_payment_url = spree.checkout_state_url(@order.token, :payment, host: @current_store.storefront_url)
|
|
32
32
|
|
|
33
33
|
mail(to: @order.email, from: from_address, subject: Spree.t('order_mailer.payment_link_email.subject', number: @order.number),
|
|
34
|
-
store_url: @current_store.
|
|
34
|
+
store_url: @current_store.storefront_url, reply_to: reply_to_address)
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
37
|
end
|
|
@@ -8,7 +8,7 @@ module Spree
|
|
|
8
8
|
current_store = @reimbursement.store || Spree::Store.default
|
|
9
9
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
|
10
10
|
subject += "#{current_store.name} #{Spree.t('reimbursement_mailer.reimbursement_email.subject')} ##{@order.number}"
|
|
11
|
-
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.
|
|
11
|
+
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.storefront_url, reply_to: reply_to_address)
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
end
|
|
@@ -9,7 +9,7 @@ module Spree
|
|
|
9
9
|
current_store = @shipment.store
|
|
10
10
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
|
11
11
|
subject += "#{current_store.name} #{Spree.t('shipment_mailer.shipped_email.subject')} ##{@order.number}"
|
|
12
|
-
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.
|
|
12
|
+
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.storefront_url, reply_to: reply_to_address)
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
15
|
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
class CustomerEmailSubscriber < Spree::Subscriber
|
|
5
|
+
subscribes_to 'customer.password_reset_requested'
|
|
6
|
+
|
|
7
|
+
def handle(event)
|
|
8
|
+
email = event.payload['email']
|
|
9
|
+
return if email.blank?
|
|
10
|
+
|
|
11
|
+
user = Spree.user_class.find_by(email: email)
|
|
12
|
+
return unless user
|
|
13
|
+
|
|
14
|
+
store = find_store(event)
|
|
15
|
+
return unless store
|
|
16
|
+
return unless store.prefers_send_consumer_transactional_emails?
|
|
17
|
+
|
|
18
|
+
reset_token = event.payload['reset_token']
|
|
19
|
+
redirect_url = event.payload['redirect_url']
|
|
20
|
+
|
|
21
|
+
CustomerMailer.password_reset_email(
|
|
22
|
+
user.id,
|
|
23
|
+
store.id,
|
|
24
|
+
reset_token,
|
|
25
|
+
redirect_url
|
|
26
|
+
).deliver_later
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def find_store(event)
|
|
32
|
+
store_id = event.store_id
|
|
33
|
+
return Spree::Store.find(store_id) if store_id.present?
|
|
34
|
+
|
|
35
|
+
Spree::Current.store || Spree::Store.default
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<h1>
|
|
2
|
+
<%= Spree.t('customer_mailer.password_reset_email.greeting', name: @user.first_name.presence || @user.email) %>
|
|
3
|
+
</h1>
|
|
4
|
+
<p>
|
|
5
|
+
<%= Spree.t('customer_mailer.password_reset_email.instructions') %>
|
|
6
|
+
</p>
|
|
7
|
+
<% if @reset_url %>
|
|
8
|
+
<table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
|
9
|
+
<tr>
|
|
10
|
+
<td align="center">
|
|
11
|
+
<a href="<%= @reset_url %>" class="button" target="_blank">
|
|
12
|
+
<%= Spree.t('customer_mailer.password_reset_email.action') %>
|
|
13
|
+
</a>
|
|
14
|
+
</td>
|
|
15
|
+
</tr>
|
|
16
|
+
</table>
|
|
17
|
+
<% end %>
|
|
18
|
+
<p>
|
|
19
|
+
<%= Spree.t('customer_mailer.password_reset_email.expiry_notice') %>
|
|
20
|
+
</p>
|
|
21
|
+
<p>
|
|
22
|
+
<%= Spree.t('customer_mailer.password_reset_email.ignore_notice') %>
|
|
23
|
+
</p>
|
|
24
|
+
<p>
|
|
25
|
+
<%= Spree.t('order_mailer.store_team', store_name: current_store.name) %>
|
|
26
|
+
</p>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<%= Spree.t('customer_mailer.password_reset_email.greeting', name: @user.first_name.presence || @user.email) %>
|
|
2
|
+
|
|
3
|
+
<%= Spree.t('customer_mailer.password_reset_email.instructions') %>
|
|
4
|
+
|
|
5
|
+
<% if @reset_url %>
|
|
6
|
+
<%= Spree.t('customer_mailer.password_reset_email.action') %>: <%= @reset_url %>
|
|
7
|
+
<% end %>
|
|
8
|
+
|
|
9
|
+
<%= Spree.t('customer_mailer.password_reset_email.expiry_notice') %>
|
|
10
|
+
|
|
11
|
+
<%= Spree.t('customer_mailer.password_reset_email.ignore_notice') %>
|
|
12
|
+
|
|
13
|
+
<%= Spree.t('order_mailer.store_team', store_name: current_store.name) %>
|
data/lib/spree/emails/engine.rb
CHANGED
|
@@ -15,7 +15,8 @@ module Spree
|
|
|
15
15
|
Spree::OrderEmailSubscriber,
|
|
16
16
|
Spree::ShipmentEmailSubscriber,
|
|
17
17
|
Spree::ReimbursementEmailSubscriber,
|
|
18
|
-
Spree::NewsletterSubscriberEmailSubscriber
|
|
18
|
+
Spree::NewsletterSubscriberEmailSubscriber,
|
|
19
|
+
Spree::CustomerEmailSubscriber
|
|
19
20
|
]
|
|
20
21
|
end
|
|
21
22
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_emails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.4.0.
|
|
4
|
+
version: 5.4.0.beta8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sean Schofield
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2026-03-
|
|
13
|
+
date: 2026-03-16 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: spree
|
|
@@ -18,14 +18,14 @@ dependencies:
|
|
|
18
18
|
requirements:
|
|
19
19
|
- - ">="
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: 5.4.0.
|
|
21
|
+
version: 5.4.0.beta8
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
25
|
requirements:
|
|
26
26
|
- - ">="
|
|
27
27
|
- !ruby/object:Gem::Version
|
|
28
|
-
version: 5.4.0.
|
|
28
|
+
version: 5.4.0.beta8
|
|
29
29
|
- !ruby/object:Gem::Dependency
|
|
30
30
|
name: email_spec
|
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -58,14 +58,18 @@ files:
|
|
|
58
58
|
- app/assets/images/noimage/noimage/small.png
|
|
59
59
|
- app/assets/images/noimage/small.png
|
|
60
60
|
- app/helpers/spree/mail_helper.rb
|
|
61
|
+
- app/mailers/spree/customer_mailer.rb
|
|
61
62
|
- app/mailers/spree/newsletter_mailer.rb
|
|
62
63
|
- app/mailers/spree/order_mailer.rb
|
|
63
64
|
- app/mailers/spree/reimbursement_mailer.rb
|
|
64
65
|
- app/mailers/spree/shipment_mailer.rb
|
|
66
|
+
- app/subscribers/spree/customer_email_subscriber.rb
|
|
65
67
|
- app/subscribers/spree/newsletter_subscriber_email_subscriber.rb
|
|
66
68
|
- app/subscribers/spree/order_email_subscriber.rb
|
|
67
69
|
- app/subscribers/spree/reimbursement_email_subscriber.rb
|
|
68
70
|
- app/subscribers/spree/shipment_email_subscriber.rb
|
|
71
|
+
- app/views/spree/customer_mailer/password_reset_email.html.erb
|
|
72
|
+
- app/views/spree/customer_mailer/password_reset_email.text.erb
|
|
69
73
|
- app/views/spree/newsletter_mailer/email_confirmation.html.erb
|
|
70
74
|
- app/views/spree/newsletter_mailer/email_confirmation.text.erb
|
|
71
75
|
- app/views/spree/order_mailer/cancel_email.html.erb
|
|
@@ -99,9 +103,9 @@ licenses:
|
|
|
99
103
|
- BSD-3-Clause
|
|
100
104
|
metadata:
|
|
101
105
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
|
102
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.
|
|
106
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.beta8
|
|
103
107
|
documentation_uri: https://docs.spreecommerce.org/
|
|
104
|
-
source_code_uri: https://github.com/spree/spree/tree/v5.4.0.
|
|
108
|
+
source_code_uri: https://github.com/spree/spree/tree/v5.4.0.beta8
|
|
105
109
|
post_install_message:
|
|
106
110
|
rdoc_options: []
|
|
107
111
|
require_paths:
|