spree_core 1.0.7 → 1.1.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/admin/admin.js.erb +9 -18
- data/app/assets/javascripts/admin/calculator.js +7 -6
- data/app/assets/javascripts/admin/checkouts/edit.js +2 -2
- data/app/assets/javascripts/admin/image_settings.js +49 -0
- data/app/assets/javascripts/admin/orders/edit_form.js +14 -14
- data/app/assets/stylesheets/admin/admin.css.erb +36 -54
- data/app/assets/stylesheets/store/screen.css.scss +25 -12
- data/app/controllers/spree/admin/base_controller.rb +3 -3
- data/app/controllers/spree/admin/image_settings_controller.rb +71 -0
- data/app/controllers/spree/admin/images_controller.rb +22 -21
- data/app/controllers/spree/admin/mail_methods_controller.rb +1 -1
- data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -2
- data/app/controllers/spree/admin/orders_controller.rb +13 -13
- data/app/controllers/spree/admin/payment_methods_controller.rb +1 -1
- data/app/controllers/spree/admin/payments_controller.rb +1 -1
- data/app/controllers/spree/admin/product_properties_controller.rb +3 -4
- data/app/controllers/spree/admin/products_controller.rb +49 -47
- data/app/controllers/spree/admin/properties_controller.rb +1 -1
- data/app/controllers/spree/admin/prototypes_controller.rb +12 -6
- data/app/controllers/spree/admin/reports_controller.rb +15 -16
- data/app/controllers/spree/admin/resource_controller.rb +1 -1
- data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
- data/app/controllers/spree/admin/shipments_controller.rb +0 -3
- data/app/controllers/spree/admin/states_controller.rb +9 -9
- data/app/controllers/spree/admin/users_controller.rb +18 -42
- data/app/controllers/spree/admin/variants_controller.rb +22 -21
- data/app/controllers/spree/admin/zones_controller.rb +11 -11
- data/app/controllers/spree/content_controller.rb +1 -1
- data/app/controllers/spree/locale_controller.rb +2 -2
- data/app/controllers/spree/orders_controller.rb +4 -6
- data/app/controllers/spree/products_controller.rb +1 -1
- data/app/controllers/spree/states_controller.rb +4 -7
- data/app/helpers/spree/admin/base_helper.rb +4 -0
- data/app/helpers/spree/admin/navigation_helper.rb +4 -16
- data/app/helpers/spree/base_helper.rb +22 -3
- data/app/models/spree/activator.rb +4 -1
- data/app/models/spree/address.rb +45 -45
- data/app/models/spree/adjustment.rb +4 -4
- data/app/models/spree/app_configuration.rb +12 -0
- data/app/models/spree/calculator/default_tax.rb +1 -3
- data/app/models/spree/calculator/flat_percent_item_total.rb +0 -2
- data/app/models/spree/calculator/flat_rate.rb +0 -3
- data/app/models/spree/calculator/flexi_rate.rb +1 -3
- data/app/models/spree/calculator/per_item.rb +1 -6
- data/app/models/spree/calculator/price_sack.rb +0 -2
- data/app/models/spree/country.rb +1 -1
- data/app/models/spree/creditcard.rb +9 -10
- data/app/models/spree/gateway.rb +0 -2
- data/app/models/spree/image.rb +18 -2
- data/app/models/spree/inventory_unit.rb +4 -2
- data/app/models/spree/mail_method.rb +1 -6
- data/app/models/spree/option_type.rb +3 -1
- data/app/models/spree/order.rb +68 -62
- data/app/models/spree/payment.rb +1 -1
- data/app/models/spree/payment_method.rb +0 -6
- data/app/models/spree/product/scopes.rb +44 -44
- data/app/models/spree/product.rb +44 -26
- data/app/models/spree/product_property.rb +0 -2
- data/app/models/spree/property.rb +0 -16
- data/app/models/spree/prototype.rb +0 -1
- data/app/models/spree/return_authorization.rb +0 -2
- data/app/models/spree/shipment.rb +2 -3
- data/app/models/spree/shipping_category.rb +0 -2
- data/app/models/spree/shipping_method.rb +1 -2
- data/app/models/spree/shipping_rate.rb +9 -0
- data/app/models/spree/state.rb +10 -2
- data/app/models/spree/{state_event.rb → state_change.rb} +1 -4
- data/app/models/spree/tax_rate.rb +3 -3
- data/app/models/spree/taxon.rb +1 -6
- data/app/models/spree/taxonomy.rb +3 -6
- data/app/models/spree/user.rb +1 -0
- data/app/models/spree/variant.rb +3 -4
- data/app/models/spree/zone.rb +0 -10
- data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +1 -1
- data/app/views/spree/admin/configurations/index.html.erb +4 -0
- data/app/views/spree/admin/image_settings/edit.html.erb +91 -0
- data/app/views/spree/admin/image_settings/show.html.erb +11 -0
- data/app/views/spree/admin/images/index.html.erb +3 -3
- data/app/views/spree/admin/mail_methods/_form.html.erb +1 -1
- data/app/views/spree/admin/mail_methods/index.html.erb +1 -1
- data/app/views/spree/admin/option_types/_option_value_fields.html.erb +1 -1
- data/app/views/spree/admin/option_types/index.html.erb +1 -1
- data/app/views/spree/admin/option_types/new.js.erb +1 -1
- data/app/views/spree/admin/orders/_form.html.erb +3 -5
- data/app/views/spree/admin/orders/_line_item.html.erb +1 -1
- data/app/views/spree/admin/orders/customer_details/_form.html.erb +1 -1
- data/app/views/spree/admin/orders/history.html.erb +2 -2
- data/app/views/spree/admin/orders/index.html.erb +19 -19
- data/app/views/spree/admin/payment_methods/_form.html.erb +1 -1
- data/app/views/spree/admin/payment_methods/index.html.erb +1 -3
- data/app/views/spree/admin/payments/_list.html.erb +1 -1
- data/app/views/spree/admin/product_properties/index.html.erb +1 -1
- data/app/views/spree/admin/products/_form.html.erb +30 -27
- data/app/views/spree/admin/products/index.html.erb +9 -9
- data/app/views/spree/admin/products/new.html.erb +28 -4
- data/app/views/spree/admin/products/new.js.erb +1 -1
- data/app/views/spree/admin/properties/index.html.erb +1 -1
- data/app/views/spree/admin/properties/new.js.erb +1 -1
- data/app/views/spree/admin/prototypes/index.html.erb +1 -1
- data/app/views/spree/admin/prototypes/new.js.erb +1 -1
- data/app/views/spree/admin/prototypes/show.html.erb +42 -0
- data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
- data/app/views/spree/admin/shared/_address_form.html.erb +1 -1
- data/app/views/spree/admin/shared/_calculator_fields.html.erb +2 -2
- data/app/views/spree/admin/shared/_head.html.erb +3 -3
- data/app/views/spree/admin/shared/_order_details.html.erb +1 -1
- data/app/views/spree/admin/shared/_order_tabs.html.erb +6 -6
- data/app/views/spree/admin/shared/_product_sub_menu.html.erb +0 -1
- data/app/views/spree/admin/shared/_report_criteria.html.erb +3 -3
- data/app/views/spree/admin/shared/_tabs.html.erb +1 -1
- data/app/views/spree/admin/shared/_update_order_state.js +5 -4
- data/app/views/spree/admin/shipments/index.html.erb +1 -1
- data/app/views/spree/admin/shipping_categories/index.html.erb +1 -1
- data/app/views/spree/admin/shipping_methods/index.html.erb +1 -1
- data/app/views/spree/admin/states/_state_list.html.erb +1 -1
- data/app/views/spree/admin/states/new.js.erb +1 -1
- data/app/views/spree/admin/tax_categories/index.html.erb +2 -2
- data/app/views/spree/admin/tax_rates/index.html.erb +2 -2
- data/app/views/spree/admin/taxonomies/_list.html.erb +1 -1
- data/app/views/spree/admin/trackers/_form.html.erb +1 -1
- data/app/views/spree/admin/trackers/index.html.erb +1 -1
- data/app/views/spree/admin/users/_form.html.erb +1 -16
- data/app/views/spree/admin/users/index.html.erb +3 -4
- data/app/views/spree/admin/variants/index.html.erb +2 -2
- data/app/views/spree/admin/variants/new.js.erb +1 -1
- data/app/views/spree/admin/zones/index.html.erb +1 -1
- data/app/views/spree/checkout/_address.html.erb +1 -1
- data/app/views/spree/checkout/edit.html.erb +1 -1
- data/app/views/spree/checkout/registration.html.erb +2 -2
- data/app/views/spree/order_mailer/confirm_email.text.erb +3 -3
- data/app/views/spree/orders/show.html.erb +2 -2
- data/app/views/spree/products/_cart_form.html.erb +1 -2
- data/app/views/spree/products/_image.html.erb +1 -1
- data/app/views/spree/products/show.html.erb +3 -3
- data/app/views/spree/shared/_filters.html.erb +26 -24
- data/app/views/spree/shared/_google_analytics.html.erb +26 -26
- data/app/views/spree/shared/_products.html.erb +2 -2
- data/app/views/spree/shared/_search.html.erb +1 -1
- data/app/views/spree/shared/_store_menu.html.erb +1 -1
- data/app/views/spree/states/index.js.erb +1 -1
- data/config/initializers/rails_3_1.rb +3 -3
- data/config/locales/en.yml +40 -35
- data/config/routes.rb +5 -13
- data/db/migrate/20101026184714_migrate_transactions_to_payment_state.rb +4 -4
- data/db/migrate/20111007143030_namespace_top_level_models.rb +0 -3
- data/db/migrate/20120203001428_rename_state_events_to_state_changes.rb +9 -0
- data/db/migrate/20120315064358_migrate_images_from_products_to_variants.rb +35 -0
- data/lib/generators/spree/dummy/templates/rails/database.yml +48 -20
- data/lib/generators/spree/install/install_generator.rb +17 -1
- data/lib/generators/spree/install/templates/app/assets/javascripts/admin/all.js +0 -1
- data/lib/generators/spree/install/templates/app/assets/javascripts/store/all.js +0 -1
- data/lib/generators/spree/install/templates/app/assets/stylesheets/admin/all.css +0 -1
- data/lib/generators/spree/install/templates/app/assets/stylesheets/store/all.css +0 -1
- data/lib/generators/spree/sandbox/sandbox_generator.rb +9 -2
- data/lib/spree/core/calculated_adjustments.rb +29 -34
- data/lib/spree/core/controller_helpers.rb +36 -34
- data/lib/spree/core/custom_fixtures.rb +1 -1
- data/lib/spree/core/delegate_belongs_to.rb +22 -24
- data/lib/spree/core/engine.rb +3 -3
- data/lib/spree/core/environment_extension.rb +12 -15
- data/lib/spree/core/mail_settings.rb +1 -1
- data/lib/spree/core/permalinks.rb +24 -16
- data/lib/spree/core/preference_rescue.rb +1 -1
- data/lib/spree/core/respond_with.rb +13 -8
- data/lib/spree/core/responder.rb +1 -2
- data/lib/spree/core/search/base.rb +36 -19
- data/lib/spree/core/ssl_requirement.rb +18 -10
- data/lib/spree/core/testing_support/common_rake.rb +1 -1
- data/lib/spree/core/testing_support/factories/product_factory.rb +9 -9
- data/lib/spree/core/testing_support/factories/role_factory.rb +1 -1
- data/lib/spree/core/testing_support/factories/shipping_category_factory.rb +1 -1
- data/lib/spree/core/testing_support/factories/shipping_method_factory.rb +3 -3
- data/lib/spree/core/testing_support/factories/user_factory.rb +1 -1
- data/lib/spree/core/testing_support/factories/zone_factory.rb +4 -2
- data/lib/spree/core/validators/email.rb +23 -0
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +2 -2
- data/lib/spree/product_filters.rb +10 -19
- data/lib/tasks/core.rake +1 -1
- data/vendor/assets/javascripts/jquery.alerts/jquery.alerts.css.erb +5 -5
- data/vendor/assets/stylesheets/jquery-ui.datepicker.css.erb +1 -1
- metadata +68 -140
- data/app/assets/images/noimage/large.png +0 -0
- data/app/controllers/spree/admin/product_groups_controller.rb +0 -49
- data/app/controllers/spree/admin/product_scopes_controller.rb +0 -39
- data/app/helpers/spree/admin/product_groups_helper.rb +0 -14
- data/app/helpers/spree/admin/product_properties_helper.rb +0 -24
- data/app/models/spree/product_group.rb +0 -200
- data/app/models/spree/product_scope.rb +0 -79
- data/app/views/spree/admin/banners/_gateway.html.erb +0 -14
- data/app/views/spree/admin/product_groups/_preview.html.erb +0 -33
- data/app/views/spree/admin/product_groups/_product_scope.html.erb +0 -24
- data/app/views/spree/admin/product_groups/edit.html.erb +0 -59
- data/app/views/spree/admin/product_groups/index.html.erb +0 -37
- data/app/views/spree/admin/product_groups/new.html.erb +0 -12
- data/app/views/spree/admin/product_groups/show.html.erb +0 -32
- data/app/views/spree/admin/product_scopes/create.js.erb +0 -6
- data/app/views/spree/admin/product_scopes/destroy.js.erb +0 -3
- data/app/views/spree/admin/product_scopes/new.html.erb +0 -1
- data/app/views/spree/admin/shared/_group_from_products_form.html.erb +0 -12
- data/db/migrate/20091012120519_product_groups_and_scopes.rb +0 -18
- data/db/migrate/20100126103714_create_products_product_groups.rb +0 -8
- data/db/migrate/20100306153445_fix_by_popularity.rb +0 -9
- data/db/migrate/20120523061241_convert_sales_tax_to_default_tax.rb +0 -9
- data/lib/spree/core/testing_support/factories/product_group_factory.rb +0 -5
- data/lib/spree/core/testing_support/factories/product_scope_factory.rb +0 -7
- data/lib/spree/core/theme_support/hook_listener.rb +0 -145
- data/lib/spree/core/theme_support.rb +0 -1
- data/vendor/assets/javascripts/jquery.alerts/jquery.alerts.css +0 -57
@@ -1,7 +1,19 @@
|
|
1
1
|
module Spree
|
2
2
|
module BaseHelper
|
3
|
+
|
4
|
+
# Defined because Rails' current_page? helper is not working when Spree is mounted at root.
|
5
|
+
def current_spree_page?(url)
|
6
|
+
path = request.fullpath.gsub(/^\/\//, '/')
|
7
|
+
if url.is_a?(String)
|
8
|
+
return path == url
|
9
|
+
elsif url.is_a?(Hash)
|
10
|
+
return path == spree.url_for(url)
|
11
|
+
end
|
12
|
+
return false
|
13
|
+
end
|
14
|
+
|
3
15
|
def link_to_cart(text = nil)
|
4
|
-
return "" if
|
16
|
+
return "" if current_spree_page?(cart_path)
|
5
17
|
|
6
18
|
text = text ? h(text) : t('cart')
|
7
19
|
css_class = nil
|
@@ -36,7 +48,6 @@ module Spree
|
|
36
48
|
|
37
49
|
# human readable list of variant options
|
38
50
|
def variant_options(v, allow_back_orders = Spree::Config[:allow_backorders], include_style = true)
|
39
|
-
ActiveSupport::Deprecation.warn('variant_options method is deprecated, and will be removed in 0.80.0', caller)
|
40
51
|
list = v.options_text
|
41
52
|
|
42
53
|
# We shouldn't show out of stock if the product is infact in stock
|
@@ -110,7 +121,7 @@ module Spree
|
|
110
121
|
crumbs << content_tag(:li, content_tag(:span, t(:products)))
|
111
122
|
end
|
112
123
|
crumb_list = content_tag(:ul, raw(crumbs.flatten.map{|li| li.mb_chars}.join), :class => 'inline')
|
113
|
-
content_tag(:
|
124
|
+
content_tag(:nav, crumb_list, :id => 'breadcrumbs')
|
114
125
|
end
|
115
126
|
|
116
127
|
def taxons_tree(root_taxon, current_taxon, max_level = 1)
|
@@ -159,5 +170,13 @@ module Spree
|
|
159
170
|
return current_order.item_count
|
160
171
|
end
|
161
172
|
end
|
173
|
+
|
174
|
+
def gem_available?(name)
|
175
|
+
Gem::Specification.find_by_name(name)
|
176
|
+
rescue Gem::LoadError
|
177
|
+
false
|
178
|
+
rescue
|
179
|
+
Gem.available?(name)
|
180
|
+
end
|
162
181
|
end
|
163
182
|
end
|
@@ -13,7 +13,10 @@ module Spree
|
|
13
13
|
end
|
14
14
|
|
15
15
|
scope :event_name_starts_with, lambda{ |name| where('event_name LIKE ?', "#{name}%") }
|
16
|
-
|
16
|
+
|
17
|
+
def self.active
|
18
|
+
where('(starts_at IS NULL OR starts_at < ?) AND (expires_at IS NULL OR expires_at > ?)', Time.now, Time.now)
|
19
|
+
end
|
17
20
|
|
18
21
|
def activate(payload)
|
19
22
|
end
|
data/app/models/spree/address.rb
CHANGED
@@ -23,49 +23,9 @@ module Spree
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
def state_validate
|
27
|
-
#skip state validation without country (also required)
|
28
|
-
#or when disabled by perfernce
|
29
|
-
return if self.country_id.blank? || !Spree::Config[:address_requires_state]
|
30
|
-
|
31
|
-
#ensure associated state belongs to country
|
32
|
-
if self.state_id.present?
|
33
|
-
if self.state.country_id == self.country_id
|
34
|
-
self.state_name = nil #not required as we have a valid state and country combo
|
35
|
-
else
|
36
|
-
if self.state_name.present?
|
37
|
-
|
38
|
-
self.state_id = nil
|
39
|
-
else
|
40
|
-
errors.add(:state, :invalid)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
#ensure state_name belongs to country without states, or that it matches a predefined state name/abbr
|
46
|
-
if self.state_name.present?
|
47
|
-
if country.states.present?
|
48
|
-
states = country.states.find_all_by_name_or_abbr(self.state_name)
|
49
|
-
|
50
|
-
if states.size == 1
|
51
|
-
self.state = states.first
|
52
|
-
self.state_name = nil
|
53
|
-
else
|
54
|
-
errors.add(:state, :invalid)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
#ensure at least one state field is populated
|
60
|
-
if self.state_id.blank? && self.state_name.blank?
|
61
|
-
errors.add(:state, :blank)
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
26
|
def self.default
|
67
|
-
country = Spree::Country.
|
68
|
-
new(:country => country
|
27
|
+
country = Spree::Country.find(Spree::Config[:default_country_id]) rescue Spree::Country.first
|
28
|
+
new({:country => country}, :without_protection => true)
|
69
29
|
end
|
70
30
|
|
71
31
|
# can modify an address if it's not been used in an order (but checkouts controller has finer control)
|
@@ -74,7 +34,7 @@ module Spree
|
|
74
34
|
# end
|
75
35
|
|
76
36
|
def full_name
|
77
|
-
|
37
|
+
"#{firstname} #{lastname}".strip
|
78
38
|
end
|
79
39
|
|
80
40
|
def state_text
|
@@ -82,8 +42,7 @@ module Spree
|
|
82
42
|
end
|
83
43
|
|
84
44
|
def zone
|
85
|
-
(state && state.zone) ||
|
86
|
-
(country && country.zone)
|
45
|
+
(state && state.zone) || (country && country.zone)
|
87
46
|
end
|
88
47
|
|
89
48
|
def zones
|
@@ -117,5 +76,46 @@ module Spree
|
|
117
76
|
def empty?
|
118
77
|
attributes.except('id', 'created_at', 'updated_at', 'order_id', 'country_id').all? { |_, v| v.nil? }
|
119
78
|
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def state_validate
|
83
|
+
#skip state validation without country (also required)
|
84
|
+
#or when disabled by perfernce
|
85
|
+
return if !country.present? || !Spree::Config[:address_requires_state]
|
86
|
+
|
87
|
+
#ensure associated state belongs to country
|
88
|
+
if state.present?
|
89
|
+
if state.country == country
|
90
|
+
self.state_name = nil #not required as we have a valid state and country combo
|
91
|
+
else
|
92
|
+
if state_name.present?
|
93
|
+
self.state = nil
|
94
|
+
else
|
95
|
+
errors.add(:state, :invalid)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
#ensure state_name belongs to country without states, or that it matches a predefined state name/abbr
|
101
|
+
if state_name.present?
|
102
|
+
if country.states.present?
|
103
|
+
states = country.states.find_all_by_name_or_abbr(state_name)
|
104
|
+
|
105
|
+
if states.size == 1
|
106
|
+
self.state = states.first
|
107
|
+
self.state_name = nil
|
108
|
+
else
|
109
|
+
errors.add(:state, :invalid)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
#ensure at least one state field is populated
|
115
|
+
if !state.present? && state_name.blank?
|
116
|
+
errors.add(:state, :blank)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
120
|
end
|
121
121
|
end
|
@@ -33,7 +33,7 @@ module Spree
|
|
33
33
|
|
34
34
|
scope :tax, lambda { where(:originator_type => 'Spree::TaxRate', :adjustable_type => 'Spree::Order') }
|
35
35
|
scope :price, lambda { where(:adjustable_type => 'Spree::LineItem') }
|
36
|
-
scope :shipping, lambda { where(:
|
36
|
+
scope :shipping, lambda { where(:label => I18n.t(:shipping)) }
|
37
37
|
scope :optional, where(:mandatory => false)
|
38
38
|
scope :eligible, where(:eligible => true)
|
39
39
|
scope :charge, where("amount >= 0")
|
@@ -75,9 +75,9 @@ module Spree
|
|
75
75
|
|
76
76
|
private
|
77
77
|
|
78
|
-
|
79
|
-
|
80
|
-
|
78
|
+
def update_adjustable
|
79
|
+
adjustable.update! if adjustable.is_a? Order
|
80
|
+
end
|
81
81
|
|
82
82
|
end
|
83
83
|
end
|
@@ -48,6 +48,7 @@ module Spree
|
|
48
48
|
preference :default_seo_title, :string, :default => ''
|
49
49
|
preference :dismissed_spree_alerts, :string, :default => ''
|
50
50
|
preference :last_check_for_spree_alerts, :string, :default => nil
|
51
|
+
preference :layout, :string, :default => '/spree/layouts/spree_application'
|
51
52
|
preference :logo, :string, :default => 'admin/bg/spree_50.png'
|
52
53
|
preference :max_level_in_taxons_menu, :integer, :default => 1 # maximum nesting level in taxons menu
|
53
54
|
preference :orders_per_page, :integer, :default => 15
|
@@ -64,6 +65,17 @@ module Spree
|
|
64
65
|
preference :tax_using_ship_address, :boolean, :default => true
|
65
66
|
preference :track_inventory_levels, :boolean, :default => true # will not track on_hand values for variants /products
|
66
67
|
|
68
|
+
# Preferences related to image settings
|
69
|
+
preference :attachment_default_url, :string, :default => '/spree/products/:id/:style/:basename.:extension'
|
70
|
+
preference :attachment_path, :string, :default => ':rails_root/public/spree/products/:id/:style/:basename.:extension'
|
71
|
+
preference :attachment_styles, :string, :default => "{\"mini\":\"48x48>\",\"small\":\"100x100>\",\"product\":\"240x240>\",\"large\":\"600x600>\"}"
|
72
|
+
preference :attachment_default_style, :string, :default => 'product'
|
73
|
+
preference :s3_access_key, :string
|
74
|
+
preference :s3_bucket, :string
|
75
|
+
preference :s3_secret, :string
|
76
|
+
preference :s3_headers, :string, :default => "{\"Cache-Control\":\"max-age=31557600\"}"
|
77
|
+
preference :use_s3, :boolean, :default => false # Use S3 for images rather than the file system
|
78
|
+
|
67
79
|
# searcher_class allows spree extension writers to provide their own Search class
|
68
80
|
def searcher_class
|
69
81
|
@searcher_class ||= Spree::Core::Search::Base
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require_dependency 'spree/calculator'
|
2
|
-
|
3
1
|
module Spree
|
4
2
|
class Calculator::DefaultTax < Calculator
|
5
3
|
def self.description
|
@@ -19,7 +17,7 @@ module Spree
|
|
19
17
|
private
|
20
18
|
|
21
19
|
def rate
|
22
|
-
|
20
|
+
self.calculable
|
23
21
|
end
|
24
22
|
|
25
23
|
def compute_order(order)
|
@@ -1,12 +1,10 @@
|
|
1
|
-
require_dependency 'spree/calculator'
|
2
|
-
|
3
1
|
module Spree
|
4
2
|
class Calculator::FlexiRate < Calculator
|
5
3
|
preference :first_item, :decimal, :default => 0.0
|
6
4
|
preference :additional_item, :decimal, :default => 0.0
|
7
5
|
preference :max_items, :integer, :default => 0
|
8
6
|
|
9
|
-
attr_accessible :preferred_first_item, :
|
7
|
+
attr_accessible :preferred_first_item, :preferred_additional_tiem, :preferred_max_items
|
10
8
|
|
11
9
|
def self.description
|
12
10
|
I18n.t(:flexible_rate)
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require_dependency 'spree/calculator'
|
2
|
-
|
3
1
|
module Spree
|
4
2
|
class Calculator::PerItem < Calculator
|
5
3
|
preference :amount, :decimal, :default => 0
|
@@ -11,10 +9,7 @@ module Spree
|
|
11
9
|
end
|
12
10
|
|
13
11
|
def compute(object=nil)
|
14
|
-
|
15
|
-
self.preferred_amount * object.line_items.reduce(0) do |sum, value|
|
16
|
-
sum + value.quantity
|
17
|
-
end
|
12
|
+
self.preferred_amount * object.line_items.length
|
18
13
|
end
|
19
14
|
end
|
20
15
|
end
|
data/app/models/spree/country.rb
CHANGED
@@ -11,8 +11,7 @@ module Spree
|
|
11
11
|
validates :number, :presence => true, :unless => :has_payment_profile?, :on => :create
|
12
12
|
validates :verification_value, :presence => true, :unless => :has_payment_profile?, :on => :create
|
13
13
|
|
14
|
-
attr_accessible :first_name, :last_name, :number, :verification_value, :year,
|
15
|
-
:month, :gateway_customer_profile_id, :gateway_payment_profile_id
|
14
|
+
attr_accessible :first_name, :last_name, :number, :verification_value, :year, :month, :gateway_customer_profile_id
|
16
15
|
|
17
16
|
def process!(payment)
|
18
17
|
if Spree::Config[:auto_capture]
|
@@ -174,12 +173,12 @@ module Spree
|
|
174
173
|
record_log payment, response
|
175
174
|
|
176
175
|
if response.success?
|
177
|
-
Payment.create({
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
176
|
+
Payment.create({:order => payment.order,
|
177
|
+
:source => payment,
|
178
|
+
:payment_method => payment.payment_method,
|
179
|
+
:amount => amount.abs * -1,
|
180
|
+
:response_code => response.authorization,
|
181
|
+
:state => 'completed'}, :without_protection => true)
|
183
182
|
else
|
184
183
|
gateway_error(response)
|
185
184
|
end
|
@@ -214,7 +213,7 @@ module Spree
|
|
214
213
|
end
|
215
214
|
|
216
215
|
def record_log(payment, response)
|
217
|
-
payment.log_entries.create(:details => response.to_yaml)
|
216
|
+
payment.log_entries.create({:details => response.to_yaml}, :without_protection => true)
|
218
217
|
end
|
219
218
|
|
220
219
|
def gateway_error(error)
|
@@ -261,7 +260,7 @@ module Spree
|
|
261
260
|
end
|
262
261
|
|
263
262
|
def spree_cc_type
|
264
|
-
return 'visa' if Rails.env
|
263
|
+
return 'visa' if Rails.env.development?
|
265
264
|
self.cc_type
|
266
265
|
end
|
267
266
|
|
data/app/models/spree/gateway.rb
CHANGED
data/app/models/spree/image.rb
CHANGED
@@ -1,19 +1,35 @@
|
|
1
1
|
module Spree
|
2
2
|
class Image < Asset
|
3
|
+
validates_attachment_presence :attachment
|
3
4
|
validate :no_attachment_errors
|
4
5
|
|
5
|
-
attr_accessible :
|
6
|
+
attr_accessible :attachment, :alt, :viewable_id
|
6
7
|
|
7
8
|
has_attached_file :attachment,
|
8
9
|
:styles => { :mini => '48x48>', :small => '100x100>', :product => '240x240>', :large => '600x600>' },
|
9
10
|
:default_style => :product,
|
10
11
|
:url => '/spree/products/:id/:style/:basename.:extension',
|
11
12
|
:path => ':rails_root/public/spree/products/:id/:style/:basename.:extension'
|
12
|
-
|
13
13
|
# save the w,h of the original image (from which others can be calculated)
|
14
14
|
# we need to look at the write-queue for images which have not been saved yet
|
15
15
|
after_post_process :find_dimensions
|
16
16
|
|
17
|
+
attr_accessible :attachment, :position
|
18
|
+
|
19
|
+
# Load user defined paperclip settings
|
20
|
+
if Spree::Config[:use_s3]
|
21
|
+
s3_creds = { :access_key_id => Spree::Config[:s3_access_key], :secret_access_key => Spree::Config[:s3_secret], :bucket => Spree::Config[:s3_bucket] }
|
22
|
+
Spree::Image.attachment_definitions[:attachment][:storage] = :s3
|
23
|
+
Spree::Image.attachment_definitions[:attachment][:s3_credentials] = s3_creds
|
24
|
+
Spree::Image.attachment_definitions[:attachment][:s3_headers] = ActiveSupport::JSON.decode(Spree::Config[:s3_headers])
|
25
|
+
Spree::Image.attachment_definitions[:attachment][:bucket] = Spree::Config[:s3_bucket]
|
26
|
+
end
|
27
|
+
|
28
|
+
Spree::Image.attachment_definitions[:attachment][:styles] = ActiveSupport::JSON.decode(Spree::Config[:attachment_styles])
|
29
|
+
Spree::Image.attachment_definitions[:attachment][:path] = Spree::Config[:attachment_path]
|
30
|
+
Spree::Image.attachment_definitions[:attachment][:default_url] = Spree::Config[:attachment_default_url]
|
31
|
+
Spree::Image.attachment_definitions[:attachment][:default_style] = Spree::Config[:attachment_default_style]
|
32
|
+
|
17
33
|
#used by admin products autocomplete
|
18
34
|
def mini_url
|
19
35
|
attachment.url(:mini, false)
|
@@ -99,8 +99,10 @@ module Spree
|
|
99
99
|
|
100
100
|
shipment = order.shipments.detect { |shipment| !shipment.shipped? }
|
101
101
|
|
102
|
-
|
103
|
-
|
102
|
+
attr_accessible :shipment
|
103
|
+
|
104
|
+
sold.times { order.inventory_units.create({:variant => variant, :state => 'sold', :shipment => shipment}, :without_protection => true) }
|
105
|
+
back_order.times { order.inventory_units.create({:variant => variant, :state => 'backordered', :shipment => shipment}, :without_protection => true) }
|
104
106
|
end
|
105
107
|
|
106
108
|
def update_order
|
@@ -16,12 +16,7 @@ module Spree
|
|
16
16
|
preference :mail_bcc, :string, :default => 'spree@example.com'
|
17
17
|
preference :intercept_email, :string, :default => nil
|
18
18
|
|
19
|
-
attr_accessible :environment, :preferred_enable_mail_delivery,
|
20
|
-
:preferred_mails_from, :preferred_mail_bcc,
|
21
|
-
:preferred_intercept_email, :preferred_mail_domain,
|
22
|
-
:preferred_mail_host, :preferred_mail_port,
|
23
|
-
:preferred_secure_connection_type, :preferred_mail_auth_type,
|
24
|
-
:preferred_smtp_username, :preferred_smtp_password
|
19
|
+
attr_accessible :environment, :preferred_enable_mail_delivery, :preferred_mails_from, :preferred_mail_bcc, :preferred_intercept_email, :preferred_mail_domain, :preferred_mail_host, :preferred_mail_port, :preferred_secure_connection_type, :preferred_mail_auth_type, :preferred_smtp_username, :preferred_smtp_password
|
25
20
|
|
26
21
|
validates :environment, :presence => true
|
27
22
|
|
@@ -4,11 +4,13 @@ module Spree
|
|
4
4
|
has_many :product_option_types, :dependent => :destroy
|
5
5
|
has_and_belongs_to_many :prototypes, :join_table => 'spree_option_types_prototypes'
|
6
6
|
|
7
|
-
attr_accessible :name, :presentation
|
7
|
+
attr_accessible :name, :presentation
|
8
8
|
|
9
9
|
validates :name, :presentation, :presence => true
|
10
10
|
default_scope :order => "#{self.table_name}.position"
|
11
11
|
|
12
|
+
attr_accessible :option_values_attributes
|
13
|
+
|
12
14
|
accepts_nested_attributes_for :option_values, :reject_if => lambda { |ov| ov[:name].blank? || ov[:presentation].blank? }, :allow_destroy => true
|
13
15
|
end
|
14
16
|
end
|