spree_core 4.1.15 → 4.2.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/spree/base_controller.rb +1 -0
- data/app/helpers/spree/base_helper.rb +23 -2
- data/app/helpers/spree/mail_helper.rb +24 -0
- data/app/mailers/spree/base_mailer.rb +17 -3
- data/app/mailers/spree/order_mailer.rb +11 -2
- data/app/mailers/spree/reimbursement_mailer.rb +4 -2
- data/app/mailers/spree/shipment_mailer.rb +4 -2
- data/app/models/concerns/spree/default_price.rb +2 -1
- data/app/models/concerns/spree/user_methods.rb +11 -5
- data/app/models/spree/app_configuration.rb +5 -0
- data/app/models/spree/app_dependencies.rb +1 -7
- data/app/models/spree/line_item.rb +11 -3
- data/app/models/spree/option_type.rb +5 -1
- data/app/models/spree/order/address_book.rb +20 -7
- data/app/models/spree/order/store_credit.rb +0 -8
- data/app/models/spree/order.rb +28 -12
- data/app/models/spree/price.rb +26 -2
- data/app/models/spree/product.rb +17 -7
- data/app/models/spree/promotion_handler/coupon.rb +3 -2
- data/app/models/spree/reimbursement.rb +2 -0
- data/app/models/spree/shipment.rb +2 -5
- data/app/models/spree/stock_location.rb +13 -2
- data/app/models/spree/store.rb +19 -2
- data/app/models/spree/variant.rb +15 -2
- data/app/presenters/spree/variant_presenter.rb +7 -0
- data/app/presenters/spree/variants/option_types_presenter.rb +1 -0
- data/app/services/spree/checkout/update.rb +2 -13
- data/app/views/layouts/spree/base_mailer.html.erb +45 -40
- data/app/views/spree/order_mailer/cancel_email.html.erb +19 -25
- data/app/views/spree/order_mailer/cancel_email.text.erb +24 -2
- data/app/views/spree/order_mailer/confirm_email.html.erb +18 -65
- data/app/views/spree/order_mailer/confirm_email.text.erb +2 -1
- data/app/views/spree/order_mailer/store_owner_notification_email.html.erb +23 -0
- data/app/views/spree/order_mailer/store_owner_notification_email.text.erb +38 -0
- data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +53 -58
- data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +3 -1
- data/app/views/spree/shared/_base_mailer_footer.html.erb +6 -14
- data/app/views/spree/shared/_base_mailer_header.html.erb +12 -32
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +293 -625
- data/app/views/spree/shared/_purchased_items_table.html.erb +60 -0
- data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +13 -0
- data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +27 -0
- data/app/views/spree/shared/purchased_items_table/_subtotal.html.erb +13 -0
- data/app/views/spree/shared/purchased_items_table/_total.html.erb +13 -0
- data/app/views/spree/shipment_mailer/shipped_email.html.erb +31 -36
- data/app/views/spree/shipment_mailer/shipped_email.text.erb +2 -1
- data/config/initializers/assets.rb +1 -0
- data/config/locales/en.yml +113 -13
- data/db/default/spree/stores.rb +11 -10
- data/db/migrate/20140309033438_create_store_from_preferences.rb +1 -1
- data/db/migrate/20191016134113_add_deafult_value_for_store_default_currency.rb +1 -1
- data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +10 -0
- data/db/migrate/20200102141311_add_social_to_spree_stores.rb +4 -1
- data/db/migrate/20200212144523_add_hide_from_nav_to_taxons.rb +1 -1
- data/db/migrate/20200308210757_add_default_locale_to_spree_store.rb +7 -0
- data/db/migrate/20200310145140_add_customer_support_email_to_spree_store.rb +7 -0
- data/db/migrate/20200421095017_add_compare_at_amount_to_spree_prices.rb +7 -0
- data/db/migrate/20200423123001_add_default_country_id_to_spree_store.rb +9 -0
- data/db/migrate/20200430072209_add_footer_fields_to_spree_stores.rb +8 -0
- data/db/migrate/20200513154939_add_show_property_to_spree_product_properties.rb +5 -0
- data/db/migrate/20200607161221_add_store_owner_order_notification_delivered_to_spree_orders.rb +7 -0
- data/db/migrate/20200607161222_add_new_order_notifications_email_to_spree_stores.rb +7 -0
- data/db/migrate/20200826075557_add_unique_index_on_taxon_id_and_product_id_to_spree_products_taxons.rb +5 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +1 -0
- data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -2
- data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -2
- data/lib/generators/spree/mailers_preview/mailers_preview_generator.rb +23 -0
- data/lib/generators/spree/mailers_preview/templates/mailers/previews/order_preview.rb +13 -0
- data/lib/generators/spree/mailers_preview/templates/mailers/previews/reimbursement_preview.rb +5 -0
- data/lib/generators/spree/mailers_preview/templates/mailers/previews/shipment_preview.rb +5 -0
- data/lib/generators/spree/mailers_preview/templates/mailers/previews/user_preview.rb +11 -0
- data/lib/spree/core/controller_helpers/common.rb +1 -0
- data/lib/spree/core/controller_helpers/currency_helpers.rb +15 -0
- data/lib/spree/core/controller_helpers/store.rb +12 -1
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +1 -0
- data/lib/spree/permitted_attributes.rb +7 -4
- data/lib/spree/testing_support/authorization_helpers.rb +7 -4
- data/lib/spree/testing_support/capybara_ext.rb +0 -7
- data/lib/spree/testing_support/factories/store_factory.rb +11 -8
- data/spree_core.gemspec +6 -6
- data/vendor/assets/javascripts/cleave.js +1669 -0
- metadata +44 -32
- data/app/finders/spree/addresses/find.rb +0 -17
- data/app/models/spree/order_contents.rb +0 -31
- data/app/services/spree/account/addresses/base.rb +0 -39
- data/app/services/spree/account/addresses/create.rb +0 -18
- data/app/services/spree/account/addresses/update.rb +0 -18
- data/app/views/spree/order_mailer/_adjustment.html.erb +0 -8
- data/app/views/spree/order_mailer/_subtotal.html.erb +0 -8
- data/app/views/spree/order_mailer/_total.html.erb +0 -8
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'spree/core'
|
3
|
+
|
4
|
+
module Spree
|
5
|
+
class MailersPreviewGenerator < Rails::Generators::Base
|
6
|
+
desc 'Generates mailers preview for development proposes'
|
7
|
+
|
8
|
+
def self.source_paths
|
9
|
+
[
|
10
|
+
File.expand_path('templates', __dir__)
|
11
|
+
]
|
12
|
+
end
|
13
|
+
|
14
|
+
def copy_mailers_previews
|
15
|
+
preview_path = Rails.application.config.action_mailer.preview_path || 'test/mailers/previews'
|
16
|
+
|
17
|
+
template 'mailers/previews/order_preview.rb', "#{preview_path}/order_preview.rb"
|
18
|
+
template 'mailers/previews/shipment_preview.rb', "#{preview_path}/shipment_preview.rb"
|
19
|
+
template 'mailers/previews/reimbursement_preview.rb', "#{preview_path}/reimbursement_preview.rb"
|
20
|
+
template 'mailers/previews/user_preview.rb', "#{preview_path}/user_preview.rb"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
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,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
|
@@ -44,6 +44,7 @@ module Spree
|
|
44
44
|
|
45
45
|
def set_user_language
|
46
46
|
locale = session[:locale]
|
47
|
+
locale = store_locale if respond_to?(:store_locale, true) && locale.blank?
|
47
48
|
locale = config_locale if respond_to?(:config_locale, true) && locale.blank?
|
48
49
|
locale = Rails.application.config.i18n.default_locale if locale.blank?
|
49
50
|
locale = I18n.default_locale unless I18n.available_locales.map(&:to_s).include?(locale.to_s)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Spree
|
2
|
+
module Core
|
3
|
+
module ControllerHelpers
|
4
|
+
module CurrencyHelpers
|
5
|
+
def self.included(receiver)
|
6
|
+
receiver.send :helper_method, :supported_currencies
|
7
|
+
end
|
8
|
+
|
9
|
+
def supported_currencies
|
10
|
+
current_store.supported_currencies_list
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -5,13 +5,24 @@ module Spree
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
+
helper_method :supported_currencies
|
8
9
|
helper_method :current_currency
|
9
10
|
helper_method :current_store
|
10
11
|
helper_method :current_price_options
|
11
12
|
end
|
12
13
|
|
13
14
|
def current_currency
|
14
|
-
|
15
|
+
if defined?(session) && session.key?(:currency) && supported_currencies.map(&:iso_code).include?(session[:currency])
|
16
|
+
session[:currency]
|
17
|
+
elsif params[:currency].present? && supported_currencies.map(&:iso_code).include?(params[:currency])
|
18
|
+
params[:currency]
|
19
|
+
else
|
20
|
+
current_store.default_currency
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def supported_currencies
|
25
|
+
current_store.supported_currencies_list
|
15
26
|
end
|
16
27
|
|
17
28
|
def current_store
|
data/lib/spree/core/version.rb
CHANGED
data/lib/spree/core.rb
CHANGED
@@ -104,3 +104,4 @@ require 'spree/core/controller_helpers/order'
|
|
104
104
|
require 'spree/core/controller_helpers/search'
|
105
105
|
require 'spree/core/controller_helpers/store'
|
106
106
|
require 'spree/core/controller_helpers/strong_parameters'
|
107
|
+
require 'spree/core/controller_helpers/currency_helpers'
|
@@ -64,7 +64,7 @@ module Spree
|
|
64
64
|
:meta_keywords, :price, :sku, :deleted_at, :prototype_id,
|
65
65
|
:option_values_hash, :weight, :height, :width, :depth,
|
66
66
|
:shipping_category_id, :tax_category_id,
|
67
|
-
:cost_currency, :cost_price,
|
67
|
+
:cost_currency, :cost_price, :compare_at_price,
|
68
68
|
option_type_ids: [], taxon_ids: []
|
69
69
|
]
|
70
70
|
|
@@ -96,9 +96,12 @@ module Spree
|
|
96
96
|
:quantity, :stock_item, :stock_item_id, :originator, :action
|
97
97
|
]
|
98
98
|
|
99
|
-
@@store_attributes = [:name, :url, :seo_title, :code, :meta_keywords,
|
99
|
+
@@store_attributes = [:name, :url, :seo_title, :code, :meta_keywords, :logo,
|
100
100
|
:meta_description, :default_currency, :mail_from_address,
|
101
|
-
:facebook, :twitter, :instagram
|
101
|
+
:customer_support_email, :facebook, :twitter, :instagram,
|
102
|
+
:description, :address, :contact_email, :contact_phone,
|
103
|
+
:default_locale, :default_country_id, :supported_currencies,
|
104
|
+
:new_order_notifications_email]
|
102
105
|
|
103
106
|
@@store_credit_attributes = %i[amount currency category_id memo]
|
104
107
|
|
@@ -115,7 +118,7 @@ module Spree
|
|
115
118
|
@@variant_attributes = [
|
116
119
|
:name, :presentation, :cost_price, :discontinue_on, :lock_version,
|
117
120
|
:position, :track_inventory,
|
118
|
-
:product_id, :product, :option_values_attributes, :price,
|
121
|
+
:product_id, :product, :option_values_attributes, :price, :compare_at_price,
|
119
122
|
:weight, :height, :width, :depth, :sku, :cost_currency,
|
120
123
|
options: [:name, :value], option_value_ids: []
|
121
124
|
]
|
@@ -27,13 +27,14 @@ module Spree
|
|
27
27
|
|
28
28
|
def stub_authorization!
|
29
29
|
ability = build_ability
|
30
|
+
ability_class = Spree::Dependencies.ability_class.constantize
|
30
31
|
|
31
32
|
after(:all) do
|
32
|
-
|
33
|
+
ability_class.remove_ability(ability)
|
33
34
|
end
|
34
35
|
|
35
36
|
before(:all) do
|
36
|
-
|
37
|
+
ability_class.register_ability(ability)
|
37
38
|
end
|
38
39
|
|
39
40
|
before do
|
@@ -45,11 +46,13 @@ module Spree
|
|
45
46
|
|
46
47
|
def custom_authorization!(&block)
|
47
48
|
ability = build_ability(&block)
|
49
|
+
ability_class = Spree::Dependencies.ability_class.constantize
|
50
|
+
|
48
51
|
after(:all) do
|
49
|
-
|
52
|
+
ability_class.remove_ability(ability)
|
50
53
|
end
|
51
54
|
before(:all) do
|
52
|
-
|
55
|
+
ability_class.register_ability(ability)
|
53
56
|
end
|
54
57
|
end
|
55
58
|
end
|
@@ -63,13 +63,6 @@ rescue Selenium::WebDriver::Error::TimeOutError
|
|
63
63
|
default_options[:error].nil? ? false : raise(default_options[:error])
|
64
64
|
end
|
65
65
|
|
66
|
-
# Usage examples:
|
67
|
-
# fill_in_with_force 'CVC', with: 123
|
68
|
-
def fill_in_with_force(locator, with:)
|
69
|
-
field_id = find_field(locator)[:id]
|
70
|
-
page.execute_script "document.getElementById('#{field_id}').value = '#{with}';"
|
71
|
-
end
|
72
|
-
|
73
66
|
Capybara.configure do |config|
|
74
67
|
config.match = :smart
|
75
68
|
config.ignore_hidden_elements = true
|
@@ -1,12 +1,15 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :store, class: Spree::Store do
|
3
|
-
sequence(:code)
|
4
|
-
name
|
5
|
-
url
|
6
|
-
mail_from_address
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
sequence(:code) { |i| "spree_#{i}" }
|
4
|
+
name { 'Spree Test Store' }
|
5
|
+
url { 'www.example.com' }
|
6
|
+
mail_from_address { 'no-reply@example.com' }
|
7
|
+
customer_support_email { 'support@example.com' }
|
8
|
+
new_order_notifications_email { 'store-owner@example.com' }
|
9
|
+
default_currency { 'USD' }
|
10
|
+
supported_currencies { 'USD,EUR,GBP' }
|
11
|
+
facebook { 'spreecommerce' }
|
12
|
+
twitter { 'spreecommerce' }
|
13
|
+
instagram { 'spreecommerce' }
|
11
14
|
end
|
12
15
|
end
|
data/spree_core.gemspec
CHANGED
@@ -6,11 +6,11 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.platform = Gem::Platform::RUBY
|
7
7
|
s.name = 'spree_core'
|
8
8
|
s.version = Spree.version
|
9
|
-
s.
|
10
|
-
s.email = '
|
9
|
+
s.authors = ['Sean Schofield', 'Spark Solutions']
|
10
|
+
s.email = 'hello@spreecommerce.org'
|
11
11
|
s.summary = 'The bare bones necessary for Spree.'
|
12
12
|
s.description = 'The bare bones necessary for Spree.'
|
13
|
-
s.homepage = '
|
13
|
+
s.homepage = 'https://spreecommerce.org'
|
14
14
|
s.license = 'BSD-3-Clause'
|
15
15
|
|
16
16
|
s.metadata = {
|
@@ -32,14 +32,14 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.add_dependency 'carmen', '>= 1.0', '< 1.2'
|
33
33
|
s.add_dependency 'cancancan', '~> 3.0'
|
34
34
|
s.add_dependency 'ffaker', '~> 2.9'
|
35
|
-
s.add_dependency 'friendly_id', '>= 5.2.1', '< 5.
|
35
|
+
s.add_dependency 'friendly_id', '>= 5.2.1', '< 5.5.0'
|
36
36
|
s.add_dependency 'highline', '~> 2.0.0' # Necessary for the install generator
|
37
37
|
s.add_dependency 'kaminari', '~> 1.2.1'
|
38
38
|
s.add_dependency 'money', '~> 6.13'
|
39
39
|
s.add_dependency 'monetize', '~> 1.9'
|
40
40
|
s.add_dependency 'paranoia', '~> 2.4.2'
|
41
41
|
s.add_dependency 'premailer-rails'
|
42
|
-
s.add_dependency 'rails', '
|
42
|
+
s.add_dependency 'rails', '~> 6.0.0'
|
43
43
|
s.add_dependency 'ransack', '~> 2.3.0'
|
44
44
|
s.add_dependency 'responders'
|
45
45
|
s.add_dependency 'state_machines-activerecord', '~> 0.6'
|
@@ -48,7 +48,7 @@ Gem::Specification.new do |s|
|
|
48
48
|
s.add_dependency 'twitter_cldr', '>= 4.3', '< 7.0'
|
49
49
|
s.add_dependency 'sprockets', '~> 3.7'
|
50
50
|
s.add_dependency 'sprockets-rails'
|
51
|
-
s.add_dependency 'mini_magick', '>= 4.9.4', '< 4.
|
51
|
+
s.add_dependency 'mini_magick', '>= 4.9.4', '< 4.11.0'
|
52
52
|
s.add_dependency 'image_processing', '~> 1.2'
|
53
53
|
|
54
54
|
s.add_development_dependency 'email_spec', '~> 2.2'
|