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.
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