spree_core 0.30.2 → 0.40.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/admin/base_controller.rb +0 -31
- data/app/controllers/admin/orders_controller.rb +10 -9
- data/app/controllers/admin/overview_controller.rb +1 -1
- data/app/controllers/admin/products_controller.rb +8 -8
- data/app/controllers/admin/properties_controller.rb +1 -1
- data/app/controllers/admin/shipments_controller.rb +6 -3
- data/app/controllers/admin/shipping_methods_controller.rb +1 -1
- data/app/controllers/admin/tax_rates_controller.rb +2 -2
- data/app/controllers/admin/taxons_controller.rb +1 -2
- data/app/controllers/admin/users_controller.rb +7 -8
- data/app/controllers/admin/variants_controller.rb +2 -2
- data/app/controllers/countries_controller.rb +1 -1
- data/app/controllers/locale_controller.rb +1 -1
- data/app/controllers/spree/base_controller.rb +1 -117
- data/app/controllers/states_controller.rb +1 -1
- data/app/helpers/spree/base_helper.rb +1 -7
- data/app/helpers/taxons_helper.rb +2 -2
- data/app/models/app_configuration.rb +0 -3
- data/app/models/calculator/flat_percent_item_total.rb +2 -1
- data/app/models/calculator/vat.rb +1 -1
- data/app/models/creditcard.rb +1 -1
- data/app/models/gateway/authorize_net.rb +13 -2
- data/app/models/gateway/authorize_net_cim.rb +11 -0
- data/app/models/gateway/beanstream.rb +30 -7
- data/app/models/inventory_unit.rb +21 -31
- data/app/models/line_item.rb +7 -8
- data/app/models/order.rb +4 -1
- data/app/models/product_group.rb +4 -8
- data/app/models/property.rb +1 -3
- data/app/models/return_authorization.rb +6 -1
- data/app/models/state_event.rb +3 -3
- data/app/models/state_monitor.rb +16 -16
- data/app/models/taxon.rb +6 -7
- data/app/models/user.rb +4 -0
- data/app/views/admin/general_settings/edit.html.erb +0 -8
- data/app/views/admin/general_settings/show.html.erb +5 -10
- data/app/views/admin/images/_form.html.erb +1 -1
- data/app/views/admin/images/index.html.erb +1 -1
- data/app/views/admin/option_types/new.html.erb +1 -1
- data/app/views/admin/orders/_add_product.html.erb +3 -3
- data/app/views/admin/orders/_form.html.erb +3 -0
- data/app/views/admin/orders/_user_form.html.erb +1 -1
- data/app/views/admin/orders/index.html.erb +2 -2
- data/app/views/admin/orders/show.html.erb +3 -8
- data/app/views/admin/orders/user.html.erb +1 -1
- data/app/views/admin/product_groups/index.html.erb +1 -1
- data/app/views/admin/product_groups/show.html.erb +1 -1
- data/app/views/admin/products/index.html.erb +1 -1
- data/app/views/admin/return_authorizations/_form.html.erb +3 -1
- data/app/views/admin/shared/_address_form.html.erb +1 -1
- data/app/views/admin/shared/_configuration_menu.html.erb +11 -11
- data/app/views/admin/shared/_order_tabs.html.erb +12 -12
- data/app/views/admin/shared/_product_tabs.html.erb +6 -6
- data/app/views/admin/states/_state_list.html.erb +2 -2
- data/app/views/admin/taxonomies/_js_head.html.erb +6 -8
- data/app/views/admin/taxonomies/edit.html.erb +11 -11
- data/app/views/admin/taxonomies/get_children.json.erb +5 -5
- data/app/views/admin/taxons/available.js.erb +10 -10
- data/app/views/admin/taxons/selected.html.erb +13 -13
- data/app/views/admin/variants/index.html.erb +1 -1
- data/app/views/checkout/_address.html.erb +2 -2
- data/app/views/layouts/admin.html.erb +1 -2
- data/app/views/layouts/spree_application.html.erb +1 -2
- data/app/views/shared/_admin_head.html.erb +3 -3
- data/app/views/shared/_doc_and_xmlns.html.erb +2 -0
- data/app/views/shared/_filters.html.erb +3 -28
- data/app/views/taxons/show.html.erb +7 -5
- data/config/initializers/spree.rb +1 -19
- data/config/locales/en.yml +0 -2
- data/config/routes.rb +3 -5
- data/db/migrate/20091007134354_change_taxons_to_nested_set.rb +2 -2
- data/lib/product_filters.rb +10 -11
- data/lib/scopes/product.rb +15 -0
- data/lib/spree/mail_settings.rb +2 -4
- data/lib/spree/preference_access.rb +3 -3
- data/lib/spree_base.rb +116 -0
- data/lib/spree_core.rb +3 -1
- data/lib/spree_core/preferences/model_hooks.rb +1 -1
- data/lib/tasks/install.rake +0 -1
- data/public/javascripts/admin.js +0 -6
- data/public/javascripts/admin/checkouts/edit.js +41 -40
- data/public/javascripts/admin/orders/edit_form.js +5 -4
- data/public/javascripts/jquery.cookie.js +96 -0
- data/public/javascripts/jquery.delayedobserver.js +35 -0
- data/public/javascripts/jsTree/jquery.jstree.js +3510 -0
- data/public/javascripts/jsTree/themes/apple/d.png +0 -0
- data/public/javascripts/jsTree/themes/apple/style.css +60 -34
- data/public/javascripts/jsTree/themes/apple/throbber.gif +0 -0
- data/public/javascripts/taxonomy.js +150 -149
- data/public/stylesheets/admin/admin.css +0 -34
- metadata +36 -43
- data/app/controllers/password_resets_controller.rb +0 -48
- data/app/helpers/users_helper.rb +0 -13
- data/app/models/spree/alert.rb +0 -13
- data/app/views/admin/shared/_alert.html.erb +0 -6
- data/app/views/shared/_login.html.erb +0 -21
- data/app/views/shared/_user_form.html.erb +0 -17
- data/lib/spree/i18n_utils.rb +0 -47
- data/public/javascripts/jquery.js +0 -19
- data/public/javascripts/jrails.autocomplete.js +0 -274
- data/public/javascripts/jrails.js +0 -1
- data/public/javascripts/jsTree/jquery.tree.js +0 -2058
- data/public/javascripts/jsTree/plugins/jquery.tree.contextmenu.js +0 -129
- data/public/javascripts/jsTree/themes/apple/icons.png +0 -0
@@ -12,7 +12,7 @@ class Calculator::Vat < Calculator
|
|
12
12
|
# list the vat rates for the default country
|
13
13
|
def self.default_rates
|
14
14
|
origin = Country.find(Spree::Config[:default_country_id])
|
15
|
-
calcs = Calculator::Vat.
|
15
|
+
calcs = Calculator::Vat.includes(:calculable => :zone).select {
|
16
16
|
|vat| vat.calculable.zone.country_list.include?(origin)
|
17
17
|
}
|
18
18
|
calcs.collect { |calc| calc.calculable }
|
data/app/models/creditcard.rb
CHANGED
@@ -134,7 +134,7 @@ class Creditcard < ActiveRecord::Base
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def credit(payment)
|
137
|
-
amount = payment.credit_allowed >= payment.order.outstanding_balance.abs ? payment.order.outstanding_balance : payment.credit_allowed
|
137
|
+
amount = payment.credit_allowed >= payment.order.outstanding_balance.abs ? payment.order.outstanding_balance.abs : payment.credit_allowed.abs
|
138
138
|
|
139
139
|
if payment_gateway.payment_profiles_supported?
|
140
140
|
response = payment_gateway.credit((amount * 100).round, self, payment.response_code, minimal_gateway_options(payment))
|
@@ -1,8 +1,19 @@
|
|
1
1
|
class Gateway::AuthorizeNet < Gateway
|
2
2
|
preference :login, :string
|
3
3
|
preference :password, :string
|
4
|
-
|
4
|
+
|
5
5
|
def provider_class
|
6
6
|
ActiveMerchant::Billing::AuthorizeNetGateway
|
7
|
-
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def options
|
10
|
+
# add :test key in the options hash, as that is what the ActiveMerchant::Billing::AuthorizeNetGateway expects
|
11
|
+
if self.prefers? :test_mode
|
12
|
+
self.class.default_preferences[:test] = true
|
13
|
+
else
|
14
|
+
self.class.default_preferences.delete(:test)
|
15
|
+
end
|
16
|
+
|
17
|
+
super
|
18
|
+
end
|
8
19
|
end
|
@@ -12,6 +12,17 @@ class Gateway::AuthorizeNetCim < Gateway
|
|
12
12
|
self.class
|
13
13
|
end
|
14
14
|
|
15
|
+
def options
|
16
|
+
# add :test key in the options hash, as that is what the ActiveMerchant::Billing::AuthorizeNetGateway expects
|
17
|
+
if self.prefers? :test_mode
|
18
|
+
self.class.default_preferences[:test] = true
|
19
|
+
else
|
20
|
+
self.class.default_preferences.delete(:test)
|
21
|
+
end
|
22
|
+
|
23
|
+
super
|
24
|
+
end
|
25
|
+
|
15
26
|
def authorize(amount, creditcard, gateway_options)
|
16
27
|
create_transaction(amount, creditcard, :auth_only)
|
17
28
|
end
|
@@ -12,29 +12,52 @@ class Gateway::Beanstream < Gateway
|
|
12
12
|
true
|
13
13
|
end
|
14
14
|
|
15
|
-
def create_profile(
|
15
|
+
def create_profile(payment)
|
16
|
+
creditcard = payment.source
|
16
17
|
if creditcard.gateway_customer_profile_id.nil?
|
17
|
-
options = options_for_create_customer_profile(creditcard,
|
18
|
+
options = options_for_create_customer_profile(creditcard, {})
|
18
19
|
verify_creditcard_name!(creditcard)
|
19
20
|
result = provider.store(creditcard, options)
|
20
21
|
if result.success?
|
21
22
|
creditcard.update_attributes(:gateway_customer_profile_id => result.params["customerCode"], :gateway_payment_profile_id => result.params["customer_vault_id"])
|
22
23
|
else
|
23
|
-
|
24
|
+
creditcard.gateway_error(result) if creditcard.respond_to? :gateway_error
|
25
|
+
creditcard.source.gateway_error(result)
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
29
|
+
|
30
|
+
def capture(transaction, creditcard, gateway_options)
|
31
|
+
beanstream_gateway.capture((transaction.amount*100).round, transaction.response_code, gateway_options)
|
32
|
+
end
|
33
|
+
|
34
|
+
def void(transaction_response, creditcard, gateway_options)
|
35
|
+
beanstream_gateway.void(transaction_response, gateway_options)
|
36
|
+
end
|
37
|
+
|
38
|
+
def credit(amount, creditcard, response_code, gateway_options = {})
|
39
|
+
amount = (amount * -1) if amount < 0
|
40
|
+
beanstream_gateway.credit(amount, response_code, gateway_options)
|
41
|
+
end
|
42
|
+
|
27
43
|
private
|
44
|
+
|
45
|
+
def beanstream_gateway
|
46
|
+
ActiveMerchant::Billing::Base.gateway_mode = preferred_server.to_sym
|
47
|
+
gateway_options = options
|
48
|
+
ActiveMerchant::Billing::BeanstreamGateway.new(gateway_options)
|
49
|
+
end
|
50
|
+
|
28
51
|
def verify_creditcard_name!(creditcard)
|
29
|
-
bill_address = creditcard.payments.first.
|
52
|
+
bill_address = creditcard.payments.first.order.bill_address
|
30
53
|
creditcard.first_name = bill_address.firstname unless creditcard.first_name?
|
31
54
|
creditcard.last_name = bill_address.lastname unless creditcard.last_name?
|
32
55
|
end
|
33
56
|
|
34
57
|
def options_for_create_customer_profile(creditcard, gateway_options)
|
35
|
-
|
36
|
-
address =
|
37
|
-
{ :email=>
|
58
|
+
order = creditcard.payments.first.order
|
59
|
+
address = order.bill_address
|
60
|
+
{ :email=>order.email,
|
38
61
|
:billing_address=>
|
39
62
|
{ :name=>address.full_name,
|
40
63
|
:phone=>address.phone,
|
@@ -34,42 +34,27 @@ class InventoryUnit < ActiveRecord::Base
|
|
34
34
|
def self.assign_opening_inventory(order)
|
35
35
|
return [] unless order.completed?
|
36
36
|
|
37
|
-
out_of_stock_items = []
|
38
|
-
|
39
37
|
#increase inventory to meet initial requirements
|
40
38
|
order.line_items.each do |line_item|
|
41
|
-
|
39
|
+
increase(order, line_item.variant, line_item.quantity)
|
42
40
|
end
|
43
|
-
|
44
|
-
out_of_stock_items
|
45
41
|
end
|
46
42
|
|
47
43
|
# manages both variant.count_on_hand and inventory unit creation
|
48
44
|
#
|
49
45
|
def self.increase(order, variant, quantity)
|
50
|
-
|
51
|
-
|
52
|
-
back_order = quantity
|
53
|
-
sold = 0
|
54
|
-
elsif variant.count_on_hand < quantity
|
55
|
-
back_order = quantity - (variant.count_on_hand < 0 ? 0 : variant.count_on_hand)
|
56
|
-
sold = quantity - back_order
|
57
|
-
else
|
58
|
-
back_order = 0
|
59
|
-
sold = quantity
|
60
|
-
end
|
46
|
+
back_order = determine_backorder(order, variant, quantity)
|
47
|
+
sold = quantity - back_order
|
61
48
|
|
62
49
|
#set on_hand if configured
|
63
50
|
if Spree::Config[:track_inventory_levels]
|
64
51
|
variant.decrement!(:count_on_hand, quantity)
|
65
52
|
end
|
66
53
|
|
67
|
-
#create units if configured
|
68
|
-
out_of_stock_items = []
|
54
|
+
#create units if configured
|
69
55
|
if Spree::Config[:create_inventory_units]
|
70
|
-
|
56
|
+
create_units(order, variant, sold, back_order)
|
71
57
|
end
|
72
|
-
out_of_stock_items
|
73
58
|
end
|
74
59
|
|
75
60
|
def self.decrease(order, variant, quantity)
|
@@ -84,9 +69,7 @@ class InventoryUnit < ActiveRecord::Base
|
|
84
69
|
|
85
70
|
# find the specified quantity of units with the specified status
|
86
71
|
def self.find_by_status(variant, quantity, status)
|
87
|
-
variant.inventory_units.
|
88
|
-
:conditions => ['status = ? ', status],
|
89
|
-
:limit => quantity)
|
72
|
+
variant.inventory_units.where(:status => status).limit(quantity)
|
90
73
|
end
|
91
74
|
|
92
75
|
private
|
@@ -94,6 +77,16 @@ class InventoryUnit < ActiveRecord::Base
|
|
94
77
|
Spree::Config[:allow_backorder_shipping] || self.sold?
|
95
78
|
end
|
96
79
|
|
80
|
+
def self.determine_backorder(order, variant, quantity)
|
81
|
+
if variant.on_hand == 0
|
82
|
+
quantity
|
83
|
+
elsif variant.on_hand.present? and variant.on_hand < quantity
|
84
|
+
quantity - (variant.on_hand < 0 ? 0 : variant.on_hand)
|
85
|
+
else
|
86
|
+
0
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
97
90
|
def self.destroy_units(order, variant, quantity)
|
98
91
|
variant_units = order.inventory_units.group_by(&:variant_id)[variant.id].sort_by(&:state)
|
99
92
|
|
@@ -104,17 +97,14 @@ class InventoryUnit < ActiveRecord::Base
|
|
104
97
|
end
|
105
98
|
|
106
99
|
def self.create_units(order, variant, sold, back_order)
|
107
|
-
|
108
|
-
|
109
|
-
sold.times do
|
110
|
-
order.inventory_units.create(:variant => variant, :state => "sold", :shipment => shipment)
|
100
|
+
if back_order > 0 && !Spree::Config[:allow_backorders]
|
101
|
+
raise "Cannot request back orders when backordering is disabled"
|
111
102
|
end
|
112
103
|
|
113
|
-
|
114
|
-
back_order.times { order.inventory_units.create(:variant => variant, :state => "backordered", :shipment => shipment) }
|
115
|
-
end
|
104
|
+
shipment = order.shipments.detect {|shipment| !shipment.shipped? }
|
116
105
|
|
117
|
-
|
106
|
+
sold.times { order.inventory_units.create(:variant => variant, :state => "sold", :shipment => shipment) }
|
107
|
+
back_order.times { order.inventory_units.create(:variant => variant, :state => "backordered", :shipment => shipment) }
|
118
108
|
end
|
119
109
|
|
120
110
|
def update_order
|
data/app/models/line_item.rb
CHANGED
@@ -6,7 +6,6 @@ class LineItem < ActiveRecord::Base
|
|
6
6
|
has_one :product, :through => :variant
|
7
7
|
|
8
8
|
before_validation :copy_price
|
9
|
-
#before_destroy :ensure_not_shipped
|
10
9
|
|
11
10
|
validates :variant, :presence => true
|
12
11
|
validates :quantity, :numericality => { :only_integer => true, :message => I18n.t("validation.must_be_int") }
|
@@ -16,7 +15,7 @@ class LineItem < ActiveRecord::Base
|
|
16
15
|
attr_accessible :quantity
|
17
16
|
|
18
17
|
before_save :update_inventory
|
19
|
-
before_destroy :remove_inventory
|
18
|
+
before_destroy :ensure_not_shipped, :remove_inventory
|
20
19
|
|
21
20
|
after_save :update_order
|
22
21
|
after_destroy :update_order
|
@@ -86,11 +85,11 @@ class LineItem < ActiveRecord::Base
|
|
86
85
|
order.update!
|
87
86
|
end
|
88
87
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
88
|
+
def ensure_not_shipped
|
89
|
+
if order.try(:inventory_units).to_a.any?{|unit| unit.variant_id == variant_id && unit.shipped?}
|
90
|
+
errors.add :base, I18n.t("cannot_destory_line_item_as_inventory_units_have_shipped")
|
91
|
+
return false
|
92
|
+
end
|
93
|
+
end
|
95
94
|
end
|
96
95
|
|
data/app/models/order.rb
CHANGED
@@ -347,10 +347,13 @@ class Order < ActiveRecord::Base
|
|
347
347
|
bill_address.try(:lastname)
|
348
348
|
end
|
349
349
|
|
350
|
+
def products
|
351
|
+
line_items.map{|li| li.variant.product}
|
352
|
+
end
|
350
353
|
|
351
354
|
private
|
352
355
|
def create_user
|
353
|
-
self.email = user.email if self.user and user.
|
356
|
+
self.email = user.email if self.user and not user.anonymous?
|
354
357
|
self.user ||= User.anonymous!
|
355
358
|
end
|
356
359
|
|
data/app/models/product_group.rb
CHANGED
@@ -90,14 +90,10 @@ class ProductGroup < ActiveRecord::Base
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def add_scope(scope_name, arguments=[])
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
})
|
98
|
-
else
|
99
|
-
raise ArgumentError.new("'#{scope_name}` can't be used as scope")
|
100
|
-
end
|
93
|
+
self.product_scopes << ProductScope.new({
|
94
|
+
:name => scope_name.to_s,
|
95
|
+
:arguments => [*arguments]
|
96
|
+
})
|
101
97
|
self
|
102
98
|
end
|
103
99
|
|
data/app/models/property.rb
CHANGED
@@ -13,8 +13,6 @@ class Property < ActiveRecord::Base
|
|
13
13
|
if prototype.class == Prototype
|
14
14
|
id = prototype.id
|
15
15
|
end
|
16
|
-
|
17
|
-
find(:all, :conditions => [ 'prototype_id = ?', id ],
|
18
|
-
:joins => 'left join properties_prototypes on property_id = properties.id')
|
16
|
+
joins('left join properties_prototypes on property_id = properties.id').where('prototype_id = ?', id)
|
19
17
|
end
|
20
18
|
end
|
@@ -2,6 +2,7 @@ class ReturnAuthorization < ActiveRecord::Base
|
|
2
2
|
belongs_to :order
|
3
3
|
has_many :inventory_units
|
4
4
|
before_create :generate_number
|
5
|
+
before_save :force_positive_amount
|
5
6
|
|
6
7
|
validates :order, :presence => true
|
7
8
|
validates :amount, :numericality => true
|
@@ -64,11 +65,15 @@ class ReturnAuthorization < ActiveRecord::Base
|
|
64
65
|
def process_return
|
65
66
|
inventory_units.each &:return!
|
66
67
|
|
67
|
-
credit = Adjustment.create(:source => self, :order_id => self.order.id, :amount =>
|
68
|
+
credit = Adjustment.create(:source => self, :order_id => self.order.id, :amount => self.amount.abs * -1, :label => I18n.t("rma_credit"))
|
68
69
|
self.order.update!
|
69
70
|
end
|
70
71
|
|
71
72
|
def allow_receive?
|
72
73
|
!inventory_units.empty?
|
73
74
|
end
|
75
|
+
|
76
|
+
def force_positive_amount
|
77
|
+
self.amount = self.amount.abs
|
78
|
+
end
|
74
79
|
end
|
data/app/models/state_event.rb
CHANGED
@@ -8,9 +8,9 @@ class StateEvent < ActiveRecord::Base
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def assign_user
|
11
|
-
if
|
12
|
-
|
13
|
-
end
|
11
|
+
# if Session.activated? && current_user_session = Session.find
|
12
|
+
# self.user_id ||= current_user_session.user.id
|
13
|
+
# end
|
14
14
|
true # don't stop the filters
|
15
15
|
end
|
16
16
|
end
|
data/app/models/state_monitor.rb
CHANGED
@@ -4,22 +4,22 @@ class StateMonitor < ActiveRecord::Observer
|
|
4
4
|
# Generic transition callback *after* the transition is performed
|
5
5
|
def after_transition(object, transition)
|
6
6
|
|
7
|
-
current_user_session =
|
8
|
-
|
9
|
-
if current_user_session
|
10
|
-
|
11
|
-
elsif object.respond_to?(:user)
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
to_state = transition.attributes[:to_name]
|
16
|
-
object.state_events.create({
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
ActiveRecord::Base.logger.info("#{object.class}##{object.id}: #{transition.attributes[:from]} => #{transition.attributes[:to]}")
|
7
|
+
# current_user_session = Session.activated? ? Session.find : nil
|
8
|
+
#
|
9
|
+
# if current_user_session
|
10
|
+
# author = current_user_session.user
|
11
|
+
# elsif object.respond_to?(:user)
|
12
|
+
# author = object.user
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# to_state = transition.attributes[:to_name]
|
16
|
+
# object.state_events.create({
|
17
|
+
# :previous_state => transition.attributes[:from],
|
18
|
+
# :name => transition.attributes[:event].to_s,
|
19
|
+
# :user_id => author && author.id
|
20
|
+
# })
|
21
|
+
#
|
22
|
+
# ActiveRecord::Base.logger.info("#{object.class}##{object.id}: #{transition.attributes[:from]} => #{transition.attributes[:to]}")
|
23
23
|
end
|
24
24
|
|
25
25
|
end
|
data/app/models/taxon.rb
CHANGED
@@ -18,14 +18,13 @@ class Taxon < ActiveRecord::Base
|
|
18
18
|
# this method should be customized to your own site
|
19
19
|
include ::ProductFilters # for detailed defs of filters
|
20
20
|
def applicable_filters
|
21
|
-
fs
|
22
|
-
fs << ProductFilters.taxons_below(self)
|
21
|
+
fs = []
|
22
|
+
# fs << ProductFilters.taxons_below(self)
|
23
23
|
## unless it's a root taxon? left open for demo purposes
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
]
|
24
|
+
|
25
|
+
fs << ProductFilters.price_filter if ProductFilters.respond_to?(:price_filter)
|
26
|
+
fs << ProductFilters.brand_filter if ProductFilters.respond_to?(:brand_filter)
|
27
|
+
fs
|
29
28
|
end
|
30
29
|
|
31
30
|
# Creates permalink based on .to_url method provided by stringx gem
|
data/app/models/user.rb
CHANGED
@@ -5,6 +5,10 @@ class User < ActiveRecord::Base
|
|
5
5
|
belongs_to :ship_address, :foreign_key => "ship_address_id", :class_name => "Address"
|
6
6
|
belongs_to :bill_address, :foreign_key => "bill_address_id", :class_name => "Address"
|
7
7
|
|
8
|
+
def anonymous?
|
9
|
+
false
|
10
|
+
end
|
11
|
+
|
8
12
|
# Creates an anonymous user
|
9
13
|
def self.anonymous!
|
10
14
|
User.create
|
@@ -28,14 +28,6 @@
|
|
28
28
|
</label>
|
29
29
|
</p>
|
30
30
|
|
31
|
-
<p>
|
32
|
-
<label>
|
33
|
-
<input name="preferences[check_for_spree_alerts]" type="hidden" value="0" />
|
34
|
-
<%= check_box_tag('preferences[check_for_spree_alerts]', "1", Spree::Config[:check_for_spree_alerts]) %>
|
35
|
-
<%= t('spree_alert_checking') %>
|
36
|
-
</label>
|
37
|
-
</p>
|
38
|
-
|
39
31
|
<p class="form-buttons">
|
40
32
|
<%= button t('update') %>
|
41
33
|
<%= t("or") %> <%= link_to t("cancel"), admin_general_settings_url %>
|
@@ -4,30 +4,25 @@
|
|
4
4
|
|
5
5
|
<table>
|
6
6
|
<tr>
|
7
|
-
<th scope="row"><%= t("site_name") %>:</th>
|
7
|
+
<th scope="row"><%= t("site_name") %>:</th>
|
8
8
|
<td><%= Spree::Config[:site_name] %></td>
|
9
9
|
</tr>
|
10
10
|
<tr>
|
11
|
-
<th scope="row"><%= t("site_url") %>:</th>
|
11
|
+
<th scope="row"><%= t("site_url") %>:</th>
|
12
12
|
<td><%= Spree::Config[:site_url] %></td>
|
13
13
|
</tr>
|
14
14
|
<tr>
|
15
15
|
<td colspan="2">
|
16
|
-
<%= (Spree::Config[:allow_ssl_in_production] ? t("ssl_will_be_used_in_production_mode") : t("ssl_will_not_be_used_in_production_mode")) %>
|
16
|
+
<%= (Spree::Config[:allow_ssl_in_production] ? t("ssl_will_be_used_in_production_mode") : t("ssl_will_not_be_used_in_production_mode")) %>
|
17
17
|
</td>
|
18
18
|
</tr>
|
19
19
|
<tr>
|
20
20
|
<td colspan="2">
|
21
21
|
<%= (Spree::Config[:allow_ssl_in_development_and_test] ? t("ssl_will_be_used_in_development_and_test_modes") : t("ssl_will_not_be_used_in_development_and_test_modes")) %>
|
22
|
-
</td>
|
23
|
-
</tr>
|
24
|
-
<tr>
|
25
|
-
<td colspan="2">
|
26
|
-
<%= (Spree::Config[:check_for_spree_alerts] ? t("spree_alert_checking") : t("spree_alert_not_checking")) %>
|
27
|
-
</td>
|
22
|
+
</td>
|
28
23
|
</tr>
|
29
24
|
</table>
|
30
25
|
|
31
|
-
<p><%= link_to_with_icon 'edit', t("edit"), edit_admin_general_settings_path
|
26
|
+
<p><%= link_to_with_icon 'edit', t("edit"), edit_admin_general_settings_path %></p>
|
32
27
|
|
33
28
|
|