spree_frontend 2.4.10 → 3.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (378) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -0
  3. data/Gemfile +6 -0
  4. data/LICENSE +1 -1
  5. data/README.md +39 -10
  6. data/Rakefile +29 -0
  7. data/{vendor → app}/assets/images/flags/ad.png +0 -0
  8. data/{vendor → app}/assets/images/flags/ae.png +0 -0
  9. data/{vendor → app}/assets/images/flags/af.png +0 -0
  10. data/{vendor → app}/assets/images/flags/ag.png +0 -0
  11. data/{vendor → app}/assets/images/flags/ai.png +0 -0
  12. data/{vendor → app}/assets/images/flags/al.png +0 -0
  13. data/{vendor → app}/assets/images/flags/am.png +0 -0
  14. data/{vendor → app}/assets/images/flags/an.png +0 -0
  15. data/{vendor → app}/assets/images/flags/ao.png +0 -0
  16. data/{vendor → app}/assets/images/flags/ar.png +0 -0
  17. data/{vendor → app}/assets/images/flags/as.png +0 -0
  18. data/{vendor → app}/assets/images/flags/at.png +0 -0
  19. data/{vendor → app}/assets/images/flags/au.png +0 -0
  20. data/{vendor → app}/assets/images/flags/aw.png +0 -0
  21. data/{vendor → app}/assets/images/flags/ax.png +0 -0
  22. data/{vendor → app}/assets/images/flags/az.png +0 -0
  23. data/{vendor → app}/assets/images/flags/ba.png +0 -0
  24. data/{vendor → app}/assets/images/flags/bb.png +0 -0
  25. data/{vendor → app}/assets/images/flags/bd.png +0 -0
  26. data/{vendor → app}/assets/images/flags/be.png +0 -0
  27. data/{vendor → app}/assets/images/flags/bf.png +0 -0
  28. data/{vendor → app}/assets/images/flags/bg.png +0 -0
  29. data/{vendor → app}/assets/images/flags/bh.png +0 -0
  30. data/{vendor → app}/assets/images/flags/bi.png +0 -0
  31. data/{vendor → app}/assets/images/flags/bj.png +0 -0
  32. data/{vendor → app}/assets/images/flags/bm.png +0 -0
  33. data/{vendor → app}/assets/images/flags/bn.png +0 -0
  34. data/{vendor → app}/assets/images/flags/bo.png +0 -0
  35. data/{vendor → app}/assets/images/flags/br.png +0 -0
  36. data/{vendor → app}/assets/images/flags/bs.png +0 -0
  37. data/{vendor → app}/assets/images/flags/bt.png +0 -0
  38. data/{vendor → app}/assets/images/flags/bv.png +0 -0
  39. data/{vendor → app}/assets/images/flags/bw.png +0 -0
  40. data/{vendor → app}/assets/images/flags/by.png +0 -0
  41. data/{vendor → app}/assets/images/flags/bz.png +0 -0
  42. data/{vendor → app}/assets/images/flags/ca.png +0 -0
  43. data/{vendor → app}/assets/images/flags/catalonia.png +0 -0
  44. data/{vendor → app}/assets/images/flags/cc.png +0 -0
  45. data/{vendor → app}/assets/images/flags/cd.png +0 -0
  46. data/{vendor → app}/assets/images/flags/cf.png +0 -0
  47. data/{vendor → app}/assets/images/flags/cg.png +0 -0
  48. data/{vendor → app}/assets/images/flags/ch.png +0 -0
  49. data/{vendor → app}/assets/images/flags/ci.png +0 -0
  50. data/{vendor → app}/assets/images/flags/ck.png +0 -0
  51. data/{vendor → app}/assets/images/flags/cl.png +0 -0
  52. data/{vendor → app}/assets/images/flags/cm.png +0 -0
  53. data/{vendor → app}/assets/images/flags/cn.png +0 -0
  54. data/{vendor → app}/assets/images/flags/co.png +0 -0
  55. data/{vendor → app}/assets/images/flags/cr.png +0 -0
  56. data/{vendor → app}/assets/images/flags/cs.png +0 -0
  57. data/{vendor → app}/assets/images/flags/cu.png +0 -0
  58. data/{vendor → app}/assets/images/flags/cv.png +0 -0
  59. data/{vendor → app}/assets/images/flags/cx.png +0 -0
  60. data/{vendor → app}/assets/images/flags/cy.png +0 -0
  61. data/{vendor → app}/assets/images/flags/cz.png +0 -0
  62. data/{vendor → app}/assets/images/flags/de.png +0 -0
  63. data/{vendor → app}/assets/images/flags/dj.png +0 -0
  64. data/{vendor → app}/assets/images/flags/dk.png +0 -0
  65. data/{vendor → app}/assets/images/flags/dm.png +0 -0
  66. data/{vendor → app}/assets/images/flags/do.png +0 -0
  67. data/{vendor → app}/assets/images/flags/dz.png +0 -0
  68. data/{vendor → app}/assets/images/flags/ec.png +0 -0
  69. data/{vendor → app}/assets/images/flags/ee.png +0 -0
  70. data/{vendor → app}/assets/images/flags/eg.png +0 -0
  71. data/{vendor → app}/assets/images/flags/eh.png +0 -0
  72. data/{vendor → app}/assets/images/flags/england.png +0 -0
  73. data/{vendor → app}/assets/images/flags/er.png +0 -0
  74. data/{vendor → app}/assets/images/flags/es.png +0 -0
  75. data/{vendor → app}/assets/images/flags/et.png +0 -0
  76. data/{vendor → app}/assets/images/flags/europeanunion.png +0 -0
  77. data/{vendor → app}/assets/images/flags/fam.png +0 -0
  78. data/{vendor → app}/assets/images/flags/fi.png +0 -0
  79. data/{vendor → app}/assets/images/flags/fj.png +0 -0
  80. data/{vendor → app}/assets/images/flags/fk.png +0 -0
  81. data/{vendor → app}/assets/images/flags/fm.png +0 -0
  82. data/{vendor → app}/assets/images/flags/fo.png +0 -0
  83. data/{vendor → app}/assets/images/flags/fr.png +0 -0
  84. data/{vendor → app}/assets/images/flags/ga.png +0 -0
  85. data/{vendor → app}/assets/images/flags/gb.png +0 -0
  86. data/{vendor → app}/assets/images/flags/gd.png +0 -0
  87. data/{vendor → app}/assets/images/flags/ge.png +0 -0
  88. data/{vendor → app}/assets/images/flags/gf.png +0 -0
  89. data/{vendor → app}/assets/images/flags/gh.png +0 -0
  90. data/{vendor → app}/assets/images/flags/gi.png +0 -0
  91. data/{vendor → app}/assets/images/flags/gl.png +0 -0
  92. data/{vendor → app}/assets/images/flags/gm.png +0 -0
  93. data/{vendor → app}/assets/images/flags/gn.png +0 -0
  94. data/{vendor → app}/assets/images/flags/gp.png +0 -0
  95. data/{vendor → app}/assets/images/flags/gq.png +0 -0
  96. data/{vendor → app}/assets/images/flags/gr.png +0 -0
  97. data/{vendor → app}/assets/images/flags/gs.png +0 -0
  98. data/{vendor → app}/assets/images/flags/gt.png +0 -0
  99. data/{vendor → app}/assets/images/flags/gu.png +0 -0
  100. data/{vendor → app}/assets/images/flags/gw.png +0 -0
  101. data/{vendor → app}/assets/images/flags/gy.png +0 -0
  102. data/{vendor → app}/assets/images/flags/hk.png +0 -0
  103. data/{vendor → app}/assets/images/flags/hm.png +0 -0
  104. data/{vendor → app}/assets/images/flags/hn.png +0 -0
  105. data/{vendor → app}/assets/images/flags/hr.png +0 -0
  106. data/{vendor → app}/assets/images/flags/ht.png +0 -0
  107. data/{vendor → app}/assets/images/flags/hu.png +0 -0
  108. data/{vendor → app}/assets/images/flags/id.png +0 -0
  109. data/{vendor → app}/assets/images/flags/ie.png +0 -0
  110. data/{vendor → app}/assets/images/flags/il.png +0 -0
  111. data/{vendor → app}/assets/images/flags/in.png +0 -0
  112. data/{vendor → app}/assets/images/flags/io.png +0 -0
  113. data/{vendor → app}/assets/images/flags/iq.png +0 -0
  114. data/{vendor → app}/assets/images/flags/ir.png +0 -0
  115. data/{vendor → app}/assets/images/flags/is.png +0 -0
  116. data/{vendor → app}/assets/images/flags/it.png +0 -0
  117. data/{vendor → app}/assets/images/flags/ja.png +0 -0
  118. data/{vendor → app}/assets/images/flags/jm.png +0 -0
  119. data/{vendor → app}/assets/images/flags/jo.png +0 -0
  120. data/{vendor → app}/assets/images/flags/ke.png +0 -0
  121. data/{vendor → app}/assets/images/flags/kg.png +0 -0
  122. data/{vendor → app}/assets/images/flags/kh.png +0 -0
  123. data/{vendor → app}/assets/images/flags/ki.png +0 -0
  124. data/{vendor → app}/assets/images/flags/km.png +0 -0
  125. data/{vendor → app}/assets/images/flags/kn.png +0 -0
  126. data/{vendor → app}/assets/images/flags/kp.png +0 -0
  127. data/{vendor → app}/assets/images/flags/kr.png +0 -0
  128. data/{vendor → app}/assets/images/flags/kw.png +0 -0
  129. data/{vendor → app}/assets/images/flags/ky.png +0 -0
  130. data/{vendor → app}/assets/images/flags/kz.png +0 -0
  131. data/{vendor → app}/assets/images/flags/la.png +0 -0
  132. data/{vendor → app}/assets/images/flags/lb.png +0 -0
  133. data/{vendor → app}/assets/images/flags/lc.png +0 -0
  134. data/{vendor → app}/assets/images/flags/li.png +0 -0
  135. data/{vendor → app}/assets/images/flags/lk.png +0 -0
  136. data/{vendor → app}/assets/images/flags/lr.png +0 -0
  137. data/{vendor → app}/assets/images/flags/ls.png +0 -0
  138. data/{vendor → app}/assets/images/flags/lt.png +0 -0
  139. data/{vendor → app}/assets/images/flags/lu.png +0 -0
  140. data/{vendor → app}/assets/images/flags/lv.png +0 -0
  141. data/{vendor → app}/assets/images/flags/ly.png +0 -0
  142. data/{vendor → app}/assets/images/flags/ma.png +0 -0
  143. data/{vendor → app}/assets/images/flags/mc.png +0 -0
  144. data/{vendor → app}/assets/images/flags/md.png +0 -0
  145. data/{vendor → app}/assets/images/flags/me.png +0 -0
  146. data/{vendor → app}/assets/images/flags/mg.png +0 -0
  147. data/{vendor → app}/assets/images/flags/mh.png +0 -0
  148. data/{vendor → app}/assets/images/flags/mk.png +0 -0
  149. data/{vendor → app}/assets/images/flags/ml.png +0 -0
  150. data/{vendor → app}/assets/images/flags/mm.png +0 -0
  151. data/{vendor → app}/assets/images/flags/mn.png +0 -0
  152. data/{vendor → app}/assets/images/flags/mo.png +0 -0
  153. data/{vendor → app}/assets/images/flags/mp.png +0 -0
  154. data/{vendor → app}/assets/images/flags/mq.png +0 -0
  155. data/{vendor → app}/assets/images/flags/mr.png +0 -0
  156. data/{vendor → app}/assets/images/flags/ms.png +0 -0
  157. data/{vendor → app}/assets/images/flags/mt.png +0 -0
  158. data/{vendor → app}/assets/images/flags/mu.png +0 -0
  159. data/{vendor → app}/assets/images/flags/mv.png +0 -0
  160. data/{vendor → app}/assets/images/flags/mw.png +0 -0
  161. data/{vendor → app}/assets/images/flags/mx.png +0 -0
  162. data/{vendor → app}/assets/images/flags/my.png +0 -0
  163. data/{vendor → app}/assets/images/flags/mz.png +0 -0
  164. data/{vendor → app}/assets/images/flags/na.png +0 -0
  165. data/{vendor → app}/assets/images/flags/nc.png +0 -0
  166. data/{vendor → app}/assets/images/flags/ne.png +0 -0
  167. data/{vendor → app}/assets/images/flags/nf.png +0 -0
  168. data/{vendor → app}/assets/images/flags/ng.png +0 -0
  169. data/{vendor → app}/assets/images/flags/ni.png +0 -0
  170. data/{vendor → app}/assets/images/flags/nl.png +0 -0
  171. data/{vendor → app}/assets/images/flags/no.png +0 -0
  172. data/{vendor → app}/assets/images/flags/np.png +0 -0
  173. data/{vendor → app}/assets/images/flags/nr.png +0 -0
  174. data/{vendor → app}/assets/images/flags/nu.png +0 -0
  175. data/{vendor → app}/assets/images/flags/nz.png +0 -0
  176. data/{vendor → app}/assets/images/flags/om.png +0 -0
  177. data/{vendor → app}/assets/images/flags/pa.png +0 -0
  178. data/{vendor → app}/assets/images/flags/pe.png +0 -0
  179. data/{vendor → app}/assets/images/flags/pf.png +0 -0
  180. data/{vendor → app}/assets/images/flags/pg.png +0 -0
  181. data/{vendor → app}/assets/images/flags/ph.png +0 -0
  182. data/{vendor → app}/assets/images/flags/pk.png +0 -0
  183. data/{vendor → app}/assets/images/flags/pl.png +0 -0
  184. data/{vendor → app}/assets/images/flags/pm.png +0 -0
  185. data/{vendor → app}/assets/images/flags/pn.png +0 -0
  186. data/{vendor → app}/assets/images/flags/pr.png +0 -0
  187. data/{vendor → app}/assets/images/flags/ps.png +0 -0
  188. data/{vendor → app}/assets/images/flags/pt.png +0 -0
  189. data/{vendor → app}/assets/images/flags/pw.png +0 -0
  190. data/{vendor → app}/assets/images/flags/py.png +0 -0
  191. data/{vendor → app}/assets/images/flags/qa.png +0 -0
  192. data/{vendor → app}/assets/images/flags/re.png +0 -0
  193. data/{vendor → app}/assets/images/flags/ro.png +0 -0
  194. data/{vendor → app}/assets/images/flags/rs.png +0 -0
  195. data/{vendor → app}/assets/images/flags/ru.png +0 -0
  196. data/{vendor → app}/assets/images/flags/rw.png +0 -0
  197. data/{vendor → app}/assets/images/flags/sa.png +0 -0
  198. data/{vendor → app}/assets/images/flags/sb.png +0 -0
  199. data/{vendor → app}/assets/images/flags/sc.png +0 -0
  200. data/{vendor → app}/assets/images/flags/scotland.png +0 -0
  201. data/{vendor → app}/assets/images/flags/sd.png +0 -0
  202. data/{vendor → app}/assets/images/flags/se.png +0 -0
  203. data/{vendor → app}/assets/images/flags/sg.png +0 -0
  204. data/{vendor → app}/assets/images/flags/sh.png +0 -0
  205. data/{vendor → app}/assets/images/flags/si.png +0 -0
  206. data/{vendor → app}/assets/images/flags/sj.png +0 -0
  207. data/{vendor → app}/assets/images/flags/sk.png +0 -0
  208. data/{vendor → app}/assets/images/flags/sl.png +0 -0
  209. data/{vendor → app}/assets/images/flags/sm.png +0 -0
  210. data/{vendor → app}/assets/images/flags/sn.png +0 -0
  211. data/{vendor → app}/assets/images/flags/so.png +0 -0
  212. data/{vendor → app}/assets/images/flags/sr.png +0 -0
  213. data/{vendor → app}/assets/images/flags/st.png +0 -0
  214. data/{vendor → app}/assets/images/flags/sv.png +0 -0
  215. data/{vendor → app}/assets/images/flags/sy.png +0 -0
  216. data/{vendor → app}/assets/images/flags/sz.png +0 -0
  217. data/{vendor → app}/assets/images/flags/tc.png +0 -0
  218. data/{vendor → app}/assets/images/flags/td.png +0 -0
  219. data/{vendor → app}/assets/images/flags/tf.png +0 -0
  220. data/{vendor → app}/assets/images/flags/tg.png +0 -0
  221. data/{vendor → app}/assets/images/flags/th.png +0 -0
  222. data/{vendor → app}/assets/images/flags/tj.png +0 -0
  223. data/{vendor → app}/assets/images/flags/tk.png +0 -0
  224. data/{vendor → app}/assets/images/flags/tl.png +0 -0
  225. data/{vendor → app}/assets/images/flags/tm.png +0 -0
  226. data/{vendor → app}/assets/images/flags/tn.png +0 -0
  227. data/{vendor → app}/assets/images/flags/to.png +0 -0
  228. data/{vendor → app}/assets/images/flags/tr.png +0 -0
  229. data/{vendor → app}/assets/images/flags/tt.png +0 -0
  230. data/{vendor → app}/assets/images/flags/tv.png +0 -0
  231. data/{vendor → app}/assets/images/flags/tw.png +0 -0
  232. data/{vendor → app}/assets/images/flags/tz.png +0 -0
  233. data/{vendor → app}/assets/images/flags/ua.png +0 -0
  234. data/{vendor → app}/assets/images/flags/ug.png +0 -0
  235. data/{vendor → app}/assets/images/flags/um.png +0 -0
  236. data/{vendor → app}/assets/images/flags/us.png +0 -0
  237. data/{vendor → app}/assets/images/flags/uy.png +0 -0
  238. data/{vendor → app}/assets/images/flags/uz.png +0 -0
  239. data/{vendor → app}/assets/images/flags/va.png +0 -0
  240. data/{vendor → app}/assets/images/flags/vc.png +0 -0
  241. data/{vendor → app}/assets/images/flags/ve.png +0 -0
  242. data/{vendor → app}/assets/images/flags/vg.png +0 -0
  243. data/{vendor → app}/assets/images/flags/vi.png +0 -0
  244. data/{vendor → app}/assets/images/flags/vn.png +0 -0
  245. data/{vendor → app}/assets/images/flags/vu.png +0 -0
  246. data/{vendor → app}/assets/images/flags/wales.png +0 -0
  247. data/{vendor → app}/assets/images/flags/wf.png +0 -0
  248. data/{vendor → app}/assets/images/flags/ws.png +0 -0
  249. data/{vendor → app}/assets/images/flags/ye.png +0 -0
  250. data/{vendor → app}/assets/images/flags/yt.png +0 -0
  251. data/{vendor → app}/assets/images/flags/za.png +0 -0
  252. data/{vendor → app}/assets/images/flags/zm.png +0 -0
  253. data/{vendor → app}/assets/images/flags/zw.png +0 -0
  254. data/app/assets/images/logo/spree_50.png +0 -0
  255. data/app/assets/images/spree_header.jpg +0 -0
  256. data/app/assets/javascripts/spree/frontend.js +1 -1
  257. data/app/assets/javascripts/spree/frontend/checkout/payment.js.coffee +2 -2
  258. data/app/assets/stylesheets/spree/frontend.css +4 -4
  259. data/app/assets/stylesheets/spree/frontend/_variables.scss +4 -61
  260. data/app/assets/stylesheets/spree/frontend/frontend_bootstrap.css.scss +102 -0
  261. data/app/controllers/spree/checkout_controller.rb +31 -27
  262. data/app/controllers/spree/orders_controller.rb +20 -8
  263. data/app/controllers/spree/store_controller.rb +2 -3
  264. data/app/controllers/spree/taxons_controller.rb +2 -2
  265. data/app/helpers/spree/frontend_helper.rb +93 -0
  266. data/app/helpers/spree/orders_helper.rb +16 -0
  267. data/app/helpers/spree/store_helper.rb +10 -0
  268. data/app/helpers/spree/taxons_helper.rb +19 -0
  269. data/app/models/spree/frontend_configuration.rb +1 -1
  270. data/app/views/kaminari/twitter-bootstrap-3/_first_page.html.erb +13 -0
  271. data/app/views/kaminari/twitter-bootstrap-3/_gap.html.erb +8 -0
  272. data/app/views/kaminari/twitter-bootstrap-3/_last_page.html.erb +13 -0
  273. data/app/views/kaminari/twitter-bootstrap-3/_next_page.html.erb +13 -0
  274. data/app/views/kaminari/twitter-bootstrap-3/_page.html.erb +12 -0
  275. data/app/views/kaminari/twitter-bootstrap-3/_paginator.html.erb +24 -0
  276. data/app/views/kaminari/twitter-bootstrap-3/_prev_page.html.erb +13 -0
  277. data/app/views/spree/address/_form.html.erb +24 -24
  278. data/app/views/spree/checkout/_address.html.erb +33 -22
  279. data/app/views/spree/checkout/_confirm.html.erb +10 -9
  280. data/app/views/spree/checkout/_delivery.html.erb +24 -20
  281. data/app/views/spree/checkout/_payment.html.erb +17 -18
  282. data/app/views/spree/checkout/_summary.html.erb +2 -2
  283. data/app/views/spree/checkout/edit.html.erb +23 -14
  284. data/app/views/spree/checkout/payment/_gateway.html.erb +31 -28
  285. data/app/views/spree/layouts/spree_application.html.erb +6 -12
  286. data/app/views/spree/orders/_adjustments.html.erb +5 -0
  287. data/app/views/spree/orders/_form.html.erb +8 -8
  288. data/app/views/spree/orders/_line_item.html.erb +6 -6
  289. data/app/views/spree/orders/edit.html.erb +14 -16
  290. data/app/views/spree/orders/show.html.erb +9 -4
  291. data/app/views/spree/products/_cart_form.html.erb +15 -11
  292. data/app/views/spree/products/_promotions.html.erb +1 -1
  293. data/app/views/spree/products/_properties.html.erb +2 -2
  294. data/app/views/spree/products/_taxons.html.erb +4 -4
  295. data/app/views/spree/products/_thumbnails.html.erb +3 -3
  296. data/app/views/spree/products/index.html.erb +13 -9
  297. data/app/views/spree/products/show.html.erb +11 -9
  298. data/app/views/spree/shared/_error_messages.html.erb +12 -0
  299. data/app/views/spree/shared/_filters.html.erb +4 -4
  300. data/app/views/spree/shared/_footer.html.erb +10 -6
  301. data/app/views/spree/shared/_google_add_items.js.erb +11 -0
  302. data/app/views/spree/shared/_google_analytics.js.erb +13 -0
  303. data/app/views/spree/shared/_google_checkout.js.erb +10 -0
  304. data/app/views/spree/shared/_google_purchase.js.erb +13 -0
  305. data/app/views/spree/shared/_head.html.erb +1 -1
  306. data/app/views/spree/shared/_header.html.erb +17 -5
  307. data/app/views/spree/shared/_login.html.erb +19 -0
  308. data/app/views/spree/shared/_login_bar.html.erb +6 -0
  309. data/app/views/spree/shared/_main_nav_bar.html.erb +15 -11
  310. data/app/views/spree/shared/_nav_bar.html.erb +3 -2
  311. data/app/views/spree/shared/_order_details.html.erb +30 -31
  312. data/app/views/spree/shared/_products.html.erb +19 -15
  313. data/app/views/spree/shared/_search.html.erb +8 -4
  314. data/app/views/spree/shared/_sidebar.html.erb +1 -1
  315. data/app/views/spree/shared/_taxonomies.html.erb +1 -1
  316. data/app/views/spree/taxons/show.html.erb +1 -1
  317. data/config/initializers/spree.rb +0 -2
  318. data/lib/spree/frontend.rb +5 -4
  319. data/lib/spree/frontend/engine.rb +2 -2
  320. data/script/rails +9 -0
  321. data/spec/controllers/controller_extension_spec.rb +115 -0
  322. data/spec/controllers/controller_helpers_spec.rb +26 -0
  323. data/spec/controllers/spree/checkout_controller_spec.rb +424 -0
  324. data/spec/controllers/spree/checkout_controller_with_views_spec.rb +36 -0
  325. data/spec/controllers/spree/content_controller_spec.rb +12 -0
  326. data/spec/controllers/spree/current_order_tracking_spec.rb +44 -0
  327. data/spec/controllers/spree/home_controller_spec.rb +27 -0
  328. data/spec/controllers/spree/orders_controller_ability_spec.rb +104 -0
  329. data/spec/controllers/spree/orders_controller_spec.rb +134 -0
  330. data/spec/controllers/spree/orders_controller_transitions_spec.rb +31 -0
  331. data/spec/controllers/spree/products_controller_spec.rb +36 -0
  332. data/spec/controllers/spree/taxons_controller_spec.rb +12 -0
  333. data/spec/features/address_spec.rb +93 -0
  334. data/spec/features/automatic_promotion_adjustments_spec.rb +47 -0
  335. data/spec/features/caching/products_spec.rb +55 -0
  336. data/spec/features/caching/taxons_spec.rb +22 -0
  337. data/spec/features/cart_spec.rb +84 -0
  338. data/spec/features/checkout_spec.rb +515 -0
  339. data/spec/features/checkout_unshippable_spec.rb +34 -0
  340. data/spec/features/coupon_code_spec.rb +87 -0
  341. data/spec/features/currency_spec.rb +18 -0
  342. data/spec/features/free_shipping_promotions_spec.rb +59 -0
  343. data/spec/features/locale_spec.rb +60 -0
  344. data/spec/features/order_spec.rb +74 -0
  345. data/spec/features/page_promotions_spec.rb +36 -0
  346. data/spec/features/products_spec.rb +262 -0
  347. data/spec/features/taxons_spec.rb +147 -0
  348. data/spec/features/template_rendering_spec.rb +19 -0
  349. data/spec/fixtures/thinking-cat.jpg +0 -0
  350. data/spec/helpers/frontend_helper_spec.rb +41 -0
  351. data/spec/helpers/order_helper_spec.rb +12 -0
  352. data/spec/helpers/taxons_helper_spec.rb +17 -0
  353. data/spec/spec_helper.rb +115 -0
  354. data/spec/support/shared_contexts/checkout_setup.rb +9 -0
  355. data/spec/support/shared_contexts/custom_products.rb +25 -0
  356. data/spec/support/shared_contexts/product_prototypes.rb +30 -0
  357. data/spec/views/spree/checkout/_summary_spec.rb +11 -0
  358. data/spree_frontend.gemspec +30 -0
  359. metadata +392 -282
  360. data/app/assets/images/icons/add-to-cart.png +0 -0
  361. data/app/assets/images/icons/checkout.png +0 -0
  362. data/app/assets/images/icons/delete.png +0 -0
  363. data/app/assets/images/icons/update.png +0 -0
  364. data/app/assets/images/spinner.gif +0 -0
  365. data/app/assets/images/spree/frontend/cart.png +0 -0
  366. data/app/assets/images/spree/frontend/select_arrow.gif +0 -0
  367. data/app/assets/stylesheets/spree/frontend/screen.css.scss +0 -1321
  368. data/app/views/spree/shared/_google_analytics.html.erb +0 -40
  369. data/config/initializers/assets.rb +0 -1
  370. data/config/initializers/check_for_orphaned_preferences.rb +0 -9
  371. data/config/initializers/deprecation_checker.rb +0 -7
  372. data/config/initializers/rails_5868.rb +0 -8
  373. data/lib/spree/frontend/preference_rescue.rb +0 -25
  374. data/vendor/assets/images/datepicker/cal.gif +0 -0
  375. data/vendor/assets/images/jquery.formalize/button.png +0 -0
  376. data/vendor/assets/images/jquery.formalize/select_arrow.gif +0 -0
  377. data/vendor/assets/javascripts/jquery.formalize.min.js +0 -1
  378. data/vendor/assets/stylesheets/jquery.formalize.css.erb +0 -363
@@ -1,5 +1,5 @@
1
1
  //= require jquery.validate/jquery.validate.min
2
2
  //= require spree
3
+ //= require spree/frontend/cart
3
4
  //= require spree/frontend/checkout
4
5
  //= require spree/frontend/product
5
- //= require spree/frontend/cart
@@ -67,11 +67,11 @@ Spree.ready ($) ->
67
67
  url: url,
68
68
  success: (data) ->
69
69
  coupon_code_field.val('')
70
- coupon_status.addClass("success").html("Coupon code applied successfully.")
70
+ coupon_status.addClass("alert-success").html("Coupon code applied successfully.")
71
71
  return true
72
72
  error: (xhr) ->
73
73
  handler = JSON.parse(xhr.responseText)
74
- coupon_status.addClass("error").html(handler["error"])
74
+ coupon_status.addClass("alert-error").html(handler["error"])
75
75
  $('.continue').attr('disabled', false)
76
76
  return false
77
77
  })
@@ -1,6 +1,6 @@
1
1
  /*
2
- * This is a manifest file that includes stylesheets for spree_frontend
3
- *= require normalize
4
- *= require skeleton
5
- *= require spree/frontend/screen
2
+ * This is a manifest file that includes stylesheets for spree_frontend
3
+ *= require spree/frontend/frontend_bootstrap
4
+ *= require_self
5
+ *= require_tree .
6
6
  */
@@ -1,61 +1,4 @@
1
- /*--------------------------------------*/
2
- /* Colors
3
- /*--------------------------------------*/
4
- $c_green: #8dba53 !default; /* Spree green */
5
- $c_red: #e45353 !default; /* Error red */
6
-
7
- $layout_background_color: #FFFFFF !default;
8
- $title_text_color: #404042 !default;
9
- $body_text_color: #404042 !default;
10
- $link_text_color: #00ADEE !default;
11
-
12
- $product_background_color: #FFFFFF !default;
13
- $product_title_text_color: #404042 !default;
14
- $product_body_text_color: #404042 !default;
15
- $product_link_text_color: #BBBBBB !default;
16
-
17
- /*--------------------------------------*/
18
- /* Fonts import from remote
19
- /*--------------------------------------*/
20
- @import url(//fonts.googleapis.com/css?family=Ubuntu:400,700,400italic,700italic|&subset=latin,cyrillic,greek,greek-ext,latin-ext,cyrillic-ext);
21
-
22
- /*--------------------------------------*/
23
- /* Font families
24
- /*--------------------------------------*/
25
- $ff_base: 'Ubuntu', sans-serif !default;
26
-
27
- /*--------------------------------------
28
- | Font sizes
29
- |--------------------------------------
30
- |- Navigation
31
- | */
32
- $header_navigation_font_size: 14px !default;
33
- $horizontal_navigation_font_size: 16px !default;
34
- $main_navigation_header_font_size: 14px !default;
35
- $main_navigation_font_size: 12px !default;
36
- /*|------------------------------------
37
- |- Product Listing
38
- | */
39
- $product_list_name_font_size: 12px !default;
40
- $product_list_price_font_size: 16px !default;
41
- $product_list_header_font_size: 20px !default;
42
- $product_list_search_font_size: 14px !default;
43
- /*|------------------------------------
44
- |- Product Details
45
- | */
46
- $product_detail_name_font_size: 24px !default;
47
- $product_detail_description_font_size: 12px !default;
48
- $product_detail_price_font_size: 20px !default;
49
- $product_detail_title_font_size: 14px !default;
50
- /*|------------------------------------
51
- |- Basic
52
- | */
53
- $heading_font_size: 24px !default;
54
- $sub_heading_font_size: 14px !default;
55
- $button_font_size: 12px !default;
56
- $input_box_font_size: 13px !default;
57
- $base_font_size: 12px !default;
58
- $border_color: lighten($body_text_color, 60) !default;
59
- $default_border: 1px solid $border_color !default;
60
- $button_border_color: rgba(0, 138, 189, .75) !default;
61
- $table_head_color: lighten($body_text_color, 60) !default;
1
+ /*--------------------------------
2
+ Colors
3
+ --------------------------------*/
4
+ $brand-primary: #1c5c92;
@@ -0,0 +1,102 @@
1
+ //Add your custom bootstrap variables here, see https://github.com/twbs/bootstrap-sass/blob/master/vendor/assets/stylesheets/bootstrap/_variables.scss for full list of variables.
2
+
3
+ @import "bootstrap-sprockets";
4
+ @import "variables";
5
+ @import "bootstrap";
6
+
7
+ // -- Spree Custom Header and Footer ---------------------
8
+ #spree-header {
9
+ background: $brand-primary asset-url('spree_header.jpg') center center;
10
+ background-size: cover;
11
+ margin-bottom: $line-height-computed;
12
+
13
+ #header {
14
+ background: rgba($gray-darker, 0.4);
15
+ padding: $line-height-computed 0;
16
+ }
17
+
18
+ #logo {
19
+ margin-bottom: 10px;
20
+
21
+ img {
22
+ width: 306px;
23
+ }
24
+ }
25
+
26
+ .nav a {
27
+ color: white;
28
+
29
+ &:hover, &:focus {
30
+ background: rgba($gray-darker, 0.4);
31
+ }
32
+ }
33
+
34
+ .navbar {
35
+ border: 0;
36
+ margin-bottom: 0;
37
+ }
38
+ }
39
+
40
+ #spree-footer {
41
+ background: $gray-dark;
42
+ padding-top: $padding-base-horizontal;
43
+ margin-top: $line-height-computed;
44
+ color: white;
45
+ }
46
+
47
+ // -- Spree Layout Custom Rules -------------------------
48
+
49
+ .alert-notice { @extend .alert-success; }
50
+ .alert-error, .alert-registration_error { @extend .alert-danger; }
51
+ .alert-alert { @extend .alert-info; }
52
+
53
+ .product-body {
54
+ height: 170px;
55
+ }
56
+
57
+ .progress-steps {
58
+ margin-top: $line-height-computed;
59
+ }
60
+
61
+ h1 {
62
+ margin-bottom: 30px;
63
+ }
64
+
65
+ // Center cart line items
66
+ table {
67
+ &.table > tbody > tr {
68
+ &.line-item td, &.stock-item td {
69
+ vertical-align: middle;
70
+ }
71
+ }
72
+
73
+ &#line-items {
74
+ > tbody, > tfoot {
75
+ > tr > td {
76
+ vertical-align: middle;
77
+
78
+ &.order-qty {
79
+ text-align: center;
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+
86
+ // Footer links
87
+ #footer-left a {
88
+ color: lighten($brand-primary, 20);
89
+
90
+ &:hover {
91
+ color: lighten($brand-primary, 10);
92
+ }
93
+ }
94
+
95
+ // Updated credit-card image
96
+ #credit-card-image {
97
+ margin-top: -10px;
98
+ }
99
+
100
+ .existing-credit-card-list td {
101
+ padding: 5px;
102
+ }
@@ -4,11 +4,9 @@ module Spree
4
4
  # checkout which has nothing to do with updating an order that this approach
5
5
  # is waranted.
6
6
  class CheckoutController < Spree::StoreController
7
- ssl_required
8
-
9
7
  before_action :load_order_with_lock
10
- before_action :ensure_valid_state_lock_version, only: [:update]
11
- before_action :set_state_if_present
8
+ before_filter :ensure_valid_state_lock_version, only: [:update]
9
+ before_filter :set_state_if_present
12
10
 
13
11
  before_action :ensure_order_not_completed
14
12
  before_action :ensure_checkout_allowed
@@ -48,22 +46,35 @@ module Spree
48
46
  end
49
47
 
50
48
  private
51
- def ensure_valid_state
52
- unless skip_state_validation?
53
- if (params[:state] && !@order.has_checkout_step?(params[:state])) ||
54
- (!params[:state] && !@order.has_checkout_step?(@order.state))
55
- @order.state = 'cart'
56
- redirect_to checkout_state_path(@order.checkout_steps.first)
57
- end
58
- end
59
49
 
60
- # Fix for #4117
61
- # If confirmation of payment fails, redirect back to payment screen
62
- if params[:state] == "confirm" && @order.payment_required? && @order.payments.valid.empty?
63
- flash.keep
64
- redirect_to checkout_state_path("payment")
65
- end
50
+ def unknown_state?
51
+ (params[:state] && !@order.has_checkout_step?(params[:state])) ||
52
+ (!params[:state] && !@order.has_checkout_step?(@order.state))
53
+ end
54
+
55
+ def insufficient_payment?
56
+ params[:state] == "confirm" &&
57
+ @order.payment_required? &&
58
+ @order.payments.valid.sum(:amount) != @order.total
59
+ end
60
+
61
+ def correct_state
62
+ if unknown_state?
63
+ @order.checkout_steps.first
64
+ elsif insufficient_payment?
65
+ 'payment'
66
+ else
67
+ @order.state
66
68
  end
69
+ end
70
+
71
+ def ensure_valid_state
72
+ if @order.state != correct_state && !skip_state_validation?
73
+ flash.keep
74
+ @order.state = correct_state
75
+ redirect_to checkout_state_path(@order.state)
76
+ end
77
+ end
67
78
 
68
79
  # Should be overriden if you have areas of your checkout that don't match
69
80
  # up to a step within checkout_steps, such as a registration step
@@ -113,8 +124,8 @@ module Spree
113
124
  end
114
125
 
115
126
  # Provides a route to redirect after order completion
116
- def completion_route
117
- spree.order_path(@order)
127
+ def completion_route(custom_params = nil)
128
+ spree.order_path(@order, custom_params)
118
129
  end
119
130
 
120
131
  def setup_for_current_state
@@ -143,13 +154,6 @@ module Spree
143
154
  @differentiator.missing.each do |variant, quantity|
144
155
  @order.contents.remove(variant, quantity)
145
156
  end
146
-
147
- # @order.contents.remove did transitively call reload in the past.
148
- # Hiding the fact that the machine advanced already to "payment" state.
149
- #
150
- # As an intermediary step to optimize reloads out of high volume code path
151
- # the reload was lifted here and will be removed by later passes.
152
- @order.reload
153
157
  end
154
158
 
155
159
  if try_spree_current_user && try_spree_current_user.respond_to?(:payment_sources)