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.
Files changed (251) hide show
  1. data/README.md +6 -1
  2. data/app/controllers/admin/base_controller.rb +0 -57
  3. data/app/controllers/admin/configurations_controller.rb +1 -1
  4. data/app/controllers/admin/general_settings_controller.rb +1 -1
  5. data/app/controllers/admin/images_controller.rb +18 -8
  6. data/app/controllers/admin/inventory_settings_controller.rb +1 -1
  7. data/app/controllers/admin/mail_settings_controller.rb +1 -1
  8. data/app/controllers/admin/option_types_controller.rb +11 -0
  9. data/app/controllers/admin/orders_controller.rb +16 -20
  10. data/app/controllers/admin/overview_controller.rb +1 -1
  11. data/app/controllers/admin/payment_methods_controller.rb +6 -6
  12. data/app/controllers/admin/product_groups_controller.rb +10 -11
  13. data/app/controllers/admin/product_properties_controller.rb +5 -5
  14. data/app/controllers/admin/product_scopes_controller.rb +12 -4
  15. data/app/controllers/admin/products_controller.rb +17 -12
  16. data/app/controllers/admin/properties_controller.rb +7 -7
  17. data/app/controllers/admin/prototypes_controller.rb +15 -15
  18. data/app/controllers/admin/reports_controller.rb +12 -11
  19. data/app/controllers/admin/shipments_controller.rb +0 -5
  20. data/app/controllers/admin/shipping_categories_controller.rb +6 -6
  21. data/app/controllers/admin/shipping_methods_controller.rb +1 -2
  22. data/app/controllers/admin/states_controller.rb +12 -12
  23. data/app/controllers/admin/tax_categories_controller.rb +2 -2
  24. data/app/controllers/admin/tax_rates_controller.rb +8 -8
  25. data/app/controllers/admin/tax_settings_controller.rb +1 -1
  26. data/app/controllers/admin/taxonomies_controller.rb +3 -3
  27. data/app/controllers/admin/taxons_controller.rb +1 -8
  28. data/app/controllers/admin/trackers_controller.rb +1 -1
  29. data/app/controllers/admin/users_controller.rb +6 -9
  30. data/app/controllers/admin/variants_controller.rb +13 -2
  31. data/app/controllers/admin/zones_controller.rb +9 -9
  32. data/app/controllers/checkout_controller.rb +5 -5
  33. data/app/controllers/products_controller.rb +1 -1
  34. data/app/controllers/taxons_controller.rb +3 -1
  35. data/app/helpers/admin/navigation_helper.rb +36 -19
  36. data/app/helpers/admin/payments_helper.rb +1 -1
  37. data/app/helpers/admin/product_groups_helper.rb +1 -1
  38. data/app/helpers/admin/product_properties_helper.rb +5 -5
  39. data/app/helpers/admin/products_helper.rb +2 -2
  40. data/app/helpers/admin/users_helper.rb +5 -2
  41. data/app/helpers/hook_helper.rb +3 -3
  42. data/app/helpers/products_helper.rb +0 -19
  43. data/app/helpers/spree/base_helper.rb +33 -2
  44. data/app/helpers/taxons_helper.rb +3 -3
  45. data/app/mailers/order_mailer.rb +2 -2
  46. data/app/mailers/shipment_mailer.rb +2 -2
  47. data/app/models/address.rb +42 -9
  48. data/app/models/adjustment.rb +8 -8
  49. data/app/models/app_configuration.rb +0 -6
  50. data/app/models/billing_integration.rb +1 -1
  51. data/app/models/calculator/sales_tax.rb +3 -3
  52. data/app/models/configuration.rb +1 -1
  53. data/app/models/country.rb +4 -5
  54. data/app/models/creditcard.rb +38 -31
  55. data/app/models/gateway.rb +14 -14
  56. data/app/models/gateway/beanstream.rb +4 -4
  57. data/app/models/gateway/bogus.rb +6 -6
  58. data/app/models/gateway/braintree.rb +88 -0
  59. data/app/models/gateway/eway.rb +3 -3
  60. data/app/models/image.rb +5 -4
  61. data/app/models/option_type.rb +1 -0
  62. data/app/models/order.rb +60 -21
  63. data/app/models/payment.rb +5 -32
  64. data/app/models/preference.rb +7 -7
  65. data/app/models/product.rb +22 -7
  66. data/app/models/product_group.rb +22 -26
  67. data/app/models/product_property.rb +5 -5
  68. data/app/models/product_scope.rb +26 -6
  69. data/app/models/property.rb +1 -1
  70. data/app/models/state.rb +2 -3
  71. data/app/models/tax_category.rb +1 -0
  72. data/app/models/tax_rate.rb +1 -2
  73. data/app/models/taxon.rb +12 -10
  74. data/app/models/taxonomy.rb +7 -4
  75. data/app/models/tracker.rb +1 -1
  76. data/app/models/user.rb +4 -0
  77. data/app/models/variant.rb +1 -1
  78. data/app/models/zone.rb +1 -1
  79. data/app/models/zone_member.rb +3 -3
  80. data/app/views/admin/{shared → adjustments}/_adjustments_table.html.erb +7 -4
  81. data/app/views/admin/adjustments/edit.html.erb +1 -1
  82. data/app/views/admin/adjustments/index.html.erb +2 -2
  83. data/app/views/admin/adjustments/new.html.erb +2 -1
  84. data/app/views/admin/general_settings/edit.html.erb +4 -12
  85. data/app/views/admin/general_settings/show.html.erb +0 -5
  86. data/app/views/admin/images/index.html.erb +8 -5
  87. data/app/views/admin/inventory_settings/show.html.erb +1 -1
  88. data/app/views/admin/mail_methods/index.html.erb +4 -4
  89. data/app/views/admin/option_types/_form.html.erb +4 -4
  90. data/app/views/admin/option_types/_option_value_fields.html.erb +2 -2
  91. data/app/views/admin/option_types/edit.html.erb +4 -2
  92. data/app/views/admin/option_types/index.html.erb +5 -5
  93. data/app/views/admin/orders/_line_item.html.erb +2 -1
  94. data/app/views/admin/orders/history.html.erb +6 -2
  95. data/app/views/admin/orders/index.html.erb +22 -19
  96. data/app/views/admin/orders/show.html.erb +1 -1
  97. data/app/views/admin/orders/user.html.erb +1 -1
  98. data/app/views/admin/payment_methods/index.html.erb +7 -5
  99. data/app/views/admin/payments/_list.html.erb +3 -3
  100. data/app/views/admin/payments/index.html.erb +1 -1
  101. data/app/views/admin/payments/show.html.erb +2 -2
  102. data/app/views/admin/product_groups/edit.html.erb +7 -7
  103. data/app/views/admin/product_groups/index.html.erb +5 -3
  104. data/app/views/admin/product_groups/update.js.erb +4 -3
  105. data/app/views/admin/product_properties/_product_property_fields.html.erb +3 -3
  106. data/app/views/admin/product_properties/index.html.erb +10 -5
  107. data/app/views/admin/product_scopes/destroy.js.erb +1 -0
  108. data/app/views/admin/products/index.html.erb +32 -33
  109. data/app/views/admin/properties/_form.html.erb +2 -2
  110. data/app/views/admin/properties/index.html.erb +4 -4
  111. data/app/views/admin/prototypes/index.html.erb +4 -4
  112. data/app/views/admin/shared/_address_form.html.erb +1 -1
  113. data/app/views/admin/shared/_calculator_fields.html.erb +1 -1
  114. data/app/views/admin/shared/_destroy.js.erb +15 -2
  115. data/app/views/admin/shared/_order_tabs.html.erb +1 -1
  116. data/app/views/admin/shared/_report_criteria.html.erb +1 -1
  117. data/app/views/admin/shipments/_form.html.erb +6 -2
  118. data/app/views/admin/shipments/edit.html.erb +1 -1
  119. data/app/views/admin/shipments/index.html.erb +4 -2
  120. data/app/views/admin/shipping_methods/_form.html.erb +2 -0
  121. data/app/views/admin/shipping_methods/index.html.erb +3 -2
  122. data/app/views/admin/states/_state_list.html.erb +11 -5
  123. data/app/views/admin/tax_categories/index.html.erb +9 -4
  124. data/app/views/admin/tax_settings/show.html.erb +2 -2
  125. data/app/views/admin/taxonomies/_list.html.erb +4 -2
  126. data/app/views/admin/taxonomies/index.html.erb +2 -2
  127. data/app/views/admin/taxons/_form.html.erb +1 -1
  128. data/app/views/admin/trackers/index.html.erb +5 -5
  129. data/app/views/admin/users/_form.html.erb +3 -4
  130. data/app/views/admin/users/index.html.erb +7 -6
  131. data/app/views/admin/users/show.html.erb +3 -3
  132. data/app/views/admin/variants/index.html.erb +21 -6
  133. data/app/views/admin/zones/_form.html.erb +9 -9
  134. data/app/views/admin/zones/_member_type.html.erb +5 -5
  135. data/app/views/admin/zones/index.html.erb +7 -5
  136. data/app/views/checkout/_address.html.erb +2 -2
  137. data/app/views/checkout/_payment.html.erb +3 -6
  138. data/app/views/layouts/admin.html.erb +3 -9
  139. data/app/views/layouts/spree_application.html.erb +2 -1
  140. data/app/views/orders/_line_item.html.erb +1 -1
  141. data/app/views/orders/edit.html.erb +17 -16
  142. data/app/views/orders/show.html.erb +1 -1
  143. data/app/views/shared/_admin_head.html.erb +1 -1
  144. data/app/views/shared/_error_messages.html.erb +2 -2
  145. data/app/views/shared/_filters.html.erb +4 -4
  146. data/app/views/shared/_head.html.erb +2 -2
  147. data/app/views/shared/_nav_bar.html.erb +2 -2
  148. data/app/views/shared/_products.html.erb +4 -2
  149. data/app/views/shared/_taxonomies.html.erb +15 -8
  150. data/app/views/shipment_mailer/shipped_email.text.erb +2 -2
  151. data/config/cucumber.yml +10 -0
  152. data/config/initializers/form_builder.rb +1 -5
  153. data/config/initializers/workarounds_for_ruby19.rb +5 -5
  154. data/config/locales/en.yml +33 -6
  155. data/config/routes.rb +18 -13
  156. data/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb +5 -5
  157. data/db/migrate/20091213222815_creditcard_last_four_digits.rb +5 -5
  158. data/db/migrate/20100105132138_shipment_id_for_inventory_units.rb +2 -2
  159. data/db/migrate/20100209025806_create_payment_methods.rb +3 -3
  160. data/db/migrate/20100209144531_polymorphic_payments.rb +1 -1
  161. data/db/migrate/20100214212536_assign_creditcard_txns_to_payment.rb +2 -2
  162. data/db/migrate/20100224153127_deleted_at_for_payment_methods.rb +1 -1
  163. data/db/migrate/20100506185838_add_description_to_taxons.rb +1 -1
  164. data/db/migrate/20100816212146_shipping_method_id_for_orders.rb +1 -1
  165. data/db/migrate/20101026184808_migrate_checkout_to_orders.rb +2 -2
  166. data/db/migrate/20101223215658_add_position_to_variants.rb +9 -0
  167. data/db/migrate/20110110130847_add_next_state_to_state_events.rb +9 -0
  168. data/db/migrate/20110111122537_add_position_to_option_types.rb +9 -0
  169. data/db/migrate/20110314192118_remove_trailing_slashes_in_taxon_permalinks.rb +17 -0
  170. data/lib/custom_fixtures.rb +1 -1
  171. data/lib/{seo_assist.rb → middleware/seo_assist.rb} +14 -8
  172. data/lib/product_filters.rb +49 -43
  173. data/lib/redirect_legacy_product_url.rb +5 -5
  174. data/lib/scopes.rb +2 -2
  175. data/lib/scopes/dynamic.rb +9 -16
  176. data/lib/scopes/product.rb +33 -16
  177. data/lib/scopes/variant.rb +4 -3
  178. data/lib/spree/calculated_adjustments.rb +5 -2
  179. data/lib/spree/config.rb +2 -0
  180. data/lib/spree/current_order.rb +4 -4
  181. data/lib/spree/mail_settings.rb +3 -2
  182. data/lib/spree/search/base.rb +9 -10
  183. data/lib/spree_base.rb +22 -23
  184. data/lib/spree_core.rb +10 -69
  185. data/lib/spree_core/authorize_net_cim_hack.rb +1 -1
  186. data/lib/spree_core/delegate_belongs_to.rb +18 -24
  187. data/lib/spree_core/enumerable_constants.rb +38 -38
  188. data/lib/spree_core/find_by_param.rb +8 -6
  189. data/lib/spree_core/preferences/preference_definition.rb +7 -7
  190. data/lib/spree_core/railtie.rb +58 -0
  191. data/lib/spree_core/ssl_requirement.rb +4 -3
  192. data/lib/spree_core/testing_support/factories.rb +13 -0
  193. data/lib/spree_core/testing_support/factories/address_factory.rb +20 -0
  194. data/lib/spree_core/testing_support/factories/adjustment_factory.rb +6 -0
  195. data/lib/spree_core/testing_support/factories/calculator_factory.rb +5 -0
  196. data/lib/spree_core/testing_support/factories/configuraion_factory.rb +4 -0
  197. data/lib/spree_core/testing_support/factories/country_factory.rb +7 -0
  198. data/lib/spree_core/testing_support/factories/creditcard_factory.rb +11 -0
  199. data/lib/spree_core/testing_support/factories/inventory_unit_factory.rb +7 -0
  200. data/lib/spree_core/testing_support/factories/line_item_factory.rb +8 -0
  201. data/lib/spree_core/testing_support/factories/mail_method_factory.rb +4 -0
  202. data/lib/spree_core/testing_support/factories/options_factory.rb +10 -0
  203. data/lib/spree_core/testing_support/factories/order_factory.rb +18 -0
  204. data/lib/spree_core/testing_support/factories/payment_factory.rb +26 -0
  205. data/lib/spree_core/testing_support/factories/payment_method_factory.rb +17 -0
  206. data/lib/spree_core/testing_support/factories/product_factory.rb +16 -0
  207. data/lib/spree_core/testing_support/factories/product_group_factory.rb +3 -0
  208. data/lib/spree_core/testing_support/factories/product_option_type_factory.rb +4 -0
  209. data/lib/spree_core/testing_support/factories/product_property_factory.rb +4 -0
  210. data/lib/spree_core/testing_support/factories/product_scope_factory.rb +6 -0
  211. data/lib/spree_core/testing_support/factories/property_factory.rb +4 -0
  212. data/lib/spree_core/testing_support/factories/prototype_factory.rb +4 -0
  213. data/lib/spree_core/testing_support/factories/return_authorization_factory.rb +8 -0
  214. data/lib/spree_core/testing_support/factories/role_factory.rb +9 -0
  215. data/lib/spree_core/testing_support/factories/shipment_factory.rb +9 -0
  216. data/lib/spree_core/testing_support/factories/shipping_category_factory.rb +5 -0
  217. data/lib/spree_core/testing_support/factories/shipping_method_factory.rb +7 -0
  218. data/lib/spree_core/testing_support/factories/state_factory.rb +11 -0
  219. data/lib/spree_core/testing_support/factories/tax_category_factory.rb +8 -0
  220. data/lib/spree_core/testing_support/factories/tax_rate_factory.rb +5 -0
  221. data/lib/spree_core/testing_support/factories/taxon_factory.rb +5 -0
  222. data/lib/spree_core/testing_support/factories/taxonomy_factory.rb +3 -0
  223. data/lib/spree_core/testing_support/factories/tracker_factory.rb +5 -0
  224. data/lib/spree_core/testing_support/factories/user_factory.rb +15 -0
  225. data/lib/spree_core/testing_support/factories/variant_factory.rb +14 -0
  226. data/lib/spree_core/testing_support/factories/zone_factory.rb +18 -0
  227. data/lib/spree_core/theme_support/hook.rb +1 -1
  228. data/lib/spree_core/theme_support/more_patches.rb +20 -20
  229. data/lib/spree_core/version.rb +5 -0
  230. data/lib/tasks/common.rb +30 -0
  231. data/lib/tasks/install.rake +1 -1
  232. data/lib/tasks/rake_util.rb +19 -0
  233. data/lib/tasks/taxon.rake +14 -0
  234. data/public/images/reorder.jpg +0 -0
  235. data/public/javascripts/admin.js +0 -6
  236. data/public/javascripts/admin/unobtrusive_handlers.js +28 -0
  237. data/public/javascripts/checkout.js +3 -3
  238. data/public/stylesheets/admin/admin-forms.css +1 -6
  239. data/public/stylesheets/admin/admin.css +0 -28
  240. data/public/stylesheets/screen.css +0 -280
  241. metadata +81 -43
  242. data/app/controllers/countries_controller.rb +0 -11
  243. data/app/models/spree/alert.rb +0 -13
  244. data/app/models/state_monitor.rb +0 -25
  245. data/app/views/admin/shared/_alert.html.erb +0 -6
  246. data/app/views/countries/index.js.erb +0 -1
  247. data/app/views/shared/_doc_and_xmlns.html.erb +0 -2
  248. data/app/views/users/edit.html.erb +0 -9
  249. data/app/views/users/show.html.erb +0 -46
  250. data/lib/spree_core/validation_group.rb +0 -143
  251. 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
- unless query.limit(1).empty?
91
- permalink_value = "#{base_value}-#{counter += 1}"
89
+
90
+ begin
91
+ permalink_value = base_value + ((counter == 0) ? "" : "-#{counter}")
92
92
  query = self.class.send("where", "#{permalink_options[:field]} = ?", permalink_value)
93
- end
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
- class_inheritable_accessor :permalink_options
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
- def self.included(controller)
56
- controller.extend(ClassMethods)
57
- controller.before_filter(:ensure_proper_protocol)
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,13 @@
1
+ Zone.class_eval do
2
+ def self.global
3
+ find_by_name("GlobalZone") || Factory(:global_zone)
4
+ end
5
+ end
6
+
7
+ require 'factory_girl'
8
+
9
+ Dir["#{File.dirname(__FILE__)}/factories/**"].each do |f|
10
+ fp = File.expand_path(f)
11
+ require fp
12
+ end
13
+
@@ -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,6 @@
1
+ Factory.define :adjustment do |f|
2
+ f.order { Factory(:order) }
3
+ f.amount "100.0"
4
+ f.label 'Shipping'
5
+ f.source { Factory(:shipment) }
6
+ end
@@ -0,0 +1,5 @@
1
+ Factory.define :calculator, :class => Calculator::FlatRate do |f|
2
+ f.after_create do |c|
3
+ c.set_preference(:amount, 10.0)
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ Factory.define :configuration do |f|
2
+ f.name "Default Configuration"
3
+ f.type "app_configuration"
4
+ end
@@ -0,0 +1,7 @@
1
+ Factory.define :country do |f|
2
+ f.iso_name 'UNITED STATES'
3
+ f.name 'UNITED STATES'
4
+ f.iso 'US'
5
+ f.iso3 'USA'
6
+ f.numcode 840
7
+ end
@@ -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