spree_core 0.40.4 → 0.50.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +6 -1
- data/app/controllers/admin/base_controller.rb +0 -57
- data/app/controllers/admin/configurations_controller.rb +1 -1
- data/app/controllers/admin/general_settings_controller.rb +1 -1
- data/app/controllers/admin/images_controller.rb +18 -8
- data/app/controllers/admin/inventory_settings_controller.rb +1 -1
- data/app/controllers/admin/mail_settings_controller.rb +1 -1
- data/app/controllers/admin/option_types_controller.rb +11 -0
- data/app/controllers/admin/orders_controller.rb +16 -20
- data/app/controllers/admin/overview_controller.rb +1 -1
- data/app/controllers/admin/payment_methods_controller.rb +6 -6
- data/app/controllers/admin/product_groups_controller.rb +10 -11
- data/app/controllers/admin/product_properties_controller.rb +5 -5
- data/app/controllers/admin/product_scopes_controller.rb +12 -4
- data/app/controllers/admin/products_controller.rb +17 -12
- data/app/controllers/admin/properties_controller.rb +7 -7
- data/app/controllers/admin/prototypes_controller.rb +15 -15
- data/app/controllers/admin/reports_controller.rb +12 -11
- data/app/controllers/admin/shipments_controller.rb +0 -5
- data/app/controllers/admin/shipping_categories_controller.rb +6 -6
- data/app/controllers/admin/shipping_methods_controller.rb +1 -2
- data/app/controllers/admin/states_controller.rb +12 -12
- data/app/controllers/admin/tax_categories_controller.rb +2 -2
- data/app/controllers/admin/tax_rates_controller.rb +8 -8
- data/app/controllers/admin/tax_settings_controller.rb +1 -1
- data/app/controllers/admin/taxonomies_controller.rb +3 -3
- data/app/controllers/admin/taxons_controller.rb +1 -8
- data/app/controllers/admin/trackers_controller.rb +1 -1
- data/app/controllers/admin/users_controller.rb +6 -9
- data/app/controllers/admin/variants_controller.rb +13 -2
- data/app/controllers/admin/zones_controller.rb +9 -9
- data/app/controllers/checkout_controller.rb +5 -5
- data/app/controllers/products_controller.rb +1 -1
- data/app/controllers/taxons_controller.rb +3 -1
- data/app/helpers/admin/navigation_helper.rb +36 -19
- data/app/helpers/admin/payments_helper.rb +1 -1
- data/app/helpers/admin/product_groups_helper.rb +1 -1
- data/app/helpers/admin/product_properties_helper.rb +5 -5
- data/app/helpers/admin/products_helper.rb +2 -2
- data/app/helpers/admin/users_helper.rb +5 -2
- data/app/helpers/hook_helper.rb +3 -3
- data/app/helpers/products_helper.rb +0 -19
- data/app/helpers/spree/base_helper.rb +33 -2
- data/app/helpers/taxons_helper.rb +3 -3
- data/app/mailers/order_mailer.rb +2 -2
- data/app/mailers/shipment_mailer.rb +2 -2
- data/app/models/address.rb +42 -9
- data/app/models/adjustment.rb +8 -8
- data/app/models/app_configuration.rb +0 -6
- data/app/models/billing_integration.rb +1 -1
- data/app/models/calculator/sales_tax.rb +3 -3
- data/app/models/configuration.rb +1 -1
- data/app/models/country.rb +4 -5
- data/app/models/creditcard.rb +38 -31
- data/app/models/gateway.rb +14 -14
- data/app/models/gateway/beanstream.rb +4 -4
- data/app/models/gateway/bogus.rb +6 -6
- data/app/models/gateway/braintree.rb +88 -0
- data/app/models/gateway/eway.rb +3 -3
- data/app/models/image.rb +5 -4
- data/app/models/option_type.rb +1 -0
- data/app/models/order.rb +60 -21
- data/app/models/payment.rb +5 -32
- data/app/models/preference.rb +7 -7
- data/app/models/product.rb +22 -7
- data/app/models/product_group.rb +22 -26
- data/app/models/product_property.rb +5 -5
- data/app/models/product_scope.rb +26 -6
- data/app/models/property.rb +1 -1
- data/app/models/state.rb +2 -3
- data/app/models/tax_category.rb +1 -0
- data/app/models/tax_rate.rb +1 -2
- data/app/models/taxon.rb +12 -10
- data/app/models/taxonomy.rb +7 -4
- data/app/models/tracker.rb +1 -1
- data/app/models/user.rb +4 -0
- data/app/models/variant.rb +1 -1
- data/app/models/zone.rb +1 -1
- data/app/models/zone_member.rb +3 -3
- data/app/views/admin/{shared → adjustments}/_adjustments_table.html.erb +7 -4
- data/app/views/admin/adjustments/edit.html.erb +1 -1
- data/app/views/admin/adjustments/index.html.erb +2 -2
- data/app/views/admin/adjustments/new.html.erb +2 -1
- data/app/views/admin/general_settings/edit.html.erb +4 -12
- data/app/views/admin/general_settings/show.html.erb +0 -5
- data/app/views/admin/images/index.html.erb +8 -5
- data/app/views/admin/inventory_settings/show.html.erb +1 -1
- data/app/views/admin/mail_methods/index.html.erb +4 -4
- data/app/views/admin/option_types/_form.html.erb +4 -4
- data/app/views/admin/option_types/_option_value_fields.html.erb +2 -2
- data/app/views/admin/option_types/edit.html.erb +4 -2
- data/app/views/admin/option_types/index.html.erb +5 -5
- data/app/views/admin/orders/_line_item.html.erb +2 -1
- data/app/views/admin/orders/history.html.erb +6 -2
- data/app/views/admin/orders/index.html.erb +22 -19
- data/app/views/admin/orders/show.html.erb +1 -1
- data/app/views/admin/orders/user.html.erb +1 -1
- data/app/views/admin/payment_methods/index.html.erb +7 -5
- data/app/views/admin/payments/_list.html.erb +3 -3
- data/app/views/admin/payments/index.html.erb +1 -1
- data/app/views/admin/payments/show.html.erb +2 -2
- data/app/views/admin/product_groups/edit.html.erb +7 -7
- data/app/views/admin/product_groups/index.html.erb +5 -3
- data/app/views/admin/product_groups/update.js.erb +4 -3
- data/app/views/admin/product_properties/_product_property_fields.html.erb +3 -3
- data/app/views/admin/product_properties/index.html.erb +10 -5
- data/app/views/admin/product_scopes/destroy.js.erb +1 -0
- data/app/views/admin/products/index.html.erb +32 -33
- data/app/views/admin/properties/_form.html.erb +2 -2
- data/app/views/admin/properties/index.html.erb +4 -4
- data/app/views/admin/prototypes/index.html.erb +4 -4
- data/app/views/admin/shared/_address_form.html.erb +1 -1
- data/app/views/admin/shared/_calculator_fields.html.erb +1 -1
- data/app/views/admin/shared/_destroy.js.erb +15 -2
- data/app/views/admin/shared/_order_tabs.html.erb +1 -1
- data/app/views/admin/shared/_report_criteria.html.erb +1 -1
- data/app/views/admin/shipments/_form.html.erb +6 -2
- data/app/views/admin/shipments/edit.html.erb +1 -1
- data/app/views/admin/shipments/index.html.erb +4 -2
- data/app/views/admin/shipping_methods/_form.html.erb +2 -0
- data/app/views/admin/shipping_methods/index.html.erb +3 -2
- data/app/views/admin/states/_state_list.html.erb +11 -5
- data/app/views/admin/tax_categories/index.html.erb +9 -4
- data/app/views/admin/tax_settings/show.html.erb +2 -2
- data/app/views/admin/taxonomies/_list.html.erb +4 -2
- data/app/views/admin/taxonomies/index.html.erb +2 -2
- data/app/views/admin/taxons/_form.html.erb +1 -1
- data/app/views/admin/trackers/index.html.erb +5 -5
- data/app/views/admin/users/_form.html.erb +3 -4
- data/app/views/admin/users/index.html.erb +7 -6
- data/app/views/admin/users/show.html.erb +3 -3
- data/app/views/admin/variants/index.html.erb +21 -6
- data/app/views/admin/zones/_form.html.erb +9 -9
- data/app/views/admin/zones/_member_type.html.erb +5 -5
- data/app/views/admin/zones/index.html.erb +7 -5
- data/app/views/checkout/_address.html.erb +2 -2
- data/app/views/checkout/_payment.html.erb +3 -6
- data/app/views/layouts/admin.html.erb +3 -9
- data/app/views/layouts/spree_application.html.erb +2 -1
- data/app/views/orders/_line_item.html.erb +1 -1
- data/app/views/orders/edit.html.erb +17 -16
- data/app/views/orders/show.html.erb +1 -1
- data/app/views/shared/_admin_head.html.erb +1 -1
- data/app/views/shared/_error_messages.html.erb +2 -2
- data/app/views/shared/_filters.html.erb +4 -4
- data/app/views/shared/_head.html.erb +2 -2
- data/app/views/shared/_nav_bar.html.erb +2 -2
- data/app/views/shared/_products.html.erb +4 -2
- data/app/views/shared/_taxonomies.html.erb +15 -8
- data/app/views/shipment_mailer/shipped_email.text.erb +2 -2
- data/config/cucumber.yml +10 -0
- data/config/initializers/form_builder.rb +1 -5
- data/config/initializers/workarounds_for_ruby19.rb +5 -5
- data/config/locales/en.yml +33 -6
- data/config/routes.rb +18 -13
- data/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb +5 -5
- data/db/migrate/20091213222815_creditcard_last_four_digits.rb +5 -5
- data/db/migrate/20100105132138_shipment_id_for_inventory_units.rb +2 -2
- data/db/migrate/20100209025806_create_payment_methods.rb +3 -3
- data/db/migrate/20100209144531_polymorphic_payments.rb +1 -1
- data/db/migrate/20100214212536_assign_creditcard_txns_to_payment.rb +2 -2
- data/db/migrate/20100224153127_deleted_at_for_payment_methods.rb +1 -1
- data/db/migrate/20100506185838_add_description_to_taxons.rb +1 -1
- data/db/migrate/20100816212146_shipping_method_id_for_orders.rb +1 -1
- data/db/migrate/20101026184808_migrate_checkout_to_orders.rb +2 -2
- data/db/migrate/20101223215658_add_position_to_variants.rb +9 -0
- data/db/migrate/20110110130847_add_next_state_to_state_events.rb +9 -0
- data/db/migrate/20110111122537_add_position_to_option_types.rb +9 -0
- data/db/migrate/20110314192118_remove_trailing_slashes_in_taxon_permalinks.rb +17 -0
- data/lib/custom_fixtures.rb +1 -1
- data/lib/{seo_assist.rb → middleware/seo_assist.rb} +14 -8
- data/lib/product_filters.rb +49 -43
- data/lib/redirect_legacy_product_url.rb +5 -5
- data/lib/scopes.rb +2 -2
- data/lib/scopes/dynamic.rb +9 -16
- data/lib/scopes/product.rb +33 -16
- data/lib/scopes/variant.rb +4 -3
- data/lib/spree/calculated_adjustments.rb +5 -2
- data/lib/spree/config.rb +2 -0
- data/lib/spree/current_order.rb +4 -4
- data/lib/spree/mail_settings.rb +3 -2
- data/lib/spree/search/base.rb +9 -10
- data/lib/spree_base.rb +22 -23
- data/lib/spree_core.rb +10 -69
- data/lib/spree_core/authorize_net_cim_hack.rb +1 -1
- data/lib/spree_core/delegate_belongs_to.rb +18 -24
- data/lib/spree_core/enumerable_constants.rb +38 -38
- data/lib/spree_core/find_by_param.rb +8 -6
- data/lib/spree_core/preferences/preference_definition.rb +7 -7
- data/lib/spree_core/railtie.rb +58 -0
- data/lib/spree_core/ssl_requirement.rb +4 -3
- data/lib/spree_core/testing_support/factories.rb +13 -0
- data/lib/spree_core/testing_support/factories/address_factory.rb +20 -0
- data/lib/spree_core/testing_support/factories/adjustment_factory.rb +6 -0
- data/lib/spree_core/testing_support/factories/calculator_factory.rb +5 -0
- data/lib/spree_core/testing_support/factories/configuraion_factory.rb +4 -0
- data/lib/spree_core/testing_support/factories/country_factory.rb +7 -0
- data/lib/spree_core/testing_support/factories/creditcard_factory.rb +11 -0
- data/lib/spree_core/testing_support/factories/inventory_unit_factory.rb +7 -0
- data/lib/spree_core/testing_support/factories/line_item_factory.rb +8 -0
- data/lib/spree_core/testing_support/factories/mail_method_factory.rb +4 -0
- data/lib/spree_core/testing_support/factories/options_factory.rb +10 -0
- data/lib/spree_core/testing_support/factories/order_factory.rb +18 -0
- data/lib/spree_core/testing_support/factories/payment_factory.rb +26 -0
- data/lib/spree_core/testing_support/factories/payment_method_factory.rb +17 -0
- data/lib/spree_core/testing_support/factories/product_factory.rb +16 -0
- data/lib/spree_core/testing_support/factories/product_group_factory.rb +3 -0
- data/lib/spree_core/testing_support/factories/product_option_type_factory.rb +4 -0
- data/lib/spree_core/testing_support/factories/product_property_factory.rb +4 -0
- data/lib/spree_core/testing_support/factories/product_scope_factory.rb +6 -0
- data/lib/spree_core/testing_support/factories/property_factory.rb +4 -0
- data/lib/spree_core/testing_support/factories/prototype_factory.rb +4 -0
- data/lib/spree_core/testing_support/factories/return_authorization_factory.rb +8 -0
- data/lib/spree_core/testing_support/factories/role_factory.rb +9 -0
- data/lib/spree_core/testing_support/factories/shipment_factory.rb +9 -0
- data/lib/spree_core/testing_support/factories/shipping_category_factory.rb +5 -0
- data/lib/spree_core/testing_support/factories/shipping_method_factory.rb +7 -0
- data/lib/spree_core/testing_support/factories/state_factory.rb +11 -0
- data/lib/spree_core/testing_support/factories/tax_category_factory.rb +8 -0
- data/lib/spree_core/testing_support/factories/tax_rate_factory.rb +5 -0
- data/lib/spree_core/testing_support/factories/taxon_factory.rb +5 -0
- data/lib/spree_core/testing_support/factories/taxonomy_factory.rb +3 -0
- data/lib/spree_core/testing_support/factories/tracker_factory.rb +5 -0
- data/lib/spree_core/testing_support/factories/user_factory.rb +15 -0
- data/lib/spree_core/testing_support/factories/variant_factory.rb +14 -0
- data/lib/spree_core/testing_support/factories/zone_factory.rb +18 -0
- data/lib/spree_core/theme_support/hook.rb +1 -1
- data/lib/spree_core/theme_support/more_patches.rb +20 -20
- data/lib/spree_core/version.rb +5 -0
- data/lib/tasks/common.rb +30 -0
- data/lib/tasks/install.rake +1 -1
- data/lib/tasks/rake_util.rb +19 -0
- data/lib/tasks/taxon.rake +14 -0
- data/public/images/reorder.jpg +0 -0
- data/public/javascripts/admin.js +0 -6
- data/public/javascripts/admin/unobtrusive_handlers.js +28 -0
- data/public/javascripts/checkout.js +3 -3
- data/public/stylesheets/admin/admin-forms.css +1 -6
- data/public/stylesheets/admin/admin.css +0 -28
- data/public/stylesheets/screen.css +0 -280
- metadata +81 -43
- data/app/controllers/countries_controller.rb +0 -11
- data/app/models/spree/alert.rb +0 -13
- data/app/models/state_monitor.rb +0 -25
- data/app/views/admin/shared/_alert.html.erb +0 -6
- data/app/views/countries/index.js.erb +0 -1
- data/app/views/shared/_doc_and_xmlns.html.erb +0 -2
- data/app/views/users/edit.html.erb +0 -9
- data/app/views/users/show.html.erb +0 -46
- data/lib/spree_core/validation_group.rb +0 -143
- data/public/stylesheets/scaffold.css +0 -54
@@ -1,35 +1,35 @@
|
|
1
1
|
|
2
2
|
module EnumerableConstant
|
3
|
-
|
3
|
+
|
4
4
|
# default (overridable) value for any
|
5
5
|
def self.any_value
|
6
6
|
-1
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
def self.any
|
10
10
|
[any_value, '[any]']
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
class Tupple
|
14
|
-
|
14
|
+
|
15
15
|
include Comparable
|
16
|
-
|
16
|
+
|
17
17
|
attr_accessor :name, :value, :display_name
|
18
|
-
|
18
|
+
|
19
19
|
def initialize(name, value=nil, display_name=nil)
|
20
20
|
@name = name
|
21
21
|
@value = value
|
22
22
|
@display_name = display_name
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
def <=> other
|
26
26
|
self.display_name <=> other.display_name
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def title_translated
|
30
30
|
t("order_status_#{self.name.downcase}")
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def title
|
34
34
|
if @display_name
|
35
35
|
self.display_name
|
@@ -37,21 +37,21 @@ module EnumerableConstant
|
|
37
37
|
self.name.titleize.strip
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
def id
|
42
42
|
self.value
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
class Base
|
48
|
-
|
48
|
+
|
49
49
|
include Comparable
|
50
50
|
|
51
51
|
def <=>
|
52
|
-
|
52
|
+
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
def self.class_var_prefix
|
56
56
|
self.name.gsub!('::', '_').underscore
|
57
57
|
end
|
@@ -86,14 +86,14 @@ module EnumerableConstant
|
|
86
86
|
# puts "display_name: #{display_name}" if display_name
|
87
87
|
class_eval("@@#{self.class_var_prefix}_constants << EnumerableConstant::Tupple.new(name, value, display_name)")
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
# TODO: add method_missing for class methods so you can do stuff like:
|
91
91
|
# :my_constant = 2
|
92
92
|
# :my_constant 2
|
93
93
|
# MY_CONSTANT = 2
|
94
94
|
# MY_CONSTANT 2
|
95
95
|
# def self.method_missing(symbol, *params)
|
96
|
-
#
|
96
|
+
#
|
97
97
|
# end
|
98
98
|
def self.from_value value
|
99
99
|
self.constants.each do |constant|
|
@@ -101,11 +101,11 @@ module EnumerableConstant
|
|
101
101
|
end
|
102
102
|
nil
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
def self.constants
|
106
106
|
class_eval("@@#{self.class_var_prefix}_constants")
|
107
107
|
end
|
108
|
-
|
108
|
+
|
109
109
|
def self.constant_names
|
110
110
|
result = []
|
111
111
|
class_eval("@@#{self.class_var_prefix}_constants").map do |tupple|
|
@@ -113,7 +113,7 @@ module EnumerableConstant
|
|
113
113
|
end
|
114
114
|
result
|
115
115
|
end
|
116
|
-
|
116
|
+
|
117
117
|
def self.names
|
118
118
|
result = []
|
119
119
|
class_eval("@@#{self.class_var_prefix}_constants").map do |tupple|
|
@@ -121,7 +121,7 @@ module EnumerableConstant
|
|
121
121
|
end
|
122
122
|
result
|
123
123
|
end
|
124
|
-
|
124
|
+
|
125
125
|
def self.values
|
126
126
|
result = []
|
127
127
|
class_eval("@@#{self.class_var_prefix}_constants").map do |tupple|
|
@@ -129,25 +129,25 @@ module EnumerableConstant
|
|
129
129
|
end
|
130
130
|
result
|
131
131
|
end
|
132
|
-
|
132
|
+
|
133
133
|
end
|
134
|
-
|
134
|
+
|
135
135
|
module VERSION
|
136
136
|
MAJOR = 1
|
137
137
|
MINOR = 0
|
138
138
|
TINY = 0
|
139
139
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
140
140
|
end
|
141
|
-
|
141
|
+
|
142
142
|
end
|
143
143
|
|
144
144
|
class ActiveRecord::Base
|
145
|
-
|
145
|
+
|
146
146
|
def self.enumerable_constant(attribute_name, options={})
|
147
147
|
raise ArgumentError, "you must specify a list of constants" unless options[:constants]
|
148
148
|
set_name = attribute_name.to_s.camelize
|
149
149
|
set_class = "#{self.name}::#{set_name}"
|
150
|
-
|
150
|
+
|
151
151
|
constant_definitions = ""
|
152
152
|
options[:constants].each do |constant|
|
153
153
|
if constant.is_a? Hash
|
@@ -157,25 +157,25 @@ class ActiveRecord::Base
|
|
157
157
|
# puts "constant name: #{constant_name}"
|
158
158
|
# puts "display name: #{display_name}"
|
159
159
|
# puts "c name: #{constant_name.to_s.underscore.upcase}"
|
160
|
-
constant_definitions << "constant '#{constant_name.to_s.underscore.upcase}', nil, '#{display_name}'\n"
|
160
|
+
constant_definitions << "constant '#{constant_name.to_s.underscore.upcase}', nil, '#{display_name}'\n"
|
161
161
|
else
|
162
|
-
# puts "constant '#{constant.to_s.underscore.upcase}'\n"
|
163
|
-
constant_definitions << "constant '#{constant.to_s.underscore.upcase}'\n"
|
162
|
+
# puts "constant '#{constant.to_s.underscore.upcase}'\n"
|
163
|
+
constant_definitions << "constant '#{constant.to_s.underscore.upcase}'\n"
|
164
164
|
end
|
165
165
|
end
|
166
|
-
|
166
|
+
|
167
167
|
# allow for :connector and :skip_last_comma as used in Array#to_sentence
|
168
168
|
if options[:connector]
|
169
|
-
connector = options[:connector]
|
169
|
+
connector = options[:connector]
|
170
170
|
else
|
171
171
|
connector = 'or'
|
172
172
|
end
|
173
173
|
unless options[:skip_last_comma].kind_of? NilClass
|
174
|
-
skip_last_comma = options[:skip_last_comma]
|
174
|
+
skip_last_comma = options[:skip_last_comma]
|
175
175
|
else
|
176
176
|
skip_last_comma = true
|
177
177
|
end
|
178
|
-
|
178
|
+
|
179
179
|
if options[:base]
|
180
180
|
use_base = options[:base]
|
181
181
|
else
|
@@ -185,7 +185,7 @@ class ActiveRecord::Base
|
|
185
185
|
# keep glue_text for back compat
|
186
186
|
if options[:glue_text]
|
187
187
|
connector = options[:glue_text].strip
|
188
|
-
end
|
188
|
+
end
|
189
189
|
|
190
190
|
class_eval <<-EOF
|
191
191
|
class #{set_name} < EnumerableConstant::Base
|
@@ -195,15 +195,15 @@ class ActiveRecord::Base
|
|
195
195
|
EOF
|
196
196
|
|
197
197
|
should_be_in_text = set_class.constantize.names.to_sentence :words_connector => connector, :last_word_connector => skip_last_comma
|
198
|
-
|
198
|
+
|
199
199
|
unless options[:no_validation]
|
200
|
-
class_eval <<-EOF
|
200
|
+
class_eval <<-EOF
|
201
201
|
validates :#{attribute_name.to_s}, :presence => {
|
202
|
-
:in => #{set_name}::values,
|
202
|
+
:in => #{set_name}::values,
|
203
203
|
:message => "should be #{should_be_in_text}"
|
204
204
|
}
|
205
205
|
EOF
|
206
206
|
end
|
207
207
|
end
|
208
|
-
|
208
|
+
|
209
209
|
end
|
@@ -85,12 +85,14 @@ module Railslove
|
|
85
85
|
|
86
86
|
base_value = to_param
|
87
87
|
permalink_value = base_value
|
88
|
-
query = self.class.send("where", "#{permalink_options[:field]} = ?", permalink_value)
|
89
88
|
counter = 0
|
90
|
-
|
91
|
-
|
89
|
+
|
90
|
+
begin
|
91
|
+
permalink_value = base_value + ((counter == 0) ? "" : "-#{counter}")
|
92
92
|
query = self.class.send("where", "#{permalink_options[:field]} = ?", permalink_value)
|
93
|
-
|
93
|
+
counter += 1
|
94
|
+
end while query.limit(1).present?
|
95
|
+
|
94
96
|
write_attribute(permalink_options[:field], permalink_value)
|
95
97
|
true
|
96
98
|
|
@@ -102,7 +104,7 @@ module Railslove
|
|
102
104
|
end
|
103
105
|
|
104
106
|
class ActiveRecord::Base
|
105
|
-
|
107
|
+
class_attribute :permalink_options
|
106
108
|
self.permalink_options = {:param => :id}
|
107
109
|
|
108
110
|
#default finders these are overwritten if you use make_permalink in your model
|
@@ -114,4 +116,4 @@ class ActiveRecord::Base
|
|
114
116
|
end
|
115
117
|
|
116
118
|
end
|
117
|
-
ActiveRecord::Base.send(:include, Railslove::Plugins::FindByParam)
|
119
|
+
ActiveRecord::Base.send(:include, Railslove::Plugins::FindByParam)
|
@@ -9,24 +9,24 @@ module Spree
|
|
9
9
|
def initialize(name, *args) #:nodoc:
|
10
10
|
options = args.extract_options!
|
11
11
|
options.assert_valid_keys(:default)
|
12
|
-
|
12
|
+
|
13
13
|
@type = args.first ? args.first.to_s : 'boolean'
|
14
|
-
|
14
|
+
|
15
15
|
# Create a column that will be responsible for typecasting
|
16
16
|
@column = ActiveRecord::ConnectionAdapters::Column.new(name.to_s, options[:default], @type == 'any' ? nil : @type)
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
# The attribute which is being preferenced
|
20
20
|
def name
|
21
21
|
@column.name
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
# The default value to use for the preference in case none have been
|
25
|
-
# previously defined
|
25
|
+
# previously defined
|
26
26
|
def default_value
|
27
27
|
@column.default
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
# Typecasts the value based on the type of preference that was defined
|
31
31
|
def type_cast(value)
|
32
32
|
if @type == 'any'
|
@@ -35,7 +35,7 @@ module Spree
|
|
35
35
|
@column.type_cast(value)
|
36
36
|
end
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
# Typecasts the value to true/false depending on the type of preference
|
40
40
|
def query(value)
|
41
41
|
unless value = type_cast(value)
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module SpreeCore
|
2
|
+
class Engine < Rails::Engine
|
3
|
+
|
4
|
+
config.autoload_paths += %W(#{config.root}/lib)
|
5
|
+
# TODO - register state monitor observer?
|
6
|
+
|
7
|
+
def self.activate
|
8
|
+
|
9
|
+
Spree::ThemeSupport::HookListener.subclasses.each do |hook_class|
|
10
|
+
Spree::ThemeSupport::Hook.add_listener(hook_class)
|
11
|
+
end
|
12
|
+
|
13
|
+
#register all payment methods (unless we're in middle of rake task since migrations cannot be run for this first time without this check)
|
14
|
+
if File.basename( $0 ) != "rake"
|
15
|
+
[
|
16
|
+
Gateway::Bogus,
|
17
|
+
Gateway::AuthorizeNet,
|
18
|
+
Gateway::AuthorizeNetCim,
|
19
|
+
Gateway::Eway,
|
20
|
+
Gateway::Linkpoint,
|
21
|
+
Gateway::PayPal,
|
22
|
+
Gateway::SagePay,
|
23
|
+
Gateway::Beanstream,
|
24
|
+
Gateway::Braintree,
|
25
|
+
PaymentMethod::Check
|
26
|
+
].each{|gw|
|
27
|
+
begin
|
28
|
+
gw.register
|
29
|
+
rescue Exception => e
|
30
|
+
$stderr.puts "Error registering gateway #{gw}: #{e}"
|
31
|
+
end
|
32
|
+
}
|
33
|
+
|
34
|
+
#register all calculators
|
35
|
+
[
|
36
|
+
Calculator::FlatPercentItemTotal,
|
37
|
+
Calculator::FlatRate,
|
38
|
+
Calculator::FlexiRate,
|
39
|
+
Calculator::PerItem,
|
40
|
+
Calculator::SalesTax,
|
41
|
+
Calculator::Vat,
|
42
|
+
Calculator::PriceBucket
|
43
|
+
].each{|c_model|
|
44
|
+
begin
|
45
|
+
c_model.register if c_model.table_exists?
|
46
|
+
rescue Exception => e
|
47
|
+
$stderr.puts "Error registering calculator #{c_model}"
|
48
|
+
end
|
49
|
+
}
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
config.to_prepare &method(:activate).to_proc
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -52,9 +52,10 @@
|
|
52
52
|
|
53
53
|
# Modified version of the ssl_requirement plugin by DHH
|
54
54
|
module SslRequirement
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
extend ActiveSupport::Concern
|
56
|
+
|
57
|
+
included do
|
58
|
+
before_filter(:ensure_proper_protocol)
|
58
59
|
end
|
59
60
|
|
60
61
|
module ClassMethods
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Factory.define :address do |f|
|
2
|
+
f.firstname 'John'
|
3
|
+
f.lastname 'Doe'
|
4
|
+
f.address1 '10 Lovely Street'
|
5
|
+
f.address2 'Northwest'
|
6
|
+
f.city "Herndon"
|
7
|
+
f.zipcode '20170'
|
8
|
+
f.phone '123-456-7890'
|
9
|
+
f.alternative_phone "123-456-7899"
|
10
|
+
|
11
|
+
f.state { |address| address.association(:state) }
|
12
|
+
f.country do |address|
|
13
|
+
if address.state
|
14
|
+
address.state.country
|
15
|
+
else
|
16
|
+
address.association(:country)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# allows creditcard info to be saved to the datbase which is needed for factories to work properly
|
2
|
+
class TestCard < Creditcard
|
3
|
+
def remove_readonly_attributes(attributes) attributes; end
|
4
|
+
end
|
5
|
+
|
6
|
+
Factory.define(:creditcard, :class => TestCard) do |f|
|
7
|
+
f.verification_value 123
|
8
|
+
f.month 12
|
9
|
+
f.year 2013
|
10
|
+
f.number "4111111111111111"
|
11
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
Factory.define(:inventory_unit) do |record|
|
2
|
+
record.variant { Factory(:variant) }
|
3
|
+
record.order { Factory(:order) }
|
4
|
+
record.state "sold"
|
5
|
+
record.shipment { Factory(:shipment, :state => 'pending') }
|
6
|
+
#record.return_authorization { Factory(:return_authorization) }
|
7
|
+
end
|