spree_core 2.2.14 → 2.3.0

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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/{spree.js.coffee → spree.js.coffee.erb} +11 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/helpers/spree/base_helper.rb +5 -6
  5. data/app/helpers/spree/orders_helper.rb +4 -0
  6. data/app/helpers/spree/products_helper.rb +8 -7
  7. data/app/mailers/spree/base_mailer.rb +2 -2
  8. data/app/mailers/spree/order_mailer.rb +2 -2
  9. data/app/mailers/spree/shipment_mailer.rb +1 -1
  10. data/app/mailers/spree/test_mailer.rb +1 -1
  11. data/app/models/spree/ability.rb +15 -16
  12. data/app/models/spree/address.rb +3 -6
  13. data/app/models/spree/adjustment.rb +2 -2
  14. data/app/models/spree/alert.rb +1 -1
  15. data/app/models/spree/app_configuration.rb +17 -20
  16. data/app/models/spree/asset.rb +2 -2
  17. data/app/models/spree/base.rb +9 -0
  18. data/app/models/spree/calculator.rb +1 -1
  19. data/app/models/spree/calculator/flat_rate.rb +1 -1
  20. data/app/models/spree/calculator/flexi_rate.rb +1 -1
  21. data/app/models/spree/calculator/price_sack.rb +1 -3
  22. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -1
  23. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -1
  24. data/app/models/spree/calculator/shipping/per_item.rb +1 -1
  25. data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
  26. data/app/models/spree/classification.rb +1 -1
  27. data/app/models/spree/configuration.rb +1 -1
  28. data/app/models/spree/country.rb +1 -1
  29. data/app/models/spree/credit_card.rb +8 -12
  30. data/app/models/spree/gateway.rb +0 -3
  31. data/app/models/spree/gateway/bogus.rb +2 -3
  32. data/app/models/spree/image.rb +3 -1
  33. data/app/models/spree/inventory_unit.rb +5 -6
  34. data/app/models/spree/item_adjustments.rb +3 -4
  35. data/app/models/spree/legacy_user.rb +1 -1
  36. data/app/models/spree/line_item.rb +6 -13
  37. data/app/models/spree/log_entry.rb +1 -1
  38. data/app/models/spree/option_type.rb +1 -1
  39. data/app/models/spree/option_value.rb +1 -3
  40. data/app/models/spree/order.rb +52 -70
  41. data/app/models/spree/order/checkout.rb +17 -10
  42. data/app/models/spree/order/currency_updater.rb +1 -1
  43. data/app/models/spree/order_contents.rb +7 -4
  44. data/app/models/spree/order_populator.rb +1 -1
  45. data/app/models/spree/order_updater.rb +8 -21
  46. data/app/models/spree/payment.rb +26 -12
  47. data/app/models/spree/payment/processing.rb +5 -16
  48. data/app/models/spree/payment_capture_event.rb +1 -1
  49. data/app/models/spree/payment_method.rb +2 -2
  50. data/app/models/spree/payment_method/check.rb +0 -2
  51. data/app/models/spree/preference.rb +1 -31
  52. data/app/models/spree/preferences/configuration.rb +2 -6
  53. data/app/models/spree/preferences/preferable.rb +46 -74
  54. data/app/models/spree/preferences/preferable_class_methods.rb +11 -46
  55. data/app/models/spree/preferences/scoped_store.rb +33 -0
  56. data/app/models/spree/preferences/store.rb +8 -7
  57. data/app/models/spree/price.rb +1 -3
  58. data/app/models/spree/product.rb +59 -87
  59. data/app/models/spree/product/scopes.rb +22 -13
  60. data/app/models/spree/product_option_type.rb +1 -1
  61. data/app/models/spree/product_property.rb +1 -3
  62. data/app/models/spree/product_scope/scopes.rb +1 -1
  63. data/app/models/spree/promotion.rb +4 -5
  64. data/app/models/spree/promotion/actions/create_adjustment.rb +11 -2
  65. data/app/models/spree/promotion/actions/create_item_adjustments.rb +19 -2
  66. data/app/models/spree/promotion/actions/create_line_items.rb +2 -12
  67. data/app/models/spree/promotion/rules/user.rb +5 -1
  68. data/app/models/spree/promotion_action.rb +1 -1
  69. data/app/models/spree/promotion_action_line_item.rb +1 -1
  70. data/app/models/spree/promotion_handler/cart.rb +2 -14
  71. data/app/models/spree/promotion_handler/coupon.rb +3 -13
  72. data/app/models/spree/promotion_rule.rb +1 -1
  73. data/app/models/spree/property.rb +1 -3
  74. data/app/models/spree/prototype.rb +1 -1
  75. data/app/models/spree/return_authorization.rb +4 -10
  76. data/app/models/spree/role.rb +1 -1
  77. data/app/models/spree/shipment.rb +1 -9
  78. data/app/models/spree/shipping_category.rb +3 -3
  79. data/app/models/spree/shipping_method.rb +1 -1
  80. data/app/models/spree/shipping_method_category.rb +2 -2
  81. data/app/models/spree/shipping_rate.rb +3 -3
  82. data/app/models/spree/state.rb +1 -1
  83. data/app/models/spree/state_change.rb +1 -1
  84. data/app/models/spree/stock/availability_validator.rb +7 -3
  85. data/app/models/spree/stock/package.rb +0 -23
  86. data/app/models/spree/stock/splitter/backordered.rb +1 -1
  87. data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
  88. data/app/models/spree/stock/splitter/weight.rb +1 -1
  89. data/app/models/spree/stock_item.rb +7 -10
  90. data/app/models/spree/stock_location.rb +2 -6
  91. data/app/models/spree/stock_movement.rb +1 -3
  92. data/app/models/spree/stock_transfer.rb +1 -3
  93. data/app/models/spree/store.rb +33 -0
  94. data/app/models/spree/tax_category.rb +2 -2
  95. data/app/models/spree/tax_rate.rb +21 -52
  96. data/app/models/spree/taxon.rb +9 -8
  97. data/app/models/spree/taxonomy.rb +1 -1
  98. data/app/models/spree/tracker.rb +1 -1
  99. data/app/models/spree/variant.rb +13 -15
  100. data/app/models/spree/variant/scopes.rb +1 -1
  101. data/app/models/spree/zone.rb +22 -22
  102. data/app/models/spree/zone_member.rb +2 -2
  103. data/config/initializers/user_class_extensions.rb +0 -8
  104. data/config/locales/en.yml +7 -42
  105. data/db/default/spree/countries.rb +2 -3
  106. data/db/default/spree/stores.rb +9 -0
  107. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +0 -5
  108. data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -5
  109. data/db/migrate/20130807024302_rename_adjustment_fields.rb +5 -2
  110. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +1 -1
  111. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +8 -0
  112. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +8 -0
  113. data/db/migrate/20140309023735_migrate_old_preferences.rb +23 -0
  114. data/db/migrate/20140309024355_create_spree_stores.rb +25 -0
  115. data/db/migrate/20140309033438_create_store_from_preferences.rb +30 -0
  116. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +6 -0
  117. data/db/migrate/20140331100557_add_additional_store_fields.rb +8 -0
  118. data/db/migrate/20140410141842_add_many_missing_indexes.rb +18 -0
  119. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +66 -0
  120. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +1 -1
  121. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +5 -0
  122. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +29 -0
  123. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +5 -3
  124. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +6 -0
  125. data/lib/generators/spree/dummy/dummy_generator.rb +1 -0
  126. data/lib/generators/spree/dummy/templates/initializers/devise.rb +3 -0
  127. data/lib/generators/spree/dummy/templates/rails/routes.rb +0 -1
  128. data/lib/generators/spree/install/install_generator.rb +8 -17
  129. data/lib/generators/spree/install/templates/config/initializers/spree.rb +2 -2
  130. data/lib/spree/core.rb +13 -9
  131. data/lib/spree/core/calculated_adjustments.rb +1 -1
  132. data/lib/spree/core/controller_helpers/auth.rb +27 -18
  133. data/lib/spree/core/controller_helpers/common.rb +2 -2
  134. data/lib/spree/core/controller_helpers/order.rb +15 -24
  135. data/lib/spree/core/controller_helpers/store.rb +19 -0
  136. data/lib/spree/core/delegate_belongs_to.rb +2 -2
  137. data/lib/spree/core/engine.rb +0 -10
  138. data/lib/spree/core/importer.rb +1 -0
  139. data/lib/spree/core/importer/order.rb +16 -44
  140. data/lib/spree/core/importer/product.rb +62 -0
  141. data/lib/spree/core/product_filters.rb +0 -4
  142. data/lib/spree/core/routes.rb +4 -6
  143. data/lib/spree/core/validators/email.rb +23 -1
  144. data/lib/spree/core/version.rb +1 -1
  145. data/lib/spree/money.rb +1 -169
  146. data/lib/spree/permitted_attributes.rb +6 -4
  147. data/lib/spree/testing_support/authorization_helpers.rb +23 -21
  148. data/lib/spree/testing_support/capybara_ext.rb +11 -21
  149. data/lib/spree/testing_support/common_rake.rb +3 -1
  150. data/lib/spree/testing_support/controller_requests.rb +0 -2
  151. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
  152. data/lib/spree/testing_support/factories/line_item_factory.rb +4 -1
  153. data/lib/spree/testing_support/factories/order_factory.rb +5 -4
  154. data/lib/spree/testing_support/factories/product_factory.rb +0 -4
  155. data/lib/spree/testing_support/factories/promotion_factory.rb +5 -7
  156. data/lib/spree/testing_support/factories/shipment_factory.rb +0 -1
  157. data/lib/spree/testing_support/factories/stock_factory.rb +2 -2
  158. data/lib/spree/testing_support/factories/store_factory.rb +8 -0
  159. data/lib/spree/testing_support/preferences.rb +3 -3
  160. data/lib/tasks/core.rake +2 -2
  161. metadata +48 -39
  162. data/app/models/spree/stock/order_counter.rb +0 -55
  163. data/app/models/spree/tokenized_permission.rb +0 -6
  164. data/app/views/spree/shared/_routes.html.erb +0 -13
  165. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +0 -10
  166. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
  167. data/lib/spree/core/adjustment_source.rb +0 -26
  168. data/lib/spree/core/mail_interceptor.rb +0 -22
  169. data/lib/spree/core/mail_method.rb +0 -27
  170. data/lib/spree/core/mail_settings.rb +0 -55
  171. data/lib/spree/core/ransackable_attributes.rb +0 -15
  172. data/lib/spree/core/token_resource.rb +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9abfcb6e2a1a2ca7ab2c85a969e20adf636c1d99
4
- data.tar.gz: bc242bb55726abd8ade2e39ab0c916b8f55dcc0b
3
+ metadata.gz: f36768d9e812dac5278cad4d5d1ff827fbd70c0e
4
+ data.tar.gz: 89173525bdf6d17811cfa3f56d9171bed41ee706
5
5
  SHA512:
6
- metadata.gz: 8a647ec37f24df8c6263501ef76128452751fb2afc06c5734b36fcb37732f4cbfe6bea13ae6f5ad3d4c33d1fcbe72aeb330252c8d412b9e6e816d045ec341f70
7
- data.tar.gz: 8c39cb145273c64b9c6fc7f6f01b6222f3b6c235d151e85e2937bb217eab3861a4ec41bc7cebab3b1533eb03bfd89fe826f2096ea5df2ae93259fc3e2d2d59e4
6
+ metadata.gz: 736e2e5fe347e4bced168f0829d3122572c09c578796d106380714881bd596548968cac77646f40ae246740a5535b70e1c1f1a04446ebb120054ee1d43dccdd7
7
+ data.tar.gz: ec2a0650143117254b28401f5c24d0ca2514ff443d7536c7a16e80c450a92745d9f81be46632c6ab1d3cd5227cf9a95d0b9cb72db83f8eeac27386590c1785be
@@ -3,6 +3,12 @@ class window.Spree
3
3
  @ready: (callback) ->
4
4
  jQuery(document).ready(callback)
5
5
 
6
+ @mountedAt: ->
7
+ "<%= Rails.application.routes.url_helpers.spree_path %>"
8
+
9
+ @pathFor: (path) ->
10
+ "#{window.location.origin}#{@mountedAt()}#{path}"
11
+
6
12
  # Helper function to take a URL and add query parameters to it
7
13
  # Uses the JSUri library from here: https://code.google.com/p/jsuri/
8
14
  # Thanks to Jake Moffat for the suggestion: https://twitter.com/jakeonrails/statuses/321776992221544449
@@ -12,8 +18,6 @@ class window.Spree
12
18
  if query
13
19
  $.each query, (key, value) ->
14
20
  uri.addQueryParam(key, value)
15
- if Spree.api_key
16
- uri.addQueryParam('token', Spree.api_key)
17
21
  return uri
18
22
 
19
23
  # Helper method in case people want to call uri rather than url
@@ -38,3 +42,8 @@ class window.Spree
38
42
  url = url_or_settings['url']
39
43
  delete url_or_settings['url']
40
44
  $.ajax(Spree.url(url).toString(), url_or_settings)
45
+
46
+ @routes:
47
+ states_search: @pathFor('api/states')
48
+ apply_coupon_code: (order_id) ->
49
+ Spree.pathFor("api/orders/#{order_id}/apply_coupon_code")
@@ -7,6 +7,7 @@ class Spree::BaseController < ApplicationController
7
7
  include Spree::Core::ControllerHelpers::SSL
8
8
  include Spree::Core::ControllerHelpers::Common
9
9
  include Spree::Core::ControllerHelpers::Search
10
+ include Spree::Core::ControllerHelpers::Store
10
11
  include Spree::Core::ControllerHelpers::StrongParameters
11
12
 
12
13
  respond_to :html
@@ -46,8 +46,8 @@ module Spree
46
46
  end
47
47
 
48
48
  meta.reverse_merge!({
49
- keywords: Spree::Config[:default_meta_keywords],
50
- description: Spree::Config[:default_meta_description]
49
+ keywords: current_store.meta_keywords,
50
+ description: current_store.meta_description,
51
51
  })
52
52
  meta
53
53
  end
@@ -68,7 +68,7 @@ module Spree
68
68
  end
69
69
 
70
70
  def flash_messages(opts = {})
71
- opts[:ignore_types] = [:commerce_tracking].concat(Array(opts[:ignore_types]) || [])
71
+ opts[:ignore_types] = [:order_completed].concat(Array(opts[:ignore_types]) || [])
72
72
 
73
73
  flash.each do |msg_type, text|
74
74
  unless opts[:ignore_types].include?(msg_type)
@@ -118,7 +118,7 @@ module Spree
118
118
  countries.collect do |country|
119
119
  country.name = Spree.t(country.iso, scope: 'country_names', default: country.name)
120
120
  country
121
- end.sort_by { |c| c.name.parameterize }
121
+ end.sort { |a, b| a.name.parameterize <=> b.name.parameterize }
122
122
  end
123
123
 
124
124
  def seo_url(taxon)
@@ -162,10 +162,9 @@ module Spree
162
162
  end
163
163
 
164
164
  private
165
-
166
165
  # Returns style of image or nil
167
166
  def image_style_from_method_name(method_name)
168
- if method_name.to_s.match(/_image$/) && style = method_name.to_s.sub(/_image$/, '')
167
+ if style = method_name.to_s.sub(/_image$/, '')
169
168
  possible_styles = Spree::Image.attachment_definitions[:attachment][:styles]
170
169
  style if style.in? possible_styles.with_indifferent_access
171
170
  end
@@ -8,6 +8,10 @@ module Spree
8
8
  def truncated_product_description(product)
9
9
  truncate_html(raw(product.description))
10
10
  end
11
+
12
+ def order_just_completed?(order)
13
+ flash[:order_completed] && order.present?
14
+ end
11
15
  end
12
16
  end
13
17
 
@@ -11,13 +11,14 @@ module Spree
11
11
 
12
12
  # returns the formatted price for the specified variant as a difference from product price
13
13
  def variant_price_diff(variant)
14
- variant_amount = variant.amount_in(current_currency)
15
- product_amount = variant.product.amount_in(current_currency)
16
- return if variant_amount == product_amount || product_amount.nil?
17
- diff = variant.amount_in(current_currency) - product_amount
18
- amount = Spree::Money.new(diff.abs, currency: current_currency).to_html
19
- label = diff > 0 ? :add : :subtract
20
- "(#{Spree.t(label)}: #{amount})".html_safe
14
+ diff = variant.amount_in(current_currency) - variant.product.amount_in(current_currency)
15
+ return nil if diff == 0
16
+ amount = Spree::Money.new(diff.abs, { currency: current_currency }).to_html
17
+ if diff > 0
18
+ "(#{Spree.t(:add)}: #{amount})".html_safe
19
+ else
20
+ "(#{Spree.t(:subtract)}: #{amount})".html_safe
21
+ end
21
22
  end
22
23
 
23
24
  # returns the formatted full price for the variant, if at least one variant price differs from product price
@@ -4,8 +4,8 @@ module Spree
4
4
  Spree::Config[:mails_from]
5
5
  end
6
6
 
7
- def money(amount)
8
- Spree::Money.new(amount).to_s
7
+ def money(amount, currency = Spree::Config[:currency])
8
+ Spree::Money.new(amount, currency: currency).to_s
9
9
  end
10
10
  helper_method :money
11
11
 
@@ -3,14 +3,14 @@ module Spree
3
3
  def confirm_email(order, resend = false)
4
4
  @order = order.respond_to?(:id) ? order : Spree::Order.find(order)
5
5
  subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
6
- subject += "#{Spree::Config[:site_name]} #{Spree.t('order_mailer.confirm_email.subject')} ##{@order.number}"
6
+ subject += "#{Spree::Store.current.name} #{Spree.t('order_mailer.confirm_email.subject')} ##{@order.number}"
7
7
  mail(to: @order.email, from: from_address, subject: subject)
8
8
  end
9
9
 
10
10
  def cancel_email(order, resend = false)
11
11
  @order = order.respond_to?(:id) ? order : Spree::Order.find(order)
12
12
  subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
13
- subject += "#{Spree::Config[:site_name]} #{Spree.t('order_mailer.cancel_email.subject')} ##{@order.number}"
13
+ subject += "#{Spree::Store.current.name} #{Spree.t('order_mailer.cancel_email.subject')} ##{@order.number}"
14
14
  mail(to: @order.email, from: from_address, subject: subject)
15
15
  end
16
16
  end
@@ -3,7 +3,7 @@ module Spree
3
3
  def shipped_email(shipment, resend = false)
4
4
  @shipment = shipment.respond_to?(:id) ? shipment : Spree::Shipment.find(shipment)
5
5
  subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
6
- subject += "#{Spree::Config[:site_name]} #{Spree.t('shipment_mailer.shipped_email.subject')} ##{@shipment.order.number}"
6
+ subject += "#{Spree::Store.current.name} #{Spree.t('shipment_mailer.shipped_email.subject')} ##{@shipment.order.number}"
7
7
  mail(to: @shipment.order.email, from: from_address, subject: subject)
8
8
  end
9
9
  end
@@ -2,7 +2,7 @@ module Spree
2
2
  class TestMailer < BaseMailer
3
3
  def test_email(user)
4
4
  recipient = user.respond_to?(:id) ? user : Spree.user_class.find(user)
5
- subject = "#{Spree::Config[:site_name]} #{Spree.t('test_mailer.test_email.subject')}"
5
+ subject = "#{Spree::Store.current.name} #{Spree.t('test_mailer.test_email.subject')}"
6
6
  mail(to: recipient.email, from: from_address, subject: subject)
7
7
  end
8
8
  end
@@ -31,36 +31,35 @@ module Spree
31
31
  alias_action :new, to: :create
32
32
  alias_action :new_action, to: :create
33
33
  alias_action :show, to: :read
34
+ alias_action :index, :read, to: :display
35
+
34
36
 
35
37
  user ||= Spree.user_class.new
36
38
 
37
39
  if user.respond_to?(:has_spree_role?) && user.has_spree_role?('admin')
38
40
  can :manage, :all
39
41
  else
40
- can [:index, :read], Country
41
- can [:index, :read], OptionType
42
- can [:index, :read], OptionValue
42
+ can :display, Country
43
+ can :display, OptionType
44
+ can :display, OptionValue
43
45
  can :create, Order
44
- can :read, Order do |order, token|
45
- order.user == user || order.token && token == order.token
46
- end
47
- can :update, Order do |order, token|
48
- order.user == user || order.token && token == order.token
46
+ can [:read, :update], Order do |order, token|
47
+ order.user == user || order.guest_token && token == order.guest_token
49
48
  end
50
49
  can [:create, :read], Address
51
50
  can :update, Address do |address|
52
51
  user.bill_address == address || user.ship_address == address
53
52
  end
54
- can [:index, :read], Product
55
- can [:index, :read], ProductProperty
56
- can [:index, :read], Property
53
+ can :display, Product
54
+ can :display, ProductProperty
55
+ can :display, Property
57
56
  can :create, Spree.user_class
58
57
  can [:read, :update, :destroy], Spree.user_class, id: user.id
59
- can [:index, :read], State
60
- can [:index, :read], Taxon
61
- can [:index, :read], Taxonomy
62
- can [:index, :read], Variant
63
- can [:index, :read], Zone
58
+ can :display, State
59
+ can :display, Taxon
60
+ can :display, Taxonomy
61
+ can :display, Variant
62
+ can :display, Zone
64
63
  end
65
64
 
66
65
  # Include any abilities registered by extensions, etc.
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class Address < ActiveRecord::Base
2
+ class Address < Spree::Base
3
3
  belongs_to :country, class_name: "Spree::Country"
4
4
  belongs_to :state, class_name: "Spree::State"
5
5
 
@@ -14,17 +14,14 @@ module Spree
14
14
  alias_attribute :first_name, :firstname
15
15
  alias_attribute :last_name, :lastname
16
16
 
17
-
18
- self.whitelisted_ransackable_attributes = %w[firstname lastname]
19
-
20
17
  def self.build_default
21
18
  country = Spree::Country.find(Spree::Config[:default_country_id]) rescue Spree::Country.first
22
19
  new(country: country)
23
20
  end
24
21
 
25
22
  def self.default(user = nil, kind = "bill")
26
- if user && user_address = user.send(:"#{kind}_address")
27
- user_address.clone
23
+ if user
24
+ user.send(:"#{kind}_address") || build_default
28
25
  else
29
26
  build_default
30
27
  end
@@ -21,8 +21,8 @@
21
21
  # total. This allows an adjustment to be preserved if it becomes ineligible so
22
22
  # it might be reinstated.
23
23
  module Spree
24
- class Adjustment < ActiveRecord::Base
25
- belongs_to :adjustable, polymorphic: true, touch: true
24
+ class Adjustment < Spree::Base
25
+ belongs_to :adjustable, polymorphic: true
26
26
  belongs_to :source, polymorphic: true
27
27
  belongs_to :order, class_name: "Spree::Order"
28
28
 
@@ -5,7 +5,7 @@ module Spree
5
5
  def self.current(host)
6
6
  params = {
7
7
  version: Spree.version,
8
- name: Spree::Config[:site_name],
8
+ name: Spree::Store.current.name,
9
9
  host: host,
10
10
  rails_env: Rails.env,
11
11
  rails_version: Rails.version
@@ -19,7 +19,6 @@ require "spree/core/search/base"
19
19
 
20
20
  module Spree
21
21
  class AppConfiguration < Preferences::Configuration
22
-
23
22
  # Alphabetized to more easily lookup particular preferences
24
23
  preference :address_requires_state, :boolean, default: true # should state/state_name be required
25
24
  preference :admin_interface_logo, :string, default: 'logo/spree_50.png'
@@ -46,9 +45,6 @@ module Spree
46
45
  preference :currency_thousands_separator, :string, default: ","
47
46
  preference :display_currency, :boolean, default: false
48
47
  preference :default_country_id, :integer
49
- preference :default_meta_description, :string, default: 'Spree demo site'
50
- preference :default_meta_keywords, :string, default: 'spree, demo'
51
- preference :default_seo_title, :string, default: ''
52
48
  preference :dismissed_spree_alerts, :string, default: ''
53
49
  preference :hide_cents, :boolean, default: false
54
50
  preference :last_check_for_spree_alerts, :string, default: nil
@@ -56,7 +52,6 @@ module Spree
56
52
  preference :logo, :string, default: 'logo/spree_50.png'
57
53
  preference :max_level_in_taxons_menu, :integer, default: 1 # maximum nesting level in taxons menu
58
54
  preference :orders_per_page, :integer, default: 15
59
- preference :prices_inc_tax, :boolean, default: false
60
55
  preference :properties_per_page, :integer, default: 15
61
56
  preference :products_per_page, :integer, default: 12
62
57
  preference :promotions_per_page, :integer, default: 15
@@ -68,27 +63,12 @@ module Spree
68
63
  preference :show_variant_full_price, :boolean, default: false #Displays variant full price or difference with product price. Default false to be compatible with older behavior
69
64
  preference :show_products_without_price, :boolean, default: false
70
65
  preference :show_raw_product_description, :boolean, :default => false
71
- preference :site_name, :string, default: 'Spree Demo Site'
72
- preference :site_url, :string, default: 'demo.spreecommerce.com'
73
66
  preference :tax_using_ship_address, :boolean, default: true
74
67
  preference :track_inventory_levels, :boolean, default: true # Determines whether to track on_hand values for variants / products.
75
68
 
76
69
  # Default mail headers settings
77
- preference :enable_mail_delivery, :boolean, :default => false
78
70
  preference :send_core_emails, :boolean, :default => true
79
71
  preference :mails_from, :string, :default => 'spree@example.com'
80
- preference :mail_bcc, :string, :default => 'spree@example.com'
81
- preference :intercept_email, :string, :default => nil
82
-
83
- # Default smtp settings
84
- preference :override_actionmailer_config, :boolean, :default => true
85
- preference :mail_host, :string, :default => 'localhost'
86
- preference :mail_domain, :string, :default => 'localhost'
87
- preference :mail_port, :integer, :default => 25
88
- preference :secure_connection_type, :string, :default => Core::MailSettings::SECURE_CONNECTION_TYPES[0]
89
- preference :mail_auth_type, :string, :default => Core::MailSettings::MAIL_AUTH[0]
90
- preference :smtp_username, :string
91
- preference :smtp_password, :string
92
72
 
93
73
  # searcher_class allows spree extension writers to provide their own Search class
94
74
  def searcher_class
@@ -98,5 +78,22 @@ module Spree
98
78
  def searcher_class=(sclass)
99
79
  @searcher_class = sclass
100
80
  end
81
+
82
+ # all the following can be deprecated when store prefs are no longer supported
83
+ DEPRECATED_STORE_PREFERENCES = {
84
+ site_name: :name,
85
+ site_url: :url,
86
+ default_meta_description: :meta_description,
87
+ default_meta_keywords: :meta_keywords,
88
+ default_seo_title: :seo_title,
89
+ }
90
+
91
+ DEPRECATED_STORE_PREFERENCES.each do |old_preference_name, store_method|
92
+ # support all the old preference methods with a warning
93
+ define_method "preferred_#{old_preference_name}" do
94
+ ActiveSupport::Deprecation.warn("#{old_preference_name} is no longer supported on Spree::Config, please access it through #{store_method} on Spree::Store")
95
+ Store.default.send(store_method)
96
+ end
97
+ end
101
98
  end
102
99
  end
@@ -1,6 +1,6 @@
1
1
  module Spree
2
- class Asset < ActiveRecord::Base
2
+ class Asset < Spree::Base
3
3
  belongs_to :viewable, polymorphic: true, touch: true
4
- acts_as_list scope: [:viewable_id, :viewable_type]
4
+ acts_as_list scope: :viewable
5
5
  end
6
6
  end
@@ -0,0 +1,9 @@
1
+ class Spree::Base < ActiveRecord::Base
2
+ include Spree::Preferences::Preferable
3
+ serialize :preferences, Hash
4
+ after_initialize do
5
+ self.preferences = default_preferences.merge(preferences) if has_attribute?(:preferences)
6
+ end
7
+
8
+ self.abstract_class = true
9
+ end
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class Calculator < ActiveRecord::Base
2
+ class Calculator < Spree::Base
3
3
  belongs_to :calculable, polymorphic: true
4
4
 
5
5
  # This method calls a compute_<computable> method. must be overriden in concrete calculator.
@@ -3,7 +3,7 @@ require_dependency 'spree/calculator'
3
3
  module Spree
4
4
  class Calculator::FlatRate < Calculator
5
5
  preference :amount, :decimal, default: 0
6
- preference :currency, :string, default: Spree::Config[:currency]
6
+ preference :currency, :string, default: ->{ Spree::Config[:currency] }
7
7
 
8
8
  def self.description
9
9
  Spree.t(:flat_rate_per_order)
@@ -5,7 +5,7 @@ module Spree
5
5
  preference :first_item, :decimal, default: 0.0
6
6
  preference :additional_item, :decimal, default: 0.0
7
7
  preference :max_items, :integer, default: 0
8
- preference :currency, :string, default: Spree::Config[:currency]
8
+ preference :currency, :string, default: ->{ Spree::Config[:currency] }
9
9
 
10
10
  def self.description
11
11
  Spree.t(:flexible_rate)
@@ -1,13 +1,11 @@
1
1
  require_dependency 'spree/calculator'
2
- # For #to_d method on Ruby 1.8
3
- require 'bigdecimal/util'
4
2
 
5
3
  module Spree
6
4
  class Calculator::PriceSack < Calculator
7
5
  preference :minimal_amount, :decimal, default: 0
8
6
  preference :normal_amount, :decimal, default: 0
9
7
  preference :discount_amount, :decimal, default: 0
10
- preference :currency, :string, default: Spree::Config[:currency]
8
+ preference :currency, :string, default: ->{ Spree::Config[:currency] }
11
9
 
12
10
  def self.description
13
11
  Spree.t(:price_sack)
@@ -4,7 +4,7 @@ module Spree
4
4
  module Calculator::Shipping
5
5
  class FlatRate < ShippingCalculator
6
6
  preference :amount, :decimal, default: 0
7
- preference :currency, :string, default: Spree::Config[:currency]
7
+ preference :currency, :string, default: ->{ Spree::Config[:currency] }
8
8
 
9
9
  def self.description
10
10
  Spree.t(:shipping_flat_rate_per_order)
@@ -6,7 +6,7 @@ module Spree
6
6
  preference :first_item, :decimal, default: 0.0
7
7
  preference :additional_item, :decimal, default: 0.0
8
8
  preference :max_items, :integer, default: 0
9
- preference :currency, :string, default: Spree::Config[:currency]
9
+ preference :currency, :string, default: ->{ Spree::Config[:currency] }
10
10
 
11
11
  def self.description
12
12
  Spree.t(:shipping_flexible_rate)
@@ -4,7 +4,7 @@ module Spree
4
4
  module Calculator::Shipping
5
5
  class PerItem < ShippingCalculator
6
6
  preference :amount, :decimal, default: 0
7
- preference :currency, :string, default: Spree::Config[:currency]
7
+ preference :currency, :string, default: ->{ Spree::Config[:currency] }
8
8
 
9
9
  def self.description
10
10
  Spree.t(:shipping_flat_rate_per_item)