spree_core 0.40.4 → 0.50.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.
- 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
|