spree_emails 4.3.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +5 -0
  3. data/LICENSE +26 -0
  4. data/Rakefile +15 -0
  5. data/app/assets/config/spree_emails_manifest.js +1 -0
  6. data/app/assets/images/logo/spree_50.png +0 -0
  7. data/app/assets/images/noimage/mini.png +0 -0
  8. data/app/assets/images/noimage/noimage/large.png +0 -0
  9. data/app/assets/images/noimage/noimage/mini.png +0 -0
  10. data/app/assets/images/noimage/noimage/product.png +0 -0
  11. data/app/assets/images/noimage/noimage/small.png +0 -0
  12. data/app/assets/images/noimage/small.png +0 -0
  13. data/app/helpers/spree/mail_helper.rb +34 -0
  14. data/app/mailers/spree/base_mailer.rb +46 -0
  15. data/app/mailers/spree/order_mailer.rb +26 -0
  16. data/app/mailers/spree/reimbursement_mailer.rb +12 -0
  17. data/app/mailers/spree/shipment_mailer.rb +12 -0
  18. data/app/mailers/spree/test_mailer.rb +8 -0
  19. data/app/models/spree/emails/order_decorator.rb +28 -0
  20. data/app/models/spree/emails/reimbursement_decorator.rb +11 -0
  21. data/app/models/spree/emails/shipment_handler_decorator.rb +13 -0
  22. data/app/views/layouts/spree/base_mailer.html.erb +46 -0
  23. data/app/views/spree/order_mailer/cancel_email.html.erb +24 -0
  24. data/app/views/spree/order_mailer/cancel_email.text.erb +12 -0
  25. data/app/views/spree/order_mailer/confirm_email.html.erb +23 -0
  26. data/app/views/spree/order_mailer/confirm_email.text.erb +12 -0
  27. data/app/views/spree/order_mailer/store_owner_notification_email.html.erb +23 -0
  28. data/app/views/spree/order_mailer/store_owner_notification_email.text.erb +12 -0
  29. data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +48 -0
  30. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +24 -0
  31. data/app/views/spree/shared/_base_mailer_footer.html.erb +12 -0
  32. data/app/views/spree/shared/_base_mailer_header.html.erb +8 -0
  33. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +456 -0
  34. data/app/views/spree/shared/_mailer_line_item.html.erb +12 -0
  35. data/app/views/spree/shared/_purchased_items_table.html.erb +64 -0
  36. data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +13 -0
  37. data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +19 -0
  38. data/app/views/spree/shared/purchased_items_table/_subtotal.html.erb +13 -0
  39. data/app/views/spree/shared/purchased_items_table/_total.html.erb +13 -0
  40. data/app/views/spree/shipment_mailer/shipped_email.html.erb +36 -0
  41. data/app/views/spree/shipment_mailer/shipped_email.text.erb +17 -0
  42. data/app/views/spree/test_mailer/test_email.html.erb +40 -0
  43. data/app/views/spree/test_mailer/test_email.text.erb +4 -0
  44. data/config/initializers/assets.rb +1 -0
  45. data/lib/generators/spree/emails/install/install_generator.rb +27 -0
  46. data/lib/generators/spree/emails/install/templates/mailers/previews/order_preview.rb +13 -0
  47. data/lib/generators/spree/emails/install/templates/mailers/previews/reimbursement_preview.rb +5 -0
  48. data/lib/generators/spree/emails/install/templates/mailers/previews/shipment_preview.rb +5 -0
  49. data/lib/generators/spree/emails/install/templates/mailers/previews/user_preview.rb +11 -0
  50. data/lib/spree/emails.rb +12 -0
  51. data/lib/spree/emails/engine.rb +18 -0
  52. data/lib/spree_emails.rb +1 -0
  53. data/lib/tasks/email.rake +10 -0
  54. data/script/rails +9 -0
  55. data/spree_emails.gemspec +34 -0
  56. metadata +158 -0
@@ -0,0 +1,12 @@
1
+ <tr>
2
+ <td class="six sub-columns">
3
+ <strong>
4
+ <%= link_to raw(line_item.variant.product.name), spree_storefront_resource_url(line_item.variant.product) %>
5
+ </strong>
6
+ <%= raw(line_item.variant.options_text) -%>
7
+ (<%= line_item.variant.sku %>)
8
+ </td>
9
+ <td class="six sub-columns last right">
10
+ <%= line_item.quantity %> x <%= line_item.single_money %> = <%= line_item.display_amount %>
11
+ </td>
12
+ </tr>
@@ -0,0 +1,64 @@
1
+ <table class="purchase_content">
2
+ <%= render collection: line_items, partial: 'spree/shared/purchased_items_table/line_item', as: :line_item %>
3
+ <%= render 'spree/shared/purchased_items_table/subtotal', order: order %>
4
+ <% if order.line_item_adjustments.exists? %>
5
+ <% if order.all_adjustments.promotion.eligible.exists? %>
6
+ <% order.all_adjustments.promotion.eligible.group_by(&:label).each do |label, adjustments| %>
7
+ <tr>
8
+ <td></td>
9
+ <td>
10
+ <p class="f-fallback purchase_total purchase_total--label">
11
+ <%= Spree.t(:promotion) %>:
12
+ </p>
13
+ <p class="f-fallback purchase_total--name purchase_total--label">
14
+ <%= label %>
15
+ </p>
16
+ </td>
17
+ <td class="purchase_total-col">
18
+ <p class="f-fallback purchase_total">
19
+ <%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
20
+ </p>
21
+ </td>
22
+ </tr>
23
+ <% end %>
24
+ <% end %>
25
+ <% end %>
26
+ <% order.shipments.group_by { |s| s.selected_shipping_rate&.name }.each do |name, shipments| %>
27
+ <tr>
28
+ <td></td>
29
+ <td>
30
+ <p class="f-fallback purchase_total purchase_total--label">
31
+ <%= Spree.t(:shipping) %>:
32
+ </p>
33
+ <p class="f-fallback purchase_total--name purchase_total--label">
34
+ <%= name %>
35
+ </p>
36
+ </td>
37
+ <td class="purchase_total-col">
38
+ <p class="f-fallback purchase_total">
39
+ <%= Spree::Money.new(shipments.sum(&:discounted_cost), currency: order.currency) %>
40
+ </p>
41
+ </td>
42
+ </tr>
43
+ <% end %>
44
+ <% if order.additional_tax_total != 0 %>
45
+ <tr>
46
+ <td></td>
47
+ <td>
48
+ <p class="f-fallback purchase_total purchase_total--label">
49
+ <%= Spree.t(:tax) %>:
50
+ </p>
51
+ </td>
52
+ <td class="purchase_total-col">
53
+ <p class="f-fallback purchase_total">
54
+ <%= order.display_additional_tax_total.to_html %>
55
+ </p>
56
+ </td>
57
+ </tr>
58
+ <% end %>
59
+ <% order.adjustments.eligible.each do |adjustment| %>
60
+ <% next if (adjustment.source_type == 'Spree::TaxRate') || (adjustment.amount == 0) %>
61
+ <%= render 'spree/shared/purchased_items_table/adjustment', adjustment: adjustment, order: order %>
62
+ <% end %>
63
+ <%= render 'spree/shared/purchased_items_table/total', order: order %>
64
+ </table>
@@ -0,0 +1,13 @@
1
+ <tr>
2
+ <td></td>
3
+ <td>
4
+ <p class="f-fallback purchase_total purchase_total--label">
5
+ <%= raw(adjustment.label) %>:
6
+ </p>
7
+ </td>
8
+ <td class="purchase_total-col">
9
+ <p class="f-fallback purchase_total">
10
+ <%= Spree::Money.new(adjustment.amount, currency: order.currency) %>
11
+ </p>
12
+ </td>
13
+ </tr>
@@ -0,0 +1,19 @@
1
+ <tr>
2
+ <td class="purchase_image">
3
+ <%= link_to(image_tag(variant_image_url(line_item.variant)), spree_storefront_resource_url(line_item.product)) %>
4
+ </td>
5
+ <td class="purchase_item">
6
+ <strong>
7
+ <span class="f-fallback">
8
+ <%= link_to raw(line_item.name), spree_storefront_resource_url(line_item.product) %>
9
+ </span>
10
+ </strong>
11
+ <p class="purchase_item--additional"><%= raw(line_item.variant.options_text) -%></p>
12
+ </td>
13
+ <td class="align-right" width="30%">
14
+ <span class="f-fallback purchase_item_price">
15
+ <%= line_item.quantity %> x <%= line_item.single_money %><br>
16
+ <%= line_item.display_amount %>
17
+ </span>
18
+ </td>
19
+ </tr>
@@ -0,0 +1,13 @@
1
+ <tr>
2
+ <td class="purchase_footer" valign="middle"></td>
3
+ <td class="purchase_footer" valign="middle">
4
+ <p class="f-fallback purchase_total purchase_total--label">
5
+ <%= Spree.t('order_mailer.subtotal') %>
6
+ </p>
7
+ </td>
8
+ <td class="purchase_footer" valign="middle">
9
+ <p class="f-fallback purchase_total">
10
+ <%= order.display_item_total %>
11
+ </p>
12
+ </td>
13
+ </tr>
@@ -0,0 +1,13 @@
1
+ <tr>
2
+ <td></td>
3
+ <td>
4
+ <p class="f-fallback purchase_total purchase_total--label">
5
+ <strong><%= Spree.t('order_mailer.total') %></strong>
6
+ </p>
7
+ </td>
8
+ <td>
9
+ <p class="f-fallback purchase_total">
10
+ <strong><%= order.display_total %></strong>
11
+ </p>
12
+ </td>
13
+ </tr>
@@ -0,0 +1,36 @@
1
+ <h1>
2
+ <%= Spree.t('shipment_mailer.shipped_email.dear_customer', name: name_for(@shipment.order)) %>
3
+ </h1>
4
+ <p>
5
+ <%= Spree.t('shipment_mailer.shipped_email.instructions', number: @shipment.order.number) %>
6
+ </p>
7
+ <table class="purchase" role="presentation">
8
+ <tr>
9
+ <td>
10
+ <h3><%= Spree.t('shipment_mailer.shipped_email.shipment_summary') %></h3>
11
+ </td>
12
+ </tr>
13
+ <tr>
14
+ <td colspan="2">
15
+ <%= render 'spree/shared/purchased_items_table', line_items: @shipment.manifest.map(&:line_item), order: @shipment.order %>
16
+ </td>
17
+ </tr>
18
+ </table>
19
+ <p>
20
+ <%= Spree.t('shipment_mailer.shipped_email.shipping_method', shipping_method: @shipment.shipping_method.name) %>
21
+ </p>
22
+ <% if @shipment.tracking %>
23
+ <p>
24
+ <%= Spree.t('shipment_mailer.shipped_email.track_information', tracking: @shipment.tracking) %>
25
+ </p>
26
+ <% end %>
27
+ <% if @shipment.tracking_url %>
28
+ <p>
29
+ <%= Spree.t('shipment_mailer.shipped_email.track_link', url: link_to(@shipment.tracking_url, @shipment.tracking_url)).html_safe %>
30
+ </p>
31
+ <% end %>
32
+ <p>
33
+ <%= Spree.t('shipment_mailer.shipped_email.thanks') %>
34
+ <br />
35
+ <%= Spree.t('shipment_mailer.shipped_email.store_team', store_name: current_store.name) %>
36
+ </p>
@@ -0,0 +1,17 @@
1
+ <%= Spree.t('shipment_mailer.shipped_email.dear_customer', name: name_for(@shipment.order)) %>
2
+
3
+ <%= Spree.t('shipment_mailer.shipped_email.instructions', number: @shipment.order.number) %>
4
+
5
+ ============================================================
6
+ <%= Spree.t('shipment_mailer.shipped_email.shipment_summary') %>
7
+ ============================================================
8
+ <% @shipment.manifest.each do |item| %>
9
+ <%= item.variant.sku %> <%= item.variant.product.name %> <%= item.variant.options_text %>
10
+ <% end %>
11
+ ============================================================
12
+
13
+ <%= Spree.t('shipment_mailer.shipped_email.track_information', tracking: @shipment.tracking) if @shipment.tracking %>
14
+ <%= Spree.t('shipment_mailer.shipped_email.track_link', url: @shipment.tracking_url) if @shipment.tracking_url %>
15
+
16
+ <%= Spree.t('shipment_mailer.shipped_email.thanks') %>
17
+ <%= Spree.t('shipment_mailer.shipped_email.store_team', store_name: current_store.name) %>
@@ -0,0 +1,40 @@
1
+ <table>
2
+ <tr>
3
+ <td>
4
+
5
+ <center>
6
+ <h1 class="center">
7
+ <%= Spree.t('test_mailer.test_email.greeting') %>
8
+ </h1>
9
+ </center>
10
+
11
+ </td>
12
+ <td class="expander"></td>
13
+ </tr>
14
+ </table>
15
+
16
+ <table>
17
+ <tr>
18
+ <td>
19
+
20
+ <p class="lede">
21
+ <%= Spree.t('test_mailer.test_email.message') %>
22
+ </p>
23
+
24
+ <p>
25
+ Please remember to configure all of the emails that Spree has provided to your needs.
26
+ Spree comes shipped with <a href="http://zurb.com/ink/" target="_blank"> Ink </a>
27
+ prepackaged, but you can use your own version. Ink is not placed in the asset pipeline.
28
+ </p>
29
+
30
+ <p>
31
+ Also take note that Gmail does not support <code>&lt;style&gt;</code> tags.
32
+ Therefore, you will need a gem that will be able to remove your <code>&lt;style&gt;</code>
33
+ tags and place them inline. Gmail only supports inline styles. We use
34
+ <a href="https://github.com/fphilipe/premailer-rails" target="_blank">Premailer for Rails</a> by default.
35
+ </p>
36
+
37
+ </td>
38
+ <td class="expander"></td>
39
+ </tr>
40
+ </table>
@@ -0,0 +1,4 @@
1
+ <%= Spree.t('test_mailer.test_email.greeting') %>
2
+ ================
3
+
4
+ <%= Spree.t('test_mailer.test_email.message') %>
@@ -0,0 +1 @@
1
+ Rails.application.config.assets.precompile << 'spree_emails_manifest.js'
@@ -0,0 +1,27 @@
1
+ require 'rails/generators'
2
+ require 'spree/core'
3
+
4
+ module Spree
5
+ module Emails
6
+ module Generators
7
+ class InstallGenerator < Rails::Generators::Base
8
+ desc 'Installs mailers previews for Spree transactional emails'
9
+
10
+ def self.source_paths
11
+ [
12
+ File.expand_path('templates', __dir__)
13
+ ]
14
+ end
15
+
16
+ def copy_mailers_previews
17
+ preview_path = Rails.application&.config&.action_mailer&.preview_path.presence || 'test/mailers/previews'
18
+
19
+ template 'mailers/previews/order_preview.rb', "#{preview_path}/order_preview.rb"
20
+ template 'mailers/previews/shipment_preview.rb', "#{preview_path}/shipment_preview.rb"
21
+ template 'mailers/previews/reimbursement_preview.rb', "#{preview_path}/reimbursement_preview.rb"
22
+ template 'mailers/previews/user_preview.rb', "#{preview_path}/user_preview.rb"
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,13 @@
1
+ class OrderPreview < ActionMailer::Preview
2
+ def confirm_email
3
+ Spree::OrderMailer.confirm_email(Spree::Order.complete.first)
4
+ end
5
+
6
+ def cancel_email
7
+ Spree::OrderMailer.cancel_email(Spree::Order.complete.first)
8
+ end
9
+
10
+ def store_owner_notification_email
11
+ Spree::OrderMailer.store_owner_notification_email(Spree::Order.complete.first)
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class ReimbursementPreview < ActionMailer::Preview
2
+ def reimbursement_email
3
+ Spree::ReimbursementMailer.reimbursement_email(Spree::Reimbursement.first)
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class ShipmentPreview < ActionMailer::Preview
2
+ def shipped_email
3
+ Spree::ShipmentMailer.shipped_email(Spree::Shipment.shipped.first)
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ class UserPreview < ActionMailer::Preview
2
+ def reset_password_instructions
3
+ Spree::UserMailer.reset_password_instructions(Spree.user_class.first, 'your_token', { current_store_id: Spree::Store.default.id })
4
+ end
5
+
6
+ if Spree::Auth::Config[:confirmable]
7
+ def confirmation_instructions
8
+ Spree::UserMailer.confirmation_instructions(Spree.user_class.first, 'your_token')
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require 'mail'
2
+ require 'action_mailer/railtie'
3
+ require 'action_view/railtie'
4
+ require 'sprockets/railtie'
5
+ require 'spree/core'
6
+
7
+ module Spree
8
+ module Emails
9
+ end
10
+ end
11
+
12
+ require 'spree/emails/engine'
@@ -0,0 +1,18 @@
1
+ require 'rails/engine'
2
+
3
+ module Spree
4
+ module Emails
5
+ class Engine < Rails::Engine
6
+ isolate_namespace Spree
7
+ engine_name 'spree_emails'
8
+
9
+ def self.activate
10
+ Dir.glob(File.join(File.dirname(__FILE__), '../../../app/**/*_decorator*.rb')).sort.each do |c|
11
+ Rails.configuration.cache_classes ? require(c) : load(c)
12
+ end
13
+ end
14
+
15
+ config.to_prepare &method(:activate).to_proc
16
+ end
17
+ end
18
+ end
@@ -0,0 +1 @@
1
+ require 'spree/emails'
@@ -0,0 +1,10 @@
1
+ namespace :email do
2
+ desc 'Sends test email to specified address - Example: EMAIL=spree@example.com bundle exec rake email:test'
3
+ task test: :environment do
4
+ unless ENV['EMAIL'].present?
5
+ raise ArgumentError, 'Must pass EMAIL environment variable. ' \
6
+ 'Example: EMAIL=spree@example.com bundle exec rake email:test'
7
+ end
8
+ Spree::TestMailer.test_email(ENV['EMAIL']).deliver_now
9
+ end
10
+ end
data/script/rails ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
5
+ ENGINE_PATH = File.expand_path('../../lib/spree/emails/engine', __FILE__)
6
+
7
+ require 'rails/all'
8
+ require 'rails/engine/commands'
9
+
@@ -0,0 +1,34 @@
1
+ # encoding: UTF-8
2
+
3
+ require_relative '../core/lib/spree/core/version.rb'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.platform = Gem::Platform::RUBY
7
+ s.name = 'spree_emails'
8
+ s.version = Spree.version
9
+ s.authors = ['Sean Schofield', 'Spark Solutions']
10
+ s.email = 'hello@spreecommerce.org'
11
+ s.summary = 'Transactional emails for Spree eCommerce platform'
12
+ s.description = 'Optional transactional emails for Spree such as Order placed or Shipment notification emails'
13
+ s.homepage = 'https://spreecommerce.org'
14
+ s.license = 'BSD-3-Clause'
15
+
16
+ s.metadata = {
17
+ "bug_tracker_uri" => "https://github.com/spree/spree/issues",
18
+ "changelog_uri" => "https://github.com/spree/spree/releases/tag/v#{s.version}",
19
+ "documentation_uri" => "https://guides.spreecommerce.org/",
20
+ "source_code_uri" => "https://github.com/spree/spree/tree/v#{s.version}",
21
+ }
22
+
23
+ s.required_ruby_version = '>= 2.5.0'
24
+ s.required_rubygems_version = '>= 1.8.23'
25
+
26
+ s.files = `git ls-files`.split("\n").reject { |f| f.match(/^spec/) && !f.match(/^spec\/fixtures/) }
27
+ s.require_path = 'lib'
28
+
29
+ s.add_dependency 'spree_core', ">= #{s.version}"
30
+ s.add_dependency 'actionmailer'
31
+ s.add_dependency 'sprockets', '>= 4.0'
32
+
33
+ s.add_development_dependency 'email_spec', '~> 2.2'
34
+ end
metadata ADDED
@@ -0,0 +1,158 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_emails
3
+ version: !ruby/object:Gem::Version
4
+ version: 4.3.0.rc1
5
+ platform: ruby
6
+ authors:
7
+ - Sean Schofield
8
+ - Spark Solutions
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2021-08-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: spree_core
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: 4.3.0.rc1
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: 4.3.0.rc1
28
+ - !ruby/object:Gem::Dependency
29
+ name: actionmailer
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: sprockets
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '4.0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '4.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: email_spec
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.2'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '2.2'
70
+ description: Optional transactional emails for Spree such as Order placed or Shipment
71
+ notification emails
72
+ email: hello@spreecommerce.org
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - Gemfile
78
+ - LICENSE
79
+ - Rakefile
80
+ - app/assets/config/spree_emails_manifest.js
81
+ - app/assets/images/logo/spree_50.png
82
+ - app/assets/images/noimage/mini.png
83
+ - app/assets/images/noimage/noimage/large.png
84
+ - app/assets/images/noimage/noimage/mini.png
85
+ - app/assets/images/noimage/noimage/product.png
86
+ - app/assets/images/noimage/noimage/small.png
87
+ - app/assets/images/noimage/small.png
88
+ - app/helpers/spree/mail_helper.rb
89
+ - app/mailers/spree/base_mailer.rb
90
+ - app/mailers/spree/order_mailer.rb
91
+ - app/mailers/spree/reimbursement_mailer.rb
92
+ - app/mailers/spree/shipment_mailer.rb
93
+ - app/mailers/spree/test_mailer.rb
94
+ - app/models/spree/emails/order_decorator.rb
95
+ - app/models/spree/emails/reimbursement_decorator.rb
96
+ - app/models/spree/emails/shipment_handler_decorator.rb
97
+ - app/views/layouts/spree/base_mailer.html.erb
98
+ - app/views/spree/order_mailer/cancel_email.html.erb
99
+ - app/views/spree/order_mailer/cancel_email.text.erb
100
+ - app/views/spree/order_mailer/confirm_email.html.erb
101
+ - app/views/spree/order_mailer/confirm_email.text.erb
102
+ - app/views/spree/order_mailer/store_owner_notification_email.html.erb
103
+ - app/views/spree/order_mailer/store_owner_notification_email.text.erb
104
+ - app/views/spree/reimbursement_mailer/reimbursement_email.html.erb
105
+ - app/views/spree/reimbursement_mailer/reimbursement_email.text.erb
106
+ - app/views/spree/shared/_base_mailer_footer.html.erb
107
+ - app/views/spree/shared/_base_mailer_header.html.erb
108
+ - app/views/spree/shared/_base_mailer_stylesheets.html.erb
109
+ - app/views/spree/shared/_mailer_line_item.html.erb
110
+ - app/views/spree/shared/_purchased_items_table.html.erb
111
+ - app/views/spree/shared/purchased_items_table/_adjustment.html.erb
112
+ - app/views/spree/shared/purchased_items_table/_line_item.html.erb
113
+ - app/views/spree/shared/purchased_items_table/_subtotal.html.erb
114
+ - app/views/spree/shared/purchased_items_table/_total.html.erb
115
+ - app/views/spree/shipment_mailer/shipped_email.html.erb
116
+ - app/views/spree/shipment_mailer/shipped_email.text.erb
117
+ - app/views/spree/test_mailer/test_email.html.erb
118
+ - app/views/spree/test_mailer/test_email.text.erb
119
+ - config/initializers/assets.rb
120
+ - lib/generators/spree/emails/install/install_generator.rb
121
+ - lib/generators/spree/emails/install/templates/mailers/previews/order_preview.rb
122
+ - lib/generators/spree/emails/install/templates/mailers/previews/reimbursement_preview.rb
123
+ - lib/generators/spree/emails/install/templates/mailers/previews/shipment_preview.rb
124
+ - lib/generators/spree/emails/install/templates/mailers/previews/user_preview.rb
125
+ - lib/spree/emails.rb
126
+ - lib/spree/emails/engine.rb
127
+ - lib/spree_emails.rb
128
+ - lib/tasks/email.rake
129
+ - script/rails
130
+ - spree_emails.gemspec
131
+ homepage: https://spreecommerce.org
132
+ licenses:
133
+ - BSD-3-Clause
134
+ metadata:
135
+ bug_tracker_uri: https://github.com/spree/spree/issues
136
+ changelog_uri: https://github.com/spree/spree/releases/tag/v4.3.0.rc1
137
+ documentation_uri: https://guides.spreecommerce.org/
138
+ source_code_uri: https://github.com/spree/spree/tree/v4.3.0.rc1
139
+ post_install_message:
140
+ rdoc_options: []
141
+ require_paths:
142
+ - lib
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: 2.5.0
148
+ required_rubygems_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 1.8.23
153
+ requirements: []
154
+ rubygems_version: 3.2.3
155
+ signing_key:
156
+ specification_version: 4
157
+ summary: Transactional emails for Spree eCommerce platform
158
+ test_files: []