spree 0.8.5 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of spree might be problematic. Click here for more details.

Files changed (914) hide show
  1. data/CHANGELOG +97 -4
  2. data/CONTRIBUTORS +62 -29
  3. data/LICENSE +1 -1
  4. data/README.markdown +1 -1
  5. data/app/controllers/admin/base_controller.rb +10 -1
  6. data/app/controllers/admin/configurations_controller.rb +19 -8
  7. data/app/controllers/admin/coupons_controller.rb +17 -0
  8. data/app/controllers/admin/creditcard_payments_controller.rb +4 -8
  9. data/app/controllers/admin/images_controller.rb +42 -3
  10. data/app/controllers/admin/orders_controller.rb +12 -12
  11. data/app/controllers/admin/products_controller.rb +12 -32
  12. data/app/controllers/admin/prototypes_controller.rb +3 -1
  13. data/app/controllers/admin/reports_controller.rb +6 -6
  14. data/app/controllers/admin/shipments_controller.rb +12 -1
  15. data/app/controllers/admin/shipping_methods_controller.rb +17 -17
  16. data/app/controllers/admin/shipping_rates_controller.rb +20 -0
  17. data/app/controllers/admin/tax_rates_controller.rb +28 -0
  18. data/{vendor/extensions/tax_calculator/app → app}/controllers/admin/tax_settings_controller.rb +1 -1
  19. data/app/controllers/admin/taxons_controller.rb +18 -72
  20. data/app/controllers/admin/users_controller.rb +6 -6
  21. data/app/controllers/admin/zones_controller.rb +4 -4
  22. data/app/controllers/application.rb +3 -3
  23. data/app/controllers/checkouts_controller.rb +158 -0
  24. data/app/controllers/content_controller.rb +1 -8
  25. data/app/controllers/orders_controller.rb +11 -23
  26. data/app/controllers/products_controller.rb +24 -23
  27. data/app/controllers/spree/base_controller.rb +47 -3
  28. data/app/controllers/states_controller.rb +4 -5
  29. data/app/controllers/taxons_controller.rb +13 -9
  30. data/app/controllers/user_sessions_controller.rb +3 -1
  31. data/app/controllers/users_controller.rb +3 -7
  32. data/app/helpers/admin/base_helper.rb +74 -6
  33. data/app/helpers/admin/calculators_helper.rb +2 -0
  34. data/app/helpers/admin/orders_helper.rb +1 -1
  35. data/{vendor/extensions/tax_calculator/app → app}/helpers/admin/tax_rates_helper.rb +0 -0
  36. data/app/helpers/admin/taxonomies_helper.rb +0 -59
  37. data/app/helpers/application_helper.rb +1 -2
  38. data/app/helpers/checkouts_helper.rb +7 -0
  39. data/app/helpers/products_helper.rb +15 -15
  40. data/app/helpers/spree/base_helper.rb +27 -5
  41. data/app/helpers/taxons_helper.rb +9 -9
  42. data/app/metal/create_admin_user.rb +21 -0
  43. data/app/models/address.rb +42 -2
  44. data/app/models/adjustment.rb +37 -0
  45. data/app/models/app_configuration.rb +10 -1
  46. data/app/models/calculator.rb +41 -0
  47. data/app/models/calculator/flat_percent_item_total.rb +19 -0
  48. data/app/models/calculator/flat_rate.rb +18 -0
  49. data/app/models/calculator/flexi_rate.rb +33 -0
  50. data/app/models/calculator/per_item.rb +18 -0
  51. data/app/models/calculator/price_bucket.rb +31 -0
  52. data/app/models/calculator/sales_tax.rb +48 -0
  53. data/app/models/calculator/vat.rb +63 -0
  54. data/app/models/charge.rb +37 -0
  55. data/app/models/checkout.rb +48 -0
  56. data/app/models/country.rb +11 -1
  57. data/app/models/coupon.rb +27 -0
  58. data/app/models/credit.rb +27 -0
  59. data/app/models/creditcard.rb +5 -5
  60. data/app/models/creditcard_payment.rb +13 -5
  61. data/app/models/image.rb +23 -1
  62. data/app/models/inventory_unit.rb +4 -3
  63. data/app/models/line_item.rb +10 -4
  64. data/app/models/order.rb +125 -65
  65. data/app/models/order_mailer.rb +1 -1
  66. data/app/models/order_observer.rb +15 -0
  67. data/app/models/product.rb +101 -87
  68. data/app/models/shipment.rb +20 -14
  69. data/app/models/shipping_category.rb +2 -0
  70. data/app/models/shipping_method.rb +19 -6
  71. data/app/models/shipping_rate.rb +6 -0
  72. data/app/models/state.rb +8 -2
  73. data/app/models/state_event.rb +7 -0
  74. data/app/models/tax_category.rb +2 -0
  75. data/{vendor/extensions/tax_calculator/app → app}/models/tax_rate.rb +9 -3
  76. data/app/models/taxon.rb +21 -15
  77. data/app/models/user.rb +17 -18
  78. data/app/models/user_mailer.rb +1 -1
  79. data/app/models/variant.rb +51 -60
  80. data/app/models/zone.rb +38 -23
  81. data/app/views/admin/configurations/index.html.erb +12 -0
  82. data/app/views/admin/coupons/_form.html.erb +24 -0
  83. data/app/views/admin/coupons/edit.html.erb +8 -0
  84. data/app/views/admin/coupons/index.html.erb +38 -0
  85. data/app/views/admin/coupons/new.html.erb +9 -0
  86. data/app/views/admin/creditcard_payments/new.html.erb +1 -1
  87. data/app/views/admin/general_settings/edit.html.erb +1 -1
  88. data/app/views/admin/general_settings/show.html.erb +2 -4
  89. data/app/views/admin/images/_form.html.erb +12 -0
  90. data/app/views/admin/images/edit.html.erb +19 -0
  91. data/app/views/admin/images/index.html.erb +63 -0
  92. data/app/views/admin/images/new.html.erb +20 -8
  93. data/app/views/admin/inventory_settings/show.html.erb +2 -2
  94. data/app/views/admin/mail_settings/edit.html.erb +13 -4
  95. data/app/views/admin/mail_settings/show.html.erb +7 -0
  96. data/app/views/admin/option_types/index.html.erb +1 -1
  97. data/app/views/admin/orders/index.html.erb +41 -54
  98. data/app/views/admin/orders/show.html.erb +19 -2
  99. data/app/views/admin/products/_form.html.erb +29 -16
  100. data/app/views/admin/products/index.html.erb +12 -17
  101. data/app/views/admin/products/new.html.erb +5 -5
  102. data/app/views/admin/properties/index.html.erb +1 -1
  103. data/app/views/admin/prototypes/index.html.erb +1 -1
  104. data/app/views/admin/reports/sales_total.html.erb +4 -4
  105. data/app/views/admin/shared/_address.html.erb +3 -1
  106. data/app/views/admin/shared/_calculator_fields.html.erb +15 -0
  107. data/app/views/admin/shared/_edit_resource_links.html.erb +1 -1
  108. data/app/views/admin/shared/_form_address.html.erb +8 -2
  109. data/app/views/admin/shared/_new_resource_links.html.erb +1 -1
  110. data/app/views/admin/shared/_order_details.html.erb +3 -36
  111. data/app/views/admin/shared/_order_tabs.html.erb +2 -2
  112. data/app/views/admin/shared/_product_tabs.html.erb +25 -12
  113. data/app/views/admin/shared/_report_criteria.html.erb +3 -7
  114. data/app/views/admin/shipments/_form.html.erb +11 -1
  115. data/app/views/admin/shipping_categories/index.html.erb +1 -1
  116. data/app/views/admin/shipping_methods/_form.html.erb +3 -5
  117. data/app/views/admin/shipping_methods/edit.html.erb +2 -2
  118. data/app/views/admin/shipping_methods/index.html.erb +3 -3
  119. data/app/views/admin/shipping_rates/_form.html.erb +12 -0
  120. data/app/views/admin/shipping_rates/edit.html.erb +8 -0
  121. data/app/views/admin/shipping_rates/index.html.erb +30 -0
  122. data/app/views/admin/shipping_rates/new.html.erb +10 -0
  123. data/app/views/admin/tax_categories/index.html.erb +1 -1
  124. data/app/views/admin/tax_rates/_form.html.erb +16 -0
  125. data/{vendor/extensions/tax_calculator/app → app}/views/admin/tax_rates/edit.html.erb +2 -2
  126. data/{vendor/extensions/tax_calculator/app → app}/views/admin/tax_rates/index.html.erb +4 -4
  127. data/{vendor/extensions/tax_calculator/app → app}/views/admin/tax_rates/new.html.erb +0 -0
  128. data/{vendor/extensions/tax_calculator/app → app}/views/admin/tax_settings/edit.html.erb +3 -3
  129. data/{vendor/extensions/tax_calculator/app → app}/views/admin/tax_settings/show.html.erb +1 -1
  130. data/app/views/admin/taxonomies/_js_head.html.erb +13 -0
  131. data/app/views/admin/taxonomies/_list.html.erb +3 -3
  132. data/app/views/admin/taxonomies/_taxon.html.erb +12 -0
  133. data/app/views/admin/taxonomies/edit.html.erb +17 -7
  134. data/app/views/admin/users/index.html.erb +7 -9
  135. data/app/views/admin/variants/_form.html.erb +1 -1
  136. data/app/views/admin/variants/index.html.erb +2 -2
  137. data/app/views/admin/zones/index.html.erb +4 -4
  138. data/app/views/checkouts/_billing.html.erb +66 -0
  139. data/app/views/checkouts/_confirmation.html.erb +11 -0
  140. data/app/views/checkouts/_form.html.erb +20 -0
  141. data/app/views/checkouts/_payment.html.erb +45 -0
  142. data/app/views/{orders → checkouts}/_registration.html.erb +4 -4
  143. data/app/views/checkouts/_shipping.html.erb +68 -0
  144. data/app/views/checkouts/_shipping_method.html.erb +19 -0
  145. data/app/views/checkouts/_summary.html.erb +36 -0
  146. data/app/views/checkouts/edit.html.erb +13 -0
  147. data/app/views/checkouts/new.html.erb +13 -0
  148. data/app/views/layouts/admin.html.erb +15 -5
  149. data/app/views/layouts/application.html.erb +3 -11
  150. data/{vendor/plugins/resource_controller/test/app/views/layouts/application.rhtml → app/views/layouts/checkouts.html.erb} +2 -2
  151. data/app/views/order_mailer/cancel.html.erb +4 -3
  152. data/app/views/order_mailer/confirm.html.erb +5 -4
  153. data/app/views/orders/_form.html.erb +4 -1
  154. data/app/views/orders/_google_order.html.erb +2 -2
  155. data/app/views/orders/_line_item.html.erb +6 -3
  156. data/app/views/orders/edit.html.erb +3 -3
  157. data/app/views/orders/new.html.erb +2 -2
  158. data/app/views/products/_cart_form.html.erb +45 -14
  159. data/app/views/products/_thumbnails.html.erb +34 -6
  160. data/app/views/products/index.html.erb +6 -2
  161. data/app/views/products/show.html.erb +1 -1
  162. data/app/views/shared/_edit_resource_links.html.erb +1 -1
  163. data/app/views/shared/_filters.html.erb +52 -0
  164. data/app/views/shared/_footer.html.erb +1 -1
  165. data/app/views/shared/_head.html.erb +6 -0
  166. data/app/views/shared/_login.html.erb +2 -2
  167. data/app/views/shared/_new_resource_links.html.erb +1 -1
  168. data/app/views/shared/_order_details.html.erb +46 -36
  169. data/app/views/shared/_taxonomies.html.erb +5 -6
  170. data/app/views/states/index.js.erb +1 -1
  171. data/app/views/taxons/show.html.erb +1 -1
  172. data/bin/spree +43 -2
  173. data/config/boot.rb +2 -2
  174. data/config/environment.rb +13 -5
  175. data/config/environments/test.rb +6 -2
  176. data/config/initializers/locales.rb +20 -8
  177. data/config/initializers/paperclip.rb +20 -0
  178. data/config/initializers/spree.rb +12 -2
  179. data/config/locales/da.yml +614 -0
  180. data/config/locales/da_rails.yml +197 -0
  181. data/config/locales/de-CH.yml +614 -0
  182. data/config/locales/de-CH_rails.yml +142 -0
  183. data/config/locales/de.yml +95 -4
  184. data/config/locales/en-GB.yml +112 -21
  185. data/config/locales/en-GB_rails.yml +84 -42
  186. data/config/locales/en-US.yml +103 -12
  187. data/config/locales/es.yml +95 -4
  188. data/config/locales/fi.yml +614 -0
  189. data/config/locales/fi_rails.yml +143 -0
  190. data/config/locales/fr-FR.yml +95 -4
  191. data/config/locales/fr-FR_rails.yml +1 -1
  192. data/config/locales/il.yml +614 -0
  193. data/config/locales/il_rails.yml +103 -0
  194. data/config/locales/it.yml +102 -11
  195. data/config/locales/jp.yml +614 -0
  196. data/config/locales/jp_rails.yml +135 -0
  197. data/config/locales/mx.yml +614 -0
  198. data/config/locales/mx_rails.yml +181 -0
  199. data/config/locales/nb-NO.yml +95 -4
  200. data/config/locales/nl-BE.yml +95 -4
  201. data/config/locales/nl-NL.yml +614 -0
  202. data/config/locales/nl-NL_rails.yml +172 -0
  203. data/config/locales/pl.yml +102 -11
  204. data/config/locales/pt-BR.yml +101 -10
  205. data/config/locales/pt-PT.yml +95 -4
  206. data/config/locales/ru-RU.yml +414 -323
  207. data/config/locales/ru-RU_rails.yml +1 -1
  208. data/config/locales/th.yml +614 -0
  209. data/config/locales/th_rails.yml +195 -0
  210. data/config/routes.rb +10 -6
  211. data/config/schedule.rb +27 -0
  212. data/config/spree_permissions.yml +8 -7
  213. data/db/default/zone_members.yml +2 -14
  214. data/{vendor/extensions/tax_calculator/db → db}/migrate/20080620100001_create_tax_rates.rb +0 -0
  215. data/{vendor/extensions/tax_calculator/db → db}/migrate/20080704192456_update_tax_rates_add_zones_etc.rb +0 -0
  216. data/db/migrate/20090401223217_create_eu_vat_zone_again.rb +1 -1
  217. data/db/migrate/20090404192723_add_maestro_fields.rb +12 -0
  218. data/db/migrate/20090406091357_add_alternative_phone.rb +9 -0
  219. data/db/migrate/20090525000325_remove_address_orphans.rb +15 -0
  220. data/db/migrate/20090603153927_create_checkouts.rb +71 -0
  221. data/db/migrate/20090617181106_change_txn_type_to_int.rb +18 -0
  222. data/db/migrate/20090618203233_create_charges.rb +61 -0
  223. data/db/migrate/20090626235303_create_credits.rb +22 -0
  224. data/db/migrate/20090705101511_add_image_dimensions.rb +12 -0
  225. data/db/migrate/20090708175306_create_coupons.rb +16 -0
  226. data/db/migrate/20090708175317_create_discounts.rb +14 -0
  227. data/db/migrate/20090714094201_add_default_addresses_to_user.rb +11 -0
  228. data/db/migrate/20090715172345_create_calculators.rb +22 -0
  229. data/db/migrate/20090731085008_add_charge_source_to_charge.rb +11 -0
  230. data/db/migrate/20090803072025_create_shipping_rates.rb +12 -0
  231. data/db/migrate/20090804090559_create_calculators_for_tax_rates.rb +16 -0
  232. data/db/migrate/20090805131937_drop_credits_and_discounts.rb +9 -0
  233. data/db/migrate/20090805185015_remove_tax_type.rb +13 -0
  234. data/db/migrate/20090806063212_rename_charges_to_adjustments.rb +24 -0
  235. data/db/migrate/20090806160214_rename_base_to_source.rb +11 -0
  236. data/db/migrate/20090809170304_remove_checkout_shipping_address_and_method.rb +15 -0
  237. data/db/migrate/20090809193131_add_is_master_to_variants.rb +43 -0
  238. data/db/migrate/20090809201209_drop_master_price_from_products.rb +13 -0
  239. data/db/migrate/20090809231957_update_legacy_calculators.rb +9 -0
  240. data/db/migrate/20090823005402_coupon_starts_at.rb +13 -0
  241. data/db/migrate/20090828114732_add_queued_mail.rb +12 -0
  242. data/db/migrate/20090908141056_adjust_percent_calc_settings.rb +9 -0
  243. data/db/migrate/migrate/20080620100001_create_tax_rates.rb +13 -0
  244. data/db/migrate/migrate/20080704192456_update_tax_rates_add_zones_etc.rb +17 -0
  245. data/db/sample/adjustments.yml +20 -0
  246. data/db/sample/assets.yml +219 -11
  247. data/db/sample/calculators.yml +16 -0
  248. data/db/sample/checkouts.yml +8 -0
  249. data/db/sample/coupons.yml +4 -0
  250. data/db/sample/creditcards.yml +0 -1
  251. data/db/sample/orders.yml +0 -7
  252. data/db/sample/preferences.yml +20 -0
  253. data/db/sample/products.yml +0 -9
  254. data/db/sample/shipping_methods.yml +3 -10
  255. data/db/sample/variants.yml +13 -0
  256. data/db/schema.rb +73 -23
  257. data/db/seeds.rb +8 -3
  258. data/generate +4 -0
  259. data/lib/generators/extension/extension_generator.rb +1 -1
  260. data/lib/generators/extension/templates/Rakefile +1 -1
  261. data/lib/generators/extension/templates/extension.rb +22 -2
  262. data/lib/generators/extension_migration/extension_migration_generator.rb +3 -3
  263. data/lib/generators/instance/instance_generator.rb +4 -2
  264. data/lib/plugins/extension_patches/lib/asset_copy.rb +1 -50
  265. data/lib/plugins/monkey_patches/lib/monkey_patches.rb +2 -2
  266. data/lib/product_filters.rb +174 -0
  267. data/lib/product_scopes.rb +76 -0
  268. data/lib/spree.rb +2 -2
  269. data/lib/spree/config.rb +1 -1
  270. data/lib/spree/extension_loader.rb +10 -1
  271. data/lib/spree/file_utilz.rb +71 -0
  272. data/lib/spree/initializer.rb +13 -1
  273. data/lib/spree/setup.rb +7 -1
  274. data/lib/tasks/consistency.rake +30 -0
  275. data/lib/tasks/database.rake +1 -7
  276. data/lib/tasks/extensions.rake +24 -8
  277. data/lib/tasks/framework.rake +0 -1
  278. data/lib/tasks/release.rake +22 -11
  279. data/lib/tasks/sample/products/1009/large/ror_baseball_jersey_green.png +0 -0
  280. data/lib/tasks/sample/products/1009/mini/ror_baseball_jersey_green.png +0 -0
  281. data/lib/tasks/sample/products/1009/original/ror_baseball_jersey_green.png +0 -0
  282. data/lib/tasks/sample/products/1009/product/ror_baseball_jersey_green.png +0 -0
  283. data/lib/tasks/sample/products/1009/small/ror_baseball_jersey_green.png +0 -0
  284. data/lib/tasks/sample/products/1010/large/ror_baseball_jersey_back_green.png +0 -0
  285. data/lib/tasks/sample/products/1010/mini/ror_baseball_jersey_back_green.png +0 -0
  286. data/lib/tasks/sample/products/1010/original/ror_baseball_jersey_back_green.png +0 -0
  287. data/lib/tasks/sample/products/1010/product/ror_baseball_jersey_back_green.png +0 -0
  288. data/lib/tasks/sample/products/1010/small/ror_baseball_jersey_back_green.png +0 -0
  289. data/lib/tasks/sample/products/1011/large/ror_baseball_jersey_green.png +0 -0
  290. data/lib/tasks/sample/products/1011/mini/ror_baseball_jersey_green.png +0 -0
  291. data/lib/tasks/sample/products/1011/original/ror_baseball_jersey_green.png +0 -0
  292. data/lib/tasks/sample/products/1011/product/ror_baseball_jersey_green.png +0 -0
  293. data/lib/tasks/sample/products/1011/small/ror_baseball_jersey_green.png +0 -0
  294. data/lib/tasks/sample/products/1012/large/ror_baseball_jersey_back_green.png +0 -0
  295. data/lib/tasks/sample/products/1012/mini/ror_baseball_jersey_back_green.png +0 -0
  296. data/lib/tasks/sample/products/1012/original/ror_baseball_jersey_back_green.png +0 -0
  297. data/lib/tasks/sample/products/1012/product/ror_baseball_jersey_back_green.png +0 -0
  298. data/lib/tasks/sample/products/1012/small/ror_baseball_jersey_back_green.png +0 -0
  299. data/lib/tasks/sample/products/1013/large/ror_baseball_jersey_green.png +0 -0
  300. data/lib/tasks/sample/products/1013/mini/ror_baseball_jersey_green.png +0 -0
  301. data/lib/tasks/sample/products/1013/original/ror_baseball_jersey_green.png +0 -0
  302. data/lib/tasks/sample/products/1013/product/ror_baseball_jersey_green.png +0 -0
  303. data/lib/tasks/sample/products/1013/small/ror_baseball_jersey_green.png +0 -0
  304. data/lib/tasks/sample/products/1014/large/ror_baseball_jersey_back_green.png +0 -0
  305. data/lib/tasks/sample/products/1014/mini/ror_baseball_jersey_back_green.png +0 -0
  306. data/lib/tasks/sample/products/1014/original/ror_baseball_jersey_back_green.png +0 -0
  307. data/lib/tasks/sample/products/1014/product/ror_baseball_jersey_back_green.png +0 -0
  308. data/lib/tasks/sample/products/1014/small/ror_baseball_jersey_back_green.png +0 -0
  309. data/lib/tasks/sample/products/1015/large/ror_baseball_jersey_blue.png +0 -0
  310. data/lib/tasks/sample/products/1015/mini/ror_baseball_jersey_blue.png +0 -0
  311. data/lib/tasks/sample/products/1015/original/ror_baseball_jersey_blue.png +0 -0
  312. data/lib/tasks/sample/products/1015/product/ror_baseball_jersey_blue.png +0 -0
  313. data/lib/tasks/sample/products/1015/small/ror_baseball_jersey_blue.png +0 -0
  314. data/lib/tasks/sample/products/1016/large/ror_baseball_jersey_back_blue.png +0 -0
  315. data/lib/tasks/sample/products/1016/mini/ror_baseball_jersey_back_blue.png +0 -0
  316. data/lib/tasks/sample/products/1016/original/ror_baseball_jersey_back_blue.png +0 -0
  317. data/lib/tasks/sample/products/1016/product/ror_baseball_jersey_back_blue.png +0 -0
  318. data/lib/tasks/sample/products/1016/small/ror_baseball_jersey_back_blue.png +0 -0
  319. data/lib/tasks/sample/products/1017/large/ror_baseball_jersey_blue.png +0 -0
  320. data/lib/tasks/sample/products/1017/mini/ror_baseball_jersey_blue.png +0 -0
  321. data/lib/tasks/sample/products/1017/original/ror_baseball_jersey_blue.png +0 -0
  322. data/lib/tasks/sample/products/1017/product/ror_baseball_jersey_blue.png +0 -0
  323. data/lib/tasks/sample/products/1017/small/ror_baseball_jersey_blue.png +0 -0
  324. data/lib/tasks/sample/products/1018/large/ror_baseball_jersey_back_blue.png +0 -0
  325. data/lib/tasks/sample/products/1018/mini/ror_baseball_jersey_back_blue.png +0 -0
  326. data/lib/tasks/sample/products/1018/original/ror_baseball_jersey_back_blue.png +0 -0
  327. data/lib/tasks/sample/products/1018/product/ror_baseball_jersey_back_blue.png +0 -0
  328. data/lib/tasks/sample/products/1018/small/ror_baseball_jersey_back_blue.png +0 -0
  329. data/lib/tasks/sample/products/1019/large/ror_baseball_jersey_blue.png +0 -0
  330. data/lib/tasks/sample/products/1019/mini/ror_baseball_jersey_blue.png +0 -0
  331. data/lib/tasks/sample/products/1019/original/ror_baseball_jersey_blue.png +0 -0
  332. data/lib/tasks/sample/products/1019/product/ror_baseball_jersey_blue.png +0 -0
  333. data/lib/tasks/sample/products/1019/small/ror_baseball_jersey_blue.png +0 -0
  334. data/lib/tasks/sample/products/1020/large/ror_baseball_jersey_back_blue.png +0 -0
  335. data/lib/tasks/sample/products/1020/mini/ror_baseball_jersey_back_blue.png +0 -0
  336. data/lib/tasks/sample/products/1020/original/ror_baseball_jersey_back_blue.png +0 -0
  337. data/lib/tasks/sample/products/1020/product/ror_baseball_jersey_back_blue.png +0 -0
  338. data/lib/tasks/sample/products/1020/small/ror_baseball_jersey_back_blue.png +0 -0
  339. data/lib/tasks/sample/products/1021/large/ror_baseball_jersey_red.png +0 -0
  340. data/lib/tasks/sample/products/1021/mini/ror_baseball_jersey_red.png +0 -0
  341. data/lib/tasks/sample/products/1021/original/ror_baseball_jersey_red.png +0 -0
  342. data/lib/tasks/sample/products/1021/product/ror_baseball_jersey_red.png +0 -0
  343. data/lib/tasks/sample/products/1021/small/ror_baseball_jersey_red.png +0 -0
  344. data/lib/tasks/sample/products/1022/large/ror_baseball_jersey_back_red.png +0 -0
  345. data/lib/tasks/sample/products/1022/mini/ror_baseball_jersey_back_red.png +0 -0
  346. data/lib/tasks/sample/products/1022/original/ror_baseball_jersey_back_red.png +0 -0
  347. data/lib/tasks/sample/products/1022/product/ror_baseball_jersey_back_red.png +0 -0
  348. data/lib/tasks/sample/products/1022/small/ror_baseball_jersey_back_red.png +0 -0
  349. data/lib/tasks/sample/products/1023/large/ror_baseball_jersey_red.png +0 -0
  350. data/lib/tasks/sample/products/1023/mini/ror_baseball_jersey_red.png +0 -0
  351. data/lib/tasks/sample/products/1023/original/ror_baseball_jersey_red.png +0 -0
  352. data/lib/tasks/sample/products/1023/product/ror_baseball_jersey_red.png +0 -0
  353. data/lib/tasks/sample/products/1023/small/ror_baseball_jersey_red.png +0 -0
  354. data/lib/tasks/sample/products/1024/large/ror_baseball_jersey_back_red.png +0 -0
  355. data/lib/tasks/sample/products/1024/mini/ror_baseball_jersey_back_red.png +0 -0
  356. data/lib/tasks/sample/products/1024/original/ror_baseball_jersey_back_red.png +0 -0
  357. data/lib/tasks/sample/products/1024/product/ror_baseball_jersey_back_red.png +0 -0
  358. data/lib/tasks/sample/products/1024/small/ror_baseball_jersey_back_red.png +0 -0
  359. data/lib/tasks/sample/products/1025/large/ror_baseball_jersey_red.png +0 -0
  360. data/lib/tasks/sample/products/1025/mini/ror_baseball_jersey_red.png +0 -0
  361. data/lib/tasks/sample/products/1025/original/ror_baseball_jersey_red.png +0 -0
  362. data/lib/tasks/sample/products/1025/product/ror_baseball_jersey_red.png +0 -0
  363. data/lib/tasks/sample/products/1025/small/ror_baseball_jersey_red.png +0 -0
  364. data/lib/tasks/sample/products/1026/large/ror_baseball_jersey_back_red.png +0 -0
  365. data/lib/tasks/sample/products/1026/mini/ror_baseball_jersey_back_red.png +0 -0
  366. data/lib/tasks/sample/products/1026/original/ror_baseball_jersey_back_red.png +0 -0
  367. data/lib/tasks/sample/products/1026/product/ror_baseball_jersey_back_red.png +0 -0
  368. data/lib/tasks/sample/products/1026/small/ror_baseball_jersey_back_red.png +0 -0
  369. data/lib/tasks/translation.rake +1 -1
  370. data/lib/tasks/upgrade.rake +2 -9
  371. data/public/images/menu-current.png +0 -0
  372. data/public/images/progress.gif +0 -0
  373. data/public/javascripts/calculator.js +13 -0
  374. data/public/javascripts/checkout.js +163 -34
  375. data/public/javascripts/jquery.alerts/images/help.gif +0 -0
  376. data/public/javascripts/jquery.alerts/images/important.gif +0 -0
  377. data/public/javascripts/jquery.alerts/images/info.gif +0 -0
  378. data/public/javascripts/jquery.alerts/images/title.gif +0 -0
  379. data/public/javascripts/jquery.alerts/jquery.alerts.css +57 -0
  380. data/public/javascripts/jquery.alerts/jquery.alerts.js +235 -0
  381. data/public/javascripts/jquery.alerts/jquery.alerts.spree.css +30 -0
  382. data/public/javascripts/jquery.validate.min.js +16 -0
  383. data/public/javascripts/jsTree/source/_lib.js +126 -0
  384. data/public/javascripts/jsTree/source/themes/default/context.gif +0 -0
  385. data/public/javascripts/jsTree/source/themes/default/create.png +0 -0
  386. data/public/javascripts/jsTree/source/themes/default/dot.gif +0 -0
  387. data/public/javascripts/jsTree/source/themes/default/f.png +0 -0
  388. data/public/javascripts/jsTree/source/themes/default/fminus.gif +0 -0
  389. data/public/javascripts/jsTree/source/themes/default/fminus_rtl.gif +0 -0
  390. data/public/javascripts/jsTree/source/themes/default/fplus.gif +0 -0
  391. data/public/javascripts/jsTree/source/themes/default/fplus_rtl.gif +0 -0
  392. data/public/javascripts/jsTree/source/themes/default/lastli.gif +0 -0
  393. data/public/javascripts/jsTree/source/themes/default/lastli_rtl.gif +0 -0
  394. data/public/javascripts/jsTree/source/themes/default/li.gif +0 -0
  395. data/public/javascripts/jsTree/source/themes/default/remove.png +0 -0
  396. data/public/javascripts/jsTree/source/themes/default/rename.png +0 -0
  397. data/public/javascripts/jsTree/source/themes/default/style.css +44 -0
  398. data/public/javascripts/jsTree/source/themes/default/throbber.gif +0 -0
  399. data/public/javascripts/jsTree/source/themes/marker.gif +0 -0
  400. data/public/javascripts/jsTree/source/themes/marker_rtl.gif +0 -0
  401. data/public/javascripts/jsTree/source/themes/plus.gif +0 -0
  402. data/public/javascripts/jsTree/source/themes/remove.png +0 -0
  403. data/public/javascripts/jsTree/source/themes/spree/context.gif +0 -0
  404. data/public/javascripts/jsTree/source/themes/spree/create.png +0 -0
  405. data/public/javascripts/jsTree/source/themes/spree/dot.gif +0 -0
  406. data/public/javascripts/jsTree/source/themes/spree/f.png +0 -0
  407. data/public/javascripts/jsTree/source/themes/spree/fminus.gif +0 -0
  408. data/public/javascripts/jsTree/source/themes/spree/fminus_rtl.gif +0 -0
  409. data/public/javascripts/jsTree/source/themes/spree/fplus.gif +0 -0
  410. data/public/javascripts/jsTree/source/themes/spree/fplus_rtl.gif +0 -0
  411. data/public/javascripts/jsTree/source/themes/spree/lastli.gif +0 -0
  412. data/public/javascripts/jsTree/source/themes/spree/li.gif +0 -0
  413. data/public/javascripts/jsTree/source/themes/spree/remove.png +0 -0
  414. data/public/javascripts/jsTree/source/themes/spree/rename.png +0 -0
  415. data/public/javascripts/jsTree/source/themes/spree/style.css +39 -0
  416. data/public/javascripts/jsTree/source/themes/spree/throbber.gif +0 -0
  417. data/public/javascripts/jsTree/source/tree_component.css +62 -0
  418. data/public/javascripts/jsTree/source/tree_component.js +2315 -0
  419. data/public/javascripts/jsTree/source/tree_component.min.js +14 -0
  420. data/public/javascripts/spree.js +9 -0
  421. data/public/javascripts/taxonomy.js +202 -0
  422. data/public/stylesheets/admin/admin.css +36 -3
  423. data/public/stylesheets/compiled/screen.css +393 -306
  424. data/public/stylesheets/sass/_buttons.sass +59 -0
  425. data/public/stylesheets/sass/_cart.sass +21 -0
  426. data/public/stylesheets/sass/_checkout.sass +173 -0
  427. data/public/stylesheets/sass/_colors.sass +11 -0
  428. data/public/stylesheets/sass/_layout.sass +63 -0
  429. data/public/stylesheets/sass/_messages.sass +28 -0
  430. data/public/stylesheets/sass/_mixins.sass +17 -0
  431. data/public/stylesheets/sass/_navigation.sass +97 -0
  432. data/public/stylesheets/sass/_prices.sass +13 -0
  433. data/public/stylesheets/sass/_product_detail.sass +27 -0
  434. data/public/stylesheets/sass/_product_thumbnail.sass +58 -0
  435. data/public/stylesheets/sass/_registration.sass +9 -0
  436. data/public/stylesheets/sass/screen.sass +12 -555
  437. data/public/stylesheets/scaffold.css +54 -0
  438. data/spec/controllers/orders_controller_spec.rb +3 -2
  439. data/spec/models/address_spec.rb +2 -1
  440. data/spec/models/shipping_order_spec.rb +8 -6
  441. data/spec/models/zone_spec.rb +1 -1
  442. data/spec/preference_factory.rb +1 -1
  443. data/test/factories/address_factory.rb +20 -0
  444. data/test/factories/adjustments_factory.rb +53 -0
  445. data/test/factories/checkout_factory.rb +15 -0
  446. data/test/factories/country_factory.rb +5 -0
  447. data/test/factories/coupon_factory.rb +5 -0
  448. data/test/factories/creditcard_factory.rb +12 -0
  449. data/test/factories/creditcard_payment_factory.rb +11 -0
  450. data/test/factories/inventory_unit_factory.rb +2 -0
  451. data/test/factories/line_item_factory.rb +8 -0
  452. data/test/factories/options_factory.rb +10 -0
  453. data/test/factories/order_factory.rb +6 -0
  454. data/test/factories/preference_factory.rb +5 -0
  455. data/test/factories/product_factory.rb +13 -0
  456. data/test/factories/role_factory.rb +5 -0
  457. data/test/factories/shipment_factory.rb +6 -0
  458. data/test/factories/shipping_category_factory.rb +5 -0
  459. data/test/factories/shipping_method_factory.rb +13 -0
  460. data/test/factories/tax_category_factory.rb +8 -0
  461. data/test/factories/tax_rate_factory.rb +4 -0
  462. data/test/factories/taxon_factory.rb +16 -0
  463. data/test/factories/taxonomy_factory.rb +5 -0
  464. data/test/factories/user_factory.rb +11 -0
  465. data/test/factories/variant_factory.rb +13 -0
  466. data/test/factories/zone_factory.rb +10 -0
  467. data/test/fixtures/countries.yml +4 -0
  468. data/test/fixtures/gateway_configurations.yml +2 -0
  469. data/test/fixtures/gateways.yml +4 -0
  470. data/test/fixtures/states.yml +204 -0
  471. data/test/functional/calculators_controller_test.rb +8 -0
  472. data/test/functional/checkouts_controller_test.rb +77 -0
  473. data/test/functional/products_controller_test.rb +12 -0
  474. data/test/functional/users_controller_test.rb +25 -0
  475. data/test/test_helper.rb +66 -0
  476. data/test/unit/address_test.rb +39 -0
  477. data/test/unit/charge_test.rb +90 -0
  478. data/test/unit/checkout_test.rb +10 -0
  479. data/test/unit/country_test.rb +6 -0
  480. data/test/unit/coupon_test.rb +56 -0
  481. data/test/unit/credit_test.rb +61 -0
  482. data/test/unit/creditcard_payment_test.rb +28 -0
  483. data/test/unit/creditcard_test.rb +44 -0
  484. data/test/unit/factories_test.rb +29 -0
  485. data/test/unit/flat_percent_item_total_test.rb +28 -0
  486. data/test/unit/flat_rate_calculators_test.rb +13 -0
  487. data/test/unit/has_calculator_test.rb +22 -0
  488. data/test/unit/helpers/calculators_helper_test.rb +4 -0
  489. data/test/unit/helpers/checkouts_helper_test.rb +26 -0
  490. data/test/unit/helpers/products_helper_test.rb +32 -0
  491. data/test/unit/helpers/spree/base_helper_test.rb +43 -0
  492. data/test/unit/incomplete_checkout_test.rb +68 -0
  493. data/test/unit/inventory_unit_test.rb +20 -0
  494. data/test/unit/line_item_test.rb +73 -0
  495. data/test/unit/order_test.rb +80 -0
  496. data/test/unit/per_item_calculator_test.rb +14 -0
  497. data/test/unit/preference_test.rb +148 -0
  498. data/test/unit/product_test.rb +279 -0
  499. data/test/unit/sales_tax_calculator_test.rb +46 -0
  500. data/test/unit/shipping_method_test.rb +21 -0
  501. data/test/unit/state_event_test.rb +40 -0
  502. data/test/unit/state_test.rb +7 -0
  503. data/test/unit/tax_rate_test.rb +9 -0
  504. data/test/unit/variant_test.rb +128 -0
  505. data/test/unit/vat_calculator_test.rb +60 -0
  506. data/vendor/extensions/calculators/README.markdown +4 -0
  507. data/vendor/extensions/calculators/calculators_extension.rb +31 -0
  508. data/vendor/extensions/localization/public/images/flags/{dk.png → da.png} +0 -0
  509. data/vendor/extensions/localization/public/images/flags/de_CH.png +0 -0
  510. data/vendor/extensions/payment_gateway/README_PAYPAL.markdown +1 -1
  511. data/vendor/extensions/payment_gateway/db/migrate/20090517173727_add_currency_code_option_to_paypal_gateway.rb +13 -0
  512. data/vendor/extensions/payment_gateway/lib/spree/payment_gateway.rb +22 -12
  513. data/vendor/plugins/acts_as_adjacency_list/lib/active_record/acts/adjacency_list.rb +13 -20
  514. data/vendor/plugins/delegate_belongs_to/README +1 -0
  515. data/vendor/plugins/delegate_belongs_to/Rakefile +21 -0
  516. data/vendor/plugins/delegate_belongs_to/init.rb +2 -0
  517. data/vendor/plugins/delegate_belongs_to/lib/delegate_belongs_to.rb +95 -0
  518. data/vendor/plugins/delegate_belongs_to/spec/app_root/app/controllers/application.rb +2 -0
  519. data/vendor/plugins/delegate_belongs_to/spec/app_root/app/models/contact.rb +5 -0
  520. data/vendor/plugins/delegate_belongs_to/spec/app_root/app/models/user_default.rb +2 -0
  521. data/vendor/plugins/delegate_belongs_to/spec/app_root/app/models/user_mixed.rb +2 -0
  522. data/vendor/plugins/delegate_belongs_to/spec/app_root/app/models/user_no_default.rb +2 -0
  523. data/vendor/plugins/{resource_controller/test → delegate_belongs_to/spec/app_root}/config/boot.rb +14 -9
  524. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/database.yml +21 -0
  525. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/environment.rb +13 -0
  526. data/{public/favicon.ico → vendor/plugins/delegate_belongs_to/spec/app_root/config/environments/in_memory.rb} +0 -0
  527. data/vendor/plugins/{resource_controller/test/app/views/tags/index.rjs → delegate_belongs_to/spec/app_root/config/environments/mysql.rb} +0 -0
  528. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/environments/postgresql.rb +0 -0
  529. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/environments/sqlite.rb +0 -0
  530. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/environments/sqlite3.rb +0 -0
  531. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/routes.rb +4 -0
  532. data/vendor/plugins/delegate_belongs_to/spec/app_root/db/migrate/01_create_users.rb +22 -0
  533. data/vendor/plugins/delegate_belongs_to/spec/app_root/db/migrate/02_create_contacts.rb +12 -0
  534. data/vendor/plugins/delegate_belongs_to/spec/app_root/lib/console_with_fixtures.rb +4 -0
  535. data/vendor/plugins/delegate_belongs_to/spec/app_root/script/console +7 -0
  536. data/vendor/plugins/delegate_belongs_to/spec/model/with_defaults_spec.rb +30 -0
  537. data/vendor/plugins/delegate_belongs_to/spec/model/with_mixed_spec.rb +29 -0
  538. data/vendor/plugins/delegate_belongs_to/spec/model/with_no_defaults_spec.rb +30 -0
  539. data/vendor/plugins/delegate_belongs_to/spec/spec_helper.rb +68 -0
  540. data/vendor/plugins/has_calculator/README +7 -0
  541. data/vendor/plugins/has_calculator/init.rb +2 -0
  542. data/vendor/plugins/has_calculator/lib/has_calculator.rb +52 -0
  543. data/vendor/plugins/mail_queue/README +40 -0
  544. data/vendor/plugins/mail_queue/Rakefile +22 -0
  545. data/vendor/plugins/mail_queue/init.rb +1 -0
  546. data/vendor/plugins/mail_queue/install.rb +1 -0
  547. data/vendor/plugins/mail_queue/lib/mail_queue.rb +48 -0
  548. data/vendor/plugins/mail_queue/lib/queued_mail.rb +5 -0
  549. data/vendor/plugins/mail_queue/lib/test_mail_queue_mailer.rb +19 -0
  550. data/vendor/plugins/mail_queue/lib/test_mail_queue_mailer/notify.rhtml +1 -0
  551. data/vendor/plugins/mail_queue/tasks/mailer_queue_tasks.rake +4 -0
  552. data/vendor/plugins/mail_queue/test/mailer_queue_test.rb +29 -0
  553. data/vendor/plugins/paperclip/README.rdoc +126 -11
  554. data/vendor/plugins/paperclip/Rakefile +35 -24
  555. data/vendor/plugins/paperclip/lib/paperclip.rb +141 -67
  556. data/vendor/plugins/paperclip/lib/paperclip/attachment.rb +233 -117
  557. data/vendor/plugins/paperclip/lib/paperclip/callback_compatability.rb +33 -0
  558. data/vendor/plugins/paperclip/lib/paperclip/geometry.rb +4 -3
  559. data/vendor/plugins/paperclip/lib/paperclip/interpolations.rb +105 -0
  560. data/vendor/plugins/paperclip/lib/paperclip/iostream.rb +16 -1
  561. data/vendor/plugins/paperclip/lib/paperclip/matchers.rb +4 -0
  562. data/vendor/plugins/paperclip/lib/paperclip/matchers/have_attached_file_matcher.rb +49 -0
  563. data/vendor/plugins/paperclip/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb +66 -0
  564. data/vendor/plugins/paperclip/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +48 -0
  565. data/vendor/plugins/paperclip/lib/paperclip/matchers/validate_attachment_size_matcher.rb +83 -0
  566. data/vendor/plugins/paperclip/lib/paperclip/processor.rb +49 -0
  567. data/vendor/plugins/paperclip/lib/paperclip/storage.rb +54 -25
  568. data/vendor/plugins/paperclip/lib/paperclip/thumbnail.rb +13 -31
  569. data/vendor/plugins/paperclip/lib/paperclip/upfile.rb +11 -0
  570. data/vendor/plugins/paperclip/paperclip.gemspec +37 -0
  571. data/vendor/plugins/paperclip/shoulda_macros/paperclip.rb +58 -22
  572. data/vendor/plugins/paperclip/tasks/paperclip_tasks.rake +1 -1
  573. data/vendor/plugins/paperclip/test/attachment_test.rb +460 -54
  574. data/vendor/plugins/paperclip/test/database.yml +0 -1
  575. data/vendor/plugins/paperclip/test/fixtures/s3.yml +4 -0
  576. data/vendor/plugins/paperclip/test/fixtures/twopage.pdf +0 -0
  577. data/vendor/plugins/paperclip/test/geometry_test.rb +22 -13
  578. data/vendor/plugins/paperclip/test/helper.rb +46 -3
  579. data/vendor/plugins/paperclip/test/integration_test.rb +140 -52
  580. data/vendor/plugins/paperclip/test/interpolations_test.rb +120 -0
  581. data/vendor/plugins/paperclip/test/iostream_test.rb +32 -21
  582. data/vendor/plugins/paperclip/test/matchers/have_attached_file_matcher_test.rb +21 -0
  583. data/vendor/plugins/paperclip/test/matchers/validate_attachment_content_type_matcher_test.rb +30 -0
  584. data/vendor/plugins/paperclip/test/matchers/validate_attachment_presence_matcher_test.rb +21 -0
  585. data/vendor/plugins/paperclip/test/matchers/validate_attachment_size_matcher_test.rb +50 -0
  586. data/vendor/plugins/paperclip/test/paperclip_test.rb +148 -36
  587. data/vendor/plugins/paperclip/test/processor_test.rb +10 -0
  588. data/vendor/plugins/paperclip/test/storage_test.rb +126 -16
  589. data/vendor/plugins/paperclip/test/thumbnail_test.rb +51 -19
  590. metadata +586 -622
  591. data/app/views/admin/products/_images.html.erb +0 -42
  592. data/app/views/admin/taxonomies/_yui_head.html.erb +0 -17
  593. data/app/views/orders/_billing.html.erb +0 -53
  594. data/app/views/orders/_checkout_form.html.erb +0 -14
  595. data/app/views/orders/_confirmation.html.erb +0 -11
  596. data/app/views/orders/_payment.html.erb +0 -30
  597. data/app/views/orders/_shipping.html.erb +0 -54
  598. data/app/views/orders/_shipping_method.html.erb +0 -10
  599. data/app/views/orders/checkout.html.erb +0 -15
  600. data/config/initializers/searchlogic.rb +0 -6
  601. data/db/sample/images/ror_bag.jpg +0 -0
  602. data/db/sample/images/ror_baseball_jersey.jpg +0 -0
  603. data/db/sample/images/ror_jr_spaghetti.jpg +0 -0
  604. data/db/sample/images/ror_mug.jpg +0 -0
  605. data/db/sample/images/ror_ringer_tshirt.jpg +0 -0
  606. data/db/sample/images/ror_stein.jpg +0 -0
  607. data/db/sample/images/ror_tote.jpg +0 -0
  608. data/db/sample/zone_members.yml +0 -16
  609. data/db/sample/zones.yml +0 -6
  610. data/lib/flat_rate.rb +0 -10
  611. data/lib/spree/checkout.rb +0 -74
  612. data/public/assets/products/1/mini/ror_tote.jpeg +0 -0
  613. data/public/assets/products/1/original/ror_tote.jpeg +0 -0
  614. data/public/assets/products/1/product/ror_tote.jpeg +0 -0
  615. data/public/assets/products/1/small/ror_tote.jpeg +0 -0
  616. data/public/assets/products/10/mini/ror_ringer_back.jpeg +0 -0
  617. data/public/assets/products/10/original/ror_ringer_back.jpeg +0 -0
  618. data/public/assets/products/10/product/ror_ringer_back.jpeg +0 -0
  619. data/public/assets/products/10/small/ror_ringer_back.jpeg +0 -0
  620. data/public/assets/products/1004/mini/apache_baseball.png +0 -0
  621. data/public/assets/products/1004/original/apache_baseball.png +0 -0
  622. data/public/assets/products/1004/product/apache_baseball.png +0 -0
  623. data/public/assets/products/1004/small/apache_baseball.png +0 -0
  624. data/public/assets/products/1008/mini/ruby_baseball.png +0 -0
  625. data/public/assets/products/1008/original/ruby_baseball.png +0 -0
  626. data/public/assets/products/1008/product/ruby_baseball.png +0 -0
  627. data/public/assets/products/1008/small/ruby_baseball.png +0 -0
  628. data/public/assets/products/11/mini/ror_stein.jpeg +0 -0
  629. data/public/assets/products/11/original/ror_stein.jpeg +0 -0
  630. data/public/assets/products/11/product/ror_stein.jpeg +0 -0
  631. data/public/assets/products/11/small/ror_stein.jpeg +0 -0
  632. data/public/assets/products/12/mini/ror_stein_back.jpeg +0 -0
  633. data/public/assets/products/12/original/ror_stein_back.jpeg +0 -0
  634. data/public/assets/products/12/product/ror_stein_back.jpeg +0 -0
  635. data/public/assets/products/12/small/ror_stein_back.jpeg +0 -0
  636. data/public/assets/products/2/mini/ror_tote_back.jpeg +0 -0
  637. data/public/assets/products/2/original/ror_tote_back.jpeg +0 -0
  638. data/public/assets/products/2/product/ror_tote_back.jpeg +0 -0
  639. data/public/assets/products/2/small/ror_tote_back.jpeg +0 -0
  640. data/public/assets/products/3/mini/ror_bag.jpeg +0 -0
  641. data/public/assets/products/3/original/ror_bag.jpeg +0 -0
  642. data/public/assets/products/3/product/ror_bag.jpeg +0 -0
  643. data/public/assets/products/3/small/ror_bag.jpeg +0 -0
  644. data/public/assets/products/4/mini/ror_baseball.jpeg +0 -0
  645. data/public/assets/products/4/original/ror_baseball.jpeg +0 -0
  646. data/public/assets/products/4/product/ror_baseball.jpeg +0 -0
  647. data/public/assets/products/4/small/ror_baseball.jpeg +0 -0
  648. data/public/assets/products/5/mini/ror_baseball_back.jpeg +0 -0
  649. data/public/assets/products/5/original/ror_baseball_back.jpeg +0 -0
  650. data/public/assets/products/5/product/ror_baseball_back.jpeg +0 -0
  651. data/public/assets/products/5/small/ror_baseball_back.jpeg +0 -0
  652. data/public/assets/products/6/mini/ror_jr_spaghetti.jpeg +0 -0
  653. data/public/assets/products/6/original/ror_jr_spaghetti.jpeg +0 -0
  654. data/public/assets/products/6/product/ror_jr_spaghetti.jpeg +0 -0
  655. data/public/assets/products/6/small/ror_jr_spaghetti.jpeg +0 -0
  656. data/public/assets/products/7/mini/ror_mug.jpeg +0 -0
  657. data/public/assets/products/7/original/ror_mug.jpeg +0 -0
  658. data/public/assets/products/7/product/ror_mug.jpeg +0 -0
  659. data/public/assets/products/7/small/ror_mug.jpeg +0 -0
  660. data/public/assets/products/8/mini/ror_mug_back.jpeg +0 -0
  661. data/public/assets/products/8/original/ror_mug_back.jpeg +0 -0
  662. data/public/assets/products/8/product/ror_mug_back.jpeg +0 -0
  663. data/public/assets/products/8/small/ror_mug_back.jpeg +0 -0
  664. data/public/assets/products/9/mini/ror_ringer.jpeg +0 -0
  665. data/public/assets/products/9/original/ror_ringer.jpeg +0 -0
  666. data/public/assets/products/9/product/ror_ringer.jpeg +0 -0
  667. data/public/assets/products/9/small/ror_ringer.jpeg +0 -0
  668. data/public/javascripts/jquery.validate.pack.js +0 -15
  669. data/public/javascripts/spree-yui.js +0 -693
  670. data/public/javascripts/yui-includes.js +0 -57
  671. data/public/stylesheets/admin/david-admin.css +0 -210
  672. data/spec/controllers/admin/shipments_controller_spec.rb +0 -30
  673. data/spec/helpers/admin/configurations_helper_spec.rb +0 -11
  674. data/spec/helpers/admin/mail_settings_helper_spec.rb +0 -11
  675. data/spec/helpers/products_helper_spec.rb +0 -12
  676. data/spec/helpers/spree/base_helper_spec.rb +0 -30
  677. data/spec/models/country_spec.rb +0 -29
  678. data/spec/models/line_item_spec.rb +0 -78
  679. data/spec/models/preference_spec.rb +0 -185
  680. data/spec/models/product_spec.rb +0 -207
  681. data/spec/models/shipping_method_spec.rb +0 -59
  682. data/spec/models/state_event_spec.rb +0 -12
  683. data/spec/models/state_spec.rb +0 -28
  684. data/spec/models/variant_spec.rb +0 -98
  685. data/vendor/extensions/flat_rate_shipping/README.markdown +0 -3
  686. data/vendor/extensions/flat_rate_shipping/Rakefile +0 -120
  687. data/vendor/extensions/flat_rate_shipping/flat_rate_shipping_extension.rb +0 -11
  688. data/vendor/extensions/flat_rate_shipping/lib/flat_rate_shipping_configuration.rb +0 -7
  689. data/vendor/extensions/flat_rate_shipping/lib/spree/flat_rate_shipping/calculator.rb +0 -9
  690. data/vendor/extensions/flat_rate_shipping/lib/spree/flat_rate_shipping/config.rb +0 -22
  691. data/vendor/extensions/flat_rate_shipping/lib/tasks/flat_rate_shipping_extension_tasks.rake +0 -29
  692. data/vendor/extensions/flat_rate_shipping/spec/spec.opts +0 -6
  693. data/vendor/extensions/flat_rate_shipping/spec/spec_helper.rb +0 -37
  694. data/vendor/extensions/tax_calculator/README.markdown +0 -8
  695. data/vendor/extensions/tax_calculator/Rakefile +0 -120
  696. data/vendor/extensions/tax_calculator/app/controllers/admin/tax_rates_controller.rb +0 -27
  697. data/vendor/extensions/tax_calculator/app/views/admin/tax_rates/_form.html.erb +0 -20
  698. data/vendor/extensions/tax_calculator/config/locales/de.yml +0 -30
  699. data/vendor/extensions/tax_calculator/config/locales/en-GB.yml +0 -30
  700. data/vendor/extensions/tax_calculator/config/locales/en-US.yml +0 -32
  701. data/vendor/extensions/tax_calculator/config/locales/es.yml +0 -30
  702. data/vendor/extensions/tax_calculator/config/locales/it.yml +0 -30
  703. data/vendor/extensions/tax_calculator/config/locales/nb-NO.yml +0 -30
  704. data/vendor/extensions/tax_calculator/config/locales/pl.yml +0 -30
  705. data/vendor/extensions/tax_calculator/config/locales/pt-BR.yml +0 -30
  706. data/vendor/extensions/tax_calculator/config/routes.rb +0 -4
  707. data/vendor/extensions/tax_calculator/lib/spree/sales_tax_calculator.rb +0 -31
  708. data/vendor/extensions/tax_calculator/lib/spree/tax/config.rb +0 -22
  709. data/vendor/extensions/tax_calculator/lib/spree/tax_calculator.rb +0 -18
  710. data/vendor/extensions/tax_calculator/lib/spree/vat_calculator.rb +0 -42
  711. data/vendor/extensions/tax_calculator/lib/tasks/tax_calculator_extension_tasks.rake +0 -18
  712. data/vendor/extensions/tax_calculator/lib/tax_configuration.rb +0 -7
  713. data/vendor/extensions/tax_calculator/spec/controllers/tax_calculator_spec.rb +0 -12
  714. data/vendor/extensions/tax_calculator/spec/helpers/admin/tax_rates_helper_spec.rb +0 -6
  715. data/vendor/extensions/tax_calculator/spec/helpers/products_helper_spec.rb +0 -88
  716. data/vendor/extensions/tax_calculator/spec/models/sales_tax_calculator_spec.rb +0 -53
  717. data/vendor/extensions/tax_calculator/spec/models/tax_calculator_spec.rb +0 -58
  718. data/vendor/extensions/tax_calculator/spec/models/tax_rate_spec.rb +0 -17
  719. data/vendor/extensions/tax_calculator/spec/models/vat_calculator_spec.rb +0 -56
  720. data/vendor/extensions/tax_calculator/spec/spec.opts +0 -6
  721. data/vendor/extensions/tax_calculator/spec/spec_helper.rb +0 -42
  722. data/vendor/extensions/tax_calculator/tax_calculator_extension.rb +0 -41
  723. data/vendor/plugins/resource_controller/test/Rakefile +0 -10
  724. data/vendor/plugins/resource_controller/test/app/controllers/accounts_controller.rb +0 -6
  725. data/vendor/plugins/resource_controller/test/app/controllers/application.rb +0 -7
  726. data/vendor/plugins/resource_controller/test/app/controllers/cms/options_controller.rb +0 -3
  727. data/vendor/plugins/resource_controller/test/app/controllers/cms/personnel_controller.rb +0 -2
  728. data/vendor/plugins/resource_controller/test/app/controllers/cms/photos_controller.rb +0 -6
  729. data/vendor/plugins/resource_controller/test/app/controllers/cms/products_controller.rb +0 -3
  730. data/vendor/plugins/resource_controller/test/app/controllers/comments_controller.rb +0 -3
  731. data/vendor/plugins/resource_controller/test/app/controllers/images_controller.rb +0 -4
  732. data/vendor/plugins/resource_controller/test/app/controllers/options_controller.rb +0 -8
  733. data/vendor/plugins/resource_controller/test/app/controllers/people_controller.rb +0 -9
  734. data/vendor/plugins/resource_controller/test/app/controllers/photos_controller.rb +0 -11
  735. data/vendor/plugins/resource_controller/test/app/controllers/posts_controller.rb +0 -10
  736. data/vendor/plugins/resource_controller/test/app/controllers/projects_controller.rb +0 -3
  737. data/vendor/plugins/resource_controller/test/app/controllers/somethings_controller.rb +0 -3
  738. data/vendor/plugins/resource_controller/test/app/controllers/tags_controller.rb +0 -13
  739. data/vendor/plugins/resource_controller/test/app/controllers/users_controller.rb +0 -12
  740. data/vendor/plugins/resource_controller/test/app/helpers/accounts_helper.rb +0 -2
  741. data/vendor/plugins/resource_controller/test/app/helpers/application_helper.rb +0 -3
  742. data/vendor/plugins/resource_controller/test/app/helpers/cms/products_helper.rb +0 -2
  743. data/vendor/plugins/resource_controller/test/app/helpers/comments_helper.rb +0 -2
  744. data/vendor/plugins/resource_controller/test/app/helpers/images_helper.rb +0 -2
  745. data/vendor/plugins/resource_controller/test/app/helpers/options_helper.rb +0 -2
  746. data/vendor/plugins/resource_controller/test/app/helpers/people_helper.rb +0 -2
  747. data/vendor/plugins/resource_controller/test/app/helpers/photos_helper.rb +0 -2
  748. data/vendor/plugins/resource_controller/test/app/helpers/posts_helper.rb +0 -2
  749. data/vendor/plugins/resource_controller/test/app/helpers/projects_helper.rb +0 -2
  750. data/vendor/plugins/resource_controller/test/app/helpers/somethings_helper.rb +0 -2
  751. data/vendor/plugins/resource_controller/test/app/helpers/tags_helper.rb +0 -2
  752. data/vendor/plugins/resource_controller/test/app/helpers/users_helper.rb +0 -2
  753. data/vendor/plugins/resource_controller/test/app/models/account.rb +0 -4
  754. data/vendor/plugins/resource_controller/test/app/models/comment.rb +0 -3
  755. data/vendor/plugins/resource_controller/test/app/models/image.rb +0 -3
  756. data/vendor/plugins/resource_controller/test/app/models/option.rb +0 -3
  757. data/vendor/plugins/resource_controller/test/app/models/personnel.rb +0 -3
  758. data/vendor/plugins/resource_controller/test/app/models/photo.rb +0 -5
  759. data/vendor/plugins/resource_controller/test/app/models/post.rb +0 -3
  760. data/vendor/plugins/resource_controller/test/app/models/product.rb +0 -3
  761. data/vendor/plugins/resource_controller/test/app/models/project.rb +0 -2
  762. data/vendor/plugins/resource_controller/test/app/models/something.rb +0 -2
  763. data/vendor/plugins/resource_controller/test/app/models/tag.rb +0 -3
  764. data/vendor/plugins/resource_controller/test/app/models/user.rb +0 -3
  765. data/vendor/plugins/resource_controller/test/app/views/accounts/_form.html.erb +0 -4
  766. data/vendor/plugins/resource_controller/test/app/views/accounts/edit.html.erb +0 -14
  767. data/vendor/plugins/resource_controller/test/app/views/accounts/new.html.erb +0 -12
  768. data/vendor/plugins/resource_controller/test/app/views/accounts/show.html.erb +0 -5
  769. data/vendor/plugins/resource_controller/test/app/views/cms/options/edit.rhtml +0 -17
  770. data/vendor/plugins/resource_controller/test/app/views/cms/options/index.rhtml +0 -20
  771. data/vendor/plugins/resource_controller/test/app/views/cms/options/new.rhtml +0 -16
  772. data/vendor/plugins/resource_controller/test/app/views/cms/options/show.rhtml +0 -8
  773. data/vendor/plugins/resource_controller/test/app/views/cms/photos/edit.rhtml +0 -17
  774. data/vendor/plugins/resource_controller/test/app/views/cms/photos/index.rhtml +0 -20
  775. data/vendor/plugins/resource_controller/test/app/views/cms/photos/new.rhtml +0 -16
  776. data/vendor/plugins/resource_controller/test/app/views/cms/photos/show.rhtml +0 -8
  777. data/vendor/plugins/resource_controller/test/app/views/cms/products/edit.rhtml +0 -17
  778. data/vendor/plugins/resource_controller/test/app/views/cms/products/index.rhtml +0 -20
  779. data/vendor/plugins/resource_controller/test/app/views/cms/products/new.rhtml +0 -16
  780. data/vendor/plugins/resource_controller/test/app/views/cms/products/show.rhtml +0 -8
  781. data/vendor/plugins/resource_controller/test/app/views/comments/edit.rhtml +0 -27
  782. data/vendor/plugins/resource_controller/test/app/views/comments/index.rhtml +0 -24
  783. data/vendor/plugins/resource_controller/test/app/views/comments/new.rhtml +0 -26
  784. data/vendor/plugins/resource_controller/test/app/views/comments/show.rhtml +0 -18
  785. data/vendor/plugins/resource_controller/test/app/views/images/_form.html.erb +0 -4
  786. data/vendor/plugins/resource_controller/test/app/views/images/edit.html.erb +0 -14
  787. data/vendor/plugins/resource_controller/test/app/views/images/new.html.erb +0 -12
  788. data/vendor/plugins/resource_controller/test/app/views/layouts/comments.rhtml +0 -17
  789. data/vendor/plugins/resource_controller/test/app/views/layouts/options.rhtml +0 -17
  790. data/vendor/plugins/resource_controller/test/app/views/layouts/people.rhtml +0 -17
  791. data/vendor/plugins/resource_controller/test/app/views/layouts/photos.rhtml +0 -17
  792. data/vendor/plugins/resource_controller/test/app/views/layouts/projects.rhtml +0 -17
  793. data/vendor/plugins/resource_controller/test/app/views/layouts/somethings.rhtml +0 -17
  794. data/vendor/plugins/resource_controller/test/app/views/layouts/tags.rhtml +0 -17
  795. data/vendor/plugins/resource_controller/test/app/views/options/_form.html.erb +0 -8
  796. data/vendor/plugins/resource_controller/test/app/views/options/edit.html.erb +0 -16
  797. data/vendor/plugins/resource_controller/test/app/views/options/index.html.erb +0 -21
  798. data/vendor/plugins/resource_controller/test/app/views/options/new.html.erb +0 -12
  799. data/vendor/plugins/resource_controller/test/app/views/options/show.html.erb +0 -10
  800. data/vendor/plugins/resource_controller/test/app/views/people/edit.rhtml +0 -17
  801. data/vendor/plugins/resource_controller/test/app/views/people/index.rhtml +0 -20
  802. data/vendor/plugins/resource_controller/test/app/views/people/new.rhtml +0 -16
  803. data/vendor/plugins/resource_controller/test/app/views/people/show.rhtml +0 -8
  804. data/vendor/plugins/resource_controller/test/app/views/photos/edit.rhtml +0 -17
  805. data/vendor/plugins/resource_controller/test/app/views/photos/index.rhtml +0 -20
  806. data/vendor/plugins/resource_controller/test/app/views/photos/new.rhtml +0 -16
  807. data/vendor/plugins/resource_controller/test/app/views/photos/show.rhtml +0 -8
  808. data/vendor/plugins/resource_controller/test/app/views/posts/edit.rhtml +0 -22
  809. data/vendor/plugins/resource_controller/test/app/views/posts/index.rhtml +0 -22
  810. data/vendor/plugins/resource_controller/test/app/views/posts/new.rhtml +0 -21
  811. data/vendor/plugins/resource_controller/test/app/views/posts/show.rhtml +0 -13
  812. data/vendor/plugins/resource_controller/test/app/views/projects/edit.rhtml +0 -17
  813. data/vendor/plugins/resource_controller/test/app/views/projects/index.rhtml +0 -20
  814. data/vendor/plugins/resource_controller/test/app/views/projects/new.rhtml +0 -16
  815. data/vendor/plugins/resource_controller/test/app/views/projects/show.rhtml +0 -8
  816. data/vendor/plugins/resource_controller/test/app/views/somethings/edit.rhtml +0 -17
  817. data/vendor/plugins/resource_controller/test/app/views/somethings/index.rhtml +0 -20
  818. data/vendor/plugins/resource_controller/test/app/views/somethings/new.rhtml +0 -16
  819. data/vendor/plugins/resource_controller/test/app/views/somethings/show.rhtml +0 -8
  820. data/vendor/plugins/resource_controller/test/app/views/tags/edit.rhtml +0 -17
  821. data/vendor/plugins/resource_controller/test/app/views/tags/index.rhtml +0 -20
  822. data/vendor/plugins/resource_controller/test/app/views/tags/new.rhtml +0 -16
  823. data/vendor/plugins/resource_controller/test/app/views/tags/show.rhtml +0 -8
  824. data/vendor/plugins/resource_controller/test/app/views/users/edit.rhtml +0 -17
  825. data/vendor/plugins/resource_controller/test/app/views/users/index.rhtml +0 -20
  826. data/vendor/plugins/resource_controller/test/app/views/users/new.rhtml +0 -16
  827. data/vendor/plugins/resource_controller/test/app/views/users/show.rhtml +0 -8
  828. data/vendor/plugins/resource_controller/test/config/database.yml +0 -9
  829. data/vendor/plugins/resource_controller/test/config/environment.rb +0 -47
  830. data/vendor/plugins/resource_controller/test/config/environments/development.rb +0 -21
  831. data/vendor/plugins/resource_controller/test/config/environments/test.rb +0 -19
  832. data/vendor/plugins/resource_controller/test/config/initializers/inflections.rb +0 -14
  833. data/vendor/plugins/resource_controller/test/config/routes.rb +0 -61
  834. data/vendor/plugins/resource_controller/test/db/migrate/001_create_posts.rb +0 -12
  835. data/vendor/plugins/resource_controller/test/db/migrate/002_create_products.rb +0 -11
  836. data/vendor/plugins/resource_controller/test/db/migrate/003_create_comments.rb +0 -13
  837. data/vendor/plugins/resource_controller/test/db/migrate/004_create_options.rb +0 -13
  838. data/vendor/plugins/resource_controller/test/db/migrate/005_create_photos.rb +0 -11
  839. data/vendor/plugins/resource_controller/test/db/migrate/006_create_tags.rb +0 -17
  840. data/vendor/plugins/resource_controller/test/db/migrate/007_create_somethings.rb +0 -11
  841. data/vendor/plugins/resource_controller/test/db/migrate/008_create_accounts.rb +0 -11
  842. data/vendor/plugins/resource_controller/test/db/migrate/009_add_account_id_to_photos.rb +0 -9
  843. data/vendor/plugins/resource_controller/test/db/migrate/010_create_projects.rb +0 -11
  844. data/vendor/plugins/resource_controller/test/db/migrate/011_create_images.rb +0 -12
  845. data/vendor/plugins/resource_controller/test/db/migrate/012_create_users.rb +0 -11
  846. data/vendor/plugins/resource_controller/test/db/migrate/013_create_personnel.rb +0 -11
  847. data/vendor/plugins/resource_controller/test/db/migrate/014_add_personnel_id_to_photos.rb +0 -9
  848. data/vendor/plugins/resource_controller/test/db/schema.rb +0 -78
  849. data/vendor/plugins/resource_controller/test/script/console +0 -3
  850. data/vendor/plugins/resource_controller/test/script/destroy +0 -3
  851. data/vendor/plugins/resource_controller/test/script/generate +0 -3
  852. data/vendor/plugins/resource_controller/test/script/server +0 -3
  853. data/vendor/plugins/resource_controller/test/test/fixtures/accounts.yml +0 -7
  854. data/vendor/plugins/resource_controller/test/test/fixtures/comments.yml +0 -11
  855. data/vendor/plugins/resource_controller/test/test/fixtures/images.yml +0 -6
  856. data/vendor/plugins/resource_controller/test/test/fixtures/options.yml +0 -9
  857. data/vendor/plugins/resource_controller/test/test/fixtures/personnel.yml +0 -5
  858. data/vendor/plugins/resource_controller/test/test/fixtures/photos.yml +0 -9
  859. data/vendor/plugins/resource_controller/test/test/fixtures/photos_tags.yml +0 -3
  860. data/vendor/plugins/resource_controller/test/test/fixtures/posts.yml +0 -9
  861. data/vendor/plugins/resource_controller/test/test/fixtures/products.yml +0 -7
  862. data/vendor/plugins/resource_controller/test/test/fixtures/projects.yml +0 -7
  863. data/vendor/plugins/resource_controller/test/test/fixtures/somethings.yml +0 -7
  864. data/vendor/plugins/resource_controller/test/test/fixtures/tags.yml +0 -7
  865. data/vendor/plugins/resource_controller/test/test/fixtures/users.yml +0 -5
  866. data/vendor/plugins/resource_controller/test/test/functional/cms/options_controller_test.rb +0 -23
  867. data/vendor/plugins/resource_controller/test/test/functional/cms/photos_controller_test.rb +0 -43
  868. data/vendor/plugins/resource_controller/test/test/functional/cms/products_controller_test.rb +0 -23
  869. data/vendor/plugins/resource_controller/test/test/functional/comments_controller_test.rb +0 -26
  870. data/vendor/plugins/resource_controller/test/test/functional/images_controller_test.rb +0 -37
  871. data/vendor/plugins/resource_controller/test/test/functional/people_controller_test.rb +0 -34
  872. data/vendor/plugins/resource_controller/test/test/functional/photos_controller_test.rb +0 -130
  873. data/vendor/plugins/resource_controller/test/test/functional/posts_controller_test.rb +0 -34
  874. data/vendor/plugins/resource_controller/test/test/functional/projects_controller_test.rb +0 -18
  875. data/vendor/plugins/resource_controller/test/test/functional/somethings_controller_test.rb +0 -28
  876. data/vendor/plugins/resource_controller/test/test/functional/tags_controller_test.rb +0 -64
  877. data/vendor/plugins/resource_controller/test/test/functional/users_controller_test.rb +0 -24
  878. data/vendor/plugins/resource_controller/test/test/test_helper.rb +0 -12
  879. data/vendor/plugins/resource_controller/test/test/unit/accessors_test.rb +0 -110
  880. data/vendor/plugins/resource_controller/test/test/unit/account_test.rb +0 -7
  881. data/vendor/plugins/resource_controller/test/test/unit/action_options_test.rb +0 -109
  882. data/vendor/plugins/resource_controller/test/test/unit/base_test.rb +0 -11
  883. data/vendor/plugins/resource_controller/test/test/unit/comment_test.rb +0 -10
  884. data/vendor/plugins/resource_controller/test/test/unit/failable_action_options_test.rb +0 -77
  885. data/vendor/plugins/resource_controller/test/test/unit/helpers/current_objects_test.rb +0 -133
  886. data/vendor/plugins/resource_controller/test/test/unit/helpers/internal_test.rb +0 -106
  887. data/vendor/plugins/resource_controller/test/test/unit/helpers/nested_test.rb +0 -86
  888. data/vendor/plugins/resource_controller/test/test/unit/helpers/singleton_current_objects_test.rb +0 -68
  889. data/vendor/plugins/resource_controller/test/test/unit/helpers/singleton_nested_test.rb +0 -77
  890. data/vendor/plugins/resource_controller/test/test/unit/helpers/singleton_urls_test.rb +0 -67
  891. data/vendor/plugins/resource_controller/test/test/unit/helpers/urls_test.rb +0 -75
  892. data/vendor/plugins/resource_controller/test/test/unit/helpers_test.rb +0 -25
  893. data/vendor/plugins/resource_controller/test/test/unit/image_test.rb +0 -7
  894. data/vendor/plugins/resource_controller/test/test/unit/option_test.rb +0 -10
  895. data/vendor/plugins/resource_controller/test/test/unit/photo_test.rb +0 -10
  896. data/vendor/plugins/resource_controller/test/test/unit/post_test.rb +0 -10
  897. data/vendor/plugins/resource_controller/test/test/unit/project_test.rb +0 -10
  898. data/vendor/plugins/resource_controller/test/test/unit/response_collector_test.rb +0 -49
  899. data/vendor/plugins/resource_controller/test/test/unit/something_test.rb +0 -10
  900. data/vendor/plugins/resource_controller/test/test/unit/tag_test.rb +0 -10
  901. data/vendor/plugins/resource_controller/test/test/unit/urligence_test.rb +0 -203
  902. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/Rakefile +0 -32
  903. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/bin/convert_to_should_syntax +0 -40
  904. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/init.rb +0 -3
  905. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda.rb +0 -43
  906. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/active_record_helpers.rb +0 -580
  907. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/color.rb +0 -77
  908. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/controller_tests.rb +0 -467
  909. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/formats/html.rb +0 -201
  910. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/formats/xml.rb +0 -170
  911. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/gem/proc_extensions.rb +0 -14
  912. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/gem/shoulda.rb +0 -239
  913. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/general.rb +0 -118
  914. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/private_helpers.rb +0 -22
@@ -1,25 +1,27 @@
1
1
  module Paperclip
2
- # The Attachment class manages the files for a given attachment. It saves when the model saves,
3
- # deletes when the model is destroyed, and processes the file upon assignment.
2
+ # The Attachment class manages the files for a given attachment. It saves
3
+ # when the model saves, deletes when the model is destroyed, and processes
4
+ # the file upon assignment.
4
5
  class Attachment
5
6
 
6
7
  def self.default_options
7
8
  @default_options ||= {
8
- :url => "/:attachment/:id/:style/:basename.:extension",
9
- :path => ":rails_root/public/:attachment/:id/:style/:basename.:extension",
9
+ :url => "/system/:attachment/:id/:style/:filename",
10
+ :path => ":rails_root/public:url",
10
11
  :styles => {},
11
12
  :default_url => "/:attachment/:style/missing.png",
12
13
  :default_style => :original,
13
14
  :validations => [],
14
- :storage => :filesystem
15
+ :storage => :filesystem,
16
+ :whiny => Paperclip.options[:whiny] || Paperclip.options[:whiny_thumbnails]
15
17
  }
16
18
  end
17
19
 
18
- attr_reader :name, :instance, :styles, :default_style, :convert_options
20
+ attr_reader :name, :instance, :styles, :default_style, :convert_options, :queued_for_write, :options
19
21
 
20
- # Creates an Attachment object. +name+ is the name of the attachment, +instance+ is the
21
- # ActiveRecord object instance it's attached to, and +options+ is the same as the hash
22
- # passed to +has_attached_file+.
22
+ # Creates an Attachment object. +name+ is the name of the attachment,
23
+ # +instance+ is the ActiveRecord object instance it's attached to, and
24
+ # +options+ is the same as the hash passed to +has_attached_file+.
23
25
  def initialize name, instance, options = {}
24
26
  @name = name
25
27
  @instance = instance
@@ -27,85 +29,87 @@ module Paperclip
27
29
  options = self.class.default_options.merge(options)
28
30
 
29
31
  @url = options[:url]
32
+ @url = @url.call(self) if @url.is_a?(Proc)
30
33
  @path = options[:path]
34
+ @path = @path.call(self) if @path.is_a?(Proc)
31
35
  @styles = options[:styles]
36
+ @styles = @styles.call(self) if @styles.is_a?(Proc)
32
37
  @default_url = options[:default_url]
33
38
  @validations = options[:validations]
34
39
  @default_style = options[:default_style]
35
40
  @storage = options[:storage]
36
- @whiny_thumbnails = options[:whiny_thumbnails]
41
+ @whiny = options[:whiny_thumbnails] || options[:whiny]
37
42
  @convert_options = options[:convert_options] || {}
43
+ @processors = options[:processors] || [:thumbnail]
38
44
  @options = options
39
45
  @queued_for_delete = []
40
46
  @queued_for_write = {}
41
- @errors = []
47
+ @errors = {}
42
48
  @validation_errors = nil
43
49
  @dirty = false
44
50
 
45
51
  normalize_style_definition
46
52
  initialize_storage
47
-
48
- logger.info("[paperclip] Paperclip attachment #{name} on #{instance.class} initialized.")
49
53
  end
50
54
 
51
- # What gets called when you call instance.attachment = File. It clears errors,
52
- # assigns attributes, processes the file, and runs validations. It also queues up
53
- # the previous file for deletion, to be flushed away on #save of its host.
54
- # In addition to form uploads, you can also assign another Paperclip attachment:
55
+ # What gets called when you call instance.attachment = File. It clears
56
+ # errors, assigns attributes, processes the file, and runs validations. It
57
+ # also queues up the previous file for deletion, to be flushed away on
58
+ # #save of its host. In addition to form uploads, you can also assign
59
+ # another Paperclip attachment:
55
60
  # new_user.avatar = old_user.avatar
61
+ # If the file that is assigned is not valid, the processing (i.e.
62
+ # thumbnailing, etc) will NOT be run.
56
63
  def assign uploaded_file
57
- %w(file_name).each do |field|
58
- unless @instance.class.column_names.include?("#{name}_#{field}")
59
- raise PaperclipError.new("#{self} model does not have required column '#{name}_#{field}'")
60
- end
61
- end
64
+ ensure_required_accessors!
62
65
 
63
66
  if uploaded_file.is_a?(Paperclip::Attachment)
64
67
  uploaded_file = uploaded_file.to_file(:original)
68
+ close_uploaded_file = uploaded_file.respond_to?(:close)
65
69
  end
66
70
 
67
71
  return nil unless valid_assignment?(uploaded_file)
68
- logger.info("[paperclip] Assigning #{uploaded_file.inspect} to #{name}")
69
72
 
70
- queue_existing_for_delete
71
- @errors = []
72
- @validation_errors = nil
73
+ uploaded_file.binmode if uploaded_file.respond_to? :binmode
74
+ self.clear
73
75
 
74
76
  return nil if uploaded_file.nil?
75
77
 
76
- logger.info("[paperclip] Writing attributes for #{name}")
77
- @queued_for_write[:original] = uploaded_file.to_tempfile
78
- @instance[:"#{@name}_file_name"] = uploaded_file.original_filename.strip.gsub /[^\w\d\.\-]+/, '_'
79
- @instance[:"#{@name}_content_type"] = uploaded_file.content_type.strip
80
- @instance[:"#{@name}_file_size"] = uploaded_file.size.to_i
81
- @instance[:"#{@name}_updated_at"] = Time.now
78
+ @queued_for_write[:original] = uploaded_file.to_tempfile
79
+ instance_write(:file_name, uploaded_file.original_filename.strip.gsub(/[^\w\d\.\-]+/, '_'))
80
+ instance_write(:content_type, uploaded_file.content_type.to_s.strip)
81
+ instance_write(:file_size, uploaded_file.size.to_i)
82
+ instance_write(:updated_at, Time.now)
82
83
 
83
84
  @dirty = true
84
85
 
85
- post_process
86
+ post_process if valid?
86
87
 
87
88
  # Reset the file size if the original file was reprocessed.
88
- @instance[:"#{@name}_file_size"] = uploaded_file.size.to_i
89
+ instance_write(:file_size, @queued_for_write[:original].size.to_i)
89
90
  ensure
91
+ uploaded_file.close if close_uploaded_file
90
92
  validate
91
93
  end
92
94
 
93
- # Returns the public URL of the attachment, with a given style. Note that this
94
- # does not necessarily need to point to a file that your web server can access
95
- # and can point to an action in your app, if you need fine grained security.
96
- # This is not recommended if you don't need the security, however, for
97
- # performance reasons.
98
- def url style = default_style
95
+ # Returns the public URL of the attachment, with a given style. Note that
96
+ # this does not necessarily need to point to a file that your web server
97
+ # can access and can point to an action in your app, if you need fine
98
+ # grained security. This is not recommended if you don't need the
99
+ # security, however, for performance reasons. set
100
+ # include_updated_timestamp to false if you want to stop the attachment
101
+ # update time appended to the url
102
+ def url style = default_style, include_updated_timestamp = true
99
103
  url = original_filename.nil? ? interpolate(@default_url, style) : interpolate(@url, style)
100
- updated_at ? [url, updated_at].compact.join(url.include?("?") ? "&" : "?") : url
104
+ include_updated_timestamp && updated_at ? [url, updated_at].compact.join(url.include?("?") ? "&" : "?") : url
101
105
  end
102
106
 
103
107
  # Returns the path of the attachment as defined by the :path option. If the
104
- # file is stored in the filesystem the path refers to the path of the file on
105
- # disk. If the file is stored in S3, the path is the "key" part of the URL,
106
- # and the :bucket option refers to the S3 bucket.
107
- def path style = nil #:nodoc:
108
- interpolate(@path, style)
108
+ # file is stored in the filesystem the path refers to the path of the file
109
+ # on disk. If the file is stored in S3, the path is the "key" part of the
110
+ # URL, and the :bucket option refers to the S3 bucket.
111
+ def path style = default_style
112
+ original_filename.nil? ? nil : interpolate(@path, style)
109
113
  end
110
114
 
111
115
  # Alias to +url+
@@ -116,12 +120,12 @@ module Paperclip
116
120
  # Returns true if there are no errors on this attachment.
117
121
  def valid?
118
122
  validate
119
- errors.length == 0
123
+ errors.empty?
120
124
  end
121
125
 
122
126
  # Returns an array containing the errors on this attachment.
123
127
  def errors
124
- @errors.compact.uniq
128
+ @errors
125
129
  end
126
130
 
127
131
  # Returns true if there are changes that need to be saved.
@@ -133,63 +137,77 @@ module Paperclip
133
137
  # the instance's errors and returns false, cancelling the save.
134
138
  def save
135
139
  if valid?
136
- logger.info("[paperclip] Saving files for #{name}")
137
140
  flush_deletes
138
141
  flush_writes
139
142
  @dirty = false
140
143
  true
141
144
  else
142
- logger.info("[paperclip] Errors on #{name}. Not saving.")
143
145
  flush_errors
144
146
  false
145
147
  end
146
148
  end
147
149
 
148
- # Returns the name of the file as originally assigned, and as lives in the
150
+ # Clears out the attachment. Has the same effect as previously assigning
151
+ # nil to the attachment. Does NOT save. If you wish to clear AND save,
152
+ # use #destroy.
153
+ def clear
154
+ queue_existing_for_delete
155
+ @errors = {}
156
+ @validation_errors = nil
157
+ end
158
+
159
+ # Destroys the attachment. Has the same effect as previously assigning
160
+ # nil to the attachment *and saving*. This is permanent. If you wish to
161
+ # wipe out the existing attachment but not save, use #clear.
162
+ def destroy
163
+ clear
164
+ save
165
+ end
166
+
167
+ # Returns the name of the file as originally assigned, and lives in the
149
168
  # <attachment>_file_name attribute of the model.
150
169
  def original_filename
151
- instance[:"#{name}_file_name"]
170
+ instance_read(:file_name)
171
+ end
172
+
173
+ # Returns the size of the file as originally assigned, and lives in the
174
+ # <attachment>_file_size attribute of the model.
175
+ def size
176
+ instance_read(:file_size) || (@queued_for_write[:original] && @queued_for_write[:original].size)
177
+ end
178
+
179
+ # Returns the content_type of the file as originally assigned, and lives
180
+ # in the <attachment>_content_type attribute of the model.
181
+ def content_type
182
+ instance_read(:content_type)
152
183
  end
153
184
 
185
+ # Returns the last modified time of the file as originally assigned, and
186
+ # lives in the <attachment>_updated_at attribute of the model.
154
187
  def updated_at
155
- time = instance[:"#{name}_updated_at"]
188
+ time = instance_read(:updated_at)
156
189
  time && time.to_i
157
190
  end
158
191
 
159
- # A hash of procs that are run during the interpolation of a path or url.
160
- # A variable of the format :name will be replaced with the return value of
161
- # the proc named ":name". Each lambda takes the attachment and the current
162
- # style as arguments. This hash can be added to with your own proc if
163
- # necessary.
192
+ # Paths and URLs can have a number of variables interpolated into them
193
+ # to vary the storage location based on name, id, style, class, etc.
194
+ # This method is a deprecated access into supplying and retrieving these
195
+ # interpolations. Future access should use either Paperclip.interpolates
196
+ # or extend the Paperclip::Interpolations module directly.
164
197
  def self.interpolations
165
- @interpolations ||= {
166
- :rails_root => lambda{|attachment,style| RAILS_ROOT },
167
- :rails_env => lambda{|attachment,style| RAILS_ENV },
168
- :class => lambda do |attachment,style|
169
- attachment.instance.class.name.underscore.pluralize
170
- end,
171
- :basename => lambda do |attachment,style|
172
- attachment.original_filename.gsub(File.extname(attachment.original_filename), "")
173
- end,
174
- :extension => lambda do |attachment,style|
175
- ((style = attachment.styles[style]) && style.last) ||
176
- File.extname(attachment.original_filename).gsub(/^\.+/, "")
177
- end,
178
- :id => lambda{|attachment,style| attachment.instance.id },
179
- :id_partition => lambda do |attachment, style|
180
- ("%09d" % attachment.instance.id).scan(/\d{3}/).join("/")
181
- end,
182
- :attachment => lambda{|attachment,style| attachment.name.to_s.downcase.pluralize },
183
- :style => lambda{|attachment,style| style || attachment.default_style },
184
- }
198
+ warn('[DEPRECATION] Paperclip::Attachment.interpolations is deprecated ' +
199
+ 'and will be removed from future versions. ' +
200
+ 'Use Paperclip.interpolates instead')
201
+ Paperclip::Interpolations
185
202
  end
186
203
 
187
- # This method really shouldn't be called that often. It's expected use is in the
188
- # paperclip:refresh rake task and that's it. It will regenerate all thumbnails
189
- # forcefully, by reobtaining the original file and going through the post-process
190
- # again.
204
+ # This method really shouldn't be called that often. It's expected use is
205
+ # in the paperclip:refresh rake task and that's it. It will regenerate all
206
+ # thumbnails forcefully, by reobtaining the original file and going through
207
+ # the post-process again.
191
208
  def reprocess!
192
209
  new_original = Tempfile.new("paperclip-reprocess")
210
+ new_original.binmode
193
211
  if old_original = to_file(:original)
194
212
  new_original.write( old_original.read )
195
213
  new_original.rewind
@@ -205,14 +223,43 @@ module Paperclip
205
223
  end
206
224
  end
207
225
 
226
+ # Returns true if a file has been assigned.
208
227
  def file?
209
228
  !original_filename.blank?
210
229
  end
211
230
 
231
+ # Writes the attachment-specific attribute on the instance. For example,
232
+ # instance_write(:file_name, "me.jpg") will write "me.jpg" to the instance's
233
+ # "avatar_file_name" field (assuming the attachment is called avatar).
234
+ def instance_write(attr, value)
235
+ setter = :"#{name}_#{attr}="
236
+ responds = instance.respond_to?(setter)
237
+ self.instance_variable_set("@_#{setter.to_s.chop}", value)
238
+ instance.send(setter, value) if responds || attr.to_s == "file_name"
239
+ end
240
+
241
+ # Reads the attachment-specific attribute on the instance. See instance_write
242
+ # for more details.
243
+ def instance_read(attr)
244
+ getter = :"#{name}_#{attr}"
245
+ responds = instance.respond_to?(getter)
246
+ cached = self.instance_variable_get("@_#{getter}")
247
+ return cached if cached
248
+ instance.send(getter) if responds || attr.to_s == "file_name"
249
+ end
250
+
212
251
  private
213
252
 
214
- def logger
215
- instance.logger
253
+ def ensure_required_accessors! #:nodoc:
254
+ %w(file_name).each do |field|
255
+ unless @instance.respond_to?("#{name}_#{field}") && @instance.respond_to?("#{name}_#{field}=")
256
+ raise PaperclipError.new("#{@instance.class} model missing required attr_accessor for '#{name}_#{field}'")
257
+ end
258
+ end
259
+ end
260
+
261
+ def log message #:nodoc:
262
+ Paperclip.log(message)
216
263
  end
217
264
 
218
265
  def valid_assignment? file #:nodoc:
@@ -221,74 +268,143 @@ module Paperclip
221
268
 
222
269
  def validate #:nodoc:
223
270
  unless @validation_errors
224
- @validation_errors = @validations.collect do |v|
225
- v.call(self, instance)
226
- end.flatten.compact.uniq
227
- @errors += @validation_errors
271
+ @validation_errors = @validations.inject({}) do |errors, validation|
272
+ name, options = validation
273
+ errors[name] = send(:"validate_#{name}", options) if allow_validation?(options)
274
+ errors
275
+ end
276
+ @validation_errors.reject!{|k,v| v == nil }
277
+ @errors.merge!(@validation_errors)
228
278
  end
229
279
  @validation_errors
230
280
  end
231
281
 
232
- def normalize_style_definition
282
+ def allow_validation? options #:nodoc:
283
+ (options[:if].nil? || check_guard(options[:if])) && (options[:unless].nil? || !check_guard(options[:unless]))
284
+ end
285
+
286
+ def check_guard guard #:nodoc:
287
+ if guard.respond_to? :call
288
+ guard.call(instance)
289
+ elsif ! guard.blank?
290
+ instance.send(guard.to_s)
291
+ end
292
+ end
293
+
294
+ def validate_size options #:nodoc:
295
+ if file? && !options[:range].include?(size.to_i)
296
+ options[:message].gsub(/:min/, options[:min].to_s).gsub(/:max/, options[:max].to_s)
297
+ end
298
+ end
299
+
300
+ def validate_presence options #:nodoc:
301
+ options[:message] unless file?
302
+ end
303
+
304
+ def validate_content_type options #:nodoc:
305
+ valid_types = [options[:content_type]].flatten
306
+ unless original_filename.blank?
307
+ unless valid_types.blank?
308
+ content_type = instance_read(:content_type)
309
+ unless valid_types.any?{|t| content_type.nil? || t === content_type }
310
+ options[:message] || "is not one of the allowed file types."
311
+ end
312
+ end
313
+ end
314
+ end
315
+
316
+ def normalize_style_definition #:nodoc:
233
317
  @styles.each do |name, args|
234
- dimensions, format = [args, nil].flatten[0..1]
235
- format = nil if format == ""
236
- @styles[name] = [dimensions, format]
318
+ unless args.is_a? Hash
319
+ dimensions, format = [args, nil].flatten[0..1]
320
+ format = nil if format.blank?
321
+ @styles[name] = {
322
+ :processors => @processors,
323
+ :geometry => dimensions,
324
+ :format => format,
325
+ :whiny => @whiny,
326
+ :convert_options => extra_options_for(name)
327
+ }
328
+ else
329
+ @styles[name] = {
330
+ :processors => @processors,
331
+ :whiny => @whiny,
332
+ :convert_options => extra_options_for(name)
333
+ }.merge(@styles[name])
334
+ end
237
335
  end
238
336
  end
239
337
 
240
- def initialize_storage
338
+ def solidify_style_definitions #:nodoc:
339
+ @styles.each do |name, args|
340
+ @styles[name][:geometry] = @styles[name][:geometry].call(instance) if @styles[name][:geometry].respond_to?(:call)
341
+ @styles[name][:processors] = @styles[name][:processors].call(instance) if @styles[name][:processors].respond_to?(:call)
342
+ end
343
+ end
344
+
345
+ def initialize_storage #:nodoc:
241
346
  @storage_module = Paperclip::Storage.const_get(@storage.to_s.capitalize)
242
347
  self.extend(@storage_module)
243
348
  end
244
349
 
245
350
  def extra_options_for(style) #:nodoc:
246
- [ convert_options[style], convert_options[:all] ].compact.join(" ")
351
+ all_options = convert_options[:all]
352
+ all_options = all_options.call(instance) if all_options.respond_to?(:call)
353
+ style_options = convert_options[style]
354
+ style_options = style_options.call(instance) if style_options.respond_to?(:call)
355
+
356
+ [ style_options, all_options ].compact.join(" ")
247
357
  end
248
358
 
249
359
  def post_process #:nodoc:
250
360
  return if @queued_for_write[:original].nil?
251
- logger.info("[paperclip] Post-processing #{name}")
361
+ solidify_style_definitions
362
+ return if fire_events(:before)
363
+ post_process_styles
364
+ return if fire_events(:after)
365
+ end
366
+
367
+ def fire_events(which) #:nodoc:
368
+ return true if callback(:"#{which}_post_process") == false
369
+ return true if callback(:"#{which}_#{name}_post_process") == false
370
+ end
371
+
372
+ def callback which #:nodoc:
373
+ instance.run_callbacks(which, @queued_for_write){|result, obj| result == false }
374
+ end
375
+
376
+ def post_process_styles #:nodoc:
252
377
  @styles.each do |name, args|
253
378
  begin
254
- dimensions, format = args
255
- dimensions = dimensions.call(instance) if dimensions.respond_to? :call
256
- @queued_for_write[name] = Thumbnail.make(@queued_for_write[:original],
257
- dimensions,
258
- format,
259
- extra_options_for(name),
260
- @whiny_thumnails)
379
+ raise RuntimeError.new("Style #{name} has no processors defined.") if args[:processors].blank?
380
+ @queued_for_write[name] = args[:processors].inject(@queued_for_write[:original]) do |file, processor|
381
+ Paperclip.processor(processor).make(file, args, self)
382
+ end
261
383
  rescue PaperclipError => e
262
- @errors << e.message if @whiny_thumbnails
384
+ log("An error was received while processing: #{e.inspect}")
385
+ (@errors[:processing] ||= []) << e.message if @whiny
263
386
  end
264
387
  end
265
388
  end
266
389
 
267
390
  def interpolate pattern, style = default_style #:nodoc:
268
- interpolations = self.class.interpolations.sort{|a,b| a.first.to_s <=> b.first.to_s }
269
- interpolations.reverse.inject( pattern.dup ) do |result, interpolation|
270
- tag, blk = interpolation
271
- result.gsub(/:#{tag}/) do |match|
272
- blk.call( self, style )
273
- end
274
- end
391
+ Paperclip::Interpolations.interpolate(pattern, self, style)
275
392
  end
276
393
 
277
394
  def queue_existing_for_delete #:nodoc:
278
395
  return unless file?
279
- logger.info("[paperclip] Queueing the existing files for #{name} for deletion.")
280
396
  @queued_for_delete += [:original, *@styles.keys].uniq.map do |style|
281
397
  path(style) if exists?(style)
282
398
  end.compact
283
- @instance[:"#{@name}_file_name"] = nil
284
- @instance[:"#{@name}_content_type"] = nil
285
- @instance[:"#{@name}_file_size"] = nil
286
- @instance[:"#{@name}_updated_at"] = nil
399
+ instance_write(:file_name, nil)
400
+ instance_write(:content_type, nil)
401
+ instance_write(:file_size, nil)
402
+ instance_write(:updated_at, nil)
287
403
  end
288
404
 
289
405
  def flush_errors #:nodoc:
290
- @errors.each do |error|
291
- instance.errors.add(name, error)
406
+ @errors.each do |error, message|
407
+ [message].flatten.each {|m| instance.errors.add(name, m) }
292
408
  end
293
409
  end
294
410