spree-enriquez 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1762) hide show
  1. data/CHANGELOG +385 -0
  2. data/CONTRIBUTORS +96 -0
  3. data/INSTALL +23 -0
  4. data/LICENSE +26 -0
  5. data/README.markdown +70 -0
  6. data/Rakefile +72 -0
  7. data/app/controllers/admin/base_controller.rb +32 -0
  8. data/app/controllers/admin/billing_integrations_controller.rb +30 -0
  9. data/app/controllers/admin/configurations_controller.rb +27 -0
  10. data/app/controllers/admin/coupons_controller.rb +17 -0
  11. data/app/controllers/admin/creditcard_payments_controller.rb +49 -0
  12. data/app/controllers/admin/extensions_controller.rb +5 -0
  13. data/app/controllers/admin/general_settings_controller.rb +13 -0
  14. data/app/controllers/admin/images_controller.rb +54 -0
  15. data/app/controllers/admin/inventory_settings_controller.rb +13 -0
  16. data/app/controllers/admin/inventory_units_controller.rb +2 -0
  17. data/app/controllers/admin/mail_settings_controller.rb +14 -0
  18. data/app/controllers/admin/option_types_controller.rb +62 -0
  19. data/app/controllers/admin/orders_controller.rb +60 -0
  20. data/app/controllers/admin/overview_controller.rb +14 -0
  21. data/app/controllers/admin/payments_controller.rb +5 -0
  22. data/app/controllers/admin/product_properties_controller.rb +7 -0
  23. data/app/controllers/admin/products_controller.rb +76 -0
  24. data/app/controllers/admin/properties_controller.rb +25 -0
  25. data/app/controllers/admin/prototypes_controller.rb +47 -0
  26. data/app/controllers/admin/reports_controller.rb +32 -0
  27. data/app/controllers/admin/shipments_controller.rb +48 -0
  28. data/app/controllers/admin/shipping_categories_controller.rb +15 -0
  29. data/app/controllers/admin/shipping_methods_controller.rb +19 -0
  30. data/app/controllers/admin/shipping_rates_controller.rb +20 -0
  31. data/app/controllers/admin/states_controller.rb +26 -0
  32. data/app/controllers/admin/tax_categories_controller.rb +11 -0
  33. data/app/controllers/admin/tax_rates_controller.rb +28 -0
  34. data/app/controllers/admin/tax_settings_controller.rb +13 -0
  35. data/app/controllers/admin/taxonomies_controller.rb +26 -0
  36. data/app/controllers/admin/taxons_controller.rb +87 -0
  37. data/app/controllers/admin/users_controller.rb +42 -0
  38. data/app/controllers/admin/variants_controller.rb +50 -0
  39. data/app/controllers/admin/zones_controller.rb +33 -0
  40. data/app/controllers/application.rb +94 -0
  41. data/app/controllers/checkouts_controller.rb +164 -0
  42. data/app/controllers/content_controller.rb +12 -0
  43. data/app/controllers/countries_controller.rb +11 -0
  44. data/app/controllers/line_items_controller.rb +6 -0
  45. data/app/controllers/orders_controller.rb +78 -0
  46. data/app/controllers/password_resets_controller.rb +44 -0
  47. data/app/controllers/products_controller.rb +52 -0
  48. data/app/controllers/spree/base_controller.rb +71 -0
  49. data/app/controllers/states_controller.rb +19 -0
  50. data/app/controllers/taxons_controller.rb +25 -0
  51. data/app/controllers/user_sessions_controller.rb +40 -0
  52. data/app/controllers/users_controller.rb +40 -0
  53. data/app/helpers/account_helper.rb +2 -0
  54. data/app/helpers/admin/base_helper.rb +218 -0
  55. data/app/helpers/admin/calculators_helper.rb +2 -0
  56. data/app/helpers/admin/configurations_helper.rb +2 -0
  57. data/app/helpers/admin/extensions_helper.rb +2 -0
  58. data/app/helpers/admin/inventory_settings_helper.rb +5 -0
  59. data/app/helpers/admin/mail_settings_helper.rb +2 -0
  60. data/app/helpers/admin/option_values_helper.rb +2 -0
  61. data/app/helpers/admin/orders_helper.rb +20 -0
  62. data/app/helpers/admin/overview_helper.rb +12 -0
  63. data/app/helpers/admin/product_properties_helper.rb +21 -0
  64. data/app/helpers/admin/products_helper.rb +19 -0
  65. data/app/helpers/admin/properties_helper.rb +9 -0
  66. data/app/helpers/admin/prototypes_helper.rb +18 -0
  67. data/app/helpers/admin/shipping_categories_helper.rb +2 -0
  68. data/app/helpers/admin/shipping_methods_helper.rb +2 -0
  69. data/app/helpers/admin/tax_rates_helper.rb +2 -0
  70. data/app/helpers/admin/taxonomies_helper.rb +3 -0
  71. data/app/helpers/admin/taxons_helper.rb +5 -0
  72. data/app/helpers/admin/users_helper.rb +5 -0
  73. data/app/helpers/admin/variants_helper.rb +2 -0
  74. data/app/helpers/admin/zones_helper.rb +11 -0
  75. data/app/helpers/application_helper.rb +20 -0
  76. data/app/helpers/checkouts_helper.rb +7 -0
  77. data/app/helpers/orders_helper.rb +3 -0
  78. data/app/helpers/products_helper.rb +43 -0
  79. data/app/helpers/search_helper.rb +10 -0
  80. data/app/helpers/spree/base_helper.rb +134 -0
  81. data/app/helpers/taxons_helper.rb +31 -0
  82. data/app/metal/create_admin_user.rb +21 -0
  83. data/app/models/address.rb +62 -0
  84. data/app/models/adjustment.rb +37 -0
  85. data/app/models/app_configuration.rb +50 -0
  86. data/app/models/asset.rb +4 -0
  87. data/app/models/billing_integration.rb +18 -0
  88. data/app/models/calculator.rb +41 -0
  89. data/app/models/calculator/flat_percent_item_total.rb +19 -0
  90. data/app/models/calculator/flat_rate.rb +18 -0
  91. data/app/models/calculator/flexi_rate.rb +33 -0
  92. data/app/models/calculator/per_item.rb +18 -0
  93. data/app/models/calculator/price_bucket.rb +31 -0
  94. data/app/models/calculator/sales_tax.rb +48 -0
  95. data/app/models/calculator/vat.rb +63 -0
  96. data/app/models/charge.rb +37 -0
  97. data/app/models/checkout.rb +48 -0
  98. data/app/models/configuration.rb +3 -0
  99. data/app/models/country.rb +18 -0
  100. data/app/models/coupon.rb +27 -0
  101. data/app/models/credit.rb +27 -0
  102. data/app/models/creditcard.rb +146 -0
  103. data/app/models/creditcard_payment.rb +26 -0
  104. data/app/models/creditcard_txn.rb +6 -0
  105. data/app/models/image.rb +29 -0
  106. data/app/models/inventory_unit.rb +71 -0
  107. data/app/models/line_item.rb +43 -0
  108. data/app/models/option_type.rb +5 -0
  109. data/app/models/option_value.rb +5 -0
  110. data/app/models/order.rb +273 -0
  111. data/app/models/order_mailer.rb +27 -0
  112. data/app/models/order_observer.rb +15 -0
  113. data/app/models/payment.rb +11 -0
  114. data/app/models/preference.rb +51 -0
  115. data/app/models/product.rb +154 -0
  116. data/app/models/product_option_type.rb +5 -0
  117. data/app/models/product_property.rb +15 -0
  118. data/app/models/property.rb +20 -0
  119. data/app/models/prototype.rb +5 -0
  120. data/app/models/role.rb +3 -0
  121. data/app/models/shipment.rb +53 -0
  122. data/app/models/shipping_category.rb +5 -0
  123. data/app/models/shipping_method.rb +27 -0
  124. data/app/models/shipping_rate.rb +6 -0
  125. data/app/models/state.rb +17 -0
  126. data/app/models/state_event.rb +15 -0
  127. data/app/models/tax_category.rb +6 -0
  128. data/app/models/tax_rate.rb +15 -0
  129. data/app/models/taxon.rb +34 -0
  130. data/app/models/taxonomy.rb +5 -0
  131. data/app/models/user.rb +47 -0
  132. data/app/models/user_mailer.rb +11 -0
  133. data/app/models/user_session.rb +2 -0
  134. data/app/models/variant.rb +88 -0
  135. data/app/models/zone.rb +82 -0
  136. data/app/models/zone_member.rb +10 -0
  137. data/app/views/account/login.html.erb +4 -0
  138. data/app/views/admin/billing_integrations/_form.html.erb +45 -0
  139. data/app/views/admin/billing_integrations/edit.html.erb +10 -0
  140. data/app/views/admin/billing_integrations/index.html.erb +36 -0
  141. data/app/views/admin/billing_integrations/new.html.erb +11 -0
  142. data/app/views/admin/configurations/index.html.erb +66 -0
  143. data/app/views/admin/configurations/new.html.erb +13 -0
  144. data/app/views/admin/coupons/_form.html.erb +24 -0
  145. data/app/views/admin/coupons/edit.html.erb +8 -0
  146. data/app/views/admin/coupons/index.html.erb +38 -0
  147. data/app/views/admin/coupons/new.html.erb +9 -0
  148. data/app/views/admin/creditcard_payments/edit.html.erb +38 -0
  149. data/app/views/admin/creditcard_payments/new.html.erb +15 -0
  150. data/app/views/admin/extensions/index.html.erb +23 -0
  151. data/app/views/admin/general_settings/edit.html.erb +35 -0
  152. data/app/views/admin/general_settings/show.html.erb +28 -0
  153. data/app/views/admin/images/_form.html.erb +12 -0
  154. data/app/views/admin/images/edit.html.erb +19 -0
  155. data/app/views/admin/images/index.html.erb +63 -0
  156. data/app/views/admin/images/new.html.erb +22 -0
  157. data/app/views/admin/inventory_settings/edit.html.erb +27 -0
  158. data/app/views/admin/inventory_settings/show.html.erb +9 -0
  159. data/app/views/admin/inventory_units/adjust.html.erb +33 -0
  160. data/app/views/admin/mail_settings/edit.html.erb +123 -0
  161. data/app/views/admin/mail_settings/show.html.erb +66 -0
  162. data/app/views/admin/option_types/_form.html.erb +33 -0
  163. data/app/views/admin/option_types/_option_value.html.erb +5 -0
  164. data/app/views/admin/option_types/available.html.erb +28 -0
  165. data/app/views/admin/option_types/edit.html.erb +11 -0
  166. data/app/views/admin/option_types/index.html.erb +39 -0
  167. data/app/views/admin/option_types/new.html.erb +11 -0
  168. data/app/views/admin/option_types/selected.html.erb +38 -0
  169. data/app/views/admin/orders/index.html.erb +80 -0
  170. data/app/views/admin/orders/show.html.erb +70 -0
  171. data/app/views/admin/overview/index.html.erb +3 -0
  172. data/app/views/admin/payments/index.html.erb +30 -0
  173. data/app/views/admin/product_properties/_product_property.html.erb +25 -0
  174. data/app/views/admin/product_properties/index.html.erb +44 -0
  175. data/app/views/admin/products/_form.html.erb +92 -0
  176. data/app/views/admin/products/_option_types.html.erb +42 -0
  177. data/app/views/admin/products/_properties_form.erb +7 -0
  178. data/app/views/admin/products/edit.html.erb +10 -0
  179. data/app/views/admin/products/index.html.erb +74 -0
  180. data/app/views/admin/products/new.html.erb +53 -0
  181. data/app/views/admin/products/show.html.erb +4 -0
  182. data/app/views/admin/properties/_form.html.erb +12 -0
  183. data/app/views/admin/properties/edit.html.erb +10 -0
  184. data/app/views/admin/properties/filtered.html.erb +1 -0
  185. data/app/views/admin/properties/index.html.erb +45 -0
  186. data/app/views/admin/properties/new.html.erb +11 -0
  187. data/app/views/admin/prototypes/_form.html.erb +44 -0
  188. data/app/views/admin/prototypes/available.html.erb +27 -0
  189. data/app/views/admin/prototypes/edit.html.erb +9 -0
  190. data/app/views/admin/prototypes/index.html.erb +42 -0
  191. data/app/views/admin/prototypes/new.html.erb +11 -0
  192. data/app/views/admin/prototypes/select.rjs +7 -0
  193. data/app/views/admin/reports/index.html.erb +23 -0
  194. data/app/views/admin/reports/sales_total.html.erb +27 -0
  195. data/app/views/admin/shared/_additional_field.html.erb +5 -0
  196. data/app/views/admin/shared/_address.html.erb +15 -0
  197. data/app/views/admin/shared/_calculator_fields.html.erb +15 -0
  198. data/app/views/admin/shared/_configuration_menu.html.erb +19 -0
  199. data/app/views/admin/shared/_edit_resource_links.html.erb +4 -0
  200. data/app/views/admin/shared/_form_address.html.erb +56 -0
  201. data/app/views/admin/shared/_new_resource_links.html.erb +4 -0
  202. data/app/views/admin/shared/_order_details.html.erb +3 -0
  203. data/app/views/admin/shared/_order_sub_menu.html.erb +0 -0
  204. data/app/views/admin/shared/_order_tabs.html.erb +27 -0
  205. data/app/views/admin/shared/_product_sub_menu.html.erb +8 -0
  206. data/app/views/admin/shared/_product_tabs.html.erb +48 -0
  207. data/app/views/admin/shared/_report_criteria.html.erb +19 -0
  208. data/app/views/admin/shared/_show_resource_links.html.erb +5 -0
  209. data/app/views/admin/shipments/_details.html.erb +19 -0
  210. data/app/views/admin/shipments/_form.html.erb +31 -0
  211. data/app/views/admin/shipments/edit.html.erb +12 -0
  212. data/app/views/admin/shipments/index.html.erb +22 -0
  213. data/app/views/admin/shipments/new.html.erb +14 -0
  214. data/app/views/admin/shipping_categories/_form.html.erb +6 -0
  215. data/app/views/admin/shipping_categories/edit.html.erb +8 -0
  216. data/app/views/admin/shipping_categories/index.html.erb +27 -0
  217. data/app/views/admin/shipping_categories/new.html.erb +10 -0
  218. data/app/views/admin/shipping_methods/_form.html.erb +12 -0
  219. data/app/views/admin/shipping_methods/edit.html.erb +8 -0
  220. data/app/views/admin/shipping_methods/index.html.erb +34 -0
  221. data/app/views/admin/shipping_methods/new.html.erb +10 -0
  222. data/app/views/admin/shipping_rates/_form.html.erb +12 -0
  223. data/app/views/admin/shipping_rates/edit.html.erb +8 -0
  224. data/app/views/admin/shipping_rates/index.html.erb +30 -0
  225. data/app/views/admin/shipping_rates/new.html.erb +10 -0
  226. data/app/views/admin/states/_form.html.erb +9 -0
  227. data/app/views/admin/states/_state_list.html.erb +28 -0
  228. data/app/views/admin/states/edit.html.erb +12 -0
  229. data/app/views/admin/states/index.html.erb +25 -0
  230. data/app/views/admin/states/new.html.erb +12 -0
  231. data/app/views/admin/tax_categories/_form.html.erb +9 -0
  232. data/app/views/admin/tax_categories/edit.html.erb +12 -0
  233. data/app/views/admin/tax_categories/index.html.erb +37 -0
  234. data/app/views/admin/tax_categories/new.html.erb +12 -0
  235. data/app/views/admin/tax_categories/show.html.erb +1 -0
  236. data/app/views/admin/tax_rates/_form.html.erb +16 -0
  237. data/app/views/admin/tax_rates/edit.html.erb +8 -0
  238. data/app/views/admin/tax_rates/index.html.erb +32 -0
  239. data/app/views/admin/tax_rates/new.html.erb +10 -0
  240. data/app/views/admin/tax_settings/edit.html.erb +17 -0
  241. data/app/views/admin/tax_settings/show.html.erb +14 -0
  242. data/app/views/admin/taxonomies/_form.html.erb +5 -0
  243. data/app/views/admin/taxonomies/_js_head.html.erb +13 -0
  244. data/app/views/admin/taxonomies/_list.html.erb +17 -0
  245. data/app/views/admin/taxonomies/_manage_products.rhtml +31 -0
  246. data/app/views/admin/taxonomies/_success.rhtml +1 -0
  247. data/app/views/admin/taxonomies/_taxon.html.erb +12 -0
  248. data/app/views/admin/taxonomies/edit.html.erb +30 -0
  249. data/app/views/admin/taxonomies/index.html.erb +16 -0
  250. data/app/views/admin/taxonomies/new.html.erb +12 -0
  251. data/app/views/admin/taxons/_taxon_table.html.erb +28 -0
  252. data/app/views/admin/taxons/available.js.erb +36 -0
  253. data/app/views/admin/taxons/remove.html.erb +1 -0
  254. data/app/views/admin/taxons/select.html.erb +1 -0
  255. data/app/views/admin/taxons/selected.html.erb +25 -0
  256. data/app/views/admin/users/_form.html.erb +35 -0
  257. data/app/views/admin/users/edit.html.erb +9 -0
  258. data/app/views/admin/users/index.html.erb +48 -0
  259. data/app/views/admin/users/new.html.erb +11 -0
  260. data/app/views/admin/users/show.html.erb +21 -0
  261. data/app/views/admin/variants/_form.html.erb +40 -0
  262. data/app/views/admin/variants/edit.html.erb +10 -0
  263. data/app/views/admin/variants/index.html.erb +56 -0
  264. data/app/views/admin/variants/new.html.erb +8 -0
  265. data/app/views/admin/zones/_country_member.html.erb +5 -0
  266. data/app/views/admin/zones/_form.html.erb +29 -0
  267. data/app/views/admin/zones/_member_type.html.erb +15 -0
  268. data/app/views/admin/zones/_state_member.html.erb +5 -0
  269. data/app/views/admin/zones/_zone_member.html.erb +5 -0
  270. data/app/views/admin/zones/edit.html.erb +12 -0
  271. data/app/views/admin/zones/index.html.erb +40 -0
  272. data/app/views/admin/zones/new.html.erb +12 -0
  273. data/app/views/checkouts/_billing.html.erb +66 -0
  274. data/app/views/checkouts/_confirmation.html.erb +11 -0
  275. data/app/views/checkouts/_form.html.erb +20 -0
  276. data/app/views/checkouts/_payment.html.erb +45 -0
  277. data/app/views/checkouts/_registration.html.erb +60 -0
  278. data/app/views/checkouts/_shipping.html.erb +68 -0
  279. data/app/views/checkouts/_shipping_method.html.erb +19 -0
  280. data/app/views/checkouts/_summary.html.erb +36 -0
  281. data/app/views/checkouts/edit.html.erb +13 -0
  282. data/app/views/checkouts/new.html.erb +13 -0
  283. data/app/views/content/cvv.html.erb +13 -0
  284. data/app/views/countries/index.js.erb +1 -0
  285. data/app/views/layouts/admin.html.erb +91 -0
  286. data/app/views/layouts/application.html.erb +47 -0
  287. data/app/views/layouts/checkouts.html.erb +17 -0
  288. data/app/views/line_items/index.html.erb +1 -0
  289. data/app/views/order_mailer/cancel.html.erb +16 -0
  290. data/app/views/order_mailer/confirm.html.erb +19 -0
  291. data/app/views/orders/_form.html.erb +19 -0
  292. data/app/views/orders/_google_order.html.erb +24 -0
  293. data/app/views/orders/_line_item.html.erb +23 -0
  294. data/app/views/orders/edit.html.erb +22 -0
  295. data/app/views/orders/new.html.erb +9 -0
  296. data/app/views/orders/show.html.erb +19 -0
  297. data/app/views/password_resets/edit.html.erb +12 -0
  298. data/app/views/password_resets/new.html.erb +11 -0
  299. data/app/views/products/_cart_form.html.erb +77 -0
  300. data/app/views/products/_image.html.erb +5 -0
  301. data/app/views/products/_products.html.erb +14 -0
  302. data/app/views/products/_properties.html.erb +8 -0
  303. data/app/views/products/_thumbnails.html.erb +58 -0
  304. data/app/views/products/index.html.erb +11 -0
  305. data/app/views/products/show.html.erb +24 -0
  306. data/app/views/shared/_additional_field.html.erb +7 -0
  307. data/app/views/shared/_edit_resource_links.html.erb +1 -0
  308. data/app/views/shared/_filters.html.erb +52 -0
  309. data/app/views/shared/_footer.html.erb +21 -0
  310. data/app/views/shared/_head.html.erb +6 -0
  311. data/app/views/shared/_login.html.erb +18 -0
  312. data/app/views/shared/_login_bar.html.erb +6 -0
  313. data/app/views/shared/_new_resource_links.html.erb +1 -0
  314. data/app/views/shared/_order_details.html.erb +46 -0
  315. data/app/views/shared/_order_tabs.html.erb +32 -0
  316. data/app/views/shared/_product_sub_menu.html.erb +10 -0
  317. data/app/views/shared/_product_tabs.html.erb +39 -0
  318. data/app/views/shared/_products.html.erb +22 -0
  319. data/app/views/shared/_report_criteria.html.erb +33 -0
  320. data/app/views/shared/_show_resource_links.html.erb +3 -0
  321. data/app/views/shared/_store_menu.html.erb +2 -0
  322. data/app/views/shared/_taxonomies.html.erb +10 -0
  323. data/app/views/states/index.js.erb +1 -0
  324. data/app/views/taxons/_taxon.html.erb +4 -0
  325. data/app/views/taxons/show.html.erb +12 -0
  326. data/app/views/user_mailer/password_reset_instructions.erb +9 -0
  327. data/app/views/user_sessions/authorization_failure.html.erb +4 -0
  328. data/app/views/user_sessions/new.html.erb +6 -0
  329. data/app/views/users/_form.html.erb +16 -0
  330. data/app/views/users/edit.html.erb +9 -0
  331. data/app/views/users/new.html.erb +12 -0
  332. data/app/views/users/show.html.erb +39 -0
  333. data/bin/spree +95 -0
  334. data/config/boot.rb +157 -0
  335. data/config/database.yml.example +18 -0
  336. data/config/environment.rb +95 -0
  337. data/config/environments/demo.rb +22 -0
  338. data/config/environments/development.rb +26 -0
  339. data/config/environments/production.rb +21 -0
  340. data/config/environments/staging.rb +13 -0
  341. data/config/environments/test.rb +29 -0
  342. data/config/initializers/backtrace_silencers.rb +7 -0
  343. data/config/initializers/compass.rb +8 -0
  344. data/config/initializers/inflections.rb +10 -0
  345. data/config/initializers/locales.rb +20 -0
  346. data/config/initializers/mime_types.rb +5 -0
  347. data/config/initializers/new_rails_defaults.rb +19 -0
  348. data/config/initializers/paperclip.rb +20 -0
  349. data/config/initializers/session_store.rb +15 -0
  350. data/config/initializers/spree.rb +53 -0
  351. data/config/locales/da.yml +614 -0
  352. data/config/locales/da_rails.yml +197 -0
  353. data/config/locales/de-CH.yml +614 -0
  354. data/config/locales/de-CH_rails.yml +142 -0
  355. data/config/locales/de.yml +614 -0
  356. data/config/locales/de_rails.yml +140 -0
  357. data/config/locales/en-GB.yml +614 -0
  358. data/config/locales/en-GB_rails.yml +196 -0
  359. data/config/locales/en-US.yml +621 -0
  360. data/config/locales/en-US_rails.yml +195 -0
  361. data/config/locales/es.yml +614 -0
  362. data/config/locales/es_rails.yml +173 -0
  363. data/config/locales/fi.yml +614 -0
  364. data/config/locales/fi_rails.yml +143 -0
  365. data/config/locales/fr-FR.yml +614 -0
  366. data/config/locales/fr-FR_rails.yml +123 -0
  367. data/config/locales/il.yml +614 -0
  368. data/config/locales/il_rails.yml +103 -0
  369. data/config/locales/it.yml +614 -0
  370. data/config/locales/it_rails.yml +146 -0
  371. data/config/locales/jp.yml +614 -0
  372. data/config/locales/jp_rails.yml +135 -0
  373. data/config/locales/mx.yml +614 -0
  374. data/config/locales/mx_rails.yml +181 -0
  375. data/config/locales/nb-NO.yml +614 -0
  376. data/config/locales/nb-NO_rails.yml +105 -0
  377. data/config/locales/nl-BE.yml +614 -0
  378. data/config/locales/nl-BE_rails.yml +155 -0
  379. data/config/locales/nl-NL.yml +614 -0
  380. data/config/locales/nl-NL_rails.yml +172 -0
  381. data/config/locales/pl.yml +614 -0
  382. data/config/locales/pl_rails.yml +118 -0
  383. data/config/locales/pt-BR.yml +614 -0
  384. data/config/locales/pt-BR_rails.yml +138 -0
  385. data/config/locales/pt-PT.yml +614 -0
  386. data/config/locales/pt-PT_rails.yml +133 -0
  387. data/config/locales/ru-RU.yml +614 -0
  388. data/config/locales/ru-RU_rails.yml +200 -0
  389. data/config/locales/th.yml +614 -0
  390. data/config/locales/th_rails.yml +195 -0
  391. data/config/routes.rb +104 -0
  392. data/config/schedule.rb +27 -0
  393. data/config/spree_permissions.yml +68 -0
  394. data/db/default/countries.yml +1583 -0
  395. data/db/default/roles.yml +7 -0
  396. data/db/default/states.yml +256 -0
  397. data/db/default/zone_members.yml +169 -0
  398. data/db/default/zones.yml +13 -0
  399. data/db/migrate/001_create_addresses.rb +20 -0
  400. data/db/migrate/002_create_cart_items.rb +13 -0
  401. data/db/migrate/003_create_carts.rb +12 -0
  402. data/db/migrate/004_create_categories.rb +15 -0
  403. data/db/migrate/005_create_categories_products.rb +12 -0
  404. data/db/migrate/006_create_line_items.rb +15 -0
  405. data/db/migrate/007_create_option_values.rb +15 -0
  406. data/db/migrate/008_create_orders.rb +23 -0
  407. data/db/migrate/009_create_products.rb +16 -0
  408. data/db/migrate/010_create_txns.rb +18 -0
  409. data/db/migrate/011_create_variants.rb +13 -0
  410. data/db/migrate/012_create_tax_treatments.rb +24 -0
  411. data/db/migrate/013_create_countries.rb +11 -0
  412. data/db/migrate/014_create_states.rb +13 -0
  413. data/db/migrate/015_create_option_types.rb +13 -0
  414. data/db/migrate/016_create_product_option_types.rb +14 -0
  415. data/db/migrate/017_create_option_values_variants.rb +12 -0
  416. data/db/migrate/018_create_images.rb +20 -0
  417. data/db/migrate/019_create_credit_cards.rb +20 -0
  418. data/db/migrate/020_create_order_operations.rb +14 -0
  419. data/db/migrate/021_create_inventory_units.rb +15 -0
  420. data/db/migrate/022_create_users.rb +17 -0
  421. data/db/migrate/023_create_roles.rb +20 -0
  422. data/db/migrate/024_create_extension_meta.rb +13 -0
  423. data/db/migrate/025_drop_tax_treatments.rb +11 -0
  424. data/db/migrate/026_add_user_to_address.rb +9 -0
  425. data/db/migrate/20080620100001_create_tax_rates.rb +13 -0
  426. data/db/migrate/20080620113300_create_taxonomies.rb +13 -0
  427. data/db/migrate/20080620113400_create_taxons.rb +16 -0
  428. data/db/migrate/20080622173128_drop_extension_meta.rb +13 -0
  429. data/db/migrate/20080622194800_create_prototypes.rb +13 -0
  430. data/db/migrate/20080622194830_create_properties.rb +13 -0
  431. data/db/migrate/20080622195000_create_properties_prototypes.rb +12 -0
  432. data/db/migrate/20080622195100_create_property_values.rb +14 -0
  433. data/db/migrate/20080630003326_create_zones.rb +13 -0
  434. data/db/migrate/20080630150630_create_preferences.rb +19 -0
  435. data/db/migrate/20080630152702_add_iso_country_information.rb +19 -0
  436. data/db/migrate/20080630154400_create_countries_zones.rb +12 -0
  437. data/db/migrate/20080630215310_create_zone_members.rb +13 -0
  438. data/db/migrate/20080703184654_update_country_rename_name.rb +15 -0
  439. data/db/migrate/20080704181428_create_app_configurations.rb +12 -0
  440. data/db/migrate/20080704190355_add_permalink_and_published_to_products.rb +15 -0
  441. data/db/migrate/20080704192456_update_tax_rates_add_zones_etc.rb +17 -0
  442. data/db/migrate/20080707002329_create_tax_categories.rb +21 -0
  443. data/db/migrate/20080708170103_remove_login.rb +9 -0
  444. data/db/migrate/20080715014028_add_optimistic_locking_to_cart.rb +13 -0
  445. data/db/migrate/20080716155613_products_taxons.rb +12 -0
  446. data/db/migrate/20080720190623_rename_txn_table.rb +9 -0
  447. data/db/migrate/20080729213052_drop_categories.rb +8 -0
  448. data/db/migrate/20080803010846_remove_prototype_presentation.rb +13 -0
  449. data/db/migrate/20080807214829_create_product_property.rb +15 -0
  450. data/db/migrate/20080815173251_remove_cart.rb +10 -0
  451. data/db/migrate/20080830173354_add_checkout_state_to_order.rb +13 -0
  452. data/db/migrate/20080901002711_address_refactor.rb +14 -0
  453. data/db/migrate/20080902001408_create_creditcard_payments.rb +17 -0
  454. data/db/migrate/20080904150723_refactor_order_state.rb +33 -0
  455. data/db/migrate/20080904234457_create_state_events.rb +15 -0
  456. data/db/migrate/20080905012833_add_inventory_state.rb +13 -0
  457. data/db/migrate/20080906174748_change_inventory_state_type.rb +8 -0
  458. data/db/migrate/20080909100504_add_state_name_to_address.rb +9 -0
  459. data/db/migrate/20080915211650_remove_user_address.rb +10 -0
  460. data/db/migrate/20080918083321_remove_presentation_from_taxonomy.rb +11 -0
  461. data/db/migrate/20080918140438_rename_app_configuration.rb +16 -0
  462. data/db/migrate/20081003211336_create_shipping_methods.rb +14 -0
  463. data/db/migrate/20081003233427_create_shipping_categories.rb +15 -0
  464. data/db/migrate/20081015001711_create_shipments.rb +14 -0
  465. data/db/migrate/20081016002224_remove_defunct_order_fields.rb +10 -0
  466. data/db/migrate/20081016162924_drop_category_id_from_products.rb +9 -0
  467. data/db/migrate/20081018125019_refactor_images_for_paperclip.rb +40 -0
  468. data/db/migrate/20081023134446_add_product_dimensions.rb +19 -0
  469. data/db/migrate/20081120184215_add_permalink_to_taxons.rb +24 -0
  470. data/db/migrate/20081121192045_additional_paperclip_refactor.rb +37 -0
  471. data/db/migrate/20081205155619_add_shipped_at_property.rb +17 -0
  472. data/db/migrate/20081208143817_create_creditcards.rb +20 -0
  473. data/db/migrate/20081208150007_create_payments_table.rb +42 -0
  474. data/db/migrate/20081209103127_add_deleted_at_to_products.rb +11 -0
  475. data/db/migrate/20081212015915_convert_credticard_number_to_text.rb +11 -0
  476. data/db/migrate/20081219091142_create_indexes.rb +23 -0
  477. data/db/migrate/20081221201510_create_shipping_addresses.rb +16 -0
  478. data/db/migrate/20090105152846_add_previous_state_to_events.rb +13 -0
  479. data/db/migrate/20090204200045_add_order_permalink.rb +13 -0
  480. data/db/migrate/20090225231119_add_more_needed_keys_items_and_conf.rb +19 -0
  481. data/db/migrate/20090302221152_give_all_users_user_role.rb +14 -0
  482. data/db/migrate/20090320113300_authlogic_changes.rb +24 -0
  483. data/db/migrate/20090324164010_create_option_types_prototypes.rb +12 -0
  484. data/db/migrate/20090401120636_meta_data_fields_for_products.rb +11 -0
  485. data/db/migrate/20090401203712_remove_hmp_stuff_in_zones.rb +12 -0
  486. data/db/migrate/20090401223217_create_eu_vat_zone_again.rb +24 -0
  487. data/db/migrate/20090402002244_add_user_login.rb +17 -0
  488. data/db/migrate/20090402161055_add_order_token.rb +13 -0
  489. data/db/migrate/20090402200317_add_email_to_order.rb +19 -0
  490. data/db/migrate/20090404192723_add_maestro_fields.rb +12 -0
  491. data/db/migrate/20090406091357_add_alternative_phone.rb +9 -0
  492. data/db/migrate/20090406174645_refactor_addresses.rb +53 -0
  493. data/db/migrate/20090420021303_remove_viewable_id_from_products.rb +10 -0
  494. data/db/migrate/20090427000000_upgrade_taxons.rb +14 -0
  495. data/db/migrate/20090525000325_remove_address_orphans.rb +15 -0
  496. data/db/migrate/20090603153927_create_checkouts.rb +71 -0
  497. data/db/migrate/20090617181106_change_txn_type_to_int.rb +18 -0
  498. data/db/migrate/20090618203233_create_charges.rb +61 -0
  499. data/db/migrate/20090626235303_create_credits.rb +22 -0
  500. data/db/migrate/20090705101511_add_image_dimensions.rb +12 -0
  501. data/db/migrate/20090708175306_create_coupons.rb +16 -0
  502. data/db/migrate/20090708175317_create_discounts.rb +14 -0
  503. data/db/migrate/20090714094201_add_default_addresses_to_user.rb +11 -0
  504. data/db/migrate/20090715172345_create_calculators.rb +22 -0
  505. data/db/migrate/20090731085008_add_charge_source_to_charge.rb +11 -0
  506. data/db/migrate/20090803072025_create_shipping_rates.rb +12 -0
  507. data/db/migrate/20090804090559_create_calculators_for_tax_rates.rb +16 -0
  508. data/db/migrate/20090805131937_drop_credits_and_discounts.rb +9 -0
  509. data/db/migrate/20090805185015_remove_tax_type.rb +13 -0
  510. data/db/migrate/20090806063212_rename_charges_to_adjustments.rb +24 -0
  511. data/db/migrate/20090806160214_rename_base_to_source.rb +11 -0
  512. data/db/migrate/20090809170304_remove_checkout_shipping_address_and_method.rb +15 -0
  513. data/db/migrate/20090809193131_add_is_master_to_variants.rb +43 -0
  514. data/db/migrate/20090809201209_drop_master_price_from_products.rb +13 -0
  515. data/db/migrate/20090809231957_update_legacy_calculators.rb +9 -0
  516. data/db/migrate/20090823005402_coupon_starts_at.rb +13 -0
  517. data/db/migrate/20090828114732_add_queued_mail.rb +12 -0
  518. data/db/migrate/20090908141056_adjust_percent_calc_settings.rb +9 -0
  519. data/db/migrate/20091017175558_create_billing_integrations.rb +16 -0
  520. data/db/migrate/migrate/20080620100001_create_tax_rates.rb +13 -0
  521. data/db/migrate/migrate/20080704192456_update_tax_rates_add_zones_etc.rb +17 -0
  522. data/db/sample/addresses.yml +24 -0
  523. data/db/sample/adjustments.yml +20 -0
  524. data/db/sample/assets.yml +320 -0
  525. data/db/sample/calculators.yml +16 -0
  526. data/db/sample/checkouts.yml +8 -0
  527. data/db/sample/coupons.yml +4 -0
  528. data/db/sample/creditcard_txns.yml +7 -0
  529. data/db/sample/creditcards.yml +10 -0
  530. data/db/sample/inventory_units.yml +93 -0
  531. data/db/sample/line_items.yml +25 -0
  532. data/db/sample/option_types.yml +6 -0
  533. data/db/sample/option_values.yml +35 -0
  534. data/db/sample/orders.yml +8 -0
  535. data/db/sample/payments.yml +7 -0
  536. data/db/sample/preferences.yml +20 -0
  537. data/db/sample/product_option_types.yml +8 -0
  538. data/db/sample/product_properties.yml +136 -0
  539. data/db/sample/products.yml +45 -0
  540. data/db/sample/properties.yml +39 -0
  541. data/db/sample/prototypes.yml +9 -0
  542. data/db/sample/shipments.yml +7 -0
  543. data/db/sample/shipping_categories.yml +2 -0
  544. data/db/sample/shipping_methods.yml +9 -0
  545. data/db/sample/tax_categories.yml +6 -0
  546. data/db/sample/taxonomies.yml +4 -0
  547. data/db/sample/taxons.yml +71 -0
  548. data/db/sample/users.yml +5 -0
  549. data/db/sample/variants.yml +95 -0
  550. data/db/seeds.rb +15 -0
  551. data/generate +4 -0
  552. data/lib/RFC822.rb +30 -0
  553. data/lib/annotatable.rb +71 -0
  554. data/lib/commands/extension.rb +250 -0
  555. data/lib/custom_fixtures.rb +7 -0
  556. data/lib/easy_role_requirement_system.rb +265 -0
  557. data/lib/format.rb +12 -0
  558. data/lib/gateway_error.rb +1 -0
  559. data/lib/generators/extension/extension_generator.rb +64 -0
  560. data/lib/generators/extension/templates/README.markdown +3 -0
  561. data/lib/generators/extension/templates/RSpecRakefile +120 -0
  562. data/lib/generators/extension/templates/Rakefile +25 -0
  563. data/lib/generators/extension/templates/extension.rb +38 -0
  564. data/lib/generators/extension/templates/functional_test.rb +15 -0
  565. data/lib/generators/extension/templates/migration.rb +9 -0
  566. data/lib/generators/extension/templates/routes.rb +5 -0
  567. data/lib/generators/extension/templates/spec.opts +6 -0
  568. data/lib/generators/extension/templates/spec_helper.rb +37 -0
  569. data/lib/generators/extension/templates/tasks.rake +28 -0
  570. data/lib/generators/extension/templates/test_helper.rb +26 -0
  571. data/lib/generators/extension_controller/USAGE +36 -0
  572. data/lib/generators/extension_controller/extension_controller_generator.rb +76 -0
  573. data/lib/generators/extension_controller/templates/controller.rb +12 -0
  574. data/lib/generators/extension_controller/templates/controller_spec.rb +23 -0
  575. data/lib/generators/extension_controller/templates/functional_test.rb +17 -0
  576. data/lib/generators/extension_controller/templates/helper.rb +2 -0
  577. data/lib/generators/extension_controller/templates/helper_spec.rb +11 -0
  578. data/lib/generators/extension_controller/templates/view.html.erb +2 -0
  579. data/lib/generators/extension_controller/templates/view_spec.rb +12 -0
  580. data/lib/generators/extension_migration/extension_migration_generator.rb +32 -0
  581. data/lib/generators/extension_migration/templates/migration.rb +7 -0
  582. data/lib/generators/extension_model/USAGE +35 -0
  583. data/lib/generators/extension_model/extension_model_generator.rb +83 -0
  584. data/lib/generators/extension_model/templates/fixtures.yml +11 -0
  585. data/lib/generators/extension_model/templates/migration.rb +13 -0
  586. data/lib/generators/extension_model/templates/model.rb +2 -0
  587. data/lib/generators/extension_model/templates/model_spec.rb +11 -0
  588. data/lib/generators/extension_model/templates/unit_test.rb +10 -0
  589. data/lib/generators/generator_base_extension.rb +23 -0
  590. data/lib/generators/instance/instance_generator.rb +155 -0
  591. data/lib/generators/instance/templates/databases/mysql.yml +47 -0
  592. data/lib/generators/instance/templates/databases/postgresql.yml +44 -0
  593. data/lib/generators/instance/templates/databases/sqlite3.yml +16 -0
  594. data/lib/generators/instance/templates/databases/sqlserver.yml +20 -0
  595. data/lib/generators/instance/templates/demo_mongrel_cluster.yml +7 -0
  596. data/lib/generators/instance/templates/demo_robots.txt +2 -0
  597. data/lib/generators/instance/templates/instance_generate +16 -0
  598. data/lib/generators/instance/templates/instance_rakefile +3 -0
  599. data/lib/generators/instance/templates/instance_routes.rb +1 -0
  600. data/lib/generators/instance/templates/session_store.rb +15 -0
  601. data/lib/hijacker.rb +78 -0
  602. data/lib/method_observer.rb +50 -0
  603. data/lib/plugins/extension_patches/init.rb +8 -0
  604. data/lib/plugins/extension_patches/lib/asset_copy.rb +16 -0
  605. data/lib/plugins/extension_patches/lib/fixture_loading_extension.rb +82 -0
  606. data/lib/plugins/extension_patches/lib/mailer_hack.rb +8 -0
  607. data/lib/plugins/extension_patches/lib/routing_extension.rb +58 -0
  608. data/lib/plugins/monkey_patches/init.rb +1 -0
  609. data/lib/plugins/monkey_patches/lib/monkey_patches.rb +59 -0
  610. data/lib/plugins/object_extensions/init.rb +1 -0
  611. data/lib/plugins/object_extensions/lib/object_extensions.rb +5 -0
  612. data/lib/plugins/option_tags_with_disable/MIT-LICENSE +20 -0
  613. data/lib/plugins/option_tags_with_disable/README.rdoc +35 -0
  614. data/lib/plugins/option_tags_with_disable/Rakefile +23 -0
  615. data/lib/plugins/option_tags_with_disable/init.rb +1 -0
  616. data/lib/plugins/option_tags_with_disable/lib/option_tags_will_disable.rb +85 -0
  617. data/lib/plugins/option_tags_with_disable/test/option_tags_will_disable_test.rb +72 -0
  618. data/lib/plugins/option_tags_with_disable/test/test_helper.rb +8 -0
  619. data/lib/plugins/string_extensions/init.rb +1 -0
  620. data/lib/plugins/string_extensions/lib/string_extensions.rb +15 -0
  621. data/lib/preference_access.rb +27 -0
  622. data/lib/product_filters.rb +174 -0
  623. data/lib/product_scopes.rb +76 -0
  624. data/lib/profiler/add_to_cart_profiler.rb +2 -0
  625. data/lib/profiler/product_details_profiler.rb +2 -0
  626. data/lib/role_requirement_system.rb +145 -0
  627. data/lib/role_requirement_test_helper.rb +86 -0
  628. data/lib/simpleton.rb +24 -0
  629. data/lib/spree.rb +22 -0
  630. data/lib/spree/config.rb +20 -0
  631. data/lib/spree/extension.rb +58 -0
  632. data/lib/spree/extension_loader.rb +157 -0
  633. data/lib/spree/file_utilz.rb +71 -0
  634. data/lib/spree/gateway_error.rb +3 -0
  635. data/lib/spree/initializer.rb +182 -0
  636. data/lib/spree/preferences/mail_settings.rb +57 -0
  637. data/lib/spree/preferences/model_hooks.rb +290 -0
  638. data/lib/spree/preferences/preference_definition.rb +53 -0
  639. data/lib/spree/setup.rb +148 -0
  640. data/lib/spree/shipping_error.rb +3 -0
  641. data/lib/spree/support/core_extensions/array.rb +23 -0
  642. data/lib/spree/support/core_extensions/string.rb +18 -0
  643. data/lib/tasks/consistency.rake +30 -0
  644. data/lib/tasks/database.rake +72 -0
  645. data/lib/tasks/environments.rake +11 -0
  646. data/lib/tasks/extensions.rake +139 -0
  647. data/lib/tasks/framework.rake +43 -0
  648. data/lib/tasks/instance.rake +26 -0
  649. data/lib/tasks/rspec.rake +183 -0
  650. data/lib/tasks/sample/products/1/mini/ror_tote.jpeg +0 -0
  651. data/lib/tasks/sample/products/1/original/ror_tote.jpeg +0 -0
  652. data/lib/tasks/sample/products/1/product/ror_tote.jpeg +0 -0
  653. data/lib/tasks/sample/products/1/small/ror_tote.jpeg +0 -0
  654. data/lib/tasks/sample/products/10/mini/ror_ringer_back.jpeg +0 -0
  655. data/lib/tasks/sample/products/10/original/ror_ringer_back.jpeg +0 -0
  656. data/lib/tasks/sample/products/10/product/ror_ringer_back.jpeg +0 -0
  657. data/lib/tasks/sample/products/10/small/ror_ringer_back.jpeg +0 -0
  658. data/lib/tasks/sample/products/1004/mini/apache_baseball.png +0 -0
  659. data/lib/tasks/sample/products/1004/original/apache_baseball.png +0 -0
  660. data/lib/tasks/sample/products/1004/product/apache_baseball.png +0 -0
  661. data/lib/tasks/sample/products/1004/small/apache_baseball.png +0 -0
  662. data/lib/tasks/sample/products/1008/mini/ruby_baseball.png +0 -0
  663. data/lib/tasks/sample/products/1008/original/ruby_baseball.png +0 -0
  664. data/lib/tasks/sample/products/1008/product/ruby_baseball.png +0 -0
  665. data/lib/tasks/sample/products/1008/small/ruby_baseball.png +0 -0
  666. data/lib/tasks/sample/products/1009/large/ror_baseball_jersey_green.png +0 -0
  667. data/lib/tasks/sample/products/1009/mini/ror_baseball_jersey_green.png +0 -0
  668. data/lib/tasks/sample/products/1009/original/ror_baseball_jersey_green.png +0 -0
  669. data/lib/tasks/sample/products/1009/product/ror_baseball_jersey_green.png +0 -0
  670. data/lib/tasks/sample/products/1009/small/ror_baseball_jersey_green.png +0 -0
  671. data/lib/tasks/sample/products/1010/large/ror_baseball_jersey_back_green.png +0 -0
  672. data/lib/tasks/sample/products/1010/mini/ror_baseball_jersey_back_green.png +0 -0
  673. data/lib/tasks/sample/products/1010/original/ror_baseball_jersey_back_green.png +0 -0
  674. data/lib/tasks/sample/products/1010/product/ror_baseball_jersey_back_green.png +0 -0
  675. data/lib/tasks/sample/products/1010/small/ror_baseball_jersey_back_green.png +0 -0
  676. data/lib/tasks/sample/products/1011/large/ror_baseball_jersey_green.png +0 -0
  677. data/lib/tasks/sample/products/1011/mini/ror_baseball_jersey_green.png +0 -0
  678. data/lib/tasks/sample/products/1011/original/ror_baseball_jersey_green.png +0 -0
  679. data/lib/tasks/sample/products/1011/product/ror_baseball_jersey_green.png +0 -0
  680. data/lib/tasks/sample/products/1011/small/ror_baseball_jersey_green.png +0 -0
  681. data/lib/tasks/sample/products/1012/large/ror_baseball_jersey_back_green.png +0 -0
  682. data/lib/tasks/sample/products/1012/mini/ror_baseball_jersey_back_green.png +0 -0
  683. data/lib/tasks/sample/products/1012/original/ror_baseball_jersey_back_green.png +0 -0
  684. data/lib/tasks/sample/products/1012/product/ror_baseball_jersey_back_green.png +0 -0
  685. data/lib/tasks/sample/products/1012/small/ror_baseball_jersey_back_green.png +0 -0
  686. data/lib/tasks/sample/products/1013/large/ror_baseball_jersey_green.png +0 -0
  687. data/lib/tasks/sample/products/1013/mini/ror_baseball_jersey_green.png +0 -0
  688. data/lib/tasks/sample/products/1013/original/ror_baseball_jersey_green.png +0 -0
  689. data/lib/tasks/sample/products/1013/product/ror_baseball_jersey_green.png +0 -0
  690. data/lib/tasks/sample/products/1013/small/ror_baseball_jersey_green.png +0 -0
  691. data/lib/tasks/sample/products/1014/large/ror_baseball_jersey_back_green.png +0 -0
  692. data/lib/tasks/sample/products/1014/mini/ror_baseball_jersey_back_green.png +0 -0
  693. data/lib/tasks/sample/products/1014/original/ror_baseball_jersey_back_green.png +0 -0
  694. data/lib/tasks/sample/products/1014/product/ror_baseball_jersey_back_green.png +0 -0
  695. data/lib/tasks/sample/products/1014/small/ror_baseball_jersey_back_green.png +0 -0
  696. data/lib/tasks/sample/products/1015/large/ror_baseball_jersey_blue.png +0 -0
  697. data/lib/tasks/sample/products/1015/mini/ror_baseball_jersey_blue.png +0 -0
  698. data/lib/tasks/sample/products/1015/original/ror_baseball_jersey_blue.png +0 -0
  699. data/lib/tasks/sample/products/1015/product/ror_baseball_jersey_blue.png +0 -0
  700. data/lib/tasks/sample/products/1015/small/ror_baseball_jersey_blue.png +0 -0
  701. data/lib/tasks/sample/products/1016/large/ror_baseball_jersey_back_blue.png +0 -0
  702. data/lib/tasks/sample/products/1016/mini/ror_baseball_jersey_back_blue.png +0 -0
  703. data/lib/tasks/sample/products/1016/original/ror_baseball_jersey_back_blue.png +0 -0
  704. data/lib/tasks/sample/products/1016/product/ror_baseball_jersey_back_blue.png +0 -0
  705. data/lib/tasks/sample/products/1016/small/ror_baseball_jersey_back_blue.png +0 -0
  706. data/lib/tasks/sample/products/1017/large/ror_baseball_jersey_blue.png +0 -0
  707. data/lib/tasks/sample/products/1017/mini/ror_baseball_jersey_blue.png +0 -0
  708. data/lib/tasks/sample/products/1017/original/ror_baseball_jersey_blue.png +0 -0
  709. data/lib/tasks/sample/products/1017/product/ror_baseball_jersey_blue.png +0 -0
  710. data/lib/tasks/sample/products/1017/small/ror_baseball_jersey_blue.png +0 -0
  711. data/lib/tasks/sample/products/1018/large/ror_baseball_jersey_back_blue.png +0 -0
  712. data/lib/tasks/sample/products/1018/mini/ror_baseball_jersey_back_blue.png +0 -0
  713. data/lib/tasks/sample/products/1018/original/ror_baseball_jersey_back_blue.png +0 -0
  714. data/lib/tasks/sample/products/1018/product/ror_baseball_jersey_back_blue.png +0 -0
  715. data/lib/tasks/sample/products/1018/small/ror_baseball_jersey_back_blue.png +0 -0
  716. data/lib/tasks/sample/products/1019/large/ror_baseball_jersey_blue.png +0 -0
  717. data/lib/tasks/sample/products/1019/mini/ror_baseball_jersey_blue.png +0 -0
  718. data/lib/tasks/sample/products/1019/original/ror_baseball_jersey_blue.png +0 -0
  719. data/lib/tasks/sample/products/1019/product/ror_baseball_jersey_blue.png +0 -0
  720. data/lib/tasks/sample/products/1019/small/ror_baseball_jersey_blue.png +0 -0
  721. data/lib/tasks/sample/products/1020/large/ror_baseball_jersey_back_blue.png +0 -0
  722. data/lib/tasks/sample/products/1020/mini/ror_baseball_jersey_back_blue.png +0 -0
  723. data/lib/tasks/sample/products/1020/original/ror_baseball_jersey_back_blue.png +0 -0
  724. data/lib/tasks/sample/products/1020/product/ror_baseball_jersey_back_blue.png +0 -0
  725. data/lib/tasks/sample/products/1020/small/ror_baseball_jersey_back_blue.png +0 -0
  726. data/lib/tasks/sample/products/1021/large/ror_baseball_jersey_red.png +0 -0
  727. data/lib/tasks/sample/products/1021/mini/ror_baseball_jersey_red.png +0 -0
  728. data/lib/tasks/sample/products/1021/original/ror_baseball_jersey_red.png +0 -0
  729. data/lib/tasks/sample/products/1021/product/ror_baseball_jersey_red.png +0 -0
  730. data/lib/tasks/sample/products/1021/small/ror_baseball_jersey_red.png +0 -0
  731. data/lib/tasks/sample/products/1022/large/ror_baseball_jersey_back_red.png +0 -0
  732. data/lib/tasks/sample/products/1022/mini/ror_baseball_jersey_back_red.png +0 -0
  733. data/lib/tasks/sample/products/1022/original/ror_baseball_jersey_back_red.png +0 -0
  734. data/lib/tasks/sample/products/1022/product/ror_baseball_jersey_back_red.png +0 -0
  735. data/lib/tasks/sample/products/1022/small/ror_baseball_jersey_back_red.png +0 -0
  736. data/lib/tasks/sample/products/1023/large/ror_baseball_jersey_red.png +0 -0
  737. data/lib/tasks/sample/products/1023/mini/ror_baseball_jersey_red.png +0 -0
  738. data/lib/tasks/sample/products/1023/original/ror_baseball_jersey_red.png +0 -0
  739. data/lib/tasks/sample/products/1023/product/ror_baseball_jersey_red.png +0 -0
  740. data/lib/tasks/sample/products/1023/small/ror_baseball_jersey_red.png +0 -0
  741. data/lib/tasks/sample/products/1024/large/ror_baseball_jersey_back_red.png +0 -0
  742. data/lib/tasks/sample/products/1024/mini/ror_baseball_jersey_back_red.png +0 -0
  743. data/lib/tasks/sample/products/1024/original/ror_baseball_jersey_back_red.png +0 -0
  744. data/lib/tasks/sample/products/1024/product/ror_baseball_jersey_back_red.png +0 -0
  745. data/lib/tasks/sample/products/1024/small/ror_baseball_jersey_back_red.png +0 -0
  746. data/lib/tasks/sample/products/1025/large/ror_baseball_jersey_red.png +0 -0
  747. data/lib/tasks/sample/products/1025/mini/ror_baseball_jersey_red.png +0 -0
  748. data/lib/tasks/sample/products/1025/original/ror_baseball_jersey_red.png +0 -0
  749. data/lib/tasks/sample/products/1025/product/ror_baseball_jersey_red.png +0 -0
  750. data/lib/tasks/sample/products/1025/small/ror_baseball_jersey_red.png +0 -0
  751. data/lib/tasks/sample/products/1026/large/ror_baseball_jersey_back_red.png +0 -0
  752. data/lib/tasks/sample/products/1026/mini/ror_baseball_jersey_back_red.png +0 -0
  753. data/lib/tasks/sample/products/1026/original/ror_baseball_jersey_back_red.png +0 -0
  754. data/lib/tasks/sample/products/1026/product/ror_baseball_jersey_back_red.png +0 -0
  755. data/lib/tasks/sample/products/1026/small/ror_baseball_jersey_back_red.png +0 -0
  756. data/lib/tasks/sample/products/11/mini/ror_stein.jpeg +0 -0
  757. data/lib/tasks/sample/products/11/original/ror_stein.jpeg +0 -0
  758. data/lib/tasks/sample/products/11/product/ror_stein.jpeg +0 -0
  759. data/lib/tasks/sample/products/11/small/ror_stein.jpeg +0 -0
  760. data/lib/tasks/sample/products/12/mini/ror_stein_back.jpeg +0 -0
  761. data/lib/tasks/sample/products/12/original/ror_stein_back.jpeg +0 -0
  762. data/lib/tasks/sample/products/12/product/ror_stein_back.jpeg +0 -0
  763. data/lib/tasks/sample/products/12/small/ror_stein_back.jpeg +0 -0
  764. data/lib/tasks/sample/products/2/mini/ror_tote_back.jpeg +0 -0
  765. data/lib/tasks/sample/products/2/original/ror_tote_back.jpeg +0 -0
  766. data/lib/tasks/sample/products/2/product/ror_tote_back.jpeg +0 -0
  767. data/lib/tasks/sample/products/2/small/ror_tote_back.jpeg +0 -0
  768. data/lib/tasks/sample/products/3/mini/ror_bag.jpeg +0 -0
  769. data/lib/tasks/sample/products/3/original/ror_bag.jpeg +0 -0
  770. data/lib/tasks/sample/products/3/product/ror_bag.jpeg +0 -0
  771. data/lib/tasks/sample/products/3/small/ror_bag.jpeg +0 -0
  772. data/lib/tasks/sample/products/4/mini/ror_baseball.jpeg +0 -0
  773. data/lib/tasks/sample/products/4/original/ror_baseball.jpeg +0 -0
  774. data/lib/tasks/sample/products/4/product/ror_baseball.jpeg +0 -0
  775. data/lib/tasks/sample/products/4/small/ror_baseball.jpeg +0 -0
  776. data/lib/tasks/sample/products/5/mini/ror_baseball_back.jpeg +0 -0
  777. data/lib/tasks/sample/products/5/original/ror_baseball_back.jpeg +0 -0
  778. data/lib/tasks/sample/products/5/product/ror_baseball_back.jpeg +0 -0
  779. data/lib/tasks/sample/products/5/small/ror_baseball_back.jpeg +0 -0
  780. data/lib/tasks/sample/products/6/mini/ror_jr_spaghetti.jpeg +0 -0
  781. data/lib/tasks/sample/products/6/original/ror_jr_spaghetti.jpeg +0 -0
  782. data/lib/tasks/sample/products/6/product/ror_jr_spaghetti.jpeg +0 -0
  783. data/lib/tasks/sample/products/6/small/ror_jr_spaghetti.jpeg +0 -0
  784. data/lib/tasks/sample/products/7/mini/ror_mug.jpeg +0 -0
  785. data/lib/tasks/sample/products/7/original/ror_mug.jpeg +0 -0
  786. data/lib/tasks/sample/products/7/product/ror_mug.jpeg +0 -0
  787. data/lib/tasks/sample/products/7/small/ror_mug.jpeg +0 -0
  788. data/lib/tasks/sample/products/8/mini/ror_mug_back.jpeg +0 -0
  789. data/lib/tasks/sample/products/8/original/ror_mug_back.jpeg +0 -0
  790. data/lib/tasks/sample/products/8/product/ror_mug_back.jpeg +0 -0
  791. data/lib/tasks/sample/products/8/small/ror_mug_back.jpeg +0 -0
  792. data/lib/tasks/sample/products/9/mini/ror_ringer.jpeg +0 -0
  793. data/lib/tasks/sample/products/9/original/ror_ringer.jpeg +0 -0
  794. data/lib/tasks/sample/products/9/product/ror_ringer.jpeg +0 -0
  795. data/lib/tasks/sample/products/9/small/ror_ringer.jpeg +0 -0
  796. data/lib/tasks/translation.rake +71 -0
  797. data/lib/tasks/upgrade.rake +7 -0
  798. data/log/README +1 -0
  799. data/public/.htaccess.example +40 -0
  800. data/public/404.html +30 -0
  801. data/public/500.html +30 -0
  802. data/public/dispatch.cgi +10 -0
  803. data/public/dispatch.fcgi +24 -0
  804. data/public/dispatch.rb +10 -0
  805. data/public/images/add-to-cart.png +0 -0
  806. data/public/images/admin/bg/active-tab.png +0 -0
  807. data/public/images/admin/bg/admin_tab_back.png +0 -0
  808. data/public/images/admin/bg/admin_tab_selected_back.png +0 -0
  809. data/public/images/admin/bg/content-back-blue.png +0 -0
  810. data/public/images/admin/bg/content-back-green.png +0 -0
  811. data/public/images/admin/bg/content-back.png +0 -0
  812. data/public/images/admin/bg/flash-error.png +0 -0
  813. data/public/images/admin/bg/flash-notice.png +0 -0
  814. data/public/images/admin/bg/green-stripes.gif +0 -0
  815. data/public/images/admin/bg/green-stripes.png +0 -0
  816. data/public/images/admin/bg/grid_header_back.png +0 -0
  817. data/public/images/admin/bg/grid_header_back_green.png +0 -0
  818. data/public/images/admin/bg/header-bg.png +0 -0
  819. data/public/images/admin/bg/header_bg.jpg +0 -0
  820. data/public/images/admin/bg/menu-current.png +0 -0
  821. data/public/images/admin/bg/red-stripes.gif +0 -0
  822. data/public/images/admin/bg/red-stripes.png +0 -0
  823. data/public/images/admin/bg/spree_50.png +0 -0
  824. data/public/images/admin/bg/subnav-divider.png +0 -0
  825. data/public/images/admin/bg/subnav.png +0 -0
  826. data/public/images/admin/bg/tab-back.png +0 -0
  827. data/public/images/admin/buttons/blue/left_01.png +0 -0
  828. data/public/images/admin/buttons/blue/right_01.png +0 -0
  829. data/public/images/admin/buttons/drag-handle-green.png +0 -0
  830. data/public/images/admin/buttons/green/left_01.png +0 -0
  831. data/public/images/admin/buttons/green/right_01.png +0 -0
  832. data/public/images/admin/buttons/left_01.png +0 -0
  833. data/public/images/admin/buttons/left_01_small.png +0 -0
  834. data/public/images/admin/buttons/orange/left_03.png +0 -0
  835. data/public/images/admin/buttons/orange/right_03.png +0 -0
  836. data/public/images/admin/buttons/right_01.png +0 -0
  837. data/public/images/admin/buttons/right_01_small.png +0 -0
  838. data/public/images/admin/icons/16x16/1.png +0 -0
  839. data/public/images/admin/icons/16x16/10.png +0 -0
  840. data/public/images/admin/icons/16x16/2.png +0 -0
  841. data/public/images/admin/icons/16x16/3.png +0 -0
  842. data/public/images/admin/icons/16x16/4.png +0 -0
  843. data/public/images/admin/icons/16x16/5.png +0 -0
  844. data/public/images/admin/icons/16x16/6.png +0 -0
  845. data/public/images/admin/icons/16x16/7.png +0 -0
  846. data/public/images/admin/icons/16x16/8.png +0 -0
  847. data/public/images/admin/icons/16x16/9.png +0 -0
  848. data/public/images/admin/icons/32x32/1.png +0 -0
  849. data/public/images/admin/icons/32x32/10.png +0 -0
  850. data/public/images/admin/icons/32x32/11.png +0 -0
  851. data/public/images/admin/icons/32x32/2.png +0 -0
  852. data/public/images/admin/icons/32x32/3.png +0 -0
  853. data/public/images/admin/icons/32x32/4.png +0 -0
  854. data/public/images/admin/icons/32x32/5.png +0 -0
  855. data/public/images/admin/icons/32x32/6.png +0 -0
  856. data/public/images/admin/icons/32x32/7.png +0 -0
  857. data/public/images/admin/icons/32x32/8.png +0 -0
  858. data/public/images/admin/icons/32x32/9.png +0 -0
  859. data/public/images/admin/icons/accept.png +0 -0
  860. data/public/images/admin/icons/add.gif +0 -0
  861. data/public/images/admin/icons/add.png +0 -0
  862. data/public/images/admin/icons/arrow-down.gif +0 -0
  863. data/public/images/admin/icons/cross.png +0 -0
  864. data/public/images/admin/icons/delete.gif +0 -0
  865. data/public/images/admin/icons/delete.png +0 -0
  866. data/public/images/admin/icons/drag.gif +0 -0
  867. data/public/images/admin/icons/edit.gif +0 -0
  868. data/public/images/admin/icons/edit.png +0 -0
  869. data/public/images/admin/icons/email.png +0 -0
  870. data/public/images/admin/icons/error.png +0 -0
  871. data/public/images/admin/icons/exclamation.png +0 -0
  872. data/public/images/admin/icons/feed.png +0 -0
  873. data/public/images/admin/icons/pdf.png +0 -0
  874. data/public/images/admin/icons/reorder.gif +0 -0
  875. data/public/images/admin/icons/search.gif +0 -0
  876. data/public/images/admin/icons/send-email.png +0 -0
  877. data/public/images/admin/icons/stop.png +0 -0
  878. data/public/images/admin/icons/tick.png +0 -0
  879. data/public/images/admin/icons/up.gif +0 -0
  880. data/public/images/admin/icons/xls.png +0 -0
  881. data/public/images/admin/tabs/off-left.png +0 -0
  882. data/public/images/admin/tabs/off-right.png +0 -0
  883. data/public/images/admin/tabs/on-left.png +0 -0
  884. data/public/images/admin/tabs/on-right.png +0 -0
  885. data/public/images/ajax_loader.gif +0 -0
  886. data/public/images/amex_cid.gif +0 -0
  887. data/public/images/bg-button-hover.png +0 -0
  888. data/public/images/bg-button-pressed.png +0 -0
  889. data/public/images/bg-button.gif +0 -0
  890. data/public/images/bg-button.png +0 -0
  891. data/public/images/blue/left_01.png +0 -0
  892. data/public/images/blue/right_01.png +0 -0
  893. data/public/images/body-back.png +0 -0
  894. data/public/images/bottom_shine.png +0 -0
  895. data/public/images/breadcrumb.gif +0 -0
  896. data/public/images/button-dark-hover.png +0 -0
  897. data/public/images/button-dark.png +0 -0
  898. data/public/images/buttons/bg-button-hover.png +0 -0
  899. data/public/images/buttons/bg-button-pressed.png +0 -0
  900. data/public/images/buttons/bg-button.gif +0 -0
  901. data/public/images/buttons/bg-button.png +0 -0
  902. data/public/images/buttons/blue/left_01.png +0 -0
  903. data/public/images/buttons/blue/right_01.png +0 -0
  904. data/public/images/buttons/button-dark-hover.png +0 -0
  905. data/public/images/buttons/button-dark.png +0 -0
  906. data/public/images/buttons/drag-handle-green.png +0 -0
  907. data/public/images/buttons/green/left_01.png +0 -0
  908. data/public/images/buttons/green/right_01.png +0 -0
  909. data/public/images/buttons/left_01.png +0 -0
  910. data/public/images/buttons/left_01_small.png +0 -0
  911. data/public/images/buttons/orange/left_03.png +0 -0
  912. data/public/images/buttons/orange/right_03.png +0 -0
  913. data/public/images/buttons/right_01.png +0 -0
  914. data/public/images/buttons/right_01_small.png +0 -0
  915. data/public/images/buttons/sxsw-ribbon-v1.png +0 -0
  916. data/public/images/buttons/top-shine.png +0 -0
  917. data/public/images/calendar_date_select/calendar.gif +0 -0
  918. data/public/images/cart-empty.png +0 -0
  919. data/public/images/cart-empty_x32.png +0 -0
  920. data/public/images/cart-full.png +0 -0
  921. data/public/images/cart-full_x32.png +0 -0
  922. data/public/images/checkout.png +0 -0
  923. data/public/images/creditcard.gif +0 -0
  924. data/public/images/discover_cid.gif +0 -0
  925. data/public/images/drag-handle-green.png +0 -0
  926. data/public/images/green/left_01.png +0 -0
  927. data/public/images/green/right_01.png +0 -0
  928. data/public/images/grid.png +0 -0
  929. data/public/images/left_01.png +0 -0
  930. data/public/images/left_01_small.png +0 -0
  931. data/public/images/master_cid.jpg +0 -0
  932. data/public/images/menu-current.png +0 -0
  933. data/public/images/menu-hover.png +0 -0
  934. data/public/images/noimage/mini.jpg +0 -0
  935. data/public/images/noimage/product.jpg +0 -0
  936. data/public/images/noimage/small.jpg +0 -0
  937. data/public/images/orange/left_03.png +0 -0
  938. data/public/images/orange/right_03.png +0 -0
  939. data/public/images/progress.gif +0 -0
  940. data/public/images/rails.png +0 -0
  941. data/public/images/right_01.png +0 -0
  942. data/public/images/right_01_small.png +0 -0
  943. data/public/images/separator.png +0 -0
  944. data/public/images/shadow-top.png +0 -0
  945. data/public/images/shadow_top.png +0 -0
  946. data/public/images/spinner.gif +0 -0
  947. data/public/images/spree.jpg +0 -0
  948. data/public/images/spree/progress.gif +0 -0
  949. data/public/images/spree/spinner.gif +0 -0
  950. data/public/images/spree/spree.jpg +0 -0
  951. data/public/images/steps/1.png +0 -0
  952. data/public/images/steps/1_small.png +0 -0
  953. data/public/images/steps/2.png +0 -0
  954. data/public/images/steps/2_small.png +0 -0
  955. data/public/images/steps/3.png +0 -0
  956. data/public/images/steps/3_small.png +0 -0
  957. data/public/images/steps/4.png +0 -0
  958. data/public/images/steps/4_small.png +0 -0
  959. data/public/images/steps/5.png +0 -0
  960. data/public/images/steps/5_small.png +0 -0
  961. data/public/images/steps/6.png +0 -0
  962. data/public/images/steps/6_small.png +0 -0
  963. data/public/images/sxsw-ribbon-v1.png +0 -0
  964. data/public/images/tab_bottom.gif +0 -0
  965. data/public/images/top-shine.png +0 -0
  966. data/public/images/tree-nav-icons/bullet.gif +0 -0
  967. data/public/images/tree-nav-icons/minus.gif +0 -0
  968. data/public/images/tree-nav-icons/plus.gif +0 -0
  969. data/public/images/tree-nav-icons/treeview-loading.gif +0 -0
  970. data/public/images/tree-nav-icons/treeview-sprite.gif +0 -0
  971. data/public/images/update.png +0 -0
  972. data/public/images/visa_cid.gif +0 -0
  973. data/public/images/wrapper-back-2.png +0 -0
  974. data/public/images/wrapper-back.png +0 -0
  975. data/public/images/yui-menubaritem_submenuindicator.png +0 -0
  976. data/public/images/yui-menubaritem_submenuindicator_disabled.png +0 -0
  977. data/public/images/yui-menuitem_checkbox.png +0 -0
  978. data/public/images/yui-menuitem_checkbox_disabled.png +0 -0
  979. data/public/images/yui-menuitem_submenuindicator.png +0 -0
  980. data/public/images/yui-menuitem_submenuindicator_disabled.png +0 -0
  981. data/public/images/yui-sprite.png +0 -0
  982. data/public/javascripts/application.js +36 -0
  983. data/public/javascripts/calculator.js +13 -0
  984. data/public/javascripts/calendar_date_select/calendar_date_select.js +439 -0
  985. data/public/javascripts/calendar_date_select/format_american.js +34 -0
  986. data/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
  987. data/public/javascripts/calendar_date_select/format_finnish.js +24 -0
  988. data/public/javascripts/calendar_date_select/format_hyphen_ampm.js +36 -0
  989. data/public/javascripts/calendar_date_select/format_italian.js +24 -0
  990. data/public/javascripts/checkout.js +537 -0
  991. data/public/javascripts/controls.js +963 -0
  992. data/public/javascripts/dragdrop.js +972 -0
  993. data/public/javascripts/effects.js +1120 -0
  994. data/public/javascripts/jquery-1.3.2.min.js +19 -0
  995. data/public/javascripts/jquery.alerts/images/help.gif +0 -0
  996. data/public/javascripts/jquery.alerts/images/important.gif +0 -0
  997. data/public/javascripts/jquery.alerts/images/info.gif +0 -0
  998. data/public/javascripts/jquery.alerts/images/title.gif +0 -0
  999. data/public/javascripts/jquery.alerts/jquery.alerts.css +57 -0
  1000. data/public/javascripts/jquery.alerts/jquery.alerts.js +235 -0
  1001. data/public/javascripts/jquery.alerts/jquery.alerts.spree.css +30 -0
  1002. data/public/javascripts/jquery.validate.min.js +16 -0
  1003. data/public/javascripts/jsTree/source/_lib.js +126 -0
  1004. data/public/javascripts/jsTree/source/themes/default/context.gif +0 -0
  1005. data/public/javascripts/jsTree/source/themes/default/create.png +0 -0
  1006. data/public/javascripts/jsTree/source/themes/default/dot.gif +0 -0
  1007. data/public/javascripts/jsTree/source/themes/default/f.png +0 -0
  1008. data/public/javascripts/jsTree/source/themes/default/fminus.gif +0 -0
  1009. data/public/javascripts/jsTree/source/themes/default/fminus_rtl.gif +0 -0
  1010. data/public/javascripts/jsTree/source/themes/default/fplus.gif +0 -0
  1011. data/public/javascripts/jsTree/source/themes/default/fplus_rtl.gif +0 -0
  1012. data/public/javascripts/jsTree/source/themes/default/lastli.gif +0 -0
  1013. data/public/javascripts/jsTree/source/themes/default/lastli_rtl.gif +0 -0
  1014. data/public/javascripts/jsTree/source/themes/default/li.gif +0 -0
  1015. data/public/javascripts/jsTree/source/themes/default/remove.png +0 -0
  1016. data/public/javascripts/jsTree/source/themes/default/rename.png +0 -0
  1017. data/public/javascripts/jsTree/source/themes/default/style.css +44 -0
  1018. data/public/javascripts/jsTree/source/themes/default/throbber.gif +0 -0
  1019. data/public/javascripts/jsTree/source/themes/marker.gif +0 -0
  1020. data/public/javascripts/jsTree/source/themes/marker_rtl.gif +0 -0
  1021. data/public/javascripts/jsTree/source/themes/plus.gif +0 -0
  1022. data/public/javascripts/jsTree/source/themes/remove.png +0 -0
  1023. data/public/javascripts/jsTree/source/themes/spree/context.gif +0 -0
  1024. data/public/javascripts/jsTree/source/themes/spree/create.png +0 -0
  1025. data/public/javascripts/jsTree/source/themes/spree/dot.gif +0 -0
  1026. data/public/javascripts/jsTree/source/themes/spree/f.png +0 -0
  1027. data/public/javascripts/jsTree/source/themes/spree/fminus.gif +0 -0
  1028. data/public/javascripts/jsTree/source/themes/spree/fminus_rtl.gif +0 -0
  1029. data/public/javascripts/jsTree/source/themes/spree/fplus.gif +0 -0
  1030. data/public/javascripts/jsTree/source/themes/spree/fplus_rtl.gif +0 -0
  1031. data/public/javascripts/jsTree/source/themes/spree/lastli.gif +0 -0
  1032. data/public/javascripts/jsTree/source/themes/spree/li.gif +0 -0
  1033. data/public/javascripts/jsTree/source/themes/spree/remove.png +0 -0
  1034. data/public/javascripts/jsTree/source/themes/spree/rename.png +0 -0
  1035. data/public/javascripts/jsTree/source/themes/spree/style.css +39 -0
  1036. data/public/javascripts/jsTree/source/themes/spree/throbber.gif +0 -0
  1037. data/public/javascripts/jsTree/source/tree_component.css +62 -0
  1038. data/public/javascripts/jsTree/source/tree_component.js +2315 -0
  1039. data/public/javascripts/jsTree/source/tree_component.min.js +14 -0
  1040. data/public/javascripts/nested-attribute.js +25 -0
  1041. data/public/javascripts/prototype.js +4225 -0
  1042. data/public/javascripts/spree.js +18 -0
  1043. data/public/javascripts/taxonomy.js +202 -0
  1044. data/public/javascripts/zone.js +48 -0
  1045. data/public/robots.txt +1 -0
  1046. data/public/stylesheets/admin/admin-forms.css +159 -0
  1047. data/public/stylesheets/admin/admin-reset.css +67 -0
  1048. data/public/stylesheets/admin/admin-tables.css +31 -0
  1049. data/public/stylesheets/admin/admin-typography.css +117 -0
  1050. data/public/stylesheets/admin/admin.css +473 -0
  1051. data/public/stylesheets/admin/grids.css +314 -0
  1052. data/public/stylesheets/admin/reset-fonts-grids-2-6-0.css +7 -0
  1053. data/public/stylesheets/admin/yui-includes.css +14 -0
  1054. data/public/stylesheets/application.css +7 -0
  1055. data/public/stylesheets/calendar_date_select/blue.css +130 -0
  1056. data/public/stylesheets/calendar_date_select/default.css +135 -0
  1057. data/public/stylesheets/calendar_date_select/plain.css +128 -0
  1058. data/public/stylesheets/calendar_date_select/red.css +135 -0
  1059. data/public/stylesheets/calendar_date_select/silver.css +133 -0
  1060. data/public/stylesheets/sass/_buttons.sass +59 -0
  1061. data/public/stylesheets/sass/_cart.sass +21 -0
  1062. data/public/stylesheets/sass/_checkout.sass +173 -0
  1063. data/public/stylesheets/sass/_colors.sass +11 -0
  1064. data/public/stylesheets/sass/_layout.sass +63 -0
  1065. data/public/stylesheets/sass/_messages.sass +28 -0
  1066. data/public/stylesheets/sass/_mixins.sass +17 -0
  1067. data/public/stylesheets/sass/_navigation.sass +97 -0
  1068. data/public/stylesheets/sass/_prices.sass +13 -0
  1069. data/public/stylesheets/sass/_product_detail.sass +27 -0
  1070. data/public/stylesheets/sass/_product_thumbnail.sass +58 -0
  1071. data/public/stylesheets/sass/_registration.sass +18 -0
  1072. data/public/stylesheets/sass/ie.sass +3 -0
  1073. data/public/stylesheets/sass/print.sass +3 -0
  1074. data/public/stylesheets/sass/screen.sass +22 -0
  1075. data/public/stylesheets/scaffold.css +54 -0
  1076. data/script/about +3 -0
  1077. data/script/autospec +5 -0
  1078. data/script/breakpointer +3 -0
  1079. data/script/console +3 -0
  1080. data/script/dbconsole +3 -0
  1081. data/script/destroy +3 -0
  1082. data/script/extension +3 -0
  1083. data/script/generate +3 -0
  1084. data/script/performance/benchmarker +3 -0
  1085. data/script/performance/profiler +3 -0
  1086. data/script/performance/request +3 -0
  1087. data/script/plugin +3 -0
  1088. data/script/process/inspector +3 -0
  1089. data/script/process/reaper +3 -0
  1090. data/script/process/spawner +3 -0
  1091. data/script/runner +3 -0
  1092. data/script/server +3 -0
  1093. data/script/spec +5 -0
  1094. data/script/spec_server +125 -0
  1095. data/spec/controllers/admin/configurations_controller_spec.rb +9 -0
  1096. data/spec/controllers/admin/mail_settings_controller_spec.rb +24 -0
  1097. data/spec/controllers/admin/shipping_categories_controller_spec.rb +10 -0
  1098. data/spec/controllers/admin/shipping_methods_controller_spec.rb +10 -0
  1099. data/spec/controllers/countries_controller_spec.rb +24 -0
  1100. data/spec/controllers/orders_controller_spec.rb +35 -0
  1101. data/spec/controllers/products_controller_spec.rb +26 -0
  1102. data/spec/controllers/states_controller_spec.rb +18 -0
  1103. data/spec/controllers/taxons_controller_spec.rb +18 -0
  1104. data/spec/fixtures/app_configurations.yml +7 -0
  1105. data/spec/fixtures/countries.yml +3 -0
  1106. data/spec/fixtures/gateway_configurations.yml +3 -0
  1107. data/spec/fixtures/gateways.yml +3 -0
  1108. data/spec/fixtures/preferences.yml +15 -0
  1109. data/spec/fixtures/roles.yml +2 -0
  1110. data/spec/fixtures/states.yml +2 -0
  1111. data/spec/fixtures/tax_categories.yml +4 -0
  1112. data/spec/fixtures/users.yml +5 -0
  1113. data/spec/fixtures/zone_members.yml +7 -0
  1114. data/spec/fixtures/zones.yml +4 -0
  1115. data/spec/lib/easy_role_requirement_system_spec.rb +140 -0
  1116. data/spec/models/address_spec.rb +79 -0
  1117. data/spec/models/app_configuration_spec.rb +13 -0
  1118. data/spec/models/creditcard_payment_spec.rb +17 -0
  1119. data/spec/models/creditcard_spec.rb +43 -0
  1120. data/spec/models/inventory_unit_spec.rb +18 -0
  1121. data/spec/models/option_type_spec.rb +36 -0
  1122. data/spec/models/option_value_spec.rb +39 -0
  1123. data/spec/models/order_spec.rb +207 -0
  1124. data/spec/models/payment_sepc.rb +29 -0
  1125. data/spec/models/preference_definition_spec.rb +184 -0
  1126. data/spec/models/product_option_type_spec.rb +38 -0
  1127. data/spec/models/product_property_spec.rb +29 -0
  1128. data/spec/models/property_spec.rb +38 -0
  1129. data/spec/models/prototype_spec.rb +35 -0
  1130. data/spec/models/shipment_spec.rb +8 -0
  1131. data/spec/models/shipping_category_spec.rb +8 -0
  1132. data/spec/models/shipping_order_spec.rb +113 -0
  1133. data/spec/models/tax_category_spec.rb +11 -0
  1134. data/spec/models/taxon_spec.rb +50 -0
  1135. data/spec/models/taxonomy_spec.rb +37 -0
  1136. data/spec/models/zone_member_spec.rb +5 -0
  1137. data/spec/models/zone_spec.rb +137 -0
  1138. data/spec/preference_factory.rb +58 -0
  1139. data/spec/rcov.opts +2 -0
  1140. data/spec/spec.opts +4 -0
  1141. data/spec/spec_helper.rb +80 -0
  1142. data/spec/views/admin/configurations/index.html.erb_spec.rb +37 -0
  1143. data/spree-0.9.4.gem +0 -0
  1144. data/test/factories/address_factory.rb +20 -0
  1145. data/test/factories/adjustments_factory.rb +53 -0
  1146. data/test/factories/checkout_factory.rb +15 -0
  1147. data/test/factories/country_factory.rb +5 -0
  1148. data/test/factories/coupon_factory.rb +5 -0
  1149. data/test/factories/creditcard_factory.rb +12 -0
  1150. data/test/factories/creditcard_payment_factory.rb +11 -0
  1151. data/test/factories/inventory_unit_factory.rb +2 -0
  1152. data/test/factories/line_item_factory.rb +8 -0
  1153. data/test/factories/options_factory.rb +10 -0
  1154. data/test/factories/order_factory.rb +6 -0
  1155. data/test/factories/preference_factory.rb +5 -0
  1156. data/test/factories/product_factory.rb +13 -0
  1157. data/test/factories/role_factory.rb +5 -0
  1158. data/test/factories/shipment_factory.rb +6 -0
  1159. data/test/factories/shipping_category_factory.rb +5 -0
  1160. data/test/factories/shipping_method_factory.rb +13 -0
  1161. data/test/factories/tax_category_factory.rb +8 -0
  1162. data/test/factories/tax_rate_factory.rb +4 -0
  1163. data/test/factories/taxon_factory.rb +16 -0
  1164. data/test/factories/taxonomy_factory.rb +5 -0
  1165. data/test/factories/user_factory.rb +11 -0
  1166. data/test/factories/variant_factory.rb +13 -0
  1167. data/test/factories/zone_factory.rb +10 -0
  1168. data/test/fixtures/countries.yml +4 -0
  1169. data/test/fixtures/gateway_configurations.yml +2 -0
  1170. data/test/fixtures/gateways.yml +4 -0
  1171. data/test/fixtures/states.yml +204 -0
  1172. data/test/functional/calculators_controller_test.rb +8 -0
  1173. data/test/functional/checkouts_controller_test.rb +77 -0
  1174. data/test/functional/products_controller_test.rb +12 -0
  1175. data/test/functional/users_controller_test.rb +25 -0
  1176. data/test/test_helper.rb +66 -0
  1177. data/test/unit/address_test.rb +39 -0
  1178. data/test/unit/billing_integration_test.rb +8 -0
  1179. data/test/unit/charge_test.rb +90 -0
  1180. data/test/unit/checkout_test.rb +10 -0
  1181. data/test/unit/country_test.rb +6 -0
  1182. data/test/unit/coupon_test.rb +56 -0
  1183. data/test/unit/credit_test.rb +61 -0
  1184. data/test/unit/creditcard_payment_test.rb +28 -0
  1185. data/test/unit/creditcard_test.rb +44 -0
  1186. data/test/unit/factories_test.rb +29 -0
  1187. data/test/unit/flat_percent_item_total_test.rb +28 -0
  1188. data/test/unit/flat_rate_calculators_test.rb +13 -0
  1189. data/test/unit/has_calculator_test.rb +22 -0
  1190. data/test/unit/helpers/calculators_helper_test.rb +4 -0
  1191. data/test/unit/helpers/checkouts_helper_test.rb +26 -0
  1192. data/test/unit/helpers/products_helper_test.rb +32 -0
  1193. data/test/unit/helpers/spree/base_helper_test.rb +43 -0
  1194. data/test/unit/incomplete_checkout_test.rb +68 -0
  1195. data/test/unit/inventory_unit_test.rb +20 -0
  1196. data/test/unit/line_item_test.rb +73 -0
  1197. data/test/unit/order_test.rb +80 -0
  1198. data/test/unit/per_item_calculator_test.rb +14 -0
  1199. data/test/unit/preference_test.rb +148 -0
  1200. data/test/unit/product_test.rb +279 -0
  1201. data/test/unit/sales_tax_calculator_test.rb +46 -0
  1202. data/test/unit/shipping_method_test.rb +21 -0
  1203. data/test/unit/state_event_test.rb +40 -0
  1204. data/test/unit/state_test.rb +7 -0
  1205. data/test/unit/tax_rate_test.rb +9 -0
  1206. data/test/unit/variant_test.rb +128 -0
  1207. data/test/unit/vat_calculator_test.rb +60 -0
  1208. data/vendor/extensions/README +1 -0
  1209. data/vendor/extensions/calculators/README.markdown +4 -0
  1210. data/vendor/extensions/calculators/calculators_extension.rb +31 -0
  1211. data/vendor/extensions/localization/README.rdoc +5 -0
  1212. data/vendor/extensions/localization/Rakefile +120 -0
  1213. data/vendor/extensions/localization/app/controllers/admin/localization_controller.rb +2 -0
  1214. data/vendor/extensions/localization/app/controllers/locale_controller.rb +12 -0
  1215. data/vendor/extensions/localization/app/helpers/locale_helper.rb +2 -0
  1216. data/vendor/extensions/localization/app/helpers/localization_helper.rb +2 -0
  1217. data/vendor/extensions/localization/app/views/shared/_language_bar.html.erb +8 -0
  1218. data/vendor/extensions/localization/config/routes.rb +4 -0
  1219. data/vendor/extensions/localization/lib/localization/user_preferences.rb +9 -0
  1220. data/vendor/extensions/localization/lib/tasks/localization_extension_tasks.rake +17 -0
  1221. data/vendor/extensions/localization/localization_extension.rb +21 -0
  1222. data/vendor/extensions/localization/public/images/flags/ad.png +0 -0
  1223. data/vendor/extensions/localization/public/images/flags/ae.png +0 -0
  1224. data/vendor/extensions/localization/public/images/flags/af.png +0 -0
  1225. data/vendor/extensions/localization/public/images/flags/ag.png +0 -0
  1226. data/vendor/extensions/localization/public/images/flags/ai.png +0 -0
  1227. data/vendor/extensions/localization/public/images/flags/al.png +0 -0
  1228. data/vendor/extensions/localization/public/images/flags/am.png +0 -0
  1229. data/vendor/extensions/localization/public/images/flags/an.png +0 -0
  1230. data/vendor/extensions/localization/public/images/flags/ao.png +0 -0
  1231. data/vendor/extensions/localization/public/images/flags/ar.png +0 -0
  1232. data/vendor/extensions/localization/public/images/flags/as.png +0 -0
  1233. data/vendor/extensions/localization/public/images/flags/at.png +0 -0
  1234. data/vendor/extensions/localization/public/images/flags/au.png +0 -0
  1235. data/vendor/extensions/localization/public/images/flags/aw.png +0 -0
  1236. data/vendor/extensions/localization/public/images/flags/ax.png +0 -0
  1237. data/vendor/extensions/localization/public/images/flags/az.png +0 -0
  1238. data/vendor/extensions/localization/public/images/flags/ba.png +0 -0
  1239. data/vendor/extensions/localization/public/images/flags/bb.png +0 -0
  1240. data/vendor/extensions/localization/public/images/flags/bd.png +0 -0
  1241. data/vendor/extensions/localization/public/images/flags/be.png +0 -0
  1242. data/vendor/extensions/localization/public/images/flags/bf.png +0 -0
  1243. data/vendor/extensions/localization/public/images/flags/bg.png +0 -0
  1244. data/vendor/extensions/localization/public/images/flags/bh.png +0 -0
  1245. data/vendor/extensions/localization/public/images/flags/bi.png +0 -0
  1246. data/vendor/extensions/localization/public/images/flags/bj.png +0 -0
  1247. data/vendor/extensions/localization/public/images/flags/bm.png +0 -0
  1248. data/vendor/extensions/localization/public/images/flags/bn.png +0 -0
  1249. data/vendor/extensions/localization/public/images/flags/bo.png +0 -0
  1250. data/vendor/extensions/localization/public/images/flags/br.png +0 -0
  1251. data/vendor/extensions/localization/public/images/flags/bs.png +0 -0
  1252. data/vendor/extensions/localization/public/images/flags/bt.png +0 -0
  1253. data/vendor/extensions/localization/public/images/flags/bv.png +0 -0
  1254. data/vendor/extensions/localization/public/images/flags/bw.png +0 -0
  1255. data/vendor/extensions/localization/public/images/flags/by.png +0 -0
  1256. data/vendor/extensions/localization/public/images/flags/bz.png +0 -0
  1257. data/vendor/extensions/localization/public/images/flags/ca.png +0 -0
  1258. data/vendor/extensions/localization/public/images/flags/catalonia.png +0 -0
  1259. data/vendor/extensions/localization/public/images/flags/cc.png +0 -0
  1260. data/vendor/extensions/localization/public/images/flags/cd.png +0 -0
  1261. data/vendor/extensions/localization/public/images/flags/cf.png +0 -0
  1262. data/vendor/extensions/localization/public/images/flags/cg.png +0 -0
  1263. data/vendor/extensions/localization/public/images/flags/ch.png +0 -0
  1264. data/vendor/extensions/localization/public/images/flags/ci.png +0 -0
  1265. data/vendor/extensions/localization/public/images/flags/ck.png +0 -0
  1266. data/vendor/extensions/localization/public/images/flags/cl.png +0 -0
  1267. data/vendor/extensions/localization/public/images/flags/cm.png +0 -0
  1268. data/vendor/extensions/localization/public/images/flags/cn.png +0 -0
  1269. data/vendor/extensions/localization/public/images/flags/co.png +0 -0
  1270. data/vendor/extensions/localization/public/images/flags/cr.png +0 -0
  1271. data/vendor/extensions/localization/public/images/flags/cs.png +0 -0
  1272. data/vendor/extensions/localization/public/images/flags/cu.png +0 -0
  1273. data/vendor/extensions/localization/public/images/flags/cv.png +0 -0
  1274. data/vendor/extensions/localization/public/images/flags/cx.png +0 -0
  1275. data/vendor/extensions/localization/public/images/flags/cy.png +0 -0
  1276. data/vendor/extensions/localization/public/images/flags/cz.png +0 -0
  1277. data/vendor/extensions/localization/public/images/flags/da.png +0 -0
  1278. data/vendor/extensions/localization/public/images/flags/de.png +0 -0
  1279. data/vendor/extensions/localization/public/images/flags/de_CH.png +0 -0
  1280. data/vendor/extensions/localization/public/images/flags/dj.png +0 -0
  1281. data/vendor/extensions/localization/public/images/flags/dm.png +0 -0
  1282. data/vendor/extensions/localization/public/images/flags/do.png +0 -0
  1283. data/vendor/extensions/localization/public/images/flags/dz.png +0 -0
  1284. data/vendor/extensions/localization/public/images/flags/ec.png +0 -0
  1285. data/vendor/extensions/localization/public/images/flags/ee.png +0 -0
  1286. data/vendor/extensions/localization/public/images/flags/eg.png +0 -0
  1287. data/vendor/extensions/localization/public/images/flags/eh.png +0 -0
  1288. data/vendor/extensions/localization/public/images/flags/england.png +0 -0
  1289. data/vendor/extensions/localization/public/images/flags/er.png +0 -0
  1290. data/vendor/extensions/localization/public/images/flags/es.png +0 -0
  1291. data/vendor/extensions/localization/public/images/flags/et.png +0 -0
  1292. data/vendor/extensions/localization/public/images/flags/europeanunion.png +0 -0
  1293. data/vendor/extensions/localization/public/images/flags/fam.png +0 -0
  1294. data/vendor/extensions/localization/public/images/flags/fi.png +0 -0
  1295. data/vendor/extensions/localization/public/images/flags/fj.png +0 -0
  1296. data/vendor/extensions/localization/public/images/flags/fk.png +0 -0
  1297. data/vendor/extensions/localization/public/images/flags/fm.png +0 -0
  1298. data/vendor/extensions/localization/public/images/flags/fo.png +0 -0
  1299. data/vendor/extensions/localization/public/images/flags/fr.png +0 -0
  1300. data/vendor/extensions/localization/public/images/flags/ga.png +0 -0
  1301. data/vendor/extensions/localization/public/images/flags/gb.png +0 -0
  1302. data/vendor/extensions/localization/public/images/flags/gd.png +0 -0
  1303. data/vendor/extensions/localization/public/images/flags/ge.png +0 -0
  1304. data/vendor/extensions/localization/public/images/flags/gf.png +0 -0
  1305. data/vendor/extensions/localization/public/images/flags/gh.png +0 -0
  1306. data/vendor/extensions/localization/public/images/flags/gi.png +0 -0
  1307. data/vendor/extensions/localization/public/images/flags/gl.png +0 -0
  1308. data/vendor/extensions/localization/public/images/flags/gm.png +0 -0
  1309. data/vendor/extensions/localization/public/images/flags/gn.png +0 -0
  1310. data/vendor/extensions/localization/public/images/flags/gp.png +0 -0
  1311. data/vendor/extensions/localization/public/images/flags/gq.png +0 -0
  1312. data/vendor/extensions/localization/public/images/flags/gr.png +0 -0
  1313. data/vendor/extensions/localization/public/images/flags/gs.png +0 -0
  1314. data/vendor/extensions/localization/public/images/flags/gt.png +0 -0
  1315. data/vendor/extensions/localization/public/images/flags/gu.png +0 -0
  1316. data/vendor/extensions/localization/public/images/flags/gw.png +0 -0
  1317. data/vendor/extensions/localization/public/images/flags/gy.png +0 -0
  1318. data/vendor/extensions/localization/public/images/flags/hk.png +0 -0
  1319. data/vendor/extensions/localization/public/images/flags/hm.png +0 -0
  1320. data/vendor/extensions/localization/public/images/flags/hn.png +0 -0
  1321. data/vendor/extensions/localization/public/images/flags/hr.png +0 -0
  1322. data/vendor/extensions/localization/public/images/flags/ht.png +0 -0
  1323. data/vendor/extensions/localization/public/images/flags/hu.png +0 -0
  1324. data/vendor/extensions/localization/public/images/flags/id.png +0 -0
  1325. data/vendor/extensions/localization/public/images/flags/ie.png +0 -0
  1326. data/vendor/extensions/localization/public/images/flags/il.png +0 -0
  1327. data/vendor/extensions/localization/public/images/flags/in.png +0 -0
  1328. data/vendor/extensions/localization/public/images/flags/io.png +0 -0
  1329. data/vendor/extensions/localization/public/images/flags/iq.png +0 -0
  1330. data/vendor/extensions/localization/public/images/flags/ir.png +0 -0
  1331. data/vendor/extensions/localization/public/images/flags/is.png +0 -0
  1332. data/vendor/extensions/localization/public/images/flags/it.png +0 -0
  1333. data/vendor/extensions/localization/public/images/flags/jm.png +0 -0
  1334. data/vendor/extensions/localization/public/images/flags/jo.png +0 -0
  1335. data/vendor/extensions/localization/public/images/flags/jp.png +0 -0
  1336. data/vendor/extensions/localization/public/images/flags/ke.png +0 -0
  1337. data/vendor/extensions/localization/public/images/flags/kg.png +0 -0
  1338. data/vendor/extensions/localization/public/images/flags/kh.png +0 -0
  1339. data/vendor/extensions/localization/public/images/flags/ki.png +0 -0
  1340. data/vendor/extensions/localization/public/images/flags/km.png +0 -0
  1341. data/vendor/extensions/localization/public/images/flags/kn.png +0 -0
  1342. data/vendor/extensions/localization/public/images/flags/kp.png +0 -0
  1343. data/vendor/extensions/localization/public/images/flags/kr.png +0 -0
  1344. data/vendor/extensions/localization/public/images/flags/kw.png +0 -0
  1345. data/vendor/extensions/localization/public/images/flags/ky.png +0 -0
  1346. data/vendor/extensions/localization/public/images/flags/kz.png +0 -0
  1347. data/vendor/extensions/localization/public/images/flags/la.png +0 -0
  1348. data/vendor/extensions/localization/public/images/flags/lb.png +0 -0
  1349. data/vendor/extensions/localization/public/images/flags/lc.png +0 -0
  1350. data/vendor/extensions/localization/public/images/flags/li.png +0 -0
  1351. data/vendor/extensions/localization/public/images/flags/lk.png +0 -0
  1352. data/vendor/extensions/localization/public/images/flags/lr.png +0 -0
  1353. data/vendor/extensions/localization/public/images/flags/ls.png +0 -0
  1354. data/vendor/extensions/localization/public/images/flags/lt.png +0 -0
  1355. data/vendor/extensions/localization/public/images/flags/lu.png +0 -0
  1356. data/vendor/extensions/localization/public/images/flags/lv.png +0 -0
  1357. data/vendor/extensions/localization/public/images/flags/ly.png +0 -0
  1358. data/vendor/extensions/localization/public/images/flags/ma.png +0 -0
  1359. data/vendor/extensions/localization/public/images/flags/mc.png +0 -0
  1360. data/vendor/extensions/localization/public/images/flags/md.png +0 -0
  1361. data/vendor/extensions/localization/public/images/flags/me.png +0 -0
  1362. data/vendor/extensions/localization/public/images/flags/mg.png +0 -0
  1363. data/vendor/extensions/localization/public/images/flags/mh.png +0 -0
  1364. data/vendor/extensions/localization/public/images/flags/mk.png +0 -0
  1365. data/vendor/extensions/localization/public/images/flags/ml.png +0 -0
  1366. data/vendor/extensions/localization/public/images/flags/mm.png +0 -0
  1367. data/vendor/extensions/localization/public/images/flags/mn.png +0 -0
  1368. data/vendor/extensions/localization/public/images/flags/mo.png +0 -0
  1369. data/vendor/extensions/localization/public/images/flags/mp.png +0 -0
  1370. data/vendor/extensions/localization/public/images/flags/mq.png +0 -0
  1371. data/vendor/extensions/localization/public/images/flags/mr.png +0 -0
  1372. data/vendor/extensions/localization/public/images/flags/ms.png +0 -0
  1373. data/vendor/extensions/localization/public/images/flags/mt.png +0 -0
  1374. data/vendor/extensions/localization/public/images/flags/mu.png +0 -0
  1375. data/vendor/extensions/localization/public/images/flags/mv.png +0 -0
  1376. data/vendor/extensions/localization/public/images/flags/mw.png +0 -0
  1377. data/vendor/extensions/localization/public/images/flags/mx.png +0 -0
  1378. data/vendor/extensions/localization/public/images/flags/my.png +0 -0
  1379. data/vendor/extensions/localization/public/images/flags/mz.png +0 -0
  1380. data/vendor/extensions/localization/public/images/flags/na.png +0 -0
  1381. data/vendor/extensions/localization/public/images/flags/nc.png +0 -0
  1382. data/vendor/extensions/localization/public/images/flags/ne.png +0 -0
  1383. data/vendor/extensions/localization/public/images/flags/nf.png +0 -0
  1384. data/vendor/extensions/localization/public/images/flags/ng.png +0 -0
  1385. data/vendor/extensions/localization/public/images/flags/ni.png +0 -0
  1386. data/vendor/extensions/localization/public/images/flags/nl.png +0 -0
  1387. data/vendor/extensions/localization/public/images/flags/no.png +0 -0
  1388. data/vendor/extensions/localization/public/images/flags/np.png +0 -0
  1389. data/vendor/extensions/localization/public/images/flags/nr.png +0 -0
  1390. data/vendor/extensions/localization/public/images/flags/nu.png +0 -0
  1391. data/vendor/extensions/localization/public/images/flags/nz.png +0 -0
  1392. data/vendor/extensions/localization/public/images/flags/om.png +0 -0
  1393. data/vendor/extensions/localization/public/images/flags/pa.png +0 -0
  1394. data/vendor/extensions/localization/public/images/flags/pe.png +0 -0
  1395. data/vendor/extensions/localization/public/images/flags/pf.png +0 -0
  1396. data/vendor/extensions/localization/public/images/flags/pg.png +0 -0
  1397. data/vendor/extensions/localization/public/images/flags/ph.png +0 -0
  1398. data/vendor/extensions/localization/public/images/flags/pk.png +0 -0
  1399. data/vendor/extensions/localization/public/images/flags/pl.png +0 -0
  1400. data/vendor/extensions/localization/public/images/flags/pm.png +0 -0
  1401. data/vendor/extensions/localization/public/images/flags/pn.png +0 -0
  1402. data/vendor/extensions/localization/public/images/flags/pr.png +0 -0
  1403. data/vendor/extensions/localization/public/images/flags/ps.png +0 -0
  1404. data/vendor/extensions/localization/public/images/flags/pt.png +0 -0
  1405. data/vendor/extensions/localization/public/images/flags/pw.png +0 -0
  1406. data/vendor/extensions/localization/public/images/flags/py.png +0 -0
  1407. data/vendor/extensions/localization/public/images/flags/qa.png +0 -0
  1408. data/vendor/extensions/localization/public/images/flags/re.png +0 -0
  1409. data/vendor/extensions/localization/public/images/flags/ro.png +0 -0
  1410. data/vendor/extensions/localization/public/images/flags/rs.png +0 -0
  1411. data/vendor/extensions/localization/public/images/flags/ru.png +0 -0
  1412. data/vendor/extensions/localization/public/images/flags/rw.png +0 -0
  1413. data/vendor/extensions/localization/public/images/flags/sa.png +0 -0
  1414. data/vendor/extensions/localization/public/images/flags/sb.png +0 -0
  1415. data/vendor/extensions/localization/public/images/flags/sc.png +0 -0
  1416. data/vendor/extensions/localization/public/images/flags/scotland.png +0 -0
  1417. data/vendor/extensions/localization/public/images/flags/sd.png +0 -0
  1418. data/vendor/extensions/localization/public/images/flags/se.png +0 -0
  1419. data/vendor/extensions/localization/public/images/flags/sg.png +0 -0
  1420. data/vendor/extensions/localization/public/images/flags/sh.png +0 -0
  1421. data/vendor/extensions/localization/public/images/flags/si.png +0 -0
  1422. data/vendor/extensions/localization/public/images/flags/sj.png +0 -0
  1423. data/vendor/extensions/localization/public/images/flags/sk.png +0 -0
  1424. data/vendor/extensions/localization/public/images/flags/sl.png +0 -0
  1425. data/vendor/extensions/localization/public/images/flags/sm.png +0 -0
  1426. data/vendor/extensions/localization/public/images/flags/sn.png +0 -0
  1427. data/vendor/extensions/localization/public/images/flags/so.png +0 -0
  1428. data/vendor/extensions/localization/public/images/flags/sr.png +0 -0
  1429. data/vendor/extensions/localization/public/images/flags/st.png +0 -0
  1430. data/vendor/extensions/localization/public/images/flags/sv.png +0 -0
  1431. data/vendor/extensions/localization/public/images/flags/sy.png +0 -0
  1432. data/vendor/extensions/localization/public/images/flags/sz.png +0 -0
  1433. data/vendor/extensions/localization/public/images/flags/tc.png +0 -0
  1434. data/vendor/extensions/localization/public/images/flags/td.png +0 -0
  1435. data/vendor/extensions/localization/public/images/flags/tf.png +0 -0
  1436. data/vendor/extensions/localization/public/images/flags/tg.png +0 -0
  1437. data/vendor/extensions/localization/public/images/flags/th.png +0 -0
  1438. data/vendor/extensions/localization/public/images/flags/tj.png +0 -0
  1439. data/vendor/extensions/localization/public/images/flags/tk.png +0 -0
  1440. data/vendor/extensions/localization/public/images/flags/tl.png +0 -0
  1441. data/vendor/extensions/localization/public/images/flags/tm.png +0 -0
  1442. data/vendor/extensions/localization/public/images/flags/tn.png +0 -0
  1443. data/vendor/extensions/localization/public/images/flags/to.png +0 -0
  1444. data/vendor/extensions/localization/public/images/flags/tr.png +0 -0
  1445. data/vendor/extensions/localization/public/images/flags/tt.png +0 -0
  1446. data/vendor/extensions/localization/public/images/flags/tv.png +0 -0
  1447. data/vendor/extensions/localization/public/images/flags/tw.png +0 -0
  1448. data/vendor/extensions/localization/public/images/flags/tz.png +0 -0
  1449. data/vendor/extensions/localization/public/images/flags/ua.png +0 -0
  1450. data/vendor/extensions/localization/public/images/flags/ug.png +0 -0
  1451. data/vendor/extensions/localization/public/images/flags/um.png +0 -0
  1452. data/vendor/extensions/localization/public/images/flags/us.png +0 -0
  1453. data/vendor/extensions/localization/public/images/flags/uy.png +0 -0
  1454. data/vendor/extensions/localization/public/images/flags/uz.png +0 -0
  1455. data/vendor/extensions/localization/public/images/flags/va.png +0 -0
  1456. data/vendor/extensions/localization/public/images/flags/vc.png +0 -0
  1457. data/vendor/extensions/localization/public/images/flags/ve.png +0 -0
  1458. data/vendor/extensions/localization/public/images/flags/vg.png +0 -0
  1459. data/vendor/extensions/localization/public/images/flags/vi.png +0 -0
  1460. data/vendor/extensions/localization/public/images/flags/vn.png +0 -0
  1461. data/vendor/extensions/localization/public/images/flags/vu.png +0 -0
  1462. data/vendor/extensions/localization/public/images/flags/wales.png +0 -0
  1463. data/vendor/extensions/localization/public/images/flags/wf.png +0 -0
  1464. data/vendor/extensions/localization/public/images/flags/ws.png +0 -0
  1465. data/vendor/extensions/localization/public/images/flags/ye.png +0 -0
  1466. data/vendor/extensions/localization/public/images/flags/yt.png +0 -0
  1467. data/vendor/extensions/localization/public/images/flags/za.png +0 -0
  1468. data/vendor/extensions/localization/public/images/flags/zm.png +0 -0
  1469. data/vendor/extensions/localization/public/images/flags/zw.png +0 -0
  1470. data/vendor/extensions/localization/spec/controllers/admin/localization_controller_spec.rb +10 -0
  1471. data/vendor/extensions/localization/spec/controllers/locale_controller_spec.rb +35 -0
  1472. data/vendor/extensions/localization/spec/helpers/locale_helper_spec.rb +5 -0
  1473. data/vendor/extensions/localization/spec/helpers/localization_helper_spec.rb +5 -0
  1474. data/vendor/extensions/localization/spec/spec.opts +6 -0
  1475. data/vendor/extensions/localization/spec/spec_helper.rb +37 -0
  1476. data/vendor/extensions/payment_gateway/README.markdown +8 -0
  1477. data/vendor/extensions/payment_gateway/README_PAYPAL.markdown +21 -0
  1478. data/vendor/extensions/payment_gateway/Rakefile +120 -0
  1479. data/vendor/extensions/payment_gateway/app/controllers/admin/gateway_configurations_controller.rb +26 -0
  1480. data/vendor/extensions/payment_gateway/app/controllers/admin/gateway_option_values_controller.rb +24 -0
  1481. data/vendor/extensions/payment_gateway/app/controllers/admin/gateways_controller.rb +9 -0
  1482. data/vendor/extensions/payment_gateway/app/helpers/admin/gateways_helper.rb +2 -0
  1483. data/vendor/extensions/payment_gateway/app/models/gateway.rb +3 -0
  1484. data/vendor/extensions/payment_gateway/app/models/gateway_configuration.rb +4 -0
  1485. data/vendor/extensions/payment_gateway/app/models/gateway_option.rb +4 -0
  1486. data/vendor/extensions/payment_gateway/app/models/gateway_option_value.rb +4 -0
  1487. data/vendor/extensions/payment_gateway/app/views/admin/gateway_configurations/_form.html.erb +21 -0
  1488. data/vendor/extensions/payment_gateway/app/views/admin/gateway_configurations/edit.html.erb +10 -0
  1489. data/vendor/extensions/payment_gateway/app/views/admin/gateway_option_values/_options.html.erb +28 -0
  1490. data/vendor/extensions/payment_gateway/config/routes.rb +4 -0
  1491. data/vendor/extensions/payment_gateway/db/migrate/20080620120002_create_gateway_configurations.rb +12 -0
  1492. data/vendor/extensions/payment_gateway/db/migrate/20080620120003_create_gateways.rb +15 -0
  1493. data/vendor/extensions/payment_gateway/db/migrate/20080620120004_create_gateway_options.rb +15 -0
  1494. data/vendor/extensions/payment_gateway/db/migrate/20080620120005_create_gateway_option_values.rb +14 -0
  1495. data/vendor/extensions/payment_gateway/db/migrate/20080620120006_create_bogus_gateway.rb +14 -0
  1496. data/vendor/extensions/payment_gateway/db/migrate/20080620120007_create_linkpoint_gateway.rb +18 -0
  1497. data/vendor/extensions/payment_gateway/db/migrate/20080703120008_create_paypal_gateway.rb +19 -0
  1498. data/vendor/extensions/payment_gateway/db/migrate/20081119210419_create_authorizenet_gateway.rb +18 -0
  1499. data/vendor/extensions/payment_gateway/db/migrate/20081120144549_remove_authorizenet_test.rb +10 -0
  1500. data/vendor/extensions/payment_gateway/db/migrate/20090218091936_create_protx_gateway.rb +18 -0
  1501. data/vendor/extensions/payment_gateway/db/migrate/20090517173727_add_currency_code_option_to_paypal_gateway.rb +13 -0
  1502. data/vendor/extensions/payment_gateway/lib/gateway_config.rb +7 -0
  1503. data/vendor/extensions/payment_gateway/lib/spree/bogus_gateway.rb +68 -0
  1504. data/vendor/extensions/payment_gateway/lib/spree/gateway/config.rb +22 -0
  1505. data/vendor/extensions/payment_gateway/lib/spree/payment_gateway.rb +114 -0
  1506. data/vendor/extensions/payment_gateway/lib/tasks/payment_gateway_extension_tasks.rake +18 -0
  1507. data/vendor/extensions/payment_gateway/payment_gateway_extension.rb +18 -0
  1508. data/vendor/extensions/payment_gateway/spec/helpers/admin/gateways_helper_spec.rb +6 -0
  1509. data/vendor/extensions/payment_gateway/spec/models/creditcard_spec.rb +24 -0
  1510. data/vendor/extensions/payment_gateway/spec/models/gateway_configuration_spec.rb +11 -0
  1511. data/vendor/extensions/payment_gateway/spec/models/gateway_option_spec.rb +11 -0
  1512. data/vendor/extensions/payment_gateway/spec/models/gateway_option_value_spec.rb +11 -0
  1513. data/vendor/extensions/payment_gateway/spec/models/gateway_spec.rb +11 -0
  1514. data/vendor/extensions/payment_gateway/spec/models/order_spec.rb +45 -0
  1515. data/vendor/extensions/payment_gateway/spec/spec.opts +6 -0
  1516. data/vendor/extensions/payment_gateway/spec/spec_helper.rb +37 -0
  1517. data/vendor/plugins/acts_as_adjacency_list/MIT-LICENSE +20 -0
  1518. data/vendor/plugins/acts_as_adjacency_list/README +13 -0
  1519. data/vendor/plugins/acts_as_adjacency_list/Rakefile +22 -0
  1520. data/vendor/plugins/acts_as_adjacency_list/init.rb +9 -0
  1521. data/vendor/plugins/acts_as_adjacency_list/install.rb +1 -0
  1522. data/vendor/plugins/acts_as_adjacency_list/lib/active_record/acts/adjacency_list.rb +230 -0
  1523. data/vendor/plugins/acts_as_adjacency_list/tasks/acts_as_adjacency_list_tasks.rake +4 -0
  1524. data/vendor/plugins/acts_as_adjacency_list/test/acts_as_adjacency_list_test.rb +293 -0
  1525. data/vendor/plugins/acts_as_adjacency_list/uninstall.rb +1 -0
  1526. data/vendor/plugins/acts_as_list/README +23 -0
  1527. data/vendor/plugins/acts_as_list/init.rb +3 -0
  1528. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +256 -0
  1529. data/vendor/plugins/acts_as_list/test/list_test.rb +332 -0
  1530. data/vendor/plugins/acts_as_tree/README +26 -0
  1531. data/vendor/plugins/acts_as_tree/Rakefile +22 -0
  1532. data/vendor/plugins/acts_as_tree/init.rb +1 -0
  1533. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +96 -0
  1534. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  1535. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +219 -0
  1536. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  1537. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  1538. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  1539. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  1540. data/vendor/plugins/attribute_fu/MIT-LICENSE +20 -0
  1541. data/vendor/plugins/attribute_fu/README.rdoc +121 -0
  1542. data/vendor/plugins/attribute_fu/Rakefile +23 -0
  1543. data/vendor/plugins/attribute_fu/attribute_fu.gemspec +13 -0
  1544. data/vendor/plugins/attribute_fu/init.rb +4 -0
  1545. data/vendor/plugins/attribute_fu/lib/attribute_fu.rb +2 -0
  1546. data/vendor/plugins/attribute_fu/lib/attribute_fu/associated_form_helper.rb +147 -0
  1547. data/vendor/plugins/attribute_fu/lib/attribute_fu/associations.rb +136 -0
  1548. data/vendor/plugins/attribute_fu/tasks/attribute_fu_tasks.rake +4 -0
  1549. data/vendor/plugins/attribute_fu/test/associated_form_helper_test.rb +376 -0
  1550. data/vendor/plugins/attribute_fu/test/comment_test.rb +6 -0
  1551. data/vendor/plugins/attribute_fu/test/db/database.yml +18 -0
  1552. data/vendor/plugins/attribute_fu/test/db/schema.rb +16 -0
  1553. data/vendor/plugins/attribute_fu/test/models/comment.rb +8 -0
  1554. data/vendor/plugins/attribute_fu/test/models/photo.rb +3 -0
  1555. data/vendor/plugins/attribute_fu/test/photo_test.rb +160 -0
  1556. data/vendor/plugins/attribute_fu/test/test_helper.rb +24 -0
  1557. data/vendor/plugins/attribute_fu/uninstall.rb +1 -0
  1558. data/vendor/plugins/auto_complete/README +23 -0
  1559. data/vendor/plugins/auto_complete/Rakefile +22 -0
  1560. data/vendor/plugins/auto_complete/init.rb +2 -0
  1561. data/vendor/plugins/auto_complete/lib/auto_complete.rb +47 -0
  1562. data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +142 -0
  1563. data/vendor/plugins/auto_complete/test/auto_complete_test.rb +67 -0
  1564. data/vendor/plugins/delegate_belongs_to/README +1 -0
  1565. data/vendor/plugins/delegate_belongs_to/Rakefile +21 -0
  1566. data/vendor/plugins/delegate_belongs_to/init.rb +2 -0
  1567. data/vendor/plugins/delegate_belongs_to/lib/delegate_belongs_to.rb +95 -0
  1568. data/vendor/plugins/delegate_belongs_to/spec/app_root/app/controllers/application.rb +2 -0
  1569. data/vendor/plugins/delegate_belongs_to/spec/app_root/app/models/contact.rb +5 -0
  1570. data/vendor/plugins/delegate_belongs_to/spec/app_root/app/models/user_default.rb +2 -0
  1571. data/vendor/plugins/delegate_belongs_to/spec/app_root/app/models/user_mixed.rb +2 -0
  1572. data/vendor/plugins/delegate_belongs_to/spec/app_root/app/models/user_no_default.rb +2 -0
  1573. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/boot.rb +114 -0
  1574. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/database.yml +21 -0
  1575. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/environment.rb +13 -0
  1576. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/environments/in_memory.rb +0 -0
  1577. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/environments/mysql.rb +0 -0
  1578. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/environments/postgresql.rb +0 -0
  1579. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/environments/sqlite.rb +0 -0
  1580. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/environments/sqlite3.rb +0 -0
  1581. data/vendor/plugins/delegate_belongs_to/spec/app_root/config/routes.rb +4 -0
  1582. data/vendor/plugins/delegate_belongs_to/spec/app_root/db/migrate/01_create_users.rb +22 -0
  1583. data/vendor/plugins/delegate_belongs_to/spec/app_root/db/migrate/02_create_contacts.rb +12 -0
  1584. data/vendor/plugins/delegate_belongs_to/spec/app_root/lib/console_with_fixtures.rb +4 -0
  1585. data/vendor/plugins/delegate_belongs_to/spec/app_root/script/console +7 -0
  1586. data/vendor/plugins/delegate_belongs_to/spec/model/with_defaults_spec.rb +30 -0
  1587. data/vendor/plugins/delegate_belongs_to/spec/model/with_mixed_spec.rb +29 -0
  1588. data/vendor/plugins/delegate_belongs_to/spec/model/with_no_defaults_spec.rb +30 -0
  1589. data/vendor/plugins/delegate_belongs_to/spec/spec_helper.rb +68 -0
  1590. data/vendor/plugins/enumerable_constants/README +4 -0
  1591. data/vendor/plugins/enumerable_constants/Rakefile +22 -0
  1592. data/vendor/plugins/enumerable_constants/init.rb +1 -0
  1593. data/vendor/plugins/enumerable_constants/install.rb +0 -0
  1594. data/vendor/plugins/enumerable_constants/lib/enumerable_constants.rb +208 -0
  1595. data/vendor/plugins/enumerable_constants/tasks/enumerable_constants_tasks.rake +4 -0
  1596. data/vendor/plugins/enumerable_constants/test/enumerable_constants_test.rb +8 -0
  1597. data/vendor/plugins/find_by_param/MIT-LICENSE +20 -0
  1598. data/vendor/plugins/find_by_param/README.markdown +54 -0
  1599. data/vendor/plugins/find_by_param/Rakefile +22 -0
  1600. data/vendor/plugins/find_by_param/init.rb +17 -0
  1601. data/vendor/plugins/find_by_param/install.rb +1 -0
  1602. data/vendor/plugins/find_by_param/lib/find_by_param.rb +79 -0
  1603. data/vendor/plugins/find_by_param/tasks/find_by_param_tasks.rake +4 -0
  1604. data/vendor/plugins/find_by_param/test/find_by_param_test.rb +88 -0
  1605. data/vendor/plugins/find_by_param/test/schema.rb +16 -0
  1606. data/vendor/plugins/find_by_param/test/test_helper.rb +16 -0
  1607. data/vendor/plugins/find_by_param/uninstall.rb +1 -0
  1608. data/vendor/plugins/has_calculator/README +7 -0
  1609. data/vendor/plugins/has_calculator/init.rb +2 -0
  1610. data/vendor/plugins/has_calculator/lib/has_calculator.rb +52 -0
  1611. data/vendor/plugins/in_place_editing/README +14 -0
  1612. data/vendor/plugins/in_place_editing/Rakefile +22 -0
  1613. data/vendor/plugins/in_place_editing/init.rb +2 -0
  1614. data/vendor/plugins/in_place_editing/lib/in_place_editing.rb +25 -0
  1615. data/vendor/plugins/in_place_editing/lib/in_place_macros_helper.rb +77 -0
  1616. data/vendor/plugins/in_place_editing/test/in_place_editing_test.rb +89 -0
  1617. data/vendor/plugins/mail_queue/README +40 -0
  1618. data/vendor/plugins/mail_queue/Rakefile +22 -0
  1619. data/vendor/plugins/mail_queue/init.rb +1 -0
  1620. data/vendor/plugins/mail_queue/install.rb +1 -0
  1621. data/vendor/plugins/mail_queue/lib/mail_queue.rb +48 -0
  1622. data/vendor/plugins/mail_queue/lib/queued_mail.rb +5 -0
  1623. data/vendor/plugins/mail_queue/lib/test_mail_queue_mailer.rb +19 -0
  1624. data/vendor/plugins/mail_queue/lib/test_mail_queue_mailer/notify.rhtml +1 -0
  1625. data/vendor/plugins/mail_queue/tasks/mailer_queue_tasks.rake +4 -0
  1626. data/vendor/plugins/mail_queue/test/mailer_queue_test.rb +29 -0
  1627. data/vendor/plugins/paperclip/LICENSE +26 -0
  1628. data/vendor/plugins/paperclip/README.rdoc +174 -0
  1629. data/vendor/plugins/paperclip/Rakefile +99 -0
  1630. data/vendor/plugins/paperclip/generators/paperclip/USAGE +5 -0
  1631. data/vendor/plugins/paperclip/generators/paperclip/paperclip_generator.rb +27 -0
  1632. data/vendor/plugins/paperclip/generators/paperclip/templates/paperclip_migration.rb.erb +19 -0
  1633. data/vendor/plugins/paperclip/init.rb +1 -0
  1634. data/vendor/plugins/paperclip/lib/paperclip.rb +350 -0
  1635. data/vendor/plugins/paperclip/lib/paperclip/attachment.rb +413 -0
  1636. data/vendor/plugins/paperclip/lib/paperclip/callback_compatability.rb +33 -0
  1637. data/vendor/plugins/paperclip/lib/paperclip/geometry.rb +115 -0
  1638. data/vendor/plugins/paperclip/lib/paperclip/interpolations.rb +105 -0
  1639. data/vendor/plugins/paperclip/lib/paperclip/iostream.rb +58 -0
  1640. data/vendor/plugins/paperclip/lib/paperclip/matchers.rb +4 -0
  1641. data/vendor/plugins/paperclip/lib/paperclip/matchers/have_attached_file_matcher.rb +49 -0
  1642. data/vendor/plugins/paperclip/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb +66 -0
  1643. data/vendor/plugins/paperclip/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +48 -0
  1644. data/vendor/plugins/paperclip/lib/paperclip/matchers/validate_attachment_size_matcher.rb +83 -0
  1645. data/vendor/plugins/paperclip/lib/paperclip/processor.rb +49 -0
  1646. data/vendor/plugins/paperclip/lib/paperclip/storage.rb +236 -0
  1647. data/vendor/plugins/paperclip/lib/paperclip/thumbnail.rb +70 -0
  1648. data/vendor/plugins/paperclip/lib/paperclip/upfile.rb +48 -0
  1649. data/vendor/plugins/paperclip/paperclip.gemspec +37 -0
  1650. data/vendor/plugins/paperclip/shoulda_macros/paperclip.rb +68 -0
  1651. data/vendor/plugins/paperclip/tasks/paperclip_tasks.rake +79 -0
  1652. data/vendor/plugins/paperclip/test/attachment_test.rb +768 -0
  1653. data/vendor/plugins/paperclip/test/database.yml +4 -0
  1654. data/vendor/plugins/paperclip/test/fixtures/12k.png +0 -0
  1655. data/vendor/plugins/paperclip/test/fixtures/50x50.png +0 -0
  1656. data/vendor/plugins/paperclip/test/fixtures/5k.png +0 -0
  1657. data/vendor/plugins/paperclip/test/fixtures/bad.png +1 -0
  1658. data/vendor/plugins/paperclip/test/fixtures/s3.yml +4 -0
  1659. data/vendor/plugins/paperclip/test/fixtures/text.txt +0 -0
  1660. data/vendor/plugins/paperclip/test/fixtures/twopage.pdf +0 -0
  1661. data/vendor/plugins/paperclip/test/geometry_test.rb +177 -0
  1662. data/vendor/plugins/paperclip/test/helper.rb +100 -0
  1663. data/vendor/plugins/paperclip/test/integration_test.rb +481 -0
  1664. data/vendor/plugins/paperclip/test/interpolations_test.rb +120 -0
  1665. data/vendor/plugins/paperclip/test/iostream_test.rb +71 -0
  1666. data/vendor/plugins/paperclip/test/matchers/have_attached_file_matcher_test.rb +21 -0
  1667. data/vendor/plugins/paperclip/test/matchers/validate_attachment_content_type_matcher_test.rb +30 -0
  1668. data/vendor/plugins/paperclip/test/matchers/validate_attachment_presence_matcher_test.rb +21 -0
  1669. data/vendor/plugins/paperclip/test/matchers/validate_attachment_size_matcher_test.rb +50 -0
  1670. data/vendor/plugins/paperclip/test/paperclip_test.rb +291 -0
  1671. data/vendor/plugins/paperclip/test/processor_test.rb +10 -0
  1672. data/vendor/plugins/paperclip/test/storage_test.rb +282 -0
  1673. data/vendor/plugins/paperclip/test/thumbnail_test.rb +177 -0
  1674. data/vendor/plugins/resource_controller/LICENSE +22 -0
  1675. data/vendor/plugins/resource_controller/README.rdoc +314 -0
  1676. data/vendor/plugins/resource_controller/Rakefile +22 -0
  1677. data/vendor/plugins/resource_controller/TODO +0 -0
  1678. data/vendor/plugins/resource_controller/generators/scaffold_resource/USAGE +29 -0
  1679. data/vendor/plugins/resource_controller/generators/scaffold_resource/scaffold_resource_generator.rb +179 -0
  1680. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/controller.rb +2 -0
  1681. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/fixtures.yml +10 -0
  1682. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/functional_test.rb +57 -0
  1683. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/helper.rb +2 -0
  1684. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/migration.rb +15 -0
  1685. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/model.rb +2 -0
  1686. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/old_migration.rb +13 -0
  1687. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/rspec/functional_spec.rb +255 -0
  1688. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/rspec/helper_spec.rb +11 -0
  1689. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/rspec/routing_spec.rb +61 -0
  1690. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/rspec/unit_spec.rb +11 -0
  1691. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/rspec/views/edit_spec.rb +28 -0
  1692. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/rspec/views/index_spec.rb +26 -0
  1693. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/rspec/views/new_spec.rb +30 -0
  1694. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/rspec/views/show_spec.rb +25 -0
  1695. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/shoulda_functional_test.rb +19 -0
  1696. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/unit_test.rb +7 -0
  1697. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/view__form.erb +6 -0
  1698. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/view__form.haml +5 -0
  1699. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/view_edit.erb +16 -0
  1700. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/view_edit.haml +11 -0
  1701. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/view_index.erb +22 -0
  1702. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/view_index.haml +19 -0
  1703. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/view_new.erb +12 -0
  1704. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/view_new.haml +9 -0
  1705. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/view_show.erb +9 -0
  1706. data/vendor/plugins/resource_controller/generators/scaffold_resource/templates/view_show.haml +9 -0
  1707. data/vendor/plugins/resource_controller/init.rb +1 -0
  1708. data/vendor/plugins/resource_controller/install.rb +1 -0
  1709. data/vendor/plugins/resource_controller/lib/resource_controller.rb +20 -0
  1710. data/vendor/plugins/resource_controller/lib/resource_controller/accessors.rb +77 -0
  1711. data/vendor/plugins/resource_controller/lib/resource_controller/action_options.rb +40 -0
  1712. data/vendor/plugins/resource_controller/lib/resource_controller/actions.rb +75 -0
  1713. data/vendor/plugins/resource_controller/lib/resource_controller/base.rb +15 -0
  1714. data/vendor/plugins/resource_controller/lib/resource_controller/class_methods.rb +24 -0
  1715. data/vendor/plugins/resource_controller/lib/resource_controller/controller.rb +69 -0
  1716. data/vendor/plugins/resource_controller/lib/resource_controller/failable_action_options.rb +25 -0
  1717. data/vendor/plugins/resource_controller/lib/resource_controller/helpers.rb +28 -0
  1718. data/vendor/plugins/resource_controller/lib/resource_controller/helpers/current_objects.rb +81 -0
  1719. data/vendor/plugins/resource_controller/lib/resource_controller/helpers/internal.rb +80 -0
  1720. data/vendor/plugins/resource_controller/lib/resource_controller/helpers/nested.rb +74 -0
  1721. data/vendor/plugins/resource_controller/lib/resource_controller/helpers/singleton_customizations.rb +64 -0
  1722. data/vendor/plugins/resource_controller/lib/resource_controller/helpers/urls.rb +133 -0
  1723. data/vendor/plugins/resource_controller/lib/resource_controller/response_collector.rb +27 -0
  1724. data/vendor/plugins/resource_controller/lib/resource_controller/singleton.rb +15 -0
  1725. data/vendor/plugins/resource_controller/lib/urligence.rb +56 -0
  1726. data/vendor/plugins/resource_controller/rails/init.rb +6 -0
  1727. data/vendor/plugins/resource_controller/resource_controller.gemspec +344 -0
  1728. data/vendor/plugins/resource_controller/uninstall.rb +1 -0
  1729. data/vendor/plugins/ssl_requirement/README +43 -0
  1730. data/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb +76 -0
  1731. data/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb +132 -0
  1732. data/vendor/plugins/state_machine/CHANGELOG.rdoc +97 -0
  1733. data/vendor/plugins/state_machine/LICENSE +20 -0
  1734. data/vendor/plugins/state_machine/README.rdoc +182 -0
  1735. data/vendor/plugins/state_machine/Rakefile +88 -0
  1736. data/vendor/plugins/state_machine/init.rb +1 -0
  1737. data/vendor/plugins/state_machine/lib/state_machine.rb +129 -0
  1738. data/vendor/plugins/state_machine/lib/state_machine/event.rb +116 -0
  1739. data/vendor/plugins/state_machine/lib/state_machine/machine.rb +412 -0
  1740. data/vendor/plugins/state_machine/lib/state_machine/transition.rb +227 -0
  1741. data/vendor/plugins/state_machine/test/app_root/app/models/auto_shop.rb +34 -0
  1742. data/vendor/plugins/state_machine/test/app_root/app/models/car.rb +19 -0
  1743. data/vendor/plugins/state_machine/test/app_root/app/models/highway.rb +3 -0
  1744. data/vendor/plugins/state_machine/test/app_root/app/models/motorcycle.rb +3 -0
  1745. data/vendor/plugins/state_machine/test/app_root/app/models/switch.rb +23 -0
  1746. data/vendor/plugins/state_machine/test/app_root/app/models/switch_observer.rb +20 -0
  1747. data/vendor/plugins/state_machine/test/app_root/app/models/toggle_switch.rb +2 -0
  1748. data/vendor/plugins/state_machine/test/app_root/app/models/vehicle.rb +78 -0
  1749. data/vendor/plugins/state_machine/test/app_root/config/environment.rb +7 -0
  1750. data/vendor/plugins/state_machine/test/app_root/db/migrate/001_create_switches.rb +12 -0
  1751. data/vendor/plugins/state_machine/test/app_root/db/migrate/002_create_auto_shops.rb +13 -0
  1752. data/vendor/plugins/state_machine/test/app_root/db/migrate/003_create_highways.rb +11 -0
  1753. data/vendor/plugins/state_machine/test/app_root/db/migrate/004_create_vehicles.rb +16 -0
  1754. data/vendor/plugins/state_machine/test/factory.rb +73 -0
  1755. data/vendor/plugins/state_machine/test/functional/state_machine_test.rb +499 -0
  1756. data/vendor/plugins/state_machine/test/test_helper.rb +13 -0
  1757. data/vendor/plugins/state_machine/test/unit/event_test.rb +235 -0
  1758. data/vendor/plugins/state_machine/test/unit/invalid_transition_test.rb +7 -0
  1759. data/vendor/plugins/state_machine/test/unit/machine_test.rb +306 -0
  1760. data/vendor/plugins/state_machine/test/unit/state_machine_test.rb +130 -0
  1761. data/vendor/plugins/state_machine/test/unit/transition_test.rb +633 -0
  1762. metadata +2071 -0
@@ -0,0 +1,88 @@
1
+ require 'rake/testtask'
2
+ require 'rake/rdoctask'
3
+ require 'rake/gempackagetask'
4
+ require 'rake/contrib/sshpublisher'
5
+
6
+ spec = Gem::Specification.new do |s|
7
+ s.name = 'state_machine'
8
+ s.version = '0.3.0'
9
+ s.platform = Gem::Platform::RUBY
10
+ s.summary = 'Adds support for creating state machines for attributes within a model'
11
+
12
+ s.files = FileList['{lib,test}/**/*'] + %w(CHANGELOG.rdoc init.rb LICENSE Rakefile README.rdoc) - FileList['test/app_root/{log,log/*,script,script/*}']
13
+ s.require_path = 'lib'
14
+ s.has_rdoc = true
15
+ s.test_files = Dir['test/**/*_test.rb']
16
+
17
+ s.author = 'Aaron Pfeifer'
18
+ s.email = 'aaron@pluginaweek.org'
19
+ s.homepage = 'http://www.pluginaweek.org'
20
+ s.rubyforge_project = 'pluginaweek'
21
+ end
22
+
23
+ desc 'Default: run all tests.'
24
+ task :default => :test
25
+
26
+ desc "Test the #{spec.name} plugin."
27
+ Rake::TestTask.new(:test) do |t|
28
+ t.libs << 'lib'
29
+ t.test_files = spec.test_files
30
+ t.verbose = true
31
+ end
32
+
33
+ begin
34
+ require 'rcov/rcovtask'
35
+ namespace :test do
36
+ desc "Test the #{spec.name} plugin with Rcov."
37
+ Rcov::RcovTask.new(:rcov) do |t|
38
+ t.libs << 'lib'
39
+ t.test_files = spec.test_files
40
+ t.rcov_opts << '--exclude="^(?!lib/)"'
41
+ t.verbose = true
42
+ end
43
+ end
44
+ rescue LoadError
45
+ end
46
+
47
+ desc "Generate documentation for the #{spec.name} plugin."
48
+ Rake::RDocTask.new(:rdoc) do |rdoc|
49
+ rdoc.rdoc_dir = 'rdoc'
50
+ rdoc.title = spec.name
51
+ rdoc.template = '../rdoc_template.rb'
52
+ rdoc.options << '--line-numbers' << '--inline-source'
53
+ rdoc.rdoc_files.include('README.rdoc', 'CHANGELOG.rdoc', 'LICENSE', 'lib/**/*.rb')
54
+ end
55
+
56
+ Rake::GemPackageTask.new(spec) do |p|
57
+ p.gem_spec = spec
58
+ p.need_tar = true
59
+ p.need_zip = true
60
+ end
61
+
62
+ desc 'Publish the beta gem.'
63
+ task :pgem => [:package] do
64
+ Rake::SshFilePublisher.new('aaron@pluginaweek.org', '/home/aaron/gems.pluginaweek.org/public/gems', 'pkg', "#{spec.name}-#{spec.version}.gem").upload
65
+ end
66
+
67
+ desc 'Publish the API documentation.'
68
+ task :pdoc => [:rdoc] do
69
+ Rake::SshDirPublisher.new('aaron@pluginaweek.org', "/home/aaron/api.pluginaweek.org/public/#{spec.name}", 'rdoc').upload
70
+ end
71
+
72
+ desc 'Publish the API docs and gem'
73
+ task :publish => [:pgem, :pdoc, :release]
74
+
75
+ desc 'Publish the release files to RubyForge.'
76
+ task :release => [:gem, :package] do
77
+ require 'rubyforge'
78
+
79
+ ruby_forge = RubyForge.new.configure
80
+ ruby_forge.login
81
+
82
+ %w(gem tgz zip).each do |ext|
83
+ file = "pkg/#{spec.name}-#{spec.version}.#{ext}"
84
+ puts "Releasing #{File.basename(file)}..."
85
+
86
+ ruby_forge.add_release(spec.rubyforge_project, spec.name, spec.version, file)
87
+ end
88
+ end
@@ -0,0 +1 @@
1
+ require 'state_machine'
@@ -0,0 +1,129 @@
1
+ require 'state_machine/machine'
2
+
3
+ module PluginAWeek #:nodoc:
4
+ # A state machine is a model of behavior composed of states, events, and
5
+ # transitions. This helper adds support for defining this type of
6
+ # functionality within ActiveRecord models.
7
+ module StateMachine
8
+ def self.included(base) #:nodoc:
9
+ base.class_eval do
10
+ extend PluginAWeek::StateMachine::MacroMethods
11
+ end
12
+ end
13
+
14
+ module MacroMethods
15
+ # Creates a state machine for the given attribute. The default attribute
16
+ # is "state".
17
+ #
18
+ # Configuration options:
19
+ # * +initial+ - The initial value of the attribute. This can either be the actual value or a Proc for dynamic initial states.
20
+ #
21
+ # This also requires a block which will be used to actually configure the
22
+ # events and transitions for the state machine. *Note* that this block
23
+ # will be executed within the context of the state machine. As a result,
24
+ # you will not be able to access any class methods on the model unless you
25
+ # refer to them directly (i.e. specifying the class name).
26
+ #
27
+ # For examples on the types of configured state machines and blocks, see
28
+ # the section below.
29
+ #
30
+ # == Examples
31
+ #
32
+ # With the default attribute and no initial state:
33
+ #
34
+ # class Switch < ActiveRecord::Base
35
+ # state_machine do
36
+ # event :park do
37
+ # ...
38
+ # end
39
+ # end
40
+ # end
41
+ #
42
+ # The above example will define a state machine for the attribute "state"
43
+ # on the model. Every switch will start with no initial state.
44
+ #
45
+ # With a custom attribute:
46
+ #
47
+ # class Switch < ActiveRecord::Base
48
+ # state_machine :status do
49
+ # ...
50
+ # end
51
+ # end
52
+ #
53
+ # With a static initial state:
54
+ #
55
+ # class Switch < ActiveRecord::Base
56
+ # state_machine :status, :initial => 'off' do
57
+ # ...
58
+ # end
59
+ # end
60
+ #
61
+ # With a dynamic initial state:
62
+ #
63
+ # class Switch < ActiveRecord::Base
64
+ # state_machine :status, :initial => lambda {|switch| (8..22).include?(Time.now.hour) ? 'on' : 'off'} do
65
+ # ...
66
+ # end
67
+ # end
68
+ #
69
+ # == Events and Transitions
70
+ #
71
+ # For more information about how to configure an event and its associated
72
+ # transitions, see PluginAWeek::StateMachine::Machine#event
73
+ #
74
+ # == Defining callbacks
75
+ #
76
+ # Within the +state_machine+ block, you can also define callbacks for
77
+ # particular states. For more information about defining these callbacks,
78
+ # see PluginAWeek::StateMachine::Machine#before_transition and
79
+ # PluginAWeek::StateMachine::Machine#after_transition.
80
+ def state_machine(*args, &block)
81
+ unless included_modules.include?(PluginAWeek::StateMachine::InstanceMethods)
82
+ write_inheritable_attribute :state_machines, {}
83
+ class_inheritable_reader :state_machines
84
+
85
+ include PluginAWeek::StateMachine::InstanceMethods
86
+ end
87
+
88
+ options = args.extract_options!
89
+ attribute = args.any? ? args.first.to_s : 'state'
90
+
91
+ # Creates the state machine for this class. If a superclass has already
92
+ # defined the machine, then a copy of it will be used with its context
93
+ # changed to this class. If no machine has been defined before for the
94
+ # attribute, a new one will be created.
95
+ original = state_machines[attribute]
96
+ machine = state_machines[attribute] = original ? original.within_context(self, options) : PluginAWeek::StateMachine::Machine.new(self, attribute, options)
97
+ machine.instance_eval(&block) if block
98
+
99
+ machine
100
+ end
101
+ end
102
+
103
+ module InstanceMethods
104
+ def self.included(base) #:nodoc:
105
+ base.class_eval do
106
+ alias_method_chain :initialize, :state_machine
107
+ end
108
+ end
109
+
110
+ # Defines the initial values for state machine attributes
111
+ def initialize_with_state_machine(attributes = nil)
112
+ initialize_without_state_machine(attributes)
113
+
114
+ # Set the initial value of each state machine as long as the value wasn't
115
+ # included in the initial attributes
116
+ attributes = (attributes || {}).stringify_keys
117
+ self.class.state_machines.each do |attribute, machine|
118
+ send("#{attribute}=", machine.initial_state(self)) unless attributes.include?(attribute)
119
+ end
120
+
121
+ yield self if block_given?
122
+ end
123
+ end
124
+ end
125
+ end
126
+
127
+ ActiveRecord::Base.class_eval do
128
+ include PluginAWeek::StateMachine
129
+ end
@@ -0,0 +1,116 @@
1
+ require 'state_machine/transition'
2
+
3
+ module PluginAWeek #:nodoc:
4
+ module StateMachine
5
+ # An event defines an action that transitions an attribute from one state to
6
+ # another
7
+ class Event
8
+ # The state machine for which this event is defined
9
+ attr_accessor :machine
10
+
11
+ # The name of the action that fires the event
12
+ attr_reader :name
13
+
14
+ # The list of transitions that can be made for this event
15
+ attr_reader :transitions
16
+
17
+ delegate :owner_class,
18
+ :to => :machine
19
+
20
+ # Creates a new event within the context of the given machine
21
+ def initialize(machine, name)
22
+ @machine = machine
23
+ @name = name
24
+ @transitions = []
25
+
26
+ add_actions
27
+ end
28
+
29
+ # Creates a copy of this event in addition to the list of associated
30
+ # transitions to prevent conflicts across different events.
31
+ def initialize_copy(orig) #:nodoc:
32
+ super
33
+ @transitions = @transitions.dup
34
+ end
35
+
36
+ # Creates a new transition to the specified state.
37
+ #
38
+ # Configuration options:
39
+ # * +to+ - The state that being transitioned to
40
+ # * +from+ - A state or array of states that can be transitioned from. If not specified, then the transition can occur for *any* from state
41
+ # * +except_from+ - A state or array of states that *cannot* be transitioned from.
42
+ # * +if+ - Specifies a method, proc or string to call to determine if the transition should occur (e.g. :if => :moving?, or :if => Proc.new {|car| car.speed > 60}). The method, proc or string should return or evaluate to a true or false value.
43
+ # * +unless+ - Specifies a method, proc or string to call to determine if the transition should not occur (e.g. :unless => :stopped?, or :unless => Proc.new {|car| car.speed <= 60}). The method, proc or string should return or evaluate to a true or false value.
44
+ #
45
+ # == Examples
46
+ #
47
+ # transition :to => 'parked'
48
+ # transition :to => 'parked', :from => 'first_gear'
49
+ # transition :to => 'parked', :from => %w(first_gear reverse)
50
+ # transition :to => 'parked', :from => 'first_gear', :if => :moving?
51
+ # transition :to => 'parked', :from => 'first_gear', :unless => :stopped?
52
+ # transition :to => 'parked', :except_from => 'parked'
53
+ def transition(options)
54
+ transitions << transition = Transition.new(self, options)
55
+ transition
56
+ end
57
+
58
+ # Determines whether any transitions can be performed for this event based
59
+ # on the current state of the given record.
60
+ #
61
+ # If the event can't be fired, then this will return false, otherwise true.
62
+ def can_fire?(record)
63
+ transitions.any? {|transition| transition.can_perform?(record)}
64
+ end
65
+
66
+ # Attempts to perform one of the event's transitions for the given record.
67
+ # Any additional arguments will be passed to the event's callbacks.
68
+ def fire(record)
69
+ run(record, false) || false
70
+ end
71
+
72
+ # Attempts to perform one of the event's transitions for the given record.
73
+ # If the transition cannot be made, then a PluginAWeek::StateMachine::InvalidTransition
74
+ # error will be raised.
75
+ def fire!(record)
76
+ run(record, true) || raise(PluginAWeek::StateMachine::InvalidTransition, "Cannot transition via :#{name} from \"#{record.send(machine.attribute)}\"")
77
+ end
78
+
79
+ private
80
+ # Add the various instance methods that can transition the record using
81
+ # the current event
82
+ def add_actions
83
+ attribute = machine.attribute
84
+ name = self.name
85
+
86
+ owner_class.class_eval do
87
+ define_method(name) {self.class.state_machines[attribute].events[name].fire(self)}
88
+ define_method("#{name}!") {self.class.state_machines[attribute].events[name].fire!(self)}
89
+ define_method("can_#{name}?") {self.class.state_machines[attribute].events[name].can_fire?(self)}
90
+ end
91
+ end
92
+
93
+ # Attempts to find a transition that can be performed for this event.
94
+ #
95
+ # +bang+ indicates whether +perform+ or <tt>perform!</tt> will be
96
+ # invoked on transitions.
97
+ def run(record, bang)
98
+ result = false
99
+
100
+ record.class.transaction do
101
+ transitions.each do |transition|
102
+ if transition.can_perform?(record)
103
+ result = bang ? transition.perform!(record) : transition.perform(record)
104
+ break
105
+ end
106
+ end
107
+
108
+ # Rollback any changes if the transition failed
109
+ raise ActiveRecord::Rollback unless result
110
+ end
111
+
112
+ result
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,412 @@
1
+ require 'state_machine/event'
2
+
3
+ module PluginAWeek #:nodoc:
4
+ module StateMachine
5
+ # Represents a state machine for a particular attribute. State machines
6
+ # consist of events (a.k.a. actions) and a set of transitions that define
7
+ # how the state changes after a particular event is fired.
8
+ #
9
+ # A state machine may not necessarily know all of the possible states for
10
+ # an object since they can be any arbitrary value. As a result, anything
11
+ # that relies on a list of all possible states should keep in mind that if
12
+ # a state has not been referenced *anywhere* in the state machine definition,
13
+ # then it will *not* be a known state.
14
+ #
15
+ # == Callbacks
16
+ #
17
+ # Callbacks are supported for hooking before and after every possible
18
+ # transition in the machine. Each callback is invoked in the order in which
19
+ # it was defined. See PluginAWeek::StateMachine::Machine#before_transition
20
+ # and PluginAWeek::StateMachine::Machine#after_transition for documentation
21
+ # on how to define new callbacks.
22
+ #
23
+ # === Cancelling callbacks
24
+ #
25
+ # If a +before+ callback returns +false+, all the later callbacks and
26
+ # associated transition are cancelled. If an +after+ callback returns false,
27
+ # the later callbacks are cancelled, but the transition is still successful.
28
+ # This is the same behavior as exposed by ActiveRecord's callback support.
29
+ #
30
+ # *Note* that if a +before+ callback fails and the bang version of an event
31
+ # was invoked, an exception will be raised instead of returning false.
32
+ #
33
+ # == Observers
34
+ #
35
+ # ActiveRecord observers can also hook into state machines in addition to
36
+ # the conventional before_save, after_save, etc. behaviors. The following
37
+ # types of behaviors can be observed:
38
+ # * events (e.g. before_park/after_park, before_ignite/after_ignite)
39
+ # * transitions (before_transition/after_transition)
40
+ #
41
+ # Each method takes a set of parameters that provides additional information
42
+ # about the transition that caused the observer to be notified. Below are
43
+ # examples of defining observers for the following state machine:
44
+ #
45
+ # class Vehicle < ActiveRecord::Base
46
+ # state_machine do
47
+ # event :park do
48
+ # transition :to => 'parked', :from => 'idling'
49
+ # end
50
+ # ...
51
+ # end
52
+ # ...
53
+ # end
54
+ #
55
+ # Event behaviors:
56
+ #
57
+ # class VehicleObserver < ActiveRecord::Observer
58
+ # def before_park(vehicle, from_state, to_state)
59
+ # logger.info "Vehicle #{vehicle.id} instructed to park... state is: #{from_state}, state will be: #{to_state}"
60
+ # end
61
+ #
62
+ # def after_park(vehicle, from_state, to_state)
63
+ # logger.info "Vehicle #{vehicle.id} instructed to park... state was: #{from_state}, state is: #{to_state}"
64
+ # end
65
+ # end
66
+ #
67
+ # Transition behaviors:
68
+ #
69
+ # class VehicleObserver < ActiveRecord::Observer
70
+ # def before_transition(vehicle, attribute, event, from_state, to_state)
71
+ # logger.info "Vehicle #{vehicle.id} instructed to #{event}... #{attribute} is: #{from_state}, #{attribute} will be: #{to_state}"
72
+ # end
73
+ #
74
+ # def after_transition(vehicle, attribute, event, from_state, to_state)
75
+ # logger.info "Vehicle #{vehicle.id} instructed to #{event}... #{attribute} was: #{from_state}, #{attribute} is: #{to_state}"
76
+ # end
77
+ # end
78
+ #
79
+ # One common callback is to record transitions for all models in the system
80
+ # for audit/debugging purposes. Below is an example of an observer that can
81
+ # easily automate this process for all models:
82
+ #
83
+ # class StateMachineObserver < ActiveRecord::Observer
84
+ # observe Vehicle, Switch, AutoShop
85
+ #
86
+ # def before_transition(record, attribute, event, from_state, to_state)
87
+ # transition = StateTransition.build(:record => record, :attribute => attribute, :event => event, :from_state => from_state, :to_state => to_state)
88
+ # transition.save # Will cancel rollback/cancel transition if this fails
89
+ # end
90
+ # end
91
+ class Machine
92
+ # The class that the machine is defined for
93
+ attr_reader :owner_class
94
+
95
+ # The attribute for which the state machine is being defined
96
+ attr_reader :attribute
97
+
98
+ # The initial state that the machine will be in when a record is created
99
+ attr_reader :initial_state
100
+
101
+ # A list of the states defined in the transitions of all of the events
102
+ attr_reader :states
103
+
104
+ # The events that trigger transitions
105
+ attr_reader :events
106
+
107
+ # Creates a new state machine for the given attribute
108
+ #
109
+ # Configuration options:
110
+ # * +initial+ - The initial value to set the attribute to. This can be an actual value or a proc, which will be evaluated at runtime.
111
+ #
112
+ # == Scopes
113
+ #
114
+ # This will automatically create a named scope called with_#{attribute}
115
+ # that will find all records that have the attribute set to a given value.
116
+ # For example,
117
+ #
118
+ # Switch.with_state('on') # => Finds all switches where the state is on
119
+ # Switch.with_states('on', 'off') # => Finds all switches where the state is either on or off
120
+ #
121
+ # *Note* that if class methods already exist with those names (i.e. "with_state"
122
+ # or "with_states"), then a scope will not be defined for that name.
123
+ def initialize(owner_class, attribute = 'state', options = {})
124
+ set_context(owner_class, options)
125
+
126
+ @attribute = attribute.to_s
127
+ @states = []
128
+ @events = {}
129
+
130
+ add_transition_callbacks
131
+ add_named_scopes
132
+ end
133
+
134
+ # Creates a copy of this machine in addition to copies of each associated
135
+ # event, so that the list of transitions for each event don't conflict
136
+ # with different machines
137
+ def initialize_copy(orig) #:nodoc:
138
+ super
139
+
140
+ @states = @states.dup
141
+ @events = @events.inject({}) do |events, (name, event)|
142
+ event = event.dup
143
+ event.machine = self
144
+ events[name] = event
145
+ events
146
+ end
147
+ end
148
+
149
+ # Creates a copy of this machine within the context of the given class.
150
+ # This should be used for inheritance support of state machines.
151
+ def within_context(owner_class, options = {}) #:nodoc:
152
+ machine = dup
153
+ machine.set_context(owner_class, options)
154
+ machine
155
+ end
156
+
157
+ # Changes the context of this machine to the given class so that new
158
+ # events and transitions are created in the proper context.
159
+ def set_context(owner_class, options = {}) #:nodoc:
160
+ options.assert_valid_keys(:initial)
161
+
162
+ @owner_class = owner_class
163
+ @initial_state = options[:initial] if options[:initial]
164
+ end
165
+
166
+ # Gets the initial state of the machine for the given record. If a record
167
+ # is specified a and a dynamic initial state was configured for the machine,
168
+ # then that record will be passed into the proc to help determine the actual
169
+ # value of the initial state.
170
+ #
171
+ # == Examples
172
+ #
173
+ # With normal initial state:
174
+ #
175
+ # class Vehicle < ActiveRecord::Base
176
+ # state_machine :initial => 'parked' do
177
+ # ...
178
+ # end
179
+ # end
180
+ #
181
+ # Vehicle.state_machines['state'].initial_state(@vehicle) # => "parked"
182
+ #
183
+ # With dynamic initial state:
184
+ #
185
+ # class Vehicle < ActiveRecord::Base
186
+ # state_machine :initial => lambda {|vehicle| vehicle.force_idle ? 'idling' : 'parked'} do
187
+ # ...
188
+ # end
189
+ # end
190
+ #
191
+ # Vehicle.state_machines['state'].initial_state(@vehicle) # => "idling"
192
+ def initial_state(record)
193
+ @initial_state.is_a?(Proc) ? @initial_state.call(record) : @initial_state
194
+ end
195
+
196
+ # Defines an event of the system
197
+ #
198
+ # == Instance methods
199
+ #
200
+ # The following instance methods are generated when a new event is defined
201
+ # (the "park" event is used as an example):
202
+ # * <tt>park</tt> - Fires the "park" event, transitioning from the current state to the next valid state.
203
+ # * <tt>park!</tt> - Fires the "park" event, transitioning from the current state to the next valid state. If the transition cannot happen (for validation, database, etc. reasons), then an error will be raised.
204
+ # * <tt>can_park?</tt> - Checks whether the "park" event can be fired given the current state of the record.
205
+ #
206
+ # == Defining transitions
207
+ #
208
+ # +event+ requires a block which allows you to define the possible
209
+ # transitions that can happen as a result of that event. For example,
210
+ #
211
+ # event :park do
212
+ # transition :to => 'parked', :from => 'idle'
213
+ # end
214
+ #
215
+ # event :first_gear do
216
+ # transition :to => 'first_gear', :from => 'parked', :if => :seatbelt_on?
217
+ # end
218
+ #
219
+ # See PluginAWeek::StateMachine::Event#transition for more information on
220
+ # the possible options that can be passed in.
221
+ #
222
+ # *Note* that this block is executed within the context of the actual event
223
+ # object. As a result, you will not be able to reference any class methods
224
+ # on the model without referencing the class itself. For example,
225
+ #
226
+ # class Car < ActiveRecord::Base
227
+ # def self.safe_states
228
+ # %w(parked idling stalled)
229
+ # end
230
+ #
231
+ # state_machine :state do
232
+ # event :park do
233
+ # transition :to => 'parked', :from => Car.safe_states
234
+ # end
235
+ # end
236
+ # end
237
+ #
238
+ # == Example
239
+ #
240
+ # class Car < ActiveRecord::Base
241
+ # state_machine(:state, :initial => 'parked') do
242
+ # event :park, :after => :release_seatbelt do
243
+ # transition :to => 'parked', :from => %w(first_gear reverse)
244
+ # end
245
+ # ...
246
+ # end
247
+ # end
248
+ def event(name, &block)
249
+ name = name.to_s
250
+ event = events[name] ||= Event.new(self, name)
251
+ event.instance_eval(&block)
252
+
253
+ # Record the states so that the machine can keep a list of all known
254
+ # states that have been defined
255
+ event.transitions.each do |transition|
256
+ @states |= [transition.options[:to]] + Array(transition.options[:from]) + Array(transition.options[:except_from])
257
+ @states.sort!
258
+ end
259
+
260
+ event
261
+ end
262
+
263
+ # Creates a callback that will be invoked *before* a transition has been
264
+ # performed, so long as the given configuration options match the transition.
265
+ # Each part of the transition (to state, from state, and event) must match
266
+ # in order for the callback to get invoked.
267
+ #
268
+ # Configuration options:
269
+ # * +to+ - One or more states being transitioned to. If none are specified, then all states will match.
270
+ # * +from+ - One or more states being transitioned from. If none are specified, then all states will match.
271
+ # * +on+ - One or more events that fired the transition. If none are specified, then all events will match.
272
+ # * +except_to+ - One more states *not* being transitioned to
273
+ # * +except_from+ - One or more states *not* being transitioned from
274
+ # * +except_on+ - One or more events that *did not* fire the transition
275
+ # * +do+ - The callback to invoke when a transition matches. This can be a method, proc or string.
276
+ # * +if+ - A method, proc or string to call to determine if the callback should occur (e.g. :if => :allow_callbacks, or :if => lambda {|user| user.signup_step > 2}). The method, proc or string should return or evaluate to a true or false value.
277
+ # * +unless+ - A method, proc or string to call to determine if the callback should not occur (e.g. :unless => :skip_callbacks, or :unless => lambda {|user| user.signup_step <= 2}). The method, proc or string should return or evaluate to a true or false value.
278
+ #
279
+ # The +except+ group of options (+except_to+, +exception_from+, and
280
+ # +except_on+) acts as the +unless+ equivalent of their counterparts (+to+,
281
+ # +from+, and +on+, respectively)
282
+ #
283
+ # == The callback
284
+ #
285
+ # When defining additional configuration options, callbacks must be defined
286
+ # in the :do option like so:
287
+ #
288
+ # class Vehicle < ActiveRecord::Base
289
+ # state_machine do
290
+ # before_transition :to => 'parked', :do => :set_alarm
291
+ # ...
292
+ # end
293
+ # end
294
+ #
295
+ # == Examples
296
+ #
297
+ # Below is an example of a model with one state machine and various types
298
+ # of +before+ transitions defined for it:
299
+ #
300
+ # class Vehicle < ActiveRecord::Base
301
+ # state_machine do
302
+ # # Before all transitions
303
+ # before_transition :update_dashboard
304
+ #
305
+ # # Before specific transition:
306
+ # before_transition :to => 'parked', :from => %w(first_gear idling), :on => 'park', :do => :take_off_seatbelt
307
+ #
308
+ # # With conditional callback:
309
+ # before_transition :to => 'parked', :do => :take_off_seatbelt, :if => :seatbelt_on?
310
+ #
311
+ # # Using :except counterparts:
312
+ # before_transition :except_to => 'stalled', :except_from => 'stalled', :except_on => 'crash', :do => :update_dashboard
313
+ # ...
314
+ # end
315
+ # end
316
+ #
317
+ # As can be seen, any number of transitions can be created using various
318
+ # combinations of configuration options.
319
+ def before_transition(options = {})
320
+ add_transition_callback(:before, options)
321
+ end
322
+
323
+ # Creates a callback that will be invoked *after* a transition has been
324
+ # performed, so long as the given configuration options match the transition.
325
+ # Each part of the transition (to state, from state, and event) must match
326
+ # in order for the callback to get invoked.
327
+ #
328
+ # Configuration options:
329
+ # * +to+ - One or more states being transitioned to. If none are specified, then all states will match.
330
+ # * +from+ - One or more states being transitioned from. If none are specified, then all states will match.
331
+ # * +on+ - One or more events that fired the transition. If none are specified, then all events will match.
332
+ # * +except_to+ - One more states *not* being transitioned to
333
+ # * +except_from+ - One or more states *not* being transitioned from
334
+ # * +except_on+ - One or more events that *did not* fire the transition
335
+ # * +do+ - The callback to invoke when a transition matches. This can be a method, proc or string.
336
+ # * +if+ - A method, proc or string to call to determine if the callback should occur (e.g. :if => :allow_callbacks, or :if => lambda {|user| user.signup_step > 2}). The method, proc or string should return or evaluate to a true or false value.
337
+ # * +unless+ - A method, proc or string to call to determine if the callback should not occur (e.g. :unless => :skip_callbacks, or :unless => lambda {|user| user.signup_step <= 2}). The method, proc or string should return or evaluate to a true or false value.
338
+ #
339
+ # The +except+ group of options (+except_to+, +exception_from+, and
340
+ # +except_on+) acts as the +unless+ equivalent of their counterparts (+to+,
341
+ # +from+, and +on+, respectively)
342
+ #
343
+ # == The callback
344
+ #
345
+ # When defining additional configuration options, callbacks must be defined
346
+ # in the :do option like so:
347
+ #
348
+ # class Vehicle < ActiveRecord::Base
349
+ # state_machine do
350
+ # after_transition :to => 'parked', :do => :set_alarm
351
+ # ...
352
+ # end
353
+ # end
354
+ #
355
+ # == Examples
356
+ #
357
+ # Below is an example of a model with one state machine and various types
358
+ # of +after+ transitions defined for it:
359
+ #
360
+ # class Vehicle < ActiveRecord::Base
361
+ # state_machine do
362
+ # # After all transitions
363
+ # after_transition :update_dashboard
364
+ #
365
+ # # After specific transition:
366
+ # after_transition :to => 'parked', :from => %w(first_gear idling), :on => 'park', :do => :take_off_seatbelt
367
+ #
368
+ # # With conditional callback:
369
+ # after_transition :to => 'parked', :do => :take_off_seatbelt, :if => :seatbelt_on?
370
+ #
371
+ # # Using :except counterparts:
372
+ # after_transition :except_to => 'stalled', :except_from => 'stalled', :except_on => 'crash', :do => :update_dashboard
373
+ # ...
374
+ # end
375
+ # end
376
+ #
377
+ # As can be seen, any number of transitions can be created using various
378
+ # combinations of configuration options.
379
+ def after_transition(options = {})
380
+ add_transition_callback(:after, options)
381
+ end
382
+
383
+ private
384
+ # Adds the given callback to the callback chain during a state transition
385
+ def add_transition_callback(type, options)
386
+ options = {:do => options} unless options.is_a?(Hash)
387
+ options.assert_valid_keys(:to, :from, :on, :except_to, :except_from, :except_on, :do, :if, :unless)
388
+
389
+ # The actual callback (defined in the :do option) must be defined
390
+ raise ArgumentError, ':do callback must be specified' unless options[:do]
391
+
392
+ # Create the callback
393
+ owner_class.send("#{type}_transition_#{attribute}", options.delete(:do), options)
394
+ end
395
+
396
+ # Add before/after callbacks for when the attribute transitions to a
397
+ # different value
398
+ def add_transition_callbacks
399
+ %w(before after).each {|type| owner_class.define_callbacks("#{type}_transition_#{attribute}") }
400
+ end
401
+
402
+ # Add named scopes for finding records with a particular value or values
403
+ # for the attribute
404
+ def add_named_scopes
405
+ [attribute, attribute.pluralize].uniq.each do |name|
406
+ name = "with_#{name}"
407
+ owner_class.named_scope name.to_sym, lambda {|*values| {:conditions => {attribute => values.flatten}}} unless owner_class.respond_to?(name)
408
+ end
409
+ end
410
+ end
411
+ end
412
+ end