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.
- checksums.yaml +4 -4
 - data/app/assets/javascripts/{spree.js.coffee → spree.js.coffee.erb} +11 -2
 - data/app/controllers/spree/base_controller.rb +1 -0
 - data/app/helpers/spree/base_helper.rb +5 -6
 - data/app/helpers/spree/orders_helper.rb +4 -0
 - data/app/helpers/spree/products_helper.rb +8 -7
 - data/app/mailers/spree/base_mailer.rb +2 -2
 - data/app/mailers/spree/order_mailer.rb +2 -2
 - data/app/mailers/spree/shipment_mailer.rb +1 -1
 - data/app/mailers/spree/test_mailer.rb +1 -1
 - data/app/models/spree/ability.rb +15 -16
 - data/app/models/spree/address.rb +3 -6
 - data/app/models/spree/adjustment.rb +2 -2
 - data/app/models/spree/alert.rb +1 -1
 - data/app/models/spree/app_configuration.rb +17 -20
 - data/app/models/spree/asset.rb +2 -2
 - data/app/models/spree/base.rb +9 -0
 - data/app/models/spree/calculator.rb +1 -1
 - data/app/models/spree/calculator/flat_rate.rb +1 -1
 - data/app/models/spree/calculator/flexi_rate.rb +1 -1
 - data/app/models/spree/calculator/price_sack.rb +1 -3
 - data/app/models/spree/calculator/shipping/flat_rate.rb +1 -1
 - data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -1
 - data/app/models/spree/calculator/shipping/per_item.rb +1 -1
 - data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
 - data/app/models/spree/classification.rb +1 -1
 - data/app/models/spree/configuration.rb +1 -1
 - data/app/models/spree/country.rb +1 -1
 - data/app/models/spree/credit_card.rb +8 -12
 - data/app/models/spree/gateway.rb +0 -3
 - data/app/models/spree/gateway/bogus.rb +2 -3
 - data/app/models/spree/image.rb +3 -1
 - data/app/models/spree/inventory_unit.rb +5 -6
 - data/app/models/spree/item_adjustments.rb +3 -4
 - data/app/models/spree/legacy_user.rb +1 -1
 - data/app/models/spree/line_item.rb +6 -13
 - data/app/models/spree/log_entry.rb +1 -1
 - data/app/models/spree/option_type.rb +1 -1
 - data/app/models/spree/option_value.rb +1 -3
 - data/app/models/spree/order.rb +52 -70
 - data/app/models/spree/order/checkout.rb +17 -10
 - data/app/models/spree/order/currency_updater.rb +1 -1
 - data/app/models/spree/order_contents.rb +7 -4
 - data/app/models/spree/order_populator.rb +1 -1
 - data/app/models/spree/order_updater.rb +8 -21
 - data/app/models/spree/payment.rb +26 -12
 - data/app/models/spree/payment/processing.rb +5 -16
 - data/app/models/spree/payment_capture_event.rb +1 -1
 - data/app/models/spree/payment_method.rb +2 -2
 - data/app/models/spree/payment_method/check.rb +0 -2
 - data/app/models/spree/preference.rb +1 -31
 - data/app/models/spree/preferences/configuration.rb +2 -6
 - data/app/models/spree/preferences/preferable.rb +46 -74
 - data/app/models/spree/preferences/preferable_class_methods.rb +11 -46
 - data/app/models/spree/preferences/scoped_store.rb +33 -0
 - data/app/models/spree/preferences/store.rb +8 -7
 - data/app/models/spree/price.rb +1 -3
 - data/app/models/spree/product.rb +59 -87
 - data/app/models/spree/product/scopes.rb +22 -13
 - data/app/models/spree/product_option_type.rb +1 -1
 - data/app/models/spree/product_property.rb +1 -3
 - data/app/models/spree/product_scope/scopes.rb +1 -1
 - data/app/models/spree/promotion.rb +4 -5
 - data/app/models/spree/promotion/actions/create_adjustment.rb +11 -2
 - data/app/models/spree/promotion/actions/create_item_adjustments.rb +19 -2
 - data/app/models/spree/promotion/actions/create_line_items.rb +2 -12
 - data/app/models/spree/promotion/rules/user.rb +5 -1
 - data/app/models/spree/promotion_action.rb +1 -1
 - data/app/models/spree/promotion_action_line_item.rb +1 -1
 - data/app/models/spree/promotion_handler/cart.rb +2 -14
 - data/app/models/spree/promotion_handler/coupon.rb +3 -13
 - data/app/models/spree/promotion_rule.rb +1 -1
 - data/app/models/spree/property.rb +1 -3
 - data/app/models/spree/prototype.rb +1 -1
 - data/app/models/spree/return_authorization.rb +4 -10
 - data/app/models/spree/role.rb +1 -1
 - data/app/models/spree/shipment.rb +1 -9
 - data/app/models/spree/shipping_category.rb +3 -3
 - data/app/models/spree/shipping_method.rb +1 -1
 - data/app/models/spree/shipping_method_category.rb +2 -2
 - data/app/models/spree/shipping_rate.rb +3 -3
 - data/app/models/spree/state.rb +1 -1
 - data/app/models/spree/state_change.rb +1 -1
 - data/app/models/spree/stock/availability_validator.rb +7 -3
 - data/app/models/spree/stock/package.rb +0 -23
 - data/app/models/spree/stock/splitter/backordered.rb +1 -1
 - data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
 - data/app/models/spree/stock/splitter/weight.rb +1 -1
 - data/app/models/spree/stock_item.rb +7 -10
 - data/app/models/spree/stock_location.rb +2 -6
 - data/app/models/spree/stock_movement.rb +1 -3
 - data/app/models/spree/stock_transfer.rb +1 -3
 - data/app/models/spree/store.rb +33 -0
 - data/app/models/spree/tax_category.rb +2 -2
 - data/app/models/spree/tax_rate.rb +21 -52
 - data/app/models/spree/taxon.rb +9 -8
 - data/app/models/spree/taxonomy.rb +1 -1
 - data/app/models/spree/tracker.rb +1 -1
 - data/app/models/spree/variant.rb +13 -15
 - data/app/models/spree/variant/scopes.rb +1 -1
 - data/app/models/spree/zone.rb +22 -22
 - data/app/models/spree/zone_member.rb +2 -2
 - data/config/initializers/user_class_extensions.rb +0 -8
 - data/config/locales/en.yml +7 -42
 - data/db/default/spree/countries.rb +2 -3
 - data/db/default/spree/stores.rb +9 -0
 - data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +0 -5
 - data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -5
 - data/db/migrate/20130807024302_rename_adjustment_fields.rb +5 -2
 - data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +1 -1
 - data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +8 -0
 - data/db/migrate/20140227112348_add_preference_store_to_everything.rb +8 -0
 - data/db/migrate/20140309023735_migrate_old_preferences.rb +23 -0
 - data/db/migrate/20140309024355_create_spree_stores.rb +25 -0
 - data/db/migrate/20140309033438_create_store_from_preferences.rb +30 -0
 - data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +6 -0
 - data/db/migrate/20140331100557_add_additional_store_fields.rb +8 -0
 - data/db/migrate/20140410141842_add_many_missing_indexes.rb +18 -0
 - data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +66 -0
 - data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +1 -1
 - data/db/migrate/20140518174634_add_token_to_spree_orders.rb +5 -0
 - data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +29 -0
 - data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +5 -3
 - data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +6 -0
 - data/lib/generators/spree/dummy/dummy_generator.rb +1 -0
 - data/lib/generators/spree/dummy/templates/initializers/devise.rb +3 -0
 - data/lib/generators/spree/dummy/templates/rails/routes.rb +0 -1
 - data/lib/generators/spree/install/install_generator.rb +8 -17
 - data/lib/generators/spree/install/templates/config/initializers/spree.rb +2 -2
 - data/lib/spree/core.rb +13 -9
 - data/lib/spree/core/calculated_adjustments.rb +1 -1
 - data/lib/spree/core/controller_helpers/auth.rb +27 -18
 - data/lib/spree/core/controller_helpers/common.rb +2 -2
 - data/lib/spree/core/controller_helpers/order.rb +15 -24
 - data/lib/spree/core/controller_helpers/store.rb +19 -0
 - data/lib/spree/core/delegate_belongs_to.rb +2 -2
 - data/lib/spree/core/engine.rb +0 -10
 - data/lib/spree/core/importer.rb +1 -0
 - data/lib/spree/core/importer/order.rb +16 -44
 - data/lib/spree/core/importer/product.rb +62 -0
 - data/lib/spree/core/product_filters.rb +0 -4
 - data/lib/spree/core/routes.rb +4 -6
 - data/lib/spree/core/validators/email.rb +23 -1
 - data/lib/spree/core/version.rb +1 -1
 - data/lib/spree/money.rb +1 -169
 - data/lib/spree/permitted_attributes.rb +6 -4
 - data/lib/spree/testing_support/authorization_helpers.rb +23 -21
 - data/lib/spree/testing_support/capybara_ext.rb +11 -21
 - data/lib/spree/testing_support/common_rake.rb +3 -1
 - data/lib/spree/testing_support/controller_requests.rb +0 -2
 - data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
 - data/lib/spree/testing_support/factories/line_item_factory.rb +4 -1
 - data/lib/spree/testing_support/factories/order_factory.rb +5 -4
 - data/lib/spree/testing_support/factories/product_factory.rb +0 -4
 - data/lib/spree/testing_support/factories/promotion_factory.rb +5 -7
 - data/lib/spree/testing_support/factories/shipment_factory.rb +0 -1
 - data/lib/spree/testing_support/factories/stock_factory.rb +2 -2
 - data/lib/spree/testing_support/factories/store_factory.rb +8 -0
 - data/lib/spree/testing_support/preferences.rb +3 -3
 - data/lib/tasks/core.rake +2 -2
 - metadata +48 -39
 - data/app/models/spree/stock/order_counter.rb +0 -55
 - data/app/models/spree/tokenized_permission.rb +0 -6
 - data/app/views/spree/shared/_routes.html.erb +0 -13
 - data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +0 -10
 - data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
 - data/lib/spree/core/adjustment_source.rb +0 -26
 - data/lib/spree/core/mail_interceptor.rb +0 -22
 - data/lib/spree/core/mail_method.rb +0 -27
 - data/lib/spree/core/mail_settings.rb +0 -55
 - data/lib/spree/core/ransackable_attributes.rb +0 -15
 - data/lib/spree/core/token_resource.rb +0 -27
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: f36768d9e812dac5278cad4d5d1ff827fbd70c0e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 89173525bdf6d17811cfa3f56d9171bed41ee706
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 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:  
     | 
| 
       50 
     | 
    
         
            -
                    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] = [: 
     | 
| 
      
 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. 
     | 
| 
      
 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  
     | 
| 
      
 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
         
     | 
| 
         @@ -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 
     | 
    
         
            -
                   
     | 
| 
       15 
     | 
    
         
            -
                   
     | 
| 
       16 
     | 
    
         
            -
                   
     | 
| 
       17 
     | 
    
         
            -
                  diff 
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                   
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 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
         
     | 
| 
         @@ -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:: 
     | 
| 
      
 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:: 
     | 
| 
      
 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:: 
     | 
| 
      
 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:: 
     | 
| 
      
 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
         
     | 
    
        data/app/models/spree/ability.rb
    CHANGED
    
    | 
         @@ -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  
     | 
| 
       41 
     | 
    
         
            -
                    can  
     | 
| 
       42 
     | 
    
         
            -
                    can  
     | 
| 
      
 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. 
     | 
| 
       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  
     | 
| 
       55 
     | 
    
         
            -
                    can  
     | 
| 
       56 
     | 
    
         
            -
                    can  
     | 
| 
      
 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  
     | 
| 
       60 
     | 
    
         
            -
                    can  
     | 
| 
       61 
     | 
    
         
            -
                    can  
     | 
| 
       62 
     | 
    
         
            -
                    can  
     | 
| 
       63 
     | 
    
         
            -
                    can  
     | 
| 
      
 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.
         
     | 
    
        data/app/models/spree/address.rb
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Spree
         
     | 
| 
       2 
     | 
    
         
            -
              class Address <  
     | 
| 
      
 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 
     | 
| 
       27 
     | 
    
         
            -
                     
     | 
| 
      
 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 <  
     | 
| 
       25 
     | 
    
         
            -
                belongs_to :adjustable, polymorphic: 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 
     | 
    
         | 
    
        data/app/models/spree/alert.rb
    CHANGED
    
    
| 
         @@ -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
         
     | 
    
        data/app/models/spree/asset.rb
    CHANGED
    
    
| 
         @@ -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
         
     | 
| 
         @@ -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)
         
     |