spree_core 0.60.6 → 0.70.RC1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (702) hide show
  1. data/{public → app/assets}/images/admin/bg/active-tab.png +0 -0
  2. data/{public → app/assets}/images/admin/bg/admin_tab_back.png +0 -0
  3. data/{public → app/assets}/images/admin/bg/admin_tab_selected_back.png +0 -0
  4. data/{public → app/assets}/images/admin/bg/content-back-blue.png +0 -0
  5. data/{public → app/assets}/images/admin/bg/content-back-green.png +0 -0
  6. data/{public → app/assets}/images/admin/bg/content-back.png +0 -0
  7. data/{public → app/assets}/images/admin/bg/flash-error.png +0 -0
  8. data/{public → app/assets}/images/admin/bg/flash-notice.png +0 -0
  9. data/{public → app/assets}/images/admin/bg/green-stripes.gif +0 -0
  10. data/{public → app/assets}/images/admin/bg/green-stripes.png +0 -0
  11. data/{public → app/assets}/images/admin/bg/grid_header_back.png +0 -0
  12. data/{public → app/assets}/images/admin/bg/grid_header_back_green.png +0 -0
  13. data/{public → app/assets}/images/admin/bg/header-bg.png +0 -0
  14. data/{public → app/assets}/images/admin/bg/header.png +0 -0
  15. data/{public → app/assets}/images/admin/bg/header_bg.jpg +0 -0
  16. data/{public → app/assets}/images/admin/bg/menu-current.png +0 -0
  17. data/{public → app/assets}/images/admin/bg/red-stripes.gif +0 -0
  18. data/{public → app/assets}/images/admin/bg/red-stripes.png +0 -0
  19. data/{public → app/assets}/images/admin/bg/spree_50.png +0 -0
  20. data/{public → app/assets}/images/admin/bg/subnav-divider.png +0 -0
  21. data/{public → app/assets}/images/admin/bg/subnav.png +0 -0
  22. data/{public → app/assets}/images/admin/bg/tab-back.png +0 -0
  23. data/{public → app/assets}/images/admin/buttons/blue/left_01.png +0 -0
  24. data/{public → app/assets}/images/admin/buttons/blue/right_01.png +0 -0
  25. data/{public → app/assets}/images/admin/buttons/drag-handle-green.png +0 -0
  26. data/{public → app/assets}/images/admin/buttons/green/left_01.png +0 -0
  27. data/{public → app/assets}/images/admin/buttons/green/right_01.png +0 -0
  28. data/{public → app/assets}/images/admin/buttons/left_01.png +0 -0
  29. data/{public → app/assets}/images/admin/buttons/left_01_small.png +0 -0
  30. data/{public → app/assets}/images/admin/buttons/orange/left_03.png +0 -0
  31. data/{public → app/assets}/images/admin/buttons/orange/right_03.png +0 -0
  32. data/{public → app/assets}/images/admin/buttons/right_01.png +0 -0
  33. data/{public → app/assets}/images/admin/buttons/right_01_small.png +0 -0
  34. data/{public → app/assets}/images/admin/icons/16x16/1.png +0 -0
  35. data/{public → app/assets}/images/admin/icons/16x16/10.png +0 -0
  36. data/{public → app/assets}/images/admin/icons/16x16/2.png +0 -0
  37. data/{public → app/assets}/images/admin/icons/16x16/3.png +0 -0
  38. data/{public → app/assets}/images/admin/icons/16x16/4.png +0 -0
  39. data/{public → app/assets}/images/admin/icons/16x16/5.png +0 -0
  40. data/{public → app/assets}/images/admin/icons/16x16/6.png +0 -0
  41. data/{public → app/assets}/images/admin/icons/16x16/7.png +0 -0
  42. data/{public → app/assets}/images/admin/icons/16x16/8.png +0 -0
  43. data/{public → app/assets}/images/admin/icons/16x16/9.png +0 -0
  44. data/{public → app/assets}/images/admin/icons/32x32/1.png +0 -0
  45. data/{public → app/assets}/images/admin/icons/32x32/10.png +0 -0
  46. data/{public → app/assets}/images/admin/icons/32x32/11.png +0 -0
  47. data/{public → app/assets}/images/admin/icons/32x32/2.png +0 -0
  48. data/{public → app/assets}/images/admin/icons/32x32/3.png +0 -0
  49. data/{public → app/assets}/images/admin/icons/32x32/4.png +0 -0
  50. data/{public → app/assets}/images/admin/icons/32x32/5.png +0 -0
  51. data/{public → app/assets}/images/admin/icons/32x32/6.png +0 -0
  52. data/{public → app/assets}/images/admin/icons/32x32/7.png +0 -0
  53. data/{public → app/assets}/images/admin/icons/32x32/8.png +0 -0
  54. data/{public → app/assets}/images/admin/icons/32x32/9.png +0 -0
  55. data/{public → app/assets}/images/admin/icons/accept.png +0 -0
  56. data/{public → app/assets}/images/admin/icons/add.gif +0 -0
  57. data/{public → app/assets}/images/admin/icons/add.png +0 -0
  58. data/{public → app/assets}/images/admin/icons/arrow-down.gif +0 -0
  59. data/{public → app/assets}/images/admin/icons/cross.png +0 -0
  60. data/{public → app/assets}/images/admin/icons/delete.gif +0 -0
  61. data/{public → app/assets}/images/admin/icons/delete.png +0 -0
  62. data/{public → app/assets}/images/admin/icons/drag.gif +0 -0
  63. data/{public → app/assets}/images/admin/icons/edit.gif +0 -0
  64. data/{public → app/assets}/images/admin/icons/edit.png +0 -0
  65. data/{public → app/assets}/images/admin/icons/email.png +0 -0
  66. data/{public → app/assets}/images/admin/icons/error.png +0 -0
  67. data/{public → app/assets}/images/admin/icons/exclamation.png +0 -0
  68. data/{public → app/assets}/images/admin/icons/feed.png +0 -0
  69. data/{public → app/assets}/images/admin/icons/pdf.png +0 -0
  70. data/{public → app/assets}/images/admin/icons/reorder.gif +0 -0
  71. data/{public → app/assets}/images/admin/icons/search.gif +0 -0
  72. data/{public → app/assets}/images/admin/icons/send-email.png +0 -0
  73. data/{public → app/assets}/images/admin/icons/stop.png +0 -0
  74. data/app/assets/images/admin/icons/switch.png +0 -0
  75. data/{public → app/assets}/images/admin/icons/tick.png +0 -0
  76. data/{public → app/assets}/images/admin/icons/up.gif +0 -0
  77. data/{public → app/assets}/images/admin/icons/xls.png +0 -0
  78. data/{public/images → app/assets/images/admin}/progress.gif +0 -0
  79. data/{public/images → app/assets/images/creditcards}/amex_cid.gif +0 -0
  80. data/{public/images → app/assets/images/creditcards}/creditcard.gif +0 -0
  81. data/{public/images → app/assets/images/creditcards}/discover_cid.gif +0 -0
  82. data/{public/images → app/assets/images/creditcards}/master_cid.jpg +0 -0
  83. data/{public/images → app/assets/images/creditcards}/visa_cid.gif +0 -0
  84. data/{public → app/assets}/images/favicon.ico +0 -0
  85. data/{public/images → app/assets/images/icons}/add-to-cart.png +0 -0
  86. data/{public/images → app/assets/images/icons}/checkout.png +0 -0
  87. data/app/assets/images/icons/delete.png +0 -0
  88. data/{public/images → app/assets/images/icons}/update.png +0 -0
  89. data/app/assets/images/noimage/mini.png +0 -0
  90. data/app/assets/images/noimage/product.png +0 -0
  91. data/app/assets/images/noimage/small.png +0 -0
  92. data/{public → app/assets}/images/spinner.gif +0 -0
  93. data/{public → app/assets}/javascripts/admin/address_states.js +4 -4
  94. data/{public/javascripts/admin.js → app/assets/javascripts/admin/admin.js.erb} +90 -93
  95. data/app/assets/javascripts/admin/calculator.js +15 -0
  96. data/{public → app/assets}/javascripts/admin/checkouts/edit.js +13 -13
  97. data/app/assets/javascripts/admin/gateway.js +13 -0
  98. data/app/assets/javascripts/admin/images/index.js +10 -0
  99. data/app/assets/javascripts/admin/images/new.js +5 -0
  100. data/app/assets/javascripts/admin/nested-attribute.js +23 -0
  101. data/app/assets/javascripts/admin/orders/edit.js +15 -0
  102. data/app/assets/javascripts/admin/orders/edit_form.js +16 -0
  103. data/{public → app/assets}/javascripts/admin/payments/new.js +0 -0
  104. data/app/assets/javascripts/admin/products.js +23 -0
  105. data/app/assets/javascripts/admin/spree_core.js +10 -0
  106. data/app/assets/javascripts/admin/taxonomy.js +206 -0
  107. data/app/assets/javascripts/admin/underscore-min.js +26 -0
  108. data/app/assets/javascripts/admin/zone.js +44 -0
  109. data/app/assets/javascripts/store/cart.js +11 -0
  110. data/app/assets/javascripts/store/checkout.js +77 -0
  111. data/app/assets/javascripts/store/product.js +49 -0
  112. data/app/assets/javascripts/store/spree_core.js +6 -0
  113. data/{public/stylesheets/admin/admin-forms.css → app/assets/stylesheets/admin/admin-form.css.erb} +27 -16
  114. data/{public → app/assets}/stylesheets/admin/admin-reset.css +0 -0
  115. data/{public/stylesheets/admin/admin-tables.css → app/assets/stylesheets/admin/admin-tables.css.erb} +3 -2
  116. data/{public → app/assets}/stylesheets/admin/admin-typography.css +2 -2
  117. data/{public/stylesheets/admin/admin.css → app/assets/stylesheets/admin/admin.css.erb} +22 -46
  118. data/{public/stylesheets/admin/autocomplete.css → app/assets/stylesheets/admin/edit_checkouts.css} +6 -7
  119. data/{public → app/assets}/stylesheets/admin/grids.css +107 -107
  120. data/app/assets/stylesheets/admin/spree_core.css +16 -0
  121. data/{public → app/assets}/stylesheets/admin/token-input.css +0 -0
  122. data/app/assets/stylesheets/store/reset.css +175 -0
  123. data/app/assets/stylesheets/store/screen.css +122 -0
  124. data/app/assets/stylesheets/store/spree_core.css +5 -0
  125. data/app/controllers/admin/base_controller.rb +3 -32
  126. data/app/controllers/admin/general_settings_controller.rb +14 -15
  127. data/app/controllers/admin/line_items_controller.rb +1 -1
  128. data/app/controllers/admin/mail_methods_controller.rb +13 -0
  129. data/app/controllers/admin/option_types_controller.rb +1 -2
  130. data/app/controllers/admin/orders_controller.rb +9 -8
  131. data/app/controllers/admin/product_groups_controller.rb +1 -2
  132. data/app/controllers/admin/products_controller.rb +4 -6
  133. data/app/controllers/admin/prototypes_controller.rb +1 -0
  134. data/app/controllers/admin/resource_controller.rb +7 -1
  135. data/app/controllers/admin/shipments_controller.rb +1 -1
  136. data/app/controllers/admin/states_controller.rb +1 -1
  137. data/app/controllers/admin/tax_categories_controller.rb +6 -0
  138. data/app/controllers/admin/taxons_controller.rb +0 -9
  139. data/app/controllers/admin/users_controller.rb +9 -5
  140. data/app/controllers/admin/variants_controller.rb +22 -0
  141. data/app/controllers/admin/zones_controller.rb +1 -1
  142. data/app/controllers/checkout_controller.rb +6 -0
  143. data/app/controllers/content_controller.rb +1 -1
  144. data/app/controllers/home_controller.rb +10 -0
  145. data/app/controllers/orders_controller.rb +11 -7
  146. data/app/controllers/products_controller.rb +0 -1
  147. data/app/helpers/admin/base_helper.rb +4 -8
  148. data/app/helpers/admin/navigation_helper.rb +9 -2
  149. data/app/helpers/checkout_helper.rb +7 -3
  150. data/app/helpers/hook_helper.rb +5 -15
  151. data/app/helpers/products_helper.rb +4 -0
  152. data/app/helpers/spree/base_helper.rb +55 -12
  153. data/app/helpers/taxons_helper.rb +0 -16
  154. data/app/mailers/test_mailer.rb +10 -0
  155. data/app/models/activator.rb +27 -0
  156. data/app/models/adjustment.rb +32 -12
  157. data/app/models/app_configuration.rb +7 -6
  158. data/app/models/calculator/vat.rb +27 -43
  159. data/app/models/creditcard.rb +23 -34
  160. data/app/models/gateway.rb +1 -0
  161. data/app/models/image.rb +7 -2
  162. data/app/models/order.rb +30 -17
  163. data/app/models/payment.rb +5 -11
  164. data/app/models/payment_method.rb +0 -4
  165. data/app/models/payment_method/check.rb +0 -4
  166. data/app/models/product.rb +22 -9
  167. data/app/models/product_group.rb +4 -8
  168. data/app/models/product_scope.rb +1 -1
  169. data/app/models/shipment.rb +1 -6
  170. data/app/models/tax_category.rb +6 -0
  171. data/app/models/tax_rate.rb +10 -0
  172. data/app/models/taxon.rb +3 -3
  173. data/app/models/zone.rb +4 -4
  174. data/app/views/admin/adjustments/_adjustments_table.html.erb +3 -3
  175. data/app/views/admin/adjustments/edit.html.erb +1 -1
  176. data/app/views/admin/adjustments/new.html.erb +1 -1
  177. data/app/views/admin/configurations/index.html.erb +54 -56
  178. data/app/views/admin/general_settings/edit.html.erb +13 -38
  179. data/app/views/admin/general_settings/show.html.erb +13 -23
  180. data/app/views/admin/images/_form.html.erb +4 -4
  181. data/app/views/admin/images/edit.html.erb +4 -4
  182. data/app/views/admin/images/index.html.erb +7 -21
  183. data/app/views/admin/images/new.html.erb +8 -18
  184. data/app/views/admin/inventory_settings/edit.html.erb +3 -3
  185. data/app/views/admin/inventory_units/adjust.html.erb +2 -2
  186. data/app/views/admin/line_items/create.js.erb +4 -0
  187. data/app/views/admin/mail_methods/_form.html.erb +3 -6
  188. data/app/views/admin/mail_methods/edit.html.erb +3 -3
  189. data/app/views/admin/mail_methods/index.html.erb +17 -21
  190. data/app/views/admin/mail_methods/new.html.erb +3 -3
  191. data/app/views/admin/option_types/_available.html.erb +5 -4
  192. data/app/views/admin/option_types/_option_value_fields.html.erb +1 -1
  193. data/app/views/admin/option_types/_selected.html.erb +6 -6
  194. data/app/views/admin/option_types/edit.html.erb +4 -4
  195. data/app/views/admin/option_types/index.html.erb +6 -6
  196. data/app/views/admin/option_types/{new.erb → new.html.erb} +1 -1
  197. data/app/views/admin/option_types/new.js.erb +2 -0
  198. data/app/views/admin/option_types/selected.html.erb +1 -1
  199. data/app/views/admin/orders/_add_product.html.erb +4 -4
  200. data/app/views/admin/orders/_form.html.erb +31 -42
  201. data/app/views/admin/orders/_line_item.html.erb +10 -15
  202. data/app/views/admin/orders/_user_form.html.erb +11 -6
  203. data/app/views/admin/orders/edit.html.erb +12 -16
  204. data/app/views/admin/orders/history.html.erb +3 -3
  205. data/app/views/admin/orders/index.html.erb +33 -45
  206. data/app/views/admin/orders/new.html.erb +5 -6
  207. data/app/views/admin/orders/show.html.erb +7 -9
  208. data/app/views/admin/orders/user.html.erb +2 -7
  209. data/app/views/admin/payment_methods/_form.html.erb +8 -8
  210. data/app/views/admin/payment_methods/edit.html.erb +1 -1
  211. data/app/views/admin/payment_methods/index.html.erb +19 -28
  212. data/app/views/admin/payment_methods/new.html.erb +2 -2
  213. data/app/views/admin/payments/_form.html.erb +1 -1
  214. data/app/views/admin/payments/_list.html.erb +2 -2
  215. data/app/views/admin/payments/_transaction_list.html.erb +3 -3
  216. data/app/views/admin/payments/credit.html.erb +1 -1
  217. data/app/views/admin/payments/index.html.erb +1 -1
  218. data/app/views/admin/payments/new.html.erb +2 -2
  219. data/app/views/admin/payments/show.html.erb +1 -1
  220. data/app/views/admin/payments/source_forms/_gateway.html.erb +6 -6
  221. data/app/views/admin/payments/source_views/_gateway.html.erb +1 -1
  222. data/app/views/admin/product_groups/_preview.html.erb +8 -8
  223. data/app/views/admin/product_groups/_product_scope.html.erb +5 -5
  224. data/app/views/admin/product_groups/edit.html.erb +6 -9
  225. data/app/views/admin/product_groups/index.html.erb +6 -6
  226. data/app/views/admin/product_groups/new.html.erb +2 -2
  227. data/app/views/admin/product_groups/show.html.erb +4 -4
  228. data/app/views/admin/product_groups/update.js.erb +5 -1
  229. data/app/views/admin/product_properties/_product_property_fields.html.erb +1 -1
  230. data/app/views/admin/product_properties/index.html.erb +11 -11
  231. data/app/views/admin/products/_form.html.erb +75 -72
  232. data/app/views/admin/products/_option_types.html.erb +34 -34
  233. data/app/views/admin/products/_properties_form.erb +2 -2
  234. data/app/views/admin/products/edit.html.erb +2 -3
  235. data/app/views/admin/products/index.html.erb +25 -34
  236. data/app/views/admin/products/{new.erb → new.html.erb} +4 -5
  237. data/app/views/admin/products/new.js.erb +3 -0
  238. data/app/views/admin/properties/_form.html.erb +13 -10
  239. data/app/views/admin/properties/edit.html.erb +1 -1
  240. data/app/views/admin/properties/index.html.erb +5 -5
  241. data/app/views/admin/properties/{new.erb → new.html.erb} +2 -2
  242. data/app/views/admin/properties/new.js.erb +2 -0
  243. data/app/views/admin/prototypes/_form.html.erb +18 -18
  244. data/app/views/admin/prototypes/_prototypes.html.erb +22 -0
  245. data/app/views/admin/prototypes/available.js.erb +2 -0
  246. data/app/views/admin/prototypes/edit.html.erb +1 -1
  247. data/app/views/admin/prototypes/index.html.erb +6 -6
  248. data/app/views/admin/prototypes/{new.erb → new.html.erb} +2 -2
  249. data/app/views/admin/prototypes/new.js.erb +2 -0
  250. data/app/views/admin/reports/index.html.erb +2 -2
  251. data/app/views/admin/reports/sales_total.html.erb +1 -1
  252. data/app/views/admin/return_authorizations/_form.html.erb +2 -2
  253. data/app/views/admin/return_authorizations/edit.html.erb +4 -4
  254. data/app/views/admin/return_authorizations/index.html.erb +5 -5
  255. data/app/views/admin/return_authorizations/new.html.erb +2 -2
  256. data/app/views/admin/shared/_address.html.erb +1 -1
  257. data/app/views/admin/shared/_address_form.html.erb +3 -4
  258. data/app/views/admin/shared/_calculator_fields.html.erb +3 -3
  259. data/app/views/admin/shared/_configuration_menu.html.erb +13 -14
  260. data/app/views/admin/shared/_destroy.js.erb +1 -1
  261. data/app/views/admin/shared/_edit_resource_links.html.erb +1 -1
  262. data/app/views/admin/shared/_group_from_products_form.html.erb +1 -1
  263. data/app/views/admin/shared/_head.html.erb +26 -0
  264. data/app/views/admin/shared/_new_adjustment_button.html.erb +4 -4
  265. data/app/views/admin/shared/_new_resource_links.html.erb +1 -1
  266. data/app/views/admin/shared/_order_details.html.erb +0 -1
  267. data/app/views/admin/shared/_order_tabs.html.erb +42 -47
  268. data/app/views/admin/shared/_product_sub_menu.html.erb +6 -8
  269. data/app/views/admin/shared/_product_tabs.html.erb +19 -23
  270. data/app/views/admin/shared/_report_criteria.html.erb +2 -2
  271. data/app/views/admin/shared/_show_resource_links.html.erb +2 -2
  272. data/app/views/admin/shared/_tabs.html.erb +1 -1
  273. data/app/views/admin/shipments/_form.html.erb +37 -41
  274. data/app/views/admin/shipments/edit.html.erb +13 -15
  275. data/app/views/admin/shipments/index.html.erb +21 -30
  276. data/app/views/admin/shipments/new.html.erb +6 -6
  277. data/app/views/admin/shipping_categories/_form.html.erb +2 -2
  278. data/app/views/admin/shipping_categories/edit.html.erb +1 -1
  279. data/app/views/admin/shipping_categories/index.html.erb +5 -5
  280. data/app/views/admin/shipping_categories/new.html.erb +1 -1
  281. data/app/views/admin/shipping_methods/_form.html.erb +4 -5
  282. data/app/views/admin/shipping_methods/edit.html.erb +7 -7
  283. data/app/views/admin/shipping_methods/index.html.erb +13 -22
  284. data/app/views/admin/shipping_methods/new.html.erb +7 -7
  285. data/app/views/admin/states/_state_list.html.erb +6 -6
  286. data/app/views/admin/states/edit.html.erb +1 -1
  287. data/app/views/admin/states/index.html.erb +3 -3
  288. data/app/views/admin/states/{new.erb → new.html.erb} +1 -1
  289. data/app/views/admin/states/new.js.erb +2 -0
  290. data/app/views/admin/tax_categories/index.html.erb +7 -7
  291. data/app/views/admin/tax_categories/new.html.erb +1 -1
  292. data/app/views/admin/tax_rates/_form.html.erb +5 -5
  293. data/app/views/admin/tax_rates/edit.html.erb +1 -1
  294. data/app/views/admin/tax_rates/index.html.erb +5 -5
  295. data/app/views/admin/tax_rates/new.html.erb +1 -1
  296. data/app/views/admin/tax_settings/edit.html.erb +10 -4
  297. data/app/views/admin/tax_settings/show.html.erb +8 -4
  298. data/app/views/admin/taxonomies/_form.html.erb +2 -2
  299. data/app/views/admin/taxonomies/_js_head.html.erb +0 -1
  300. data/app/views/admin/taxonomies/_list.html.erb +3 -3
  301. data/app/views/admin/taxonomies/edit.erb +2 -2
  302. data/app/views/admin/taxonomies/index.html.erb +4 -4
  303. data/app/views/admin/taxonomies/new.html.erb +2 -2
  304. data/app/views/admin/taxons/_form.html.erb +2 -2
  305. data/app/views/admin/taxons/_taxon_table.html.erb +10 -10
  306. data/app/views/admin/taxons/available.js.erb +7 -14
  307. data/app/views/admin/taxons/edit.html.erb +2 -2
  308. data/app/views/admin/taxons/selected.html.erb +9 -9
  309. data/app/views/admin/trackers/_form.html.erb +7 -6
  310. data/app/views/admin/trackers/edit.html.erb +1 -1
  311. data/app/views/admin/trackers/index.html.erb +8 -13
  312. data/app/views/admin/trackers/new.html.erb +1 -1
  313. data/app/views/admin/users/_form.html.erb +13 -14
  314. data/app/views/admin/users/edit.html.erb +7 -7
  315. data/app/views/admin/users/index.html.erb +20 -34
  316. data/app/views/admin/users/new.html.erb +7 -7
  317. data/app/views/admin/users/show.html.erb +2 -2
  318. data/app/views/admin/variants/_form.html.erb +6 -6
  319. data/app/views/admin/variants/edit.html.erb +3 -3
  320. data/app/views/admin/variants/index.html.erb +6 -6
  321. data/app/views/admin/variants/new.html.erb +8 -0
  322. data/app/views/admin/variants/new.js.erb +2 -0
  323. data/app/views/admin/zones/_country_member.html.erb +1 -1
  324. data/app/views/admin/zones/_form.html.erb +1 -1
  325. data/app/views/admin/zones/_member_type.html.erb +2 -2
  326. data/app/views/admin/zones/_state_member.html.erb +2 -2
  327. data/app/views/admin/zones/_zone_member.html.erb +2 -2
  328. data/app/views/admin/zones/edit.html.erb +1 -1
  329. data/app/views/admin/zones/index.html.erb +8 -9
  330. data/app/views/admin/zones/new.html.erb +1 -1
  331. data/app/views/checkout/_address.html.erb +125 -134
  332. data/app/views/checkout/_confirm.html.erb +2 -2
  333. data/app/views/checkout/_delivery.html.erb +8 -4
  334. data/app/views/checkout/_payment.html.erb +7 -7
  335. data/app/views/checkout/_summary.html.erb +6 -5
  336. data/app/views/checkout/edit.html.erb +6 -8
  337. data/app/views/checkout/payment/_gateway.html.erb +5 -5
  338. data/app/views/checkout/registration.html.erb +3 -3
  339. data/app/views/content/cvv.html.erb +5 -5
  340. data/app/views/home/index.html.erb +10 -0
  341. data/app/views/layouts/admin.html.erb +16 -23
  342. data/app/views/layouts/spree_application.html.erb +30 -44
  343. data/app/views/orders/_form.html.erb +8 -10
  344. data/app/views/orders/_line_item.html.erb +17 -32
  345. data/app/views/orders/edit.html.erb +20 -18
  346. data/app/views/orders/show.html.erb +2 -2
  347. data/app/views/products/_cart_form.html.erb +42 -47
  348. data/app/views/products/_properties.html.erb +5 -4
  349. data/app/views/products/_taxons.html.erb +10 -12
  350. data/app/views/products/_thumbnails.html.erb +14 -35
  351. data/app/views/products/index.html.erb +6 -9
  352. data/app/views/products/show.html.erb +18 -23
  353. data/app/views/shared/_error_messages.html.erb +1 -1
  354. data/app/views/shared/_filters.html.erb +1 -1
  355. data/app/views/shared/_head.html.erb +3 -6
  356. data/app/views/shared/_nav_bar.html.erb +3 -2
  357. data/app/views/shared/_order_details.html.erb +31 -41
  358. data/app/views/shared/_products.html.erb +10 -16
  359. data/app/views/shared/_store_menu.html.erb +2 -2
  360. data/app/views/shared/_taxonomies.html.erb +3 -14
  361. data/app/views/taxons/_taxon.html.erb +1 -1
  362. data/app/views/taxons/show.html.erb +6 -6
  363. data/app/views/test_mailer/test_email.text.erb +4 -0
  364. data/config/initializers/deprecation_checker.rb +7 -0
  365. data/config/initializers/disable_paperclip_log.rb +2 -0
  366. data/config/initializers/form_builder.rb +0 -4
  367. data/config/initializers/sprockets_precompile_patch.rb +16 -0
  368. data/config/initializers/workarounds_for_ruby19.rb +1 -1
  369. data/config/locales/en.yml +55 -24
  370. data/config/routes.rb +9 -8
  371. data/db/default/roles.yml +1 -3
  372. data/db/migrate/20100419194457_fix_existing_coupon_credits.rb +9 -0
  373. data/db/migrate/20110329141434_create_activators.rb +21 -0
  374. data/db/migrate/20110418151136_eligible_for_adjustments.rb +9 -0
  375. data/db/seeds.rb +4 -2
  376. data/lib/custom_fixtures.rb +64 -3
  377. data/lib/generators/spree/dummy/dummy_generator.rb +105 -0
  378. data/lib/generators/spree/dummy/templates/cucumber/cucumber.rb +38 -0
  379. data/lib/generators/spree/dummy/templates/rails/application.rb +10 -0
  380. data/lib/generators/spree/dummy/templates/rails/boot.rb +6 -0
  381. data/lib/generators/spree/dummy/templates/rails/database.yml +30 -0
  382. data/lib/generators/spree/dummy/templates/rails/routes.rb +3 -0
  383. data/lib/generators/spree/sandbox/sandbox_generator.rb +27 -0
  384. data/lib/generators/spree/site/site_generator.rb +79 -0
  385. data/lib/generators/spree/site/templates/app/assets/javascripts/admin/all.js +16 -0
  386. data/lib/generators/spree/site/templates/app/assets/javascripts/store/all.js +16 -0
  387. data/lib/generators/spree/site/templates/app/assets/stylesheets/admin/all.css +17 -0
  388. data/lib/generators/spree/site/templates/app/assets/stylesheets/store/all.css +17 -0
  389. data/lib/scopes.rb +1 -1
  390. data/lib/spree/calculated_adjustments.rb +8 -3
  391. data/lib/spree/search/base.rb +1 -5
  392. data/lib/spree_base.rb +12 -0
  393. data/lib/spree_core.rb +9 -6
  394. data/lib/spree_core/ext/active_record.rb +1 -1
  395. data/lib/spree_core/preferences/model_hooks.rb +7 -3
  396. data/lib/spree_core/railtie.rb +19 -3
  397. data/lib/spree_core/testing_support/common_rake.rb +12 -0
  398. data/lib/spree_core/testing_support/factories/activator_factory.rb +6 -0
  399. data/lib/spree_core/testing_support/factories/adjustment_factory.rb +1 -0
  400. data/lib/spree_core/testing_support/factories/calculator_factory.rb +6 -0
  401. data/lib/spree_core/testing_support/factories/order_factory.rb +7 -6
  402. data/lib/spree_core/testing_support/factories/product_factory.rb +6 -0
  403. data/lib/spree_core/testing_support/factories/user_factory.rb +14 -10
  404. data/lib/spree_core/testing_support/factories/zone_factory.rb +1 -1
  405. data/lib/spree_core/theme_support.rb +0 -3
  406. data/lib/spree_core/theme_support/hook_listener.rb +112 -35
  407. data/lib/spree_core/version.rb +1 -1
  408. data/lib/subclass_registration.rb +21 -0
  409. data/lib/tasks/assets.rake +58 -0
  410. data/lib/tasks/core.rake +18 -11
  411. data/lib/tasks/install.rake +4 -12
  412. data/{public → vendor/assets}/images/datepicker/cal.gif +0 -0
  413. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  414. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  415. data/vendor/assets/images/jquery-ui/ui-bg_flat_55_ffffff_40x100.png +0 -0
  416. data/vendor/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
  417. data/vendor/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  418. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  419. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  420. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  421. data/vendor/assets/images/jquery-ui/ui-icons_0073ea_256x240.png +0 -0
  422. data/vendor/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
  423. data/vendor/assets/images/jquery-ui/ui-icons_666666_256x240.png +0 -0
  424. data/vendor/assets/images/jquery-ui/ui-icons_ff0084_256x240.png +0 -0
  425. data/vendor/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  426. data/{public → vendor/assets}/javascripts/jquery.alerts/images/help.gif +0 -0
  427. data/{public → vendor/assets}/javascripts/jquery.alerts/images/important.gif +0 -0
  428. data/{public → vendor/assets}/javascripts/jquery.alerts/images/info.gif +0 -0
  429. data/{public → vendor/assets}/javascripts/jquery.alerts/images/title.gif +0 -0
  430. data/{public → vendor/assets}/javascripts/jquery.alerts/jquery.alerts.css +0 -0
  431. data/{public → vendor/assets}/javascripts/jquery.alerts/jquery.alerts.js +0 -0
  432. data/{public → vendor/assets}/javascripts/jquery.alerts/jquery.alerts.spree.css +0 -0
  433. data/{public → vendor/assets}/javascripts/jquery.autocomplete.min.js +0 -0
  434. data/vendor/assets/javascripts/jquery.cookie.js +41 -0
  435. data/{public → vendor/assets}/javascripts/jquery.delayedobserver.js +0 -0
  436. data/{public/javascripts/jsTree → vendor/assets/javascripts/jquery.jstree}/jquery.jstree.js +4544 -3510
  437. data/{public/javascripts/jsTree → vendor/assets/javascripts/jquery.jstree}/themes/apple/bg.jpg +0 -0
  438. data/{public/javascripts/jsTree → vendor/assets/javascripts/jquery.jstree}/themes/apple/d.png +0 -0
  439. data/{public/javascripts/jsTree → vendor/assets/javascripts/jquery.jstree}/themes/apple/dot_for_ie.gif +0 -0
  440. data/{public/javascripts/jsTree → vendor/assets/javascripts/jquery.jstree}/themes/apple/style.css +2 -1
  441. data/{public/javascripts/jsTree → vendor/assets/javascripts/jquery.jstree}/themes/apple/throbber.gif +0 -0
  442. data/vendor/assets/javascripts/jquery.tokeninput.js +860 -0
  443. data/vendor/assets/javascripts/jquery.validate/additional-methods.min.js +28 -0
  444. data/vendor/assets/javascripts/jquery.validate/jquery.validate.min.js +51 -0
  445. data/vendor/assets/javascripts/jquery.validate/localization/messages_ar.js +24 -0
  446. data/vendor/assets/javascripts/jquery.validate/localization/messages_bg.js +23 -0
  447. data/vendor/assets/javascripts/jquery.validate/localization/messages_ca.js +23 -0
  448. data/vendor/assets/javascripts/jquery.validate/localization/messages_cn.js +23 -0
  449. data/vendor/assets/javascripts/jquery.validate/localization/messages_cs.js +23 -0
  450. data/vendor/assets/javascripts/jquery.validate/localization/messages_da.js +20 -0
  451. data/vendor/assets/javascripts/jquery.validate/localization/messages_de.js +21 -0
  452. data/vendor/assets/javascripts/jquery.validate/localization/messages_el.js +24 -0
  453. data/{public/javascripts → vendor/assets/javascripts/jquery.validate}/localization/messages_es.js +22 -23
  454. data/vendor/assets/javascripts/jquery.validate/localization/messages_fa.js +23 -0
  455. data/vendor/assets/javascripts/jquery.validate/localization/messages_fi.js +21 -0
  456. data/vendor/assets/javascripts/jquery.validate/localization/messages_fr.js +23 -0
  457. data/vendor/assets/javascripts/jquery.validate/localization/messages_ge.js +23 -0
  458. data/vendor/assets/javascripts/jquery.validate/localization/messages_he.js +23 -0
  459. data/vendor/assets/javascripts/jquery.validate/localization/messages_hu.js +21 -0
  460. data/vendor/assets/javascripts/jquery.validate/localization/messages_it.js +23 -0
  461. data/vendor/assets/javascripts/jquery.validate/localization/messages_ja.js +23 -0
  462. data/vendor/assets/javascripts/jquery.validate/localization/messages_kk.js +23 -0
  463. data/vendor/assets/javascripts/jquery.validate/localization/messages_lt.js +23 -0
  464. data/vendor/assets/javascripts/jquery.validate/localization/messages_lv.js +23 -0
  465. data/vendor/assets/javascripts/jquery.validate/localization/messages_nl.js +23 -0
  466. data/vendor/assets/javascripts/jquery.validate/localization/messages_no.js +23 -0
  467. data/vendor/assets/javascripts/jquery.validate/localization/messages_pl.js +23 -0
  468. data/vendor/assets/javascripts/jquery.validate/localization/messages_ptbr.js +30 -0
  469. data/vendor/assets/javascripts/jquery.validate/localization/messages_ptpt.js +23 -0
  470. data/{public/javascripts → vendor/assets/javascripts/jquery.validate}/localization/messages_ro.js +22 -23
  471. data/vendor/assets/javascripts/jquery.validate/localization/messages_ru.js +23 -0
  472. data/vendor/assets/javascripts/jquery.validate/localization/messages_se.js +23 -0
  473. data/vendor/assets/javascripts/jquery.validate/localization/messages_si.js +23 -0
  474. data/vendor/assets/javascripts/jquery.validate/localization/messages_sk.js +21 -0
  475. data/vendor/assets/javascripts/jquery.validate/localization/messages_sr.js +23 -0
  476. data/vendor/assets/javascripts/jquery.validate/localization/messages_th.js +23 -0
  477. data/vendor/assets/javascripts/jquery.validate/localization/messages_tr.js +24 -0
  478. data/vendor/assets/javascripts/jquery.validate/localization/messages_tw.js +24 -0
  479. data/vendor/assets/javascripts/jquery.validate/localization/messages_ua.js +24 -0
  480. data/vendor/assets/javascripts/jquery.validate/localization/messages_vi.js +23 -0
  481. data/vendor/assets/javascripts/jquery.validate/localization/methods_de.js +12 -0
  482. data/vendor/assets/javascripts/jquery.validate/localization/methods_nl.js +9 -0
  483. data/vendor/assets/javascripts/jquery.validate/localization/methods_pt.js +9 -0
  484. data/vendor/assets/stylesheets/jquery-ui.datepicker.css.erb +357 -0
  485. metadata +358 -462
  486. data/app/models/spree/alert.rb +0 -13
  487. data/app/stylesheets/_buttons.less +0 -80
  488. data/app/stylesheets/_cart.less +0 -24
  489. data/app/stylesheets/_checkout.less +0 -76
  490. data/app/stylesheets/_checkout_progress.less +0 -62
  491. data/app/stylesheets/_colors.less +0 -16
  492. data/app/stylesheets/_forms.less +0 -50
  493. data/app/stylesheets/_layout.less +0 -77
  494. data/app/stylesheets/_messages.less +0 -32
  495. data/app/stylesheets/_mixins.less +0 -71
  496. data/app/stylesheets/_navigation.less +0 -130
  497. data/app/stylesheets/_prices.less +0 -18
  498. data/app/stylesheets/_product_details.less +0 -56
  499. data/app/stylesheets/_product_lists.less +0 -66
  500. data/app/stylesheets/_registration.less +0 -24
  501. data/app/stylesheets/_reset.less +0 -69
  502. data/app/stylesheets/_typography.less +0 -158
  503. data/app/stylesheets/screen.less +0 -13
  504. data/app/views/admin/extensions/index.html.erb +0 -23
  505. data/app/views/admin/product_scopes/_form.html.erb +0 -106
  506. data/app/views/admin/prototypes/available.html.erb +0 -22
  507. data/app/views/admin/shared/_alert.html.erb +0 -6
  508. data/app/views/admin/variants/new.erb +0 -11
  509. data/app/views/shared/_additional_field.html.erb +0 -7
  510. data/app/views/shared/_admin_head.html.erb +0 -34
  511. data/app/views/shared/_basic_layout.html.erb +0 -44
  512. data/app/views/shared/_edit_resource_links.html.erb +0 -1
  513. data/app/views/shared/_footer.html.erb +0 -13
  514. data/app/views/shared/_method_error_message.html.erb +0 -4
  515. data/app/views/shared/_new_resource_links.html.erb +0 -1
  516. data/app/views/shared/_show_resource_links.html.erb +0 -3
  517. data/app/views/shared/_test_hook.html.erb +0 -1
  518. data/config/initializers/load_unobtrusive_date_picker.rb +0 -8
  519. data/db/migrate/20101026184833_migrate_adjustments.rb +0 -9
  520. data/lib/generators/spree_core/upgrade_generator.rb +0 -23
  521. data/lib/generators/templates/config/initializers/%file_name%.rb.tt +0 -1
  522. data/lib/generators/templates/config/locales/%current_locale%.yml.tt +0 -2
  523. data/lib/generators/templates/config/routes.rb +0 -3
  524. data/lib/spree_core/theme_support/hook.rb +0 -51
  525. data/lib/spree_core/theme_support/hook_modifier.rb +0 -35
  526. data/lib/spree_core/theme_support/more_patches.rb +0 -118
  527. data/lib/tasks/common.rb +0 -30
  528. data/lib/tasks/themes.rake +0 -34
  529. data/public/images/admin/tabs/off-left.png +0 -0
  530. data/public/images/admin/tabs/off-right.png +0 -0
  531. data/public/images/admin/tabs/on-left.png +0 -0
  532. data/public/images/admin/tabs/on-right.png +0 -0
  533. data/public/images/ajax_loader.gif +0 -0
  534. data/public/images/bg-button-hover.png +0 -0
  535. data/public/images/bg-button-pressed.png +0 -0
  536. data/public/images/bg-button.gif +0 -0
  537. data/public/images/bg-button.png +0 -0
  538. data/public/images/blue/left_01.png +0 -0
  539. data/public/images/blue/right_01.png +0 -0
  540. data/public/images/body-back.png +0 -0
  541. data/public/images/bottom_shine.png +0 -0
  542. data/public/images/breadcrumb.gif +0 -0
  543. data/public/images/button-dark-hover.png +0 -0
  544. data/public/images/button-dark.png +0 -0
  545. data/public/images/buttons/bg-button-hover.png +0 -0
  546. data/public/images/buttons/bg-button-pressed.png +0 -0
  547. data/public/images/buttons/bg-button.gif +0 -0
  548. data/public/images/buttons/bg-button.png +0 -0
  549. data/public/images/buttons/blue/left_01.png +0 -0
  550. data/public/images/buttons/blue/right_01.png +0 -0
  551. data/public/images/buttons/button-dark-hover.png +0 -0
  552. data/public/images/buttons/button-dark.png +0 -0
  553. data/public/images/buttons/drag-handle-green.png +0 -0
  554. data/public/images/buttons/green/left_01.png +0 -0
  555. data/public/images/buttons/green/right_01.png +0 -0
  556. data/public/images/buttons/left_01.png +0 -0
  557. data/public/images/buttons/left_01_small.png +0 -0
  558. data/public/images/buttons/orange/left_03.png +0 -0
  559. data/public/images/buttons/orange/right_03.png +0 -0
  560. data/public/images/buttons/right_01.png +0 -0
  561. data/public/images/buttons/right_01_small.png +0 -0
  562. data/public/images/buttons/sxsw-ribbon-v1.png +0 -0
  563. data/public/images/buttons/top-shine.png +0 -0
  564. data/public/images/calendar_date_select/calendar.gif +0 -0
  565. data/public/images/cart-empty.png +0 -0
  566. data/public/images/cart-empty_x32.png +0 -0
  567. data/public/images/cart-full.png +0 -0
  568. data/public/images/cart-full_x32.png +0 -0
  569. data/public/images/datepicker/backstripes.gif +0 -0
  570. data/public/images/datepicker/bg_header.jpg +0 -0
  571. data/public/images/datepicker/bullet1.gif +0 -0
  572. data/public/images/datepicker/bullet2.gif +0 -0
  573. data/public/images/datepicker/gradient-e5e5e5-ffffff.gif +0 -0
  574. data/public/images/drag-handle-green.png +0 -0
  575. data/public/images/green/left_01.png +0 -0
  576. data/public/images/green/right_01.png +0 -0
  577. data/public/images/grid.png +0 -0
  578. data/public/images/left_01.png +0 -0
  579. data/public/images/left_01_small.png +0 -0
  580. data/public/images/menu-current.png +0 -0
  581. data/public/images/menu-hover.png +0 -0
  582. data/public/images/noimage/mini.jpg +0 -0
  583. data/public/images/noimage/product.jpg +0 -0
  584. data/public/images/noimage/small.jpg +0 -0
  585. data/public/images/openid-inputicon.gif +0 -0
  586. data/public/images/orange/left_03.png +0 -0
  587. data/public/images/orange/right_03.png +0 -0
  588. data/public/images/reorder.jpg +0 -0
  589. data/public/images/right_01.png +0 -0
  590. data/public/images/right_01_small.png +0 -0
  591. data/public/images/separator.png +0 -0
  592. data/public/images/shadow-top.png +0 -0
  593. data/public/images/shadow_top.png +0 -0
  594. data/public/images/spree.jpg +0 -0
  595. data/public/images/spree/progress.gif +0 -0
  596. data/public/images/spree/spinner.gif +0 -0
  597. data/public/images/spree/spree.jpg +0 -0
  598. data/public/images/step-progress/completed-completed.gif +0 -0
  599. data/public/images/step-progress/completed-current.gif +0 -0
  600. data/public/images/step-progress/completed-first.gif +0 -0
  601. data/public/images/step-progress/current-first.gif +0 -0
  602. data/public/images/step-progress/current-incomplete.gif +0 -0
  603. data/public/images/step-progress/current-right.gif +0 -0
  604. data/public/images/step-progress/incomplete-incomplete.gif +0 -0
  605. data/public/images/step-progress/incomplete-right.gif +0 -0
  606. data/public/images/steps/1.png +0 -0
  607. data/public/images/steps/1_small.png +0 -0
  608. data/public/images/steps/2.png +0 -0
  609. data/public/images/steps/2_small.png +0 -0
  610. data/public/images/steps/3.png +0 -0
  611. data/public/images/steps/3_small.png +0 -0
  612. data/public/images/steps/4.png +0 -0
  613. data/public/images/steps/4_small.png +0 -0
  614. data/public/images/steps/5.png +0 -0
  615. data/public/images/steps/5_small.png +0 -0
  616. data/public/images/steps/6.png +0 -0
  617. data/public/images/steps/6_small.png +0 -0
  618. data/public/images/sxsw-ribbon-v1.png +0 -0
  619. data/public/images/tab_bottom.gif +0 -0
  620. data/public/images/tile-header.png +0 -0
  621. data/public/images/tile-slider.png +0 -0
  622. data/public/images/top-shine.png +0 -0
  623. data/public/images/tree-nav-icons/bullet.gif +0 -0
  624. data/public/images/tree-nav-icons/minus.gif +0 -0
  625. data/public/images/tree-nav-icons/plus.gif +0 -0
  626. data/public/images/tree-nav-icons/treeview-loading.gif +0 -0
  627. data/public/images/tree-nav-icons/treeview-sprite.gif +0 -0
  628. data/public/images/wrapper-back-2.png +0 -0
  629. data/public/images/wrapper-back.png +0 -0
  630. data/public/images/yui-menubaritem_submenuindicator.png +0 -0
  631. data/public/images/yui-menubaritem_submenuindicator_disabled.png +0 -0
  632. data/public/images/yui-menuitem_checkbox.png +0 -0
  633. data/public/images/yui-menuitem_checkbox_disabled.png +0 -0
  634. data/public/images/yui-menuitem_submenuindicator.png +0 -0
  635. data/public/images/yui-menuitem_submenuindicator_disabled.png +0 -0
  636. data/public/images/yui-sprite.png +0 -0
  637. data/public/javascripts/additional-methods.js +0 -236
  638. data/public/javascripts/admin/orders/edit.js +0 -23
  639. data/public/javascripts/admin/orders/edit_form.js +0 -16
  640. data/public/javascripts/admin/unobtrusive_handlers.js +0 -43
  641. data/public/javascripts/application.js +0 -12
  642. data/public/javascripts/calculator.js +0 -15
  643. data/public/javascripts/checkout.js +0 -75
  644. data/public/javascripts/datepicker.js +0 -1445
  645. data/public/javascripts/gateway.js +0 -13
  646. data/public/javascripts/jquery-1.4.2.min.js +0 -154
  647. data/public/javascripts/jquery-ui.js +0 -188
  648. data/public/javascripts/jquery.cookie.js +0 -96
  649. data/public/javascripts/jquery.suggest.js +0 -276
  650. data/public/javascripts/jquery.template.js +0 -255
  651. data/public/javascripts/jquery.tokeninput.js +0 -618
  652. data/public/javascripts/jquery.validate.min.js +0 -16
  653. data/public/javascripts/lang/af.js +0 -40
  654. data/public/javascripts/lang/ar.js +0 -50
  655. data/public/javascripts/lang/de.js +0 -40
  656. data/public/javascripts/lang/du.js +0 -40
  657. data/public/javascripts/lang/en.js +0 -42
  658. data/public/javascripts/lang/es.js +0 -41
  659. data/public/javascripts/lang/fi.js +0 -40
  660. data/public/javascripts/lang/fr.js +0 -44
  661. data/public/javascripts/lang/gr.js +0 -40
  662. data/public/javascripts/lang/he.js +0 -49
  663. data/public/javascripts/lang/it.js +0 -13
  664. data/public/javascripts/lang/nl.js +0 -40
  665. data/public/javascripts/lang/no.js +0 -40
  666. data/public/javascripts/lang/pt.js +0 -50
  667. data/public/javascripts/lang/ro.js +0 -40
  668. data/public/javascripts/lang/ru.js +0 -40
  669. data/public/javascripts/lang/sp.js +0 -40
  670. data/public/javascripts/lang/sv.js +0 -41
  671. data/public/javascripts/lang/ua.js +0 -40
  672. data/public/javascripts/localization/messages_cn.js +0 -24
  673. data/public/javascripts/localization/messages_cs.js +0 -23
  674. data/public/javascripts/localization/messages_da.js +0 -21
  675. data/public/javascripts/localization/messages_de.js +0 -21
  676. data/public/javascripts/localization/messages_fr.js +0 -23
  677. data/public/javascripts/localization/messages_hu.js +0 -21
  678. data/public/javascripts/localization/messages_it.js +0 -26
  679. data/public/javascripts/localization/messages_kk.js +0 -23
  680. data/public/javascripts/localization/messages_nl.js +0 -23
  681. data/public/javascripts/localization/messages_no.js +0 -23
  682. data/public/javascripts/localization/messages_pl.js +0 -23
  683. data/public/javascripts/localization/messages_ptbr.js +0 -30
  684. data/public/javascripts/localization/messages_ru.js +0 -23
  685. data/public/javascripts/localization/messages_se.js +0 -23
  686. data/public/javascripts/localization/messages_sk.js +0 -21
  687. data/public/javascripts/localization/messages_tr.js +0 -24
  688. data/public/javascripts/localization/messages_tw.js +0 -24
  689. data/public/javascripts/localization/messages_ua.js +0 -24
  690. data/public/javascripts/nested-attribute.js +0 -26
  691. data/public/javascripts/open_id.js +0 -15
  692. data/public/javascripts/product.js +0 -49
  693. data/public/javascripts/rails.js +0 -127
  694. data/public/javascripts/taxonomy.js +0 -201
  695. data/public/javascripts/zone.js +0 -39
  696. data/public/stylesheets/admin/dashboard.css +0 -143
  697. data/public/stylesheets/admin/edit_checkouts.css +0 -57
  698. data/public/stylesheets/admin/reset-fonts-grids-2-6-0.css +0 -7
  699. data/public/stylesheets/admin/yui-includes.css +0 -14
  700. data/public/stylesheets/datepicker.css +0 -263
  701. data/public/stylesheets/jquery.autocomplete.css +0 -48
  702. data/public/stylesheets/screen.css +0 -916
@@ -1,6 +1,14 @@
1
1
  class Admin::VariantsController < Admin::ResourceController
2
2
  belongs_to :product, :find_by => :permalink
3
3
  create.before :create_before
4
+ new_action.before :new_before
5
+
6
+ def index
7
+ respond_with(collection) do |format|
8
+ format.html
9
+ format.json { render :json => json_data }
10
+ end
11
+ end
4
12
 
5
13
  # override the destory method to set deleted_at value
6
14
  # instead of actually deleting the product.
@@ -38,6 +46,12 @@ class Admin::VariantsController < Admin::ResourceController
38
46
  @object.save
39
47
  end
40
48
 
49
+
50
+ def new_before
51
+ @object.attributes = @object.product.master.attributes.except('id', 'created_at', 'deleted_at',
52
+ 'sku', 'is_master', 'count_on_hand')
53
+ end
54
+
41
55
  def collection
42
56
  @deleted = (params.key?(:deleted) && params[:deleted] == "on") ? "checked" : ""
43
57
 
@@ -48,4 +62,12 @@ class Admin::VariantsController < Admin::ResourceController
48
62
  end
49
63
  @collection
50
64
  end
65
+
66
+ def json_data
67
+ ( parent.variants.presence || [parent.master] ).map do |v|
68
+ { :label => v.options_text.presence || v.name, :id => v.id }
69
+ end
70
+ end
71
+
51
72
  end
73
+
@@ -12,7 +12,7 @@ class Admin::ZonesController < Admin::ResourceController
12
12
  params[:search] ||= {}
13
13
  params[:search][:meta_sort] ||= "ascend_by_name"
14
14
  @search = super.metasearch(params[:search])
15
- @zones = @search.paginate(:per_page => Spree::Config[:orders_per_page], :page => params[:page])
15
+ @zones = @search.relation.page(params[:page]).per(Spree::Config[:orders_per_page])
16
16
  end
17
17
 
18
18
  def load_data
@@ -12,6 +12,12 @@ class CheckoutController < Spree::BaseController
12
12
  # Updates the order and advances to the next state (when possible.)
13
13
  def update
14
14
  if @order.update_attributes(object_params)
15
+
16
+ fire_event('spree.checkout.update')
17
+ if @order.respond_to?(:coupon_code) && @order.coupon_code.present?
18
+ fire_event('spree.checkout.coupon_code_added', :coupon_code => @order.coupon_code)
19
+ end
20
+
15
21
  if @order.next
16
22
  state_callback(:after)
17
23
  else
@@ -9,7 +9,7 @@ class ContentController < Spree::BaseController
9
9
 
10
10
  def show
11
11
  respond_with do |format|
12
- format.html { render :template => params[:path] }
12
+ format.html { render :action => params[:path] }
13
13
  end
14
14
  end
15
15
 
@@ -0,0 +1,10 @@
1
+ class HomeController < Spree::BaseController
2
+ helper :products
3
+ respond_to :html
4
+
5
+ def index
6
+ @searcher = Spree::Config.searcher_class.new(params)
7
+ @products = @searcher.retrieve_products
8
+ respond_with(@products)
9
+ end
10
+ end
@@ -1,20 +1,22 @@
1
1
  class OrdersController < Spree::BaseController
2
- respond_to :html
3
-
2
+ rescue_from ActiveRecord::RecordNotFound, :with => :render_404
4
3
  helper :products
5
4
 
5
+ respond_to :html
6
6
 
7
7
  def show
8
- @order = Order.find_by_number(params[:id])
8
+ @order = Order.find_by_number!(params[:id])
9
+ respond_with(@order)
9
10
  end
10
11
 
11
12
  def update
12
13
  @order = current_order
13
14
  if @order.update_attributes(params[:order])
14
15
  @order.line_items = @order.line_items.select {|li| li.quantity > 0 }
16
+ fire_event('spree.order.contents_changed')
15
17
  respond_with(@order) { |format| format.html { redirect_to cart_path } }
16
18
  else
17
- respond_with(@order)
19
+ respond_with(@order)
18
20
  end
19
21
  end
20
22
 
@@ -38,7 +40,7 @@ class OrdersController < Spree::BaseController
38
40
 
39
41
  params[:products].each do |product_id,variant_id|
40
42
  quantity = params[:quantity].to_i if !params[:quantity].is_a?(Hash)
41
- quantity = params[:quantity][variant_id].to_i if params[:quantity].is_a?(Hash)
43
+ quantity = params[:quantity][variant_id.to_i].to_i if params[:quantity].is_a?(Hash)
42
44
  @order.add_variant(Variant.find(variant_id), quantity) if quantity > 0
43
45
  end if params[:products]
44
46
 
@@ -47,6 +49,8 @@ class OrdersController < Spree::BaseController
47
49
  @order.add_variant(Variant.find(variant_id), quantity) if quantity > 0
48
50
  end if params[:variants]
49
51
 
52
+ fire_event('spree.cart.add')
53
+ fire_event('spree.order.contents_changed')
50
54
  respond_with(@order) { |format| format.html { redirect_to cart_path } }
51
55
  end
52
56
 
@@ -54,11 +58,11 @@ class OrdersController < Spree::BaseController
54
58
  if @order = current_order
55
59
  @order.line_items.destroy_all
56
60
  end
57
-
61
+
58
62
  respond_with(@order) { |format| format.html { redirect_to cart_path } }
59
63
  end
60
64
 
61
65
  def accurate_title
62
- @order && @order.completed? ? "#{Order.human_name} #{@order.number}" : I18n.t(:shopping_cart)
66
+ @order && @order.completed? ? "#{Order.model_name.human} #{@order.number}" : I18n.t(:shopping_cart)
63
67
  end
64
68
  end
@@ -8,7 +8,6 @@ class ProductsController < Spree::BaseController
8
8
  def index
9
9
  @searcher = Spree::Config.searcher_class.new(params)
10
10
  @products = @searcher.retrieve_products
11
-
12
11
  respond_with(@products)
13
12
  end
14
13
 
@@ -1,10 +1,11 @@
1
1
  module Admin::BaseHelper
2
2
 
3
3
  def field_container(model, method, options = {}, &block)
4
- unless error_message_on(model, method).blank?
5
- css_class = 'withError'
4
+ css_classes = options[:class].to_a
5
+ if error_message_on(model, method).present?
6
+ css_classes << 'withError'
6
7
  end
7
- content_tag('p', capture(&block), :class => css_class)
8
+ content_tag('p', capture(&block), :class => css_classes.join(' '), :id => "#{model}_#{method}_field")
8
9
  end
9
10
 
10
11
  def error_message_on(object, method, options = {})
@@ -19,11 +20,6 @@ module Admin::BaseHelper
19
20
  end
20
21
  end
21
22
 
22
- def spree_date_picker(object, method, options = {}, html_options = {})
23
- options.merge!(:format => "y-m-d")
24
- unobtrusive_date_text_picker(object, method, options, html_options)
25
- end
26
-
27
23
  def class_for_error(model, method)
28
24
  if error_message_on :product, :name
29
25
  end
@@ -15,7 +15,7 @@ module Admin::NavigationHelper
15
15
  destination_url = send("#{options[:route]}_path")
16
16
 
17
17
  ## if more than one form, it'll capitalize all words
18
- label_with_first_letters_capitalized = t(options[:label]).gsub(/\b\w/){$&.upcase}
18
+ label_with_first_letters_capitalized = t(options[:label], :default => options[:label]).gsub(/\b\w/){$&.upcase}
19
19
 
20
20
  link = link_to(label_with_first_letters_capitalized, destination_url)
21
21
 
@@ -98,7 +98,7 @@ module Admin::NavigationHelper
98
98
  end
99
99
 
100
100
  def icon(icon_name)
101
- icon_name ? image_tag("/images/admin/icons/#{icon_name}.png") : ''
101
+ icon_name ? image_tag("admin/icons/#{icon_name}.png") : ''
102
102
  end
103
103
 
104
104
  def button(text, icon_name = nil, button_type = 'submit', options={})
@@ -158,5 +158,12 @@ module Admin::NavigationHelper
158
158
  </tr>
159
159
  ).html_safe
160
160
  end
161
+
162
+ def configurations_sidebar_menu_item(link_text, url, options = {})
163
+ options.merge!(:class => url.include?(controller.controller_name) ? 'active' : nil)
164
+ content_tag(:li, options) do
165
+ link_to(link_text, url)
166
+ end
167
+ end
161
168
 
162
169
  end
@@ -1,11 +1,15 @@
1
1
  module CheckoutHelper
2
2
 
3
- def checkout_progress
3
+ def checkout_states
4
4
  if Gateway.current and Gateway.current.payment_profiles_supported?
5
- states = %w(address delivery payment confirm complete)
5
+ %w(address delivery payment confirm complete)
6
6
  else
7
- states = %w(address delivery payment complete)
7
+ %w(address delivery payment complete)
8
8
  end
9
+ end
10
+
11
+ def checkout_progress
12
+ states = checkout_states
9
13
  items = states.map do |state|
10
14
  text = t("order_state.#{state}").titleize
11
15
 
@@ -1,20 +1,10 @@
1
1
  module HookHelper
2
2
 
3
- # Allow hooks to be used in views like this:
4
- #
5
- # <%= hook :some_hook %>
6
- #
7
- # <%= hook :some_hook do %>
8
- # <p>Some HTML</p>
9
- # <% end %>
10
- #
3
+ # This method is deprecated, left in place
4
+ # to prevent views from breaking
11
5
  def hook(hook_name, locals = {}, &block)
6
+ warn "[DEPRECATION] `hook` is deprecated"
12
7
  content = block_given? ? capture(&block) : ''
13
- Spree::ThemeSupport::Hook.render_hook(hook_name, content, self, locals)
8
+ content
14
9
  end
15
-
16
- def locals_hash(names, binding)
17
- names.inject({}) {|memo, key| memo[key.to_sym] = eval(key, binding); memo}
18
- end
19
-
20
- end
10
+ end
@@ -27,4 +27,8 @@ module ProductsHelper
27
27
  raw(product.description.gsub(/^(.*)$/, '<p>\1</p>'))
28
28
  end
29
29
 
30
+ def variant_images_hash(product)
31
+ product.variant_images.inject({}){|h, img| (h[img.viewable_id] ||= []) << img; h }
32
+ end
33
+
30
34
  end
@@ -20,8 +20,7 @@ module Spree::BaseHelper
20
20
  # overwrite show_vat_text if show_price_inc_vat is false
21
21
  options[:show_vat_text] = Spree::Config[:show_price_inc_vat]
22
22
 
23
- amount = order.item_total
24
- amount += Calculator::Vat.calculate_tax(order) if Spree::Config[:show_price_inc_vat]
23
+ amount = order.total
25
24
 
26
25
  options.delete(:format_as_currency) ? number_to_currency(amount) : amount
27
26
  end
@@ -37,7 +36,7 @@ module Spree::BaseHelper
37
36
  # human readable list of variant options
38
37
  def variant_options(v, allow_back_orders = Spree::Config[:allow_backorders], include_style = true)
39
38
  list = v.options_text
40
- list = include_style ? "<span class =\"out-of-stock\">(" + t("out_of_stock") + ") #{list}</span>" : "#{t("out_of_stock")} #{list}" unless (allow_back_orders || v.in_stock?)
39
+ list = include_style ? content_tag(:span, "(#{t(:out_of_stock)}) #{list}", :class => "out-of-stock") : "#{t(:out_of_stock)} #{list}" unless (allow_back_orders || v.in_stock?)
41
40
  list
42
41
  end
43
42
 
@@ -45,7 +44,7 @@ module Spree::BaseHelper
45
44
  define_method "#{style}_image" do |product, *options|
46
45
  options = options.first || {}
47
46
  if product.images.empty?
48
- image_tag "noimage/#{style}.jpg", options
47
+ image_tag "noimage/#{style}.png", options
49
48
  else
50
49
  image = product.images.first
51
50
  options.reverse_merge! :alt => image.alt.blank? ? product.name : image.alt
@@ -56,15 +55,21 @@ module Spree::BaseHelper
56
55
 
57
56
  def meta_data_tags
58
57
  object = instance_variable_get('@'+controller_name.singularize)
59
- return unless object
60
- "".tap do |tags|
61
- if object.respond_to?(:meta_keywords) and object.meta_keywords.present?
62
- tags << tag('meta', :name => 'keywords', :content => object.meta_keywords) + "\n"
63
- end
64
- if object.respond_to?(:meta_description) and object.meta_description.present?
65
- tags << tag('meta', :name => 'description', :content => object.meta_description) + "\n"
66
- end
58
+ meta = { :keywords => Spree::Config[:default_meta_keywords], :description => Spree::Config[:default_meta_description] }
59
+
60
+ if object.kind_of?(ActiveRecord::Base)
61
+ meta[:keywords] = object.meta_keywords if object[:meta_keywords].present?
62
+ meta[:description] = object.meta_description if object[:meta_description].present?
67
63
  end
64
+
65
+ meta.map do |name, content|
66
+ tag('meta', :name => name, :content => content)
67
+ end.join("\n")
68
+ end
69
+
70
+ def body_class
71
+ @body_class ||= content_for?(:sidebar) ? 'two-col' : 'one-col'
72
+ @body_class
68
73
  end
69
74
 
70
75
  def stylesheet_tags(paths=stylesheet_paths)
@@ -83,6 +88,44 @@ module Spree::BaseHelper
83
88
  def logo(image_path=Spree::Config[:logo])
84
89
  link_to image_tag(image_path), root_path
85
90
  end
91
+
92
+ def flash_messages
93
+ [:notice, :error].map do |msg_type|
94
+ if flash[msg_type]
95
+ content_tag :div, flash[msg_type], :class => "flash #{msg_type}"
96
+ else
97
+ ''
98
+ end
99
+ end.join("\n").html_safe
100
+ end
101
+
102
+ def breadcrumbs(taxon, separator="&nbsp;&raquo;&nbsp;")
103
+ return "" if current_page?("/") || taxon.nil?
104
+ separator = raw(separator)
105
+ crumbs = [content_tag(:li, link_to(t(:home) , root_path) + separator)]
106
+ if taxon
107
+ crumbs << content_tag(:li, link_to(t('products') , products_path) + separator)
108
+ crumbs << taxon.ancestors.collect { |ancestor| content_tag(:li, link_to(ancestor.name , seo_url(ancestor)) + separator) } unless taxon.ancestors.empty?
109
+ crumbs << content_tag(:li, content_tag(:span, taxon.name))
110
+ else
111
+ crumbs << content_tag(:li, content_tag(:span, t('products')))
112
+ end
113
+ crumb_list = content_tag(:ul, raw(crumbs.flatten.map{|li| li.mb_chars}.join))
114
+ content_tag(:div, crumb_list + tag(:br, {:class => 'clear'}, false, true), :id => 'breadcrumbs')
115
+ end
116
+
117
+ def taxons_tree(root_taxon, current_taxon, max_level = 1)
118
+ return '' if max_level < 1 || root_taxon.children.empty?
119
+ content_tag :ul, :class => 'taxons-list' do
120
+ root_taxon.children.map do |taxon|
121
+ css_class = (current_taxon && current_taxon.self_and_ancestors.include?(taxon)) ? 'current' : nil
122
+ content_tag :li, :class => css_class do
123
+ link_to(taxon.name, seo_url(taxon)) +
124
+ taxons_tree(taxon, current_taxon, max_level - 1)
125
+ end
126
+ end.join("\n").html_safe
127
+ end
128
+ end
86
129
 
87
130
  def available_countries
88
131
  return Country.all unless zone = Zone.find_by_name(Spree::Config[:checkout_zone])
@@ -1,20 +1,4 @@
1
1
  module TaxonsHelper
2
- def breadcrumbs(taxon, separator="&nbsp;&raquo;&nbsp;")
3
- return "" if current_page?("/")
4
- separator = raw(separator)
5
- crumbs = [content_tag(:li, link_to(t(:home) , root_path) + separator)]
6
- if taxon
7
- crumbs << content_tag(:li, link_to(t('products') , products_path) + separator)
8
- crumbs << taxon.ancestors.collect { |ancestor| content_tag(:li, link_to(ancestor.name , seo_url(ancestor)) + separator) } unless taxon.ancestors.empty?
9
- crumbs << content_tag(:li, content_tag(:span, taxon.name))
10
- else
11
- crumbs << content_tag(:li, content_tag(:span, t('products')))
12
- end
13
- crumb_list = content_tag(:ul, raw(crumbs.flatten.map{|li| li.mb_chars}.join))
14
- content_tag(:div, crumb_list + tag(:br, {:class => 'clear'}, false, true), :class => 'breadcrumbs')
15
- end
16
-
17
-
18
2
  # Retrieves the collection of products to display when "previewing" a taxon. This is abstracted into a helper so
19
3
  # that we can use configurations as well as make it easier for end users to override this determination. One idea is
20
4
  # to show the most popular products for a particular taxon (that is an exercise left to the developer.)
@@ -0,0 +1,10 @@
1
+ class TestMailer < ActionMailer::Base
2
+
3
+ def test_email(mail_method, user)
4
+ @mail_method = mail_method
5
+ subject = "#{Spree::Config[:site_name]} #{t('subject', :scope => 'test_mailer.test_email')}"
6
+ mail(:to => user.email,
7
+ :subject => subject)
8
+ end
9
+
10
+ end
@@ -0,0 +1,27 @@
1
+ class Activator < ActiveRecord::Base
2
+
3
+ cattr_accessor :event_names
4
+
5
+ self.event_names = [
6
+ 'spree.cart.add',
7
+ 'spree.checkout.coupon_code_added',
8
+ 'spree.order.contents_changed',
9
+ 'spree.user.signup'
10
+ ]
11
+
12
+ def self.register_event_name(name)
13
+ self.event_names << name
14
+ end
15
+
16
+ scope :event_name_starts_with, lambda{|name| where('event_name like ?', "#{name}%") }
17
+ scope :active, where('( starts_at IS NULL OR starts_at < ? ) AND ( expires_at IS NULL OR expires_at > ?)', Time.now, Time.now)
18
+
19
+ def activate(payload)
20
+ end
21
+
22
+ def expired?
23
+ starts_at && Time.now < starts_at ||
24
+ expires_at && Time.now > expires_at
25
+ end
26
+
27
+ end
@@ -1,4 +1,4 @@
1
- # Adjustments represent a change to the +item_total+ of an Order. Each adjustment has an +amount+ that be either
1
+
2
2
  # positive or negative. Adjustments have two useful boolean flags
3
3
  #
4
4
  # +mandatory+
@@ -13,6 +13,13 @@
13
13
  # The charge is never to be udpated. Typically you would want to freeze certain adjustments after checkout.
14
14
  # One use case for this is if you want to lock a shipping adjustment so that its value does not change
15
15
  # in the future when making other trivial edits to the order (like an email change).
16
+ #
17
+ # +eligible?+
18
+ #
19
+ # This boolean attributes stores whether this adjustment is currently eligible for its order. Only eligible
20
+ # adjustments count towards the order's adjustment total. This allows an adjustment to be preserved if it
21
+ # becomes ineligible so it might be reinstated.
22
+ #
16
23
  class Adjustment < ActiveRecord::Base
17
24
  belongs_to :order
18
25
  belongs_to :source, :polymorphic => true
@@ -21,27 +28,40 @@ class Adjustment < ActiveRecord::Base
21
28
  validates :label, :presence => true
22
29
  validates :amount, :numericality => true
23
30
 
24
- scope :tax, lambda { where(:label => I18n.t(:tax)) }
31
+ scope :tax, lambda { where(:originator_type => "TaxRate") }
25
32
  scope :shipping, lambda { where(:label => I18n.t(:shipping)) }
26
33
  scope :optional, where(:mandatory => false)
34
+ scope :eligible, where(:eligible => true)
27
35
 
28
36
  after_save { order.update! }
29
37
  after_destroy { order.update! }
30
38
 
31
- # Checks if adjustment is applicable for the order. Should return _true_ if adjustment should be preserved and
32
- # _false_ if removed. Default behaviour is to preserve adjustment if amount is present and non 0. Exceptions
33
- # are made if the adjustment is considered +mandatory+.
34
- def applicable?
35
- mandatory || amount != 0
39
+ # Update the boolean _eligible_ attribute which deterimes which adjustments count towards the order's
40
+ # adjustment_total.
41
+ def set_eligibility
42
+ update_attribute_without_callbacks(:eligible,
43
+ mandatory ||
44
+ (amount != 0 && eligible_for_originator?))
36
45
  end
37
46
 
38
- # Tells the adjustment that its time to update itself. Adjustments will delegate this request to their Originator
47
+ # Allow originator of the adjustment to perform an additional eligibility of the adjustment
48
+ # Should return _true_ if originator is absent or doesn't implement _eligible?_
49
+ def eligible_for_originator?
50
+ return true if originator.nil?
51
+ !originator.respond_to?(:eligible?) || originator.eligible?(source)
52
+ end
53
+
54
+
55
+ # Update both the eligibility and amount of the adjustment. Adjustments delegate updating of amount to their Originator
39
56
  # when present, but only if +locked+ is false. Adjustments that are +locked+ will never change their amount.
40
57
  # The new adjustment amount will be set by by the +originator+ and is not automatically saved. This makes it save
41
- # to use this method in an after_save hook for other models without causing an infinite recursion problem. If there
42
- # is no +originator+ then this method will have no effect.
58
+ # to use this method in an after_save hook for other models without causing an infinite recursion problem.
43
59
  def update!
44
- return if locked? || originator.nil?
45
- originator.update_adjustment(self, source)
60
+ return if locked?
61
+ set_eligibility
62
+ if originator.present?
63
+ originator.update_adjustment(self, source)
64
+ end
46
65
  end
66
+
47
67
  end