workarea 3.4.16 → 3.4.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (572) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +81 -0
  3. metadata +10 -579
  4. data/docs/Gemfile +0 -8
  5. data/docs/Gemfile.lock +0 -130
  6. data/docs/bin/middleman +0 -29
  7. data/docs/config.rb +0 -87
  8. data/docs/config.ru +0 -7
  9. data/docs/data/articles.yml +0 -157
  10. data/docs/package.json +0 -15
  11. data/docs/source/404.html.erb +0 -13
  12. data/docs/source/articles/access-routes-in-javascript.html.md +0 -33
  13. data/docs/source/articles/add-a-content-area.html.md +0 -169
  14. data/docs/source/articles/add-a-content-block-type.html.md +0 -334
  15. data/docs/source/articles/add-a-report.html.md +0 -202
  16. data/docs/source/articles/add-css-through-the-admin-ui.html.md +0 -30
  17. data/docs/source/articles/add-javascript-through-a-manifest.html.md +0 -367
  18. data/docs/source/articles/add-javascript-through-a-view.html.md +0 -80
  19. data/docs/source/articles/add-javascript-through-the-admin-ui.html.md +0 -30
  20. data/docs/source/articles/add-metrics.html.md +0 -58
  21. data/docs/source/articles/add-or-replace-a-pricing-calculator.html.md +0 -150
  22. data/docs/source/articles/add-remove-or-change-a-mongoid-validation.html.md +0 -147
  23. data/docs/source/articles/add-remove-or-change-a-product-template.html.md +0 -142
  24. data/docs/source/articles/add-remove-sort-and-group-storefront-search-filters.html.md +0 -483
  25. data/docs/source/articles/add-stylesheets-through-a-manifest.html.md +0 -276
  26. data/docs/source/articles/add-system-content.html.md +0 -138
  27. data/docs/source/articles/analytics-overview.html.md +0 -51
  28. data/docs/source/articles/analyze-storefront-search-results.html.md +0 -261
  29. data/docs/source/articles/api-overview.html.md +0 -35
  30. data/docs/source/articles/appending.html.md +0 -506
  31. data/docs/source/articles/application-document.html.md +0 -88
  32. data/docs/source/articles/automated-javascript-testing.html.md +0 -162
  33. data/docs/source/articles/b2b-overview.html.md +0 -64
  34. data/docs/source/articles/browser-and-device-support.html.md +0 -47
  35. data/docs/source/articles/change-product-placeholder-image.html.md +0 -39
  36. data/docs/source/articles/change-storefront-search-results.html.md +0 -283
  37. data/docs/source/articles/change-the-storefront-product-pricing-ui.html.md +0 -348
  38. data/docs/source/articles/change-the-storefront-search-filters-ui.html.md +0 -103
  39. data/docs/source/articles/checkout.html.md +0 -479
  40. data/docs/source/articles/commerce-model.html.md +0 -164
  41. data/docs/source/articles/configuration-for-hosting.html.md +0 -106
  42. data/docs/source/articles/configuration.html.md +0 -406
  43. data/docs/source/articles/configure-a-payment-gateway.html.md +0 -58
  44. data/docs/source/articles/configure-asset-storage.html.md +0 -29
  45. data/docs/source/articles/configure-asset-types.html.md +0 -18
  46. data/docs/source/articles/configure-contact-form-subjects-list.html.md +0 -24
  47. data/docs/source/articles/configure-imageoptim.html.md +0 -23
  48. data/docs/source/articles/configure-locales.html.md +0 -45
  49. data/docs/source/articles/configure-logins-and-authentication.html.md +0 -42
  50. data/docs/source/articles/configure-low-inventory-threshold.html.md +0 -26
  51. data/docs/source/articles/configure-product-image-sizes-and-processing.html.md +0 -28
  52. data/docs/source/articles/content.html.md +0 -554
  53. data/docs/source/articles/contentable.html.md +0 -41
  54. data/docs/source/articles/contribute-code.html.md +0 -69
  55. data/docs/source/articles/contribute-documentation.html.md +0 -60
  56. data/docs/source/articles/create-a-custom-discount.html.md +0 -234
  57. data/docs/source/articles/create-a-new-app.html.md +0 -131
  58. data/docs/source/articles/create-a-plugin.html.md +0 -19
  59. data/docs/source/articles/create-a-style-guide.html.md +0 -71
  60. data/docs/source/articles/create-a-theme.html.md +0 -134
  61. data/docs/source/articles/css-architectural-overview.html.md +0 -89
  62. data/docs/source/articles/customize-a-helper.html.md +0 -91
  63. data/docs/source/articles/decoration.html.md +0 -415
  64. data/docs/source/articles/define-and-configure-inventory-policies.html.md +0 -107
  65. data/docs/source/articles/documentation-style-guide.html.md +0 -48
  66. data/docs/source/articles/documentation.html.md +0 -54
  67. data/docs/source/articles/domain-modeling.html.md +0 -82
  68. data/docs/source/articles/error-pages.html.md.erb +0 -95
  69. data/docs/source/articles/extension-overview.html.md +0 -152
  70. data/docs/source/articles/favicon-support.html.md +0 -112
  71. data/docs/source/articles/feature-spec-helper-stylesheet.html.md +0 -25
  72. data/docs/source/articles/featurejs-and-feature-spec-helper.html.md +0 -20
  73. data/docs/source/articles/help-and-support.html.md +0 -34
  74. data/docs/source/articles/html-fragment-caching.html.md +0 -46
  75. data/docs/source/articles/http-caching.html.md +0 -43
  76. data/docs/source/articles/i18n.html.md +0 -35
  77. data/docs/source/articles/images-flow.html.md +0 -10
  78. data/docs/source/articles/index-storefront-search-documents.html.md +0 -104
  79. data/docs/source/articles/infrastructure.html.md +0 -46
  80. data/docs/source/articles/installing.html.md +0 -61
  81. data/docs/source/articles/integrate-a-payment-gateway.html.md +0 -124
  82. data/docs/source/articles/integrate-a-web-analytics-provider.html.md +0 -35
  83. data/docs/source/articles/integrate-an-inventory-management-system.html.md +0 -88
  84. data/docs/source/articles/integrating-with-other-software.html.md +0 -59
  85. data/docs/source/articles/inventory.html.md +0 -352
  86. data/docs/source/articles/javascript-coding-standards.html.md +0 -30
  87. data/docs/source/articles/javascript-modules.html.md +0 -174
  88. data/docs/source/articles/javascript-overview.html.md +0 -62
  89. data/docs/source/articles/javascript-reference-documentation.html.md +0 -51
  90. data/docs/source/articles/javascript-templates.html.md +0 -52
  91. data/docs/source/articles/low-level-caching.html.md +0 -25
  92. data/docs/source/articles/maintain-a-plugin.html.md +0 -12
  93. data/docs/source/articles/maintenance-policy.html.md +0 -79
  94. data/docs/source/articles/navigable.html.md +0 -51
  95. data/docs/source/articles/navigating-the-code.html.md +0 -149
  96. data/docs/source/articles/navigation.html.md +0 -386
  97. data/docs/source/articles/order-life-cycle.html.md +0 -546
  98. data/docs/source/articles/order-pricing.html.md +0 -389
  99. data/docs/source/articles/orders-and-items.html.md +0 -210
  100. data/docs/source/articles/orders.html.md +0 -66
  101. data/docs/source/articles/overriding.html.md +0 -155
  102. data/docs/source/articles/overview.html.md +0 -43
  103. data/docs/source/articles/plugins-overview.html.md +0 -12
  104. data/docs/source/articles/prerequisites-and-dependencies.html.md +0 -202
  105. data/docs/source/articles/products.html.md.erb +0 -1270
  106. data/docs/source/articles/progressive-web-application-support.html.md +0 -148
  107. data/docs/source/articles/rails-asset-manifests.html.md +0 -33
  108. data/docs/source/articles/rails-asset-view-helpers.html.md +0 -25
  109. data/docs/source/articles/reading-data.html.md +0 -10
  110. data/docs/source/articles/releasable.html.md +0 -37
  111. data/docs/source/articles/report-a-bug.html.md +0 -75
  112. data/docs/source/articles/ruby-coding-standards.html.md +0 -10
  113. data/docs/source/articles/run-sidekiq-in-a-local-environment.html.md +0 -40
  114. data/docs/source/articles/searching.html.md +0 -1005
  115. data/docs/source/articles/security-policy.html.md +0 -42
  116. data/docs/source/articles/seeds.html.md +0 -345
  117. data/docs/source/articles/shipping.html.md +0 -756
  118. data/docs/source/articles/sort-and-exclude-product-options.html.md +0 -47
  119. data/docs/source/articles/storefront-search-features.html.md +0 -568
  120. data/docs/source/articles/storefront-searches.html.md +0 -126
  121. data/docs/source/articles/style-guides.html.md +0 -21
  122. data/docs/source/articles/stylesheet-coding-standards.html.md +0 -24
  123. data/docs/source/articles/stylesheets-overview.html.md +0 -67
  124. data/docs/source/articles/swappable-list-data-structure.html.md +0 -81
  125. data/docs/source/articles/system-emails.html.md +0 -102
  126. data/docs/source/articles/taggable.html.md +0 -8
  127. data/docs/source/articles/test-a-credit-card-transaction.html.md +0 -16
  128. data/docs/source/articles/test-if-a-plugin-is-installed.html.md +0 -34
  129. data/docs/source/articles/testing.html.md +0 -914
  130. data/docs/source/articles/themes-overview.html.md +0 -155
  131. data/docs/source/articles/translate-administrable-content.html.md +0 -14
  132. data/docs/source/articles/translate-javascript-content.html.md +0 -16
  133. data/docs/source/articles/translate-or-customize-message-content.html.md +0 -29
  134. data/docs/source/articles/translate-or-customize-static-content.html.md +0 -30
  135. data/docs/source/articles/use-an-existing-workarea-app.html.md +0 -108
  136. data/docs/source/articles/view-models.html.md +0 -509
  137. data/docs/source/articles/views.html.md +0 -14
  138. data/docs/source/articles/workers.html.md +0 -613
  139. data/docs/source/articles/writing-data.html.md +0 -10
  140. data/docs/source/cli.html.md +0 -163
  141. data/docs/source/favicon.ico +0 -0
  142. data/docs/source/images/3-variants-1-option.png +0 -0
  143. data/docs/source/images/3-variants-3-options.png +0 -0
  144. data/docs/source/images/3-years-primary-image.png +0 -0
  145. data/docs/source/images/404-storefront-error-page.png +0 -0
  146. data/docs/source/images/404-system-content-admin.png +0 -0
  147. data/docs/source/images/404.jpg +0 -0
  148. data/docs/source/images/5-years-primary-image.png +0 -0
  149. data/docs/source/images/activity-dashboard.png +0 -0
  150. data/docs/source/images/activity-for-object.png +0 -0
  151. data/docs/source/images/activity-ui.png +0 -0
  152. data/docs/source/images/adding-captioned-image-block-custom-icon.png +0 -0
  153. data/docs/source/images/adding-captioned-image-block-default-icon.png +0 -0
  154. data/docs/source/images/admin-alerts-ui.png +0 -0
  155. data/docs/source/images/admin-category-range-filters.png +0 -0
  156. data/docs/source/images/admin-for-3-column-hero.png +0 -0
  157. data/docs/source/images/admin-help-index.png +0 -0
  158. data/docs/source/images/admin-help-ui.png +0 -0
  159. data/docs/source/images/admin-javascript.png +0 -0
  160. data/docs/source/images/admin-notification-for-deactivated-discount.png +0 -0
  161. data/docs/source/images/admin-notifications-ui.png +0 -0
  162. data/docs/source/images/admin-product-show-page.png +0 -0
  163. data/docs/source/images/admin-products-index-page.png +0 -0
  164. data/docs/source/images/admin-range-filters.png +0 -0
  165. data/docs/source/images/admin-style-guides-navigation.png +0 -0
  166. data/docs/source/images/after-re-seeding.png +0 -0
  167. data/docs/source/images/after-seeding-localhost-3000.png +0 -0
  168. data/docs/source/images/after-seeding.png +0 -0
  169. data/docs/source/images/arrow.svg +0 -1
  170. data/docs/source/images/arrow_white.svg +0 -1
  171. data/docs/source/images/aws-resource-map.png +0 -0
  172. data/docs/source/images/backordered-until-output-on-inventory-sku-card.png +0 -0
  173. data/docs/source/images/before-seeding-localhost-3000.png +0 -0
  174. data/docs/source/images/before-seeding.png +0 -0
  175. data/docs/source/images/browsing-workarea-versions-on-the-web.png +0 -0
  176. data/docs/source/images/bulk-asset-upload-on-assets-index-page.png +0 -0
  177. data/docs/source/images/bulk-asset-upload-while-editing-content.png +0 -0
  178. data/docs/source/images/bundle-show-workarea-core.png +0 -0
  179. data/docs/source/images/bundle-show-workarea.png +0 -0
  180. data/docs/source/images/calendar-for-backordered-until-field.png +0 -0
  181. data/docs/source/images/captioned-image-block-in-storefront.png +0 -0
  182. data/docs/source/images/captioned-image-content-block-storefront-component-style-guide.png +0 -0
  183. data/docs/source/images/cart-system-content-in-admin.png +0 -0
  184. data/docs/source/images/cart-system-content-in-storefront.png +0 -0
  185. data/docs/source/images/checkout-addresses-guest.png +0 -0
  186. data/docs/source/images/checkout-addresses-user.png +0 -0
  187. data/docs/source/images/checkout-confirmation.png +0 -0
  188. data/docs/source/images/checkout-flow-0.png +0 -0
  189. data/docs/source/images/checkout-flow-1.png +0 -0
  190. data/docs/source/images/checkout-flow-2.png +0 -0
  191. data/docs/source/images/checkout-flow-3.png +0 -0
  192. data/docs/source/images/checkout-flow-4.png +0 -0
  193. data/docs/source/images/checkout-payment-guest.png +0 -0
  194. data/docs/source/images/checkout-payment-user.png +0 -0
  195. data/docs/source/images/checkout-shipping.png +0 -0
  196. data/docs/source/images/color-picker-component-admin-style-guide.png +0 -0
  197. data/docs/source/images/color-picker-component-on-content-editing-screen.png +0 -0
  198. data/docs/source/images/commerce-model-carts-orders.png +0 -0
  199. data/docs/source/images/commerce-model-order-pricing.png +0 -0
  200. data/docs/source/images/commerce-model.png +0 -0
  201. data/docs/source/images/configuring-an-index-pattern-in-kibana.png +0 -0
  202. data/docs/source/images/content-block-presets.png +0 -0
  203. data/docs/source/images/content-search-customization.png +0 -0
  204. data/docs/source/images/country-with-region-data-in-address-form.png +0 -0
  205. data/docs/source/images/country-without-region-data-in-address-form.png +0 -0
  206. data/docs/source/images/create-content-block-preset-ui.png +0 -0
  207. data/docs/source/images/credit-card-icons.png +0 -0
  208. data/docs/source/images/css-added-through-admin.png +0 -0
  209. data/docs/source/images/css-admin-ui.png +0 -0
  210. data/docs/source/images/current-configuration-shown-in-admin-settings.png +0 -0
  211. data/docs/source/images/customer-impersonation-in-admin.png +0 -0
  212. data/docs/source/images/customer-impersonation-in-store-front.png +0 -0
  213. data/docs/source/images/date-filter-same-day.png +0 -0
  214. data/docs/source/images/developer-toolbar-in-store-front.png +0 -0
  215. data/docs/source/images/discounts-sorted-by-most-redeemed.png +0 -0
  216. data/docs/source/images/edit-help-article.png +0 -0
  217. data/docs/source/images/editing-content-for-search-customization.png +0 -0
  218. data/docs/source/images/editing-dynamic-captioned-image-block.png +0 -0
  219. data/docs/source/images/editing-product-fields-in-the-admin.png +0 -0
  220. data/docs/source/images/editing-search-system-content.png +0 -0
  221. data/docs/source/images/editing-static-captioned-image-block-custom-icon.png +0 -0
  222. data/docs/source/images/editing-static-captioned-image-block-default-icon.png +0 -0
  223. data/docs/source/images/external.svg +0 -1
  224. data/docs/source/images/favicon_16.png +0 -0
  225. data/docs/source/images/favicon_180.png +0 -0
  226. data/docs/source/images/favicon_32.png +0 -0
  227. data/docs/source/images/filters-all.png +0 -0
  228. data/docs/source/images/filters-control.png +0 -0
  229. data/docs/source/images/filters-custom.png +0 -0
  230. data/docs/source/images/filters-groups.png +0 -0
  231. data/docs/source/images/filters-material.png +0 -0
  232. data/docs/source/images/filters-omitted.png +0 -0
  233. data/docs/source/images/filters-pinned.png +0 -0
  234. data/docs/source/images/filters-range.png +0 -0
  235. data/docs/source/images/filters-sorted.png +0 -0
  236. data/docs/source/images/filters-wrapping-to-second-line-in-admin.png +0 -0
  237. data/docs/source/images/generic-product-template-images-no-options-selected.png +0 -0
  238. data/docs/source/images/generic-product-template-images-options-selected.png +0 -0
  239. data/docs/source/images/generic-template.png +0 -0
  240. data/docs/source/images/hosting.svg +0 -1
  241. data/docs/source/images/image-group-content-block-in-storefront.png +0 -0
  242. data/docs/source/images/images.svg +0 -1
  243. data/docs/source/images/import-export-screenshot.png +0 -0
  244. data/docs/source/images/invalid-display.png +0 -0
  245. data/docs/source/images/itcss.png +0 -0
  246. data/docs/source/images/kibana-dev-tools-console.png +0 -0
  247. data/docs/source/images/layout-content-admin-with-2-areas.png +0 -0
  248. data/docs/source/images/layout-content-admin-with-3-areas.png +0 -0
  249. data/docs/source/images/link-to-search-system-content.png +0 -0
  250. data/docs/source/images/logo.svg +0 -1
  251. data/docs/source/images/menu.svg +0 -2
  252. data/docs/source/images/mongo-replica-set.svg +0 -1
  253. data/docs/source/images/multi-column-hero-blocks.png +0 -0
  254. data/docs/source/images/option-selects-product-template-images-options-selected.png +0 -0
  255. data/docs/source/images/option-selects-template.png +0 -0
  256. data/docs/source/images/option-thumbnails-template.png +0 -0
  257. data/docs/source/images/order-item-total-price-diagram.png +0 -0
  258. data/docs/source/images/order-pricing-cart-example.png +0 -0
  259. data/docs/source/images/order-pricing-example-adjustments.png +0 -0
  260. data/docs/source/images/order-pricing-example-totals.png +0 -0
  261. data/docs/source/images/order-pricing-placed-order-example.png +0 -0
  262. data/docs/source/images/order-shipping-total-diagram.png +0 -0
  263. data/docs/source/images/order-show-with-multiple-tenders.png +0 -0
  264. data/docs/source/images/order-subtotal-price-diagram.png +0 -0
  265. data/docs/source/images/order-tax-total-diagram.png +0 -0
  266. data/docs/source/images/order-total-price-diagram.png +0 -0
  267. data/docs/source/images/order-total-value-diagram.png +0 -0
  268. data/docs/source/images/orders-dashboard-links.png +0 -0
  269. data/docs/source/images/oval.svg +0 -1
  270. data/docs/source/images/payment-icon-storefront-style-guide.png +0 -0
  271. data/docs/source/images/people-dashboard-links.png +0 -0
  272. data/docs/source/images/price-adjustments-diagram.png +0 -0
  273. data/docs/source/images/price-display-no-options.png +0 -0
  274. data/docs/source/images/price-display-options-selected.png +0 -0
  275. data/docs/source/images/pricing-calculators-diagram.png +0 -0
  276. data/docs/source/images/product-list-content-block-admin.png +0 -0
  277. data/docs/source/images/product-list-content-block-in-store-front.png +0 -0
  278. data/docs/source/images/promo-products-excluded-autocomplete-results-after.png +0 -0
  279. data/docs/source/images/promo-products-excluded-featured-category-results-after.png +0 -0
  280. data/docs/source/images/promo-products-excluded-recommendations-results-after.png +0 -0
  281. data/docs/source/images/promo-products-excluded-search-category-results-after.png +0 -0
  282. data/docs/source/images/promo-products-excluded-search-results-after.png +0 -0
  283. data/docs/source/images/promo-products-included-autocomplete-results-before.png +0 -0
  284. data/docs/source/images/promo-products-included-featured-category-results-before.png +0 -0
  285. data/docs/source/images/promo-products-included-recommendations-results-before.png +0 -0
  286. data/docs/source/images/promo-products-included-search-category-results-before.png +0 -0
  287. data/docs/source/images/promo-products-included-search-results-before.png +0 -0
  288. data/docs/source/images/rails-version-constraint.png +0 -0
  289. data/docs/source/images/re-enable-discount.png +0 -0
  290. data/docs/source/images/reading-data.svg +0 -1
  291. data/docs/source/images/readme-hero.png +0 -0
  292. data/docs/source/images/redesigned-customized-sort-for-search-results.png +0 -0
  293. data/docs/source/images/reviews-summary-above-share-buttons.png +0 -0
  294. data/docs/source/images/reviews-summary-below-product-name.png +0 -0
  295. data/docs/source/images/reviews-summary-below-share-buttons.png +0 -0
  296. data/docs/source/images/reviews-summary-removed.png +0 -0
  297. data/docs/source/images/rsa-fingerprint-for-stash.png +0 -0
  298. data/docs/source/images/ruby-version-constraint.png +0 -0
  299. data/docs/source/images/script-tag-added-through-admin.png +0 -0
  300. data/docs/source/images/search-analysis-admin-alternate-rendering.png +0 -0
  301. data/docs/source/images/search-analysis-admin.png +0 -0
  302. data/docs/source/images/search-quality-report.png +0 -0
  303. data/docs/source/images/search.svg +0 -1
  304. data/docs/source/images/searching-for-cart-system-content-in-admin.png +0 -0
  305. data/docs/source/images/searching-for-layout-system-content-in-admin.png +0 -0
  306. data/docs/source/images/seeded-admin.png +0 -0
  307. data/docs/source/images/seeds-from-plugins.png +0 -0
  308. data/docs/source/images/seo-metadata-automation-ui.png +0 -0
  309. data/docs/source/images/show-password-button.png +0 -0
  310. data/docs/source/images/storefront-autocomplete.png +0 -0
  311. data/docs/source/images/storefront-category-summary-content-block.png +0 -0
  312. data/docs/source/images/storefront-category.png +0 -0
  313. data/docs/source/images/storefront-product-after-overriding.png +0 -0
  314. data/docs/source/images/storefront-product-before-overriding.png +0 -0
  315. data/docs/source/images/storefront-product-browse-page.png +0 -0
  316. data/docs/source/images/storefront-product-recommendations.png +0 -0
  317. data/docs/source/images/storefront-product-show-page.png +0 -0
  318. data/docs/source/images/storefront-requests-and-search-requests.png +0 -0
  319. data/docs/source/images/storefront-search-request-handling.png +0 -0
  320. data/docs/source/images/storefront-search-response-creation.png +0 -0
  321. data/docs/source/images/storefront-search.png +0 -0
  322. data/docs/source/images/storefront-style-guides-navigation.png +0 -0
  323. data/docs/source/images/styles.css +0 -3
  324. data/docs/source/images/tax-categories-ui.png +0 -0
  325. data/docs/source/images/tax-rates-ui.png +0 -0
  326. data/docs/source/images/unpurchasable-product.png +0 -0
  327. data/docs/source/images/url-redirects-filtering.png +0 -0
  328. data/docs/source/images/utility-nav-area-in-admin.png +0 -0
  329. data/docs/source/images/utility-nav-area-in-storefront.png +0 -0
  330. data/docs/source/images/validation-message-in-storefront.png +0 -0
  331. data/docs/source/images/view-model-interface.png +0 -0
  332. data/docs/source/images/viewing-workarea-version-in-source.png +0 -0
  333. data/docs/source/images/workarea.svg +0 -1
  334. data/docs/source/images/worst-performing-searches-on-results-customization-page.png +0 -0
  335. data/docs/source/images/writing-data.svg +0 -1
  336. data/docs/source/index.html.erb +0 -166
  337. data/docs/source/javascripts/jquery.js +0 -2
  338. data/docs/source/javascripts/lunr.js +0 -7
  339. data/docs/source/javascripts/site.js +0 -299
  340. data/docs/source/javascripts/vendor/highlight.pack.js +0 -2
  341. data/docs/source/layouts/article.erb +0 -106
  342. data/docs/source/layouts/bare.erb +0 -46
  343. data/docs/source/layouts/layout.erb +0 -43
  344. data/docs/source/release-notes/workarea-3-0-0.html.md +0 -146
  345. data/docs/source/release-notes/workarea-3-0-1.html.md +0 -161
  346. data/docs/source/release-notes/workarea-3-0-10.html.md +0 -39
  347. data/docs/source/release-notes/workarea-3-0-11.html.md +0 -277
  348. data/docs/source/release-notes/workarea-3-0-12.html.md +0 -14
  349. data/docs/source/release-notes/workarea-3-0-13.html.md +0 -153
  350. data/docs/source/release-notes/workarea-3-0-14.html.md +0 -93
  351. data/docs/source/release-notes/workarea-3-0-15.html.md +0 -107
  352. data/docs/source/release-notes/workarea-3-0-16.html.md +0 -36
  353. data/docs/source/release-notes/workarea-3-0-17.html.md +0 -141
  354. data/docs/source/release-notes/workarea-3-0-18.html.md +0 -123
  355. data/docs/source/release-notes/workarea-3-0-19.html.md +0 -160
  356. data/docs/source/release-notes/workarea-3-0-2.html.md +0 -222
  357. data/docs/source/release-notes/workarea-3-0-20.html.md +0 -95
  358. data/docs/source/release-notes/workarea-3-0-21.html.md +0 -168
  359. data/docs/source/release-notes/workarea-3-0-22.html.md +0 -268
  360. data/docs/source/release-notes/workarea-3-0-23.html.md +0 -173
  361. data/docs/source/release-notes/workarea-3-0-24.html.md +0 -19
  362. data/docs/source/release-notes/workarea-3-0-25.html.md +0 -26
  363. data/docs/source/release-notes/workarea-3-0-26.html.md +0 -199
  364. data/docs/source/release-notes/workarea-3-0-27.html.md +0 -113
  365. data/docs/source/release-notes/workarea-3-0-28.html.md +0 -39
  366. data/docs/source/release-notes/workarea-3-0-29.html.md +0 -73
  367. data/docs/source/release-notes/workarea-3-0-3.html.md +0 -35
  368. data/docs/source/release-notes/workarea-3-0-30.html.md +0 -186
  369. data/docs/source/release-notes/workarea-3-0-31.html.md +0 -125
  370. data/docs/source/release-notes/workarea-3-0-32.html.md +0 -73
  371. data/docs/source/release-notes/workarea-3-0-33.html.md +0 -137
  372. data/docs/source/release-notes/workarea-3-0-34.html.md +0 -203
  373. data/docs/source/release-notes/workarea-3-0-35.html.md +0 -205
  374. data/docs/source/release-notes/workarea-3-0-36.html.md +0 -105
  375. data/docs/source/release-notes/workarea-3-0-37.html.md +0 -144
  376. data/docs/source/release-notes/workarea-3-0-38.html.md +0 -73
  377. data/docs/source/release-notes/workarea-3-0-39.html.md +0 -77
  378. data/docs/source/release-notes/workarea-3-0-4.html.md +0 -14
  379. data/docs/source/release-notes/workarea-3-0-40.html.md +0 -130
  380. data/docs/source/release-notes/workarea-3-0-41.html.md +0 -70
  381. data/docs/source/release-notes/workarea-3-0-42.html.md +0 -52
  382. data/docs/source/release-notes/workarea-3-0-43.html.md +0 -72
  383. data/docs/source/release-notes/workarea-3-0-44.html.md +0 -93
  384. data/docs/source/release-notes/workarea-3-0-45.html.md +0 -61
  385. data/docs/source/release-notes/workarea-3-0-46.html.md +0 -171
  386. data/docs/source/release-notes/workarea-3-0-47.html.md +0 -130
  387. data/docs/source/release-notes/workarea-3-0-48.html.md +0 -160
  388. data/docs/source/release-notes/workarea-3-0-49.html.md +0 -28
  389. data/docs/source/release-notes/workarea-3-0-5.html.md +0 -225
  390. data/docs/source/release-notes/workarea-3-0-50.html.md +0 -74
  391. data/docs/source/release-notes/workarea-3-0-51.html.md +0 -61
  392. data/docs/source/release-notes/workarea-3-0-52.html.md +0 -76
  393. data/docs/source/release-notes/workarea-3-0-53.html.md +0 -126
  394. data/docs/source/release-notes/workarea-3-0-54.html.md +0 -112
  395. data/docs/source/release-notes/workarea-3-0-55.html.md +0 -105
  396. data/docs/source/release-notes/workarea-3-0-56.html.md +0 -56
  397. data/docs/source/release-notes/workarea-3-0-57.html.md +0 -82
  398. data/docs/source/release-notes/workarea-3-0-58.html.md +0 -153
  399. data/docs/source/release-notes/workarea-3-0-59.html.md +0 -78
  400. data/docs/source/release-notes/workarea-3-0-6.html.md +0 -165
  401. data/docs/source/release-notes/workarea-3-0-60.html.md +0 -43
  402. data/docs/source/release-notes/workarea-3-0-61.html.md +0 -46
  403. data/docs/source/release-notes/workarea-3-0-62.html.md +0 -23
  404. data/docs/source/release-notes/workarea-3-0-63.html.md +0 -25
  405. data/docs/source/release-notes/workarea-3-0-64.html.md +0 -25
  406. data/docs/source/release-notes/workarea-3-0-65.html.md +0 -37
  407. data/docs/source/release-notes/workarea-3-0-7.html.md +0 -207
  408. data/docs/source/release-notes/workarea-3-0-8.html.md +0 -337
  409. data/docs/source/release-notes/workarea-3-0-9.html.md +0 -196
  410. data/docs/source/release-notes/workarea-3-1-0.html.md +0 -414
  411. data/docs/source/release-notes/workarea-3-1-1.html.md +0 -139
  412. data/docs/source/release-notes/workarea-3-1-10.html.md +0 -19
  413. data/docs/source/release-notes/workarea-3-1-11.html.md +0 -27
  414. data/docs/source/release-notes/workarea-3-1-12.html.md +0 -216
  415. data/docs/source/release-notes/workarea-3-1-13.html.md +0 -113
  416. data/docs/source/release-notes/workarea-3-1-14.html.md +0 -39
  417. data/docs/source/release-notes/workarea-3-1-15.html.md +0 -107
  418. data/docs/source/release-notes/workarea-3-1-16.html.md +0 -188
  419. data/docs/source/release-notes/workarea-3-1-17.html.md +0 -141
  420. data/docs/source/release-notes/workarea-3-1-18.html.md +0 -73
  421. data/docs/source/release-notes/workarea-3-1-19.html.md +0 -137
  422. data/docs/source/release-notes/workarea-3-1-2.html.md +0 -55
  423. data/docs/source/release-notes/workarea-3-1-20.html.md +0 -203
  424. data/docs/source/release-notes/workarea-3-1-21.html.md +0 -205
  425. data/docs/source/release-notes/workarea-3-1-22.html.md +0 -121
  426. data/docs/source/release-notes/workarea-3-1-23.html.md +0 -144
  427. data/docs/source/release-notes/workarea-3-1-24.html.md +0 -94
  428. data/docs/source/release-notes/workarea-3-1-25.html.md +0 -77
  429. data/docs/source/release-notes/workarea-3-1-26.html.md +0 -130
  430. data/docs/source/release-notes/workarea-3-1-27.html.md +0 -70
  431. data/docs/source/release-notes/workarea-3-1-28.html.md +0 -52
  432. data/docs/source/release-notes/workarea-3-1-29.html.md +0 -44
  433. data/docs/source/release-notes/workarea-3-1-3.html.md +0 -185
  434. data/docs/source/release-notes/workarea-3-1-30.html.md +0 -72
  435. data/docs/source/release-notes/workarea-3-1-31.html.md +0 -93
  436. data/docs/source/release-notes/workarea-3-1-32.html.md +0 -61
  437. data/docs/source/release-notes/workarea-3-1-33.html.md +0 -171
  438. data/docs/source/release-notes/workarea-3-1-34.html.md +0 -130
  439. data/docs/source/release-notes/workarea-3-1-35.html.md +0 -179
  440. data/docs/source/release-notes/workarea-3-1-36.html.md +0 -28
  441. data/docs/source/release-notes/workarea-3-1-37.html.md +0 -74
  442. data/docs/source/release-notes/workarea-3-1-38.html.md +0 -61
  443. data/docs/source/release-notes/workarea-3-1-39.html.md +0 -96
  444. data/docs/source/release-notes/workarea-3-1-4.html.md +0 -148
  445. data/docs/source/release-notes/workarea-3-1-40.html.md +0 -126
  446. data/docs/source/release-notes/workarea-3-1-41.html.md +0 -128
  447. data/docs/source/release-notes/workarea-3-1-42.html.md +0 -105
  448. data/docs/source/release-notes/workarea-3-1-43.html.md +0 -37
  449. data/docs/source/release-notes/workarea-3-1-44.html.md +0 -82
  450. data/docs/source/release-notes/workarea-3-1-45.html.md +0 -153
  451. data/docs/source/release-notes/workarea-3-1-46.html.md +0 -91
  452. data/docs/source/release-notes/workarea-3-1-47.html.md +0 -65
  453. data/docs/source/release-notes/workarea-3-1-48.html.md +0 -46
  454. data/docs/source/release-notes/workarea-3-1-49.html.md +0 -23
  455. data/docs/source/release-notes/workarea-3-1-5.html.md +0 -169
  456. data/docs/source/release-notes/workarea-3-1-50.html.md +0 -42
  457. data/docs/source/release-notes/workarea-3-1-51.html.md +0 -25
  458. data/docs/source/release-notes/workarea-3-1-52.html.md +0 -57
  459. data/docs/source/release-notes/workarea-3-1-6.html.md +0 -117
  460. data/docs/source/release-notes/workarea-3-1-7.html.md +0 -176
  461. data/docs/source/release-notes/workarea-3-1-8.html.md +0 -283
  462. data/docs/source/release-notes/workarea-3-1-9.html.md +0 -212
  463. data/docs/source/release-notes/workarea-3-2-0.html.md +0 -1705
  464. data/docs/source/release-notes/workarea-3-2-1.html.md +0 -216
  465. data/docs/source/release-notes/workarea-3-2-10.html.md +0 -237
  466. data/docs/source/release-notes/workarea-3-2-11.html.md +0 -121
  467. data/docs/source/release-notes/workarea-3-2-12.html.md +0 -145
  468. data/docs/source/release-notes/workarea-3-2-13.html.md +0 -138
  469. data/docs/source/release-notes/workarea-3-2-14.html.md +0 -77
  470. data/docs/source/release-notes/workarea-3-2-15.html.md +0 -130
  471. data/docs/source/release-notes/workarea-3-2-16.html.md +0 -111
  472. data/docs/source/release-notes/workarea-3-2-17.html.md +0 -52
  473. data/docs/source/release-notes/workarea-3-2-18.html.md +0 -44
  474. data/docs/source/release-notes/workarea-3-2-19.html.md +0 -72
  475. data/docs/source/release-notes/workarea-3-2-2.html.md +0 -145
  476. data/docs/source/release-notes/workarea-3-2-20.html.md +0 -93
  477. data/docs/source/release-notes/workarea-3-2-21.html.md +0 -61
  478. data/docs/source/release-notes/workarea-3-2-22.html.md +0 -154
  479. data/docs/source/release-notes/workarea-3-2-23.html.md +0 -130
  480. data/docs/source/release-notes/workarea-3-2-24.html.md +0 -200
  481. data/docs/source/release-notes/workarea-3-2-25.html.md +0 -28
  482. data/docs/source/release-notes/workarea-3-2-26.html.md +0 -94
  483. data/docs/source/release-notes/workarea-3-2-27.html.md +0 -61
  484. data/docs/source/release-notes/workarea-3-2-28.html.md +0 -96
  485. data/docs/source/release-notes/workarea-3-2-29.html.md +0 -126
  486. data/docs/source/release-notes/workarea-3-2-30.html.md +0 -112
  487. data/docs/source/release-notes/workarea-3-2-31.html.md +0 -105
  488. data/docs/source/release-notes/workarea-3-2-32.html.md +0 -56
  489. data/docs/source/release-notes/workarea-3-2-33.html.md +0 -82
  490. data/docs/source/release-notes/workarea-3-2-34.html.md +0 -153
  491. data/docs/source/release-notes/workarea-3-2-35.html.md +0 -91
  492. data/docs/source/release-notes/workarea-3-2-36.html.md +0 -118
  493. data/docs/source/release-notes/workarea-3-2-37.html.md +0 -46
  494. data/docs/source/release-notes/workarea-3-2-38.html.md +0 -23
  495. data/docs/source/release-notes/workarea-3-2-39.html.md +0 -42
  496. data/docs/source/release-notes/workarea-3-2-4.html.md +0 -109
  497. data/docs/source/release-notes/workarea-3-2-40.html.md +0 -25
  498. data/docs/source/release-notes/workarea-3-2-41.html.md +0 -90
  499. data/docs/source/release-notes/workarea-3-2-5.html.md +0 -186
  500. data/docs/source/release-notes/workarea-3-2-6.html.md +0 -173
  501. data/docs/source/release-notes/workarea-3-2-7.html.md +0 -89
  502. data/docs/source/release-notes/workarea-3-2-8.html.md +0 -137
  503. data/docs/source/release-notes/workarea-3-2-9.html.md +0 -219
  504. data/docs/source/release-notes/workarea-3-3-0.html.md +0 -1272
  505. data/docs/source/release-notes/workarea-3-3-1.html.md +0 -324
  506. data/docs/source/release-notes/workarea-3-3-10.html.md +0 -69
  507. data/docs/source/release-notes/workarea-3-3-11.html.md +0 -72
  508. data/docs/source/release-notes/workarea-3-3-12.html.md +0 -136
  509. data/docs/source/release-notes/workarea-3-3-13.html.md +0 -61
  510. data/docs/source/release-notes/workarea-3-3-14.html.md +0 -196
  511. data/docs/source/release-notes/workarea-3-3-15.html.md +0 -167
  512. data/docs/source/release-notes/workarea-3-3-16.html.md +0 -234
  513. data/docs/source/release-notes/workarea-3-3-17.html.md +0 -82
  514. data/docs/source/release-notes/workarea-3-3-18.html.md +0 -165
  515. data/docs/source/release-notes/workarea-3-3-19.html.md +0 -106
  516. data/docs/source/release-notes/workarea-3-3-2.html.md +0 -72
  517. data/docs/source/release-notes/workarea-3-3-20.html.md +0 -116
  518. data/docs/source/release-notes/workarea-3-3-21.html.md +0 -228
  519. data/docs/source/release-notes/workarea-3-3-22.html.md +0 -125
  520. data/docs/source/release-notes/workarea-3-3-23.html.md +0 -154
  521. data/docs/source/release-notes/workarea-3-3-24.html.md +0 -70
  522. data/docs/source/release-notes/workarea-3-3-25.html.md +0 -114
  523. data/docs/source/release-notes/workarea-3-3-26.html.md +0 -260
  524. data/docs/source/release-notes/workarea-3-3-27.html.md +0 -138
  525. data/docs/source/release-notes/workarea-3-3-28.html.md +0 -147
  526. data/docs/source/release-notes/workarea-3-3-29.html.md +0 -63
  527. data/docs/source/release-notes/workarea-3-3-3.html.md +0 -153
  528. data/docs/source/release-notes/workarea-3-3-30.html.md +0 -102
  529. data/docs/source/release-notes/workarea-3-3-31.html.md +0 -57
  530. data/docs/source/release-notes/workarea-3-3-32.html.md +0 -44
  531. data/docs/source/release-notes/workarea-3-3-33.html.md +0 -114
  532. data/docs/source/release-notes/workarea-3-3-34.html.md +0 -29
  533. data/docs/source/release-notes/workarea-3-3-4.html.md +0 -332
  534. data/docs/source/release-notes/workarea-3-3-5.html.md +0 -242
  535. data/docs/source/release-notes/workarea-3-3-6.html.md +0 -100
  536. data/docs/source/release-notes/workarea-3-3-7.html.md +0 -148
  537. data/docs/source/release-notes/workarea-3-3-8.html.md +0 -163
  538. data/docs/source/release-notes/workarea-3-3-9.html.md +0 -93
  539. data/docs/source/release-notes/workarea-3-4-0.html.md +0 -580
  540. data/docs/source/release-notes/workarea-3-4-1.html.md +0 -150
  541. data/docs/source/release-notes/workarea-3-4-10.html.md +0 -72
  542. data/docs/source/release-notes/workarea-3-4-11.html.md +0 -60
  543. data/docs/source/release-notes/workarea-3-4-12.html.md +0 -155
  544. data/docs/source/release-notes/workarea-3-4-15.html.md +0 -100
  545. data/docs/source/release-notes/workarea-3-4-16.html.md +0 -88
  546. data/docs/source/release-notes/workarea-3-4-2.html.md +0 -188
  547. data/docs/source/release-notes/workarea-3-4-3.html.md +0 -136
  548. data/docs/source/release-notes/workarea-3-4-4.html.md +0 -114
  549. data/docs/source/release-notes/workarea-3-4-5.html.md +0 -275
  550. data/docs/source/release-notes/workarea-3-4-6.html.md +0 -169
  551. data/docs/source/release-notes/workarea-3-4-7.html.md +0 -162
  552. data/docs/source/release-notes/workarea-3-4-8.html.md +0 -95
  553. data/docs/source/release-notes/workarea-3-4-9.html.md +0 -135
  554. data/docs/source/release-notes.html.md +0 -261
  555. data/docs/source/search.html.erb +0 -34
  556. data/docs/source/shared/_header.erb +0 -61
  557. data/docs/source/shared/_svgs.erb +0 -17
  558. data/docs/source/style_guide/index.html.erb +0 -382
  559. data/docs/source/stylesheets/_base.scss +0 -125
  560. data/docs/source/stylesheets/_components.scss +0 -669
  561. data/docs/source/stylesheets/_helpers.scss +0 -10
  562. data/docs/source/stylesheets/_opinions.scss +0 -42
  563. data/docs/source/stylesheets/_settings.scss +0 -56
  564. data/docs/source/stylesheets/_typography.scss +0 -119
  565. data/docs/source/stylesheets/site.css.scss +0 -14
  566. data/docs/source/stylesheets/vendor/_avalanche.scss +0 -328
  567. data/docs/source/stylesheets/vendor/_normalize.scss +0 -341
  568. data/docs/source/stylesheets/vendor/highlight/_tomorrow_night_blue.scss +0 -75
  569. data/docs/source/upgrade-guides/workarea-3-4-0.html.md +0 -152
  570. data/docs/source/upgrade-guides.html.md +0 -18
  571. data/docs/workarea_renderer.rb +0 -8
  572. data/docs/yarn.lock +0 -2522
@@ -1,479 +0,0 @@
1
- ---
2
- title: Checkout
3
- excerpt: Explanation of checkout including modeling, flow, steps, and extension
4
- ---
5
-
6
- Checkout
7
- ======================================================================
8
-
9
- Checkout is the process that completes and records a transaction (a sale) between a shopper and the retailer.
10
- Checkout gets the [order](orders.html), [shippings](shipping.html), and payment into the states necessary to place the order.
11
-
12
- This doc first covers checkout from the perspective of models (modeling) and controller actions (flow).
13
- Then it covers each step in more detail, including shared implementation.
14
- The doc concludes with a brief explanation of checkout extension, such as changing a step or adding a new step.
15
-
16
-
17
- Modeling
18
- ----------------------------------------------------------------------
19
-
20
- Consider the example of a user checking out who is currently browsing `/checkout/addresses`.
21
- Within the context of this web request in the Storefront, `current_checkout` provides an instance of `Workarea::Checkout`, initialized from `current_order` and (if available) `current_user`.
22
-
23
- ```ruby
24
- current_checkout.class
25
- # => Workarea::Checkout
26
-
27
- current_checkout.order.present?
28
- # => true
29
-
30
- current_checkout.user.present?
31
- # => false
32
- ```
33
-
34
- The example above represents a _guest_ checkout (no user), which is currently _incomplete_, meaning the order cannot be placed.
35
-
36
- ```ruby
37
- current_checkout.complete?
38
- # => false
39
- ```
40
-
41
- Checkout is completed through a series of steps.
42
- Each of these steps is modeled by a class.
43
-
44
- ```ruby
45
- puts current_checkout.steps
46
- # Workarea::Checkout::Steps::Addresses
47
- # Workarea::Checkout::Steps::Shipping
48
- # Workarea::Checkout::Steps::Payment
49
- ```
50
-
51
- As needed throughout checkout, a checkout step object is initialized.
52
- A checkout step object is always initialized with a checkout instance.
53
-
54
- ```ruby
55
- addresses_step = current_checkout.steps.first.new(current_checkout)
56
- ```
57
-
58
- As the shopper progresses through checkout, each checkout request re-initializes the current checkout object and the object representing the current checkout step.
59
- Each step of checkout _updates_ the checkout until the step is _complete_.
60
-
61
- Each checkout step model therefore responds to `#update` and `#complete?`.
62
- The `#update` method uses the given params to mutate and persist the underlying transactional models (i.e. order, shippings, payment).
63
- The `#complete?` method determines if those transactional models are in the necessary states to continue to the next step of checkout (or place the order).
64
-
65
- ```ruby
66
- # addresses step is incomplete
67
-
68
- addresses_step.complete?
69
- # => false
70
-
71
- # collect params from the shopper and update the checkout
72
-
73
- address_params = {
74
- first_name: 'Ben',
75
- last_name: 'Crouse',
76
- street: '22 S 3rd St',
77
- city: 'Philadelphia',
78
- region: 'PA',
79
- postal_code: '19106',
80
- country: 'US',
81
- phone_number: '2159251800'
82
- }
83
-
84
- addresses_step.update(
85
- email: 'bcrouse@workarea.com',
86
- shipping_address: address_params,
87
- billing_address: address_params
88
- )
89
-
90
- # addresses step is now complete
91
-
92
- addresses_step.complete?
93
- # => true
94
- ```
95
-
96
- This process of updating a step until it is complete is repeated until all steps of checkout are complete.
97
- At that point, the checkout itself is considered complete, and the order can be placed.
98
-
99
- ```ruby
100
- # query the checkout status
101
- current_checkout.complete?
102
- # => true
103
-
104
- # place the order
105
- current_checkout.place_order
106
- # => true
107
- ```
108
-
109
- The examples above illustrate the checkout process from the perspective of the checkout models.
110
- However, in practice, shoppers check out via a series of web requests in the Storefront.
111
- This flow is covered next.
112
-
113
-
114
- Flow
115
- ----------------------------------------------------------------------
116
-
117
- The checkout UI in the Storefront guides a shopper through a series of Storefront web requests, each of which collects the necessary data from the shopper to complete a particular step of checkout.
118
- After all steps are complete, the order is placed, and the shopper is redirected to a view of the placed order.
119
-
120
- The entire flow is illustrated in the following diagram.
121
- The sections following the diagram provide additional details for each step.
122
-
123
- ![Checkout flow](../images/checkout-flow-0.png)
124
-
125
- ![Checkout flow](../images/checkout-flow-1.png)
126
-
127
- ![Checkout flow](../images/checkout-flow-2.png)
128
-
129
- ![Checkout flow](../images/checkout-flow-3.png)
130
-
131
- ![Checkout flow](../images/checkout-flow-4.png)
132
-
133
-
134
- Entry Point
135
- ----------------------------------------------------------------------
136
-
137
- The checkout entry point determines which step of checkout to initially present to the shopper.
138
-
139
- It's possible for a checkout to be complete (`Checkout#complete?`) as soon as it is initialized.
140
- In this case, data from the checkout's user and other sources are used to _autocomplete_ the checkout, and the shopper is redirected to the final step of checkout (payment and place order).
141
- From there, the shopper can make changes to the current and previous checkout steps, or they can simply click "Place Order" to finish checking out.
142
-
143
- If a checkout cannot be autocompleted (e.g. there is no user, or there isn't enough information stored on the user), the shopper is redirected to the addresses step to begin checkout.
144
-
145
-
146
- ### Code
147
-
148
- Run the following command from your application/plugin root to list relevant code files for this step:
149
-
150
- ```bash
151
- echo $(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkouts_controller.rb
152
- ```
153
-
154
-
155
- Step 1: Addresses
156
- ----------------------------------------------------------------------
157
-
158
- The addresses step of checkout collects the shopper's email address, shipping address, and billing address.
159
- Any or all of these may be pre-filled from data stored on the user.
160
- The shipping and billing addresses may be entered as new addresses or selected from a menu of saved addresses.
161
- The billing address may also be entered by choosing "Same as Shipping", which is selected by default.
162
-
163
- Addresses step, guest checkout:
164
-
165
- ![Checkout addresses, guest checkout](../images/checkout-addresses-guest.png)
166
-
167
- (
168
- The screenshot above includes shipping to multiple addresses and address autocomplete.
169
- These features are provided by plugins and are not covered in this doc.
170
- )
171
-
172
- Here is the addresses step as a returning user:
173
-
174
- ![Checkout addresses, returning user](../images/checkout-addresses-user.png)
175
-
176
-
177
- ### Routes
178
-
179
- * `GET /checkout/addresses`
180
- * `PATCH /checkout/addresses`
181
-
182
-
183
- ### `update` Params
184
-
185
- * `:email`
186
- * `:shipping_address`
187
- * `:billing address`
188
-
189
-
190
- ### `complete?` Conditions
191
-
192
- * Order is valid (`Order#valid?`)
193
- * Payment address is present and valid (`Payment#address`, `Payment::Address#valid?`)
194
- * If order requires shipping (`Order#requires_shipping?`), all shippings are shippable (`Shipping#shippable?`)
195
-
196
-
197
- ### Code
198
-
199
- Run the following command from your application/plugin root to list relevant code files for this step:
200
-
201
- ```ruby
202
- echo "
203
- $(bundle show workarea-core)/app/models/workarea/checkout/steps/addresses.rb
204
- $(bundle show workarea-core)/test/models/workarea/checkout/steps/addresses_test.rb
205
- $(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/addresses_controller.rb
206
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout/addresses_view_model.rb
207
- $(bundle show workarea-storefront)/test/view_models/workarea/storefront/checkout/addresses_view_model_test.rb
208
- $(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/modules/address_region_fields.js
209
- $(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/modules/checkout_addresses_forms.js
210
- $(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/templates/saved_addresses_property.jst.ejs
211
- $(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/templates/same_as_shipping_button_property.jst.ejs
212
- $(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/addresses.html.haml
213
- $(bundle show workarea-storefront)/app/assets/stylesheets/workarea/storefront/components/_checkout_addresses.scss
214
- "
215
- ```
216
-
217
-
218
- Step 2: Shipping
219
- ----------------------------------------------------------------------
220
-
221
- The shipping step of checkout collects the shopper's choice of shipping service and, optionally, shipping instructions.
222
- A shipping service is always selected by default, but the shopper can change the shipping service if more than one is available.
223
- Changing the service asynchronously updates the UI to reflect the effects on order pricing.
224
- The shipping instructions field is a simple text field that is hidden by default.
225
-
226
- The shipping step:
227
-
228
- ![Checkout shipping](../images/checkout-shipping.png)
229
-
230
- (
231
- The screenshot above includes shipping to multiple addresses, gift message, and gift wrapping.
232
- These features are provided by plugins and are not covered in this doc.
233
- )
234
-
235
-
236
- ### Routes
237
-
238
- * `GET /checkout/shipping`
239
- * `PATCH /checkout/shipping`
240
-
241
-
242
- ### `update` Params
243
-
244
- * `:shipping_service`
245
- * `:shipping_instructions`
246
-
247
-
248
- ### `complete?` Conditions
249
-
250
- * Order is valid (`Order#valid?`)
251
- * If order requires shipping (`Order#requires_shipping?`), first shipping is valid (`Shipping#valid?`)
252
-
253
-
254
- ### Code
255
-
256
- Run the following command from your application/plugin root to list relevant code files for this step:
257
-
258
- ```ruby
259
- echo "
260
- $(bundle show workarea-core)/app/models/workarea/checkout/steps/shipping.rb
261
- $(bundle show workarea-core)/test/models/workarea/checkout/steps/shipping_test.rb
262
- $(bundle show workarea-core)/app/models/workarea/checkout/shipping_options.rb
263
- $(bundle show workarea-core)/test/models/workarea/checkout/shipping_options_test.rb
264
- $(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/shipping_controller.rb
265
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout/shipping_view_model.rb
266
- $(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/modules/checkout_shipping_services.js
267
- $(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/shipping.html.haml
268
- $(bundle show workarea-storefront)/app/assets/stylesheets/workarea/storefront/components/_checkout_shipping.scss
269
- "
270
- ```
271
-
272
-
273
- Step 3: Payment & Place Order
274
- ----------------------------------------------------------------------
275
-
276
- The third and final step of checkout collects payment and then places the order after the checkout is considered complete.
277
- Payment may be the ID of a saved credit card, or it may be a new credit card (in which case the value of `:payment` is `'new_card'`, and the additional param `:credit_card` contains the credit card attributes; e.g. `:number`).
278
-
279
- The payment step, guest checkout:
280
-
281
- ![Checkout payment, guest](../images/checkout-payment-guest.png)
282
-
283
- (
284
- The "Enter a Promo Code" button, shown above, reveals an additional promo code form, which is separate from the checkout form.
285
- The form submits to `PATCH /cart/add_promo_code` and then returns the shopper to this step of checkout.
286
- Therefore, although this form appears within the checkout UI, it is not part of checkout from a modeling and flow standpoint and isn't included in the discussions above.
287
-
288
- The screenshot above also includes quoting, gift cards, and shipping to multiple addresses.
289
- These features are provided by plugins and are not covered in this doc.
290
- )
291
-
292
- Here is the payment step as a returning user:
293
-
294
- ![Checkout payment, returning user](../images/checkout-payment-user.png)
295
-
296
- Placing the order has various effects; some inline with the original web request, others deferred as background jobs.
297
- Investigate the following Ruby API calls to see all the effects:
298
-
299
- * `Order#place`
300
- * `Checkout#place_order`
301
- * `Checkout#place_order_side_effects`
302
- * `Storefront::Checkout::PlaceOrderController#completed_place_order`
303
- * `SaveUserOrderDetails#perform`
304
- * `MarkDiscountsAsRedeemed#perform`
305
- * `SaveOrderMetrics#perform`
306
-
307
- For convenience, run the following command from your application/plugin root to list the source files where the above methods are defined:
308
-
309
- ```ruby
310
- echo "
311
- $(bundle show workarea-core)/app/models/workarea/order.rb
312
- $(bundle show workarea-core)/app/models/workarea/checkout.rb
313
- $(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/place_order_controller.rb
314
- $(bundle show workarea-core)/app/workers/workarea/save_user_order_details.rb
315
- $(bundle show workarea-core)/app/workers/workarea/mark_discounts_as_redeemed.rb
316
- $(bundle show workarea-core)/app/workers/workarea/save_order_metrics.rb
317
- "
318
- ```
319
-
320
-
321
- ### Routes
322
-
323
- * `GET /checkout/payment`
324
- * `PATCH /checkout/place_order`
325
-
326
-
327
- ### `update` Params
328
-
329
- * `:payment`
330
- * `:credit_card`
331
-
332
-
333
- ### `complete?` Conditions
334
-
335
- * Order is purchasable (`Order#purchasable?`)
336
- * Payment is purchasable for the total price of the order (`Payment#purchasable?`, `Order#total_price`)
337
-
338
-
339
- ### Code
340
-
341
- Run the following command from your application/plugin root to list relevant code files for this step:
342
-
343
- ```ruby
344
- echo "
345
- $(bundle show workarea-core)/app/models/workarea/checkout/steps/payment.rb
346
- $(bundle show workarea-core)/test/models/workarea/checkout/steps/payment_test.rb
347
- $(bundle show workarea-core)/app/models/workarea/checkout/credit_card_params.rb
348
- $(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/payment_controller.rb
349
- $(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/place_order_controller.rb
350
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout/payment_view_model.rb
351
- $(bundle show workarea-storefront)/test/view_models/workarea/storefront/checkout/payment_view_model_test.rb
352
- $(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/modules/checkout_primary_payments.js
353
- $(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/payment.html.haml
354
- $(bundle show workarea-storefront)/app/assets/stylesheets/workarea/storefront/components/_checkout_payment.scss
355
- "
356
- ```
357
-
358
-
359
- Placed Order
360
- ----------------------------------------------------------------------
361
-
362
- After the order is placed, the shopper is redirected to a view of the placed order.
363
- If the shopper is an administrator with `:order` permissions, they are redirected to the placed order in the Admin.
364
- Otherwise, the shopper is redirected to the _checkout confirmation_: a Storefront view of the placed order.
365
-
366
- ![Checkout confirmation](../images/checkout-confirmation.png)
367
-
368
- If the checkout was a guest checkout, the checkout confirmation page includes a form which allows the shopper to create a user account.
369
- If the shopper creates their account, a background job copies details from the checkout (e.g. addresses, payment) to their user account.
370
-
371
-
372
- ### Routes
373
-
374
- * `GET /checkout/confirmation`
375
- * `GET /admin/orders/:id`
376
-
377
-
378
- ### Code
379
-
380
- Run the following command from your application/plugin root to list relevant code files for the Storefront checkout confirmation page:
381
-
382
- ```ruby
383
- echo "
384
- $(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/place_order_controller.rb
385
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout/confirmation_view_model.rb
386
- $(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/confirmation.html.haml
387
- "
388
- ```
389
-
390
-
391
- Shared Implementation
392
- ----------------------------------------------------------------------
393
-
394
- The steps of checkout have a consistent "chrome" and therefore share some of their implementation.
395
- This includes a checkout layout, a progress indicator, and the checkout summary which displays as an aside throughout checkout.
396
-
397
- Run the following command from your application/plugin root to list the source files for the checkout shared implementation.
398
-
399
- ```ruby
400
- echo "
401
- $(bundle show workarea-core)/app/models/workarea/checkout.rb
402
- $(bundle show workarea-core)/test/models/workarea/checkout_test.rb
403
- $(bundle show workarea-core)/app/models/workarea/checkout/auto_complete.rb
404
- $(bundle show workarea-core)/app/models/workarea/checkout/collect_payment.rb
405
- $(bundle show workarea-core)/test/models/workarea/checkout/collect_payment_test.rb
406
- $(bundle show workarea-core)/app/models/workarea/checkout/steps/base.rb
407
- $(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkouts_controller.rb
408
- $(bundle show workarea-storefront)/app/controllers/workarea/storefront/current_checkout.rb
409
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout_content.rb
410
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/cart_view_model.rb
411
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout/summary_view_model.rb
412
- $(bundle show workarea-storefront)/test/view_models/workarea/storefront/checkout/summary_view_model_test.rb
413
- $(bundle show workarea-storefront)/app/views/layouts/workarea/storefront/checkout.html.haml
414
- $(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/_checkout_progress.html.haml
415
- $(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/_summary.html.haml
416
- $(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/summary.html.haml
417
- $(bundle show workarea-storefront)/app/assets/stylesheets/workarea/storefront/components/_checkout_progress.scss
418
- $(bundle show workarea-storefront)/app/assets/stylesheets/workarea/storefront/components/_checkout_step_summary.scss
419
- $(bundle show workarea-storefront)/test/integration/workarea/storefront/checkout_side_effects_integration_test.rb
420
- $(bundle show workarea-storefront)/test/integration/workarea/storefront/checkouts_integration_test.rb
421
- $(bundle show workarea-storefront)/test/integration/workarea/storefront/checkout_with_pricing_override_integration_test.rb
422
- $(bundle show workarea-storefront)/test/integration/workarea/storefront/current_checkout_integration_test.rb
423
- $(bundle show workarea-storefront)/test/system/workarea/storefront/guest_checkout_system_test.rb
424
- $(bundle show workarea-storefront)/test/system/workarea/storefront/logged_in_checkout_system_test.rb
425
- "
426
- ```
427
-
428
-
429
- Extension
430
- ----------------------------------------------------------------------
431
-
432
- You can extend checkout, either to change an existing step or to add a new step (or otherwise change the steps/flow).
433
-
434
-
435
- ### Change an Existing Step
436
-
437
- To change an existing step, [decorate](decoration.html) the models and/or extend the UI code using the appropriate [extension](extension.html) techniques.
438
- If decorating the model, extend `#update` to change which params are expected for an update, and extend `#complete?` to change the conditions for step completion.
439
- For UI changes, refer to the listings of source files in the step-specific sections above.
440
-
441
-
442
- ### Add a Step
443
-
444
- You may need to add a step (or, in some unlikely scenarios remove or re-order steps).
445
- To add a step, complete the following:
446
-
447
- 1. Define the new model
448
- 2. Add the model to the step configuration
449
- 3. Update the checkout flow by changing the relevant controller actions
450
- 4. Add supporting UI code
451
-
452
- Add a new class definition for your checkout step model.
453
- The class should inherit from `Checkout::Steps::Base` and implement `#update` and `#complete?`.
454
-
455
- Within an initializer, modify `Workarea.config.checkout_steps` to include your new class, in the correct position relative to the existing steps.
456
- This config value is a SwappableList.
457
- For example:
458
-
459
- ```ruby
460
- Workarea.config.checkout_steps.insert_after(
461
- 'Workarea::Checkout::Steps::Addresses',
462
- 'Workarea::Checkout::Steps::GiftOptions'
463
- )
464
- ```
465
-
466
- Decorate the specific controller actions that control the flow to and from your new step.
467
- Refer to the following list of controller actions which control flow from step to step.
468
-
469
- * `Storefront::CheckoutsController#new`
470
- * `Storefront::Checkout::AddressesController#completed_addresses_step`
471
- * `Storefront::Checkout::AddressesController#incomplete_addresses_step`
472
- * `Storefront::Checkout::ShippingController#completed_shipping_step`
473
- * `Storefront::Checkout::ShippingController#incomplete_shipping_step`
474
- * `Storefront::Checkout::PlaceOrderController#incomplete_place_order`
475
- * `Storefront::Checkout::PlaceOrderController#completed_place_order`
476
- * `Storefront::Checkout::PlaceOrderController#finished_checkout_destination`
477
-
478
- Finally, create any additional UI code that is necessary to complete your step (e.g. view, view model).
479
- Refer to the lists of code in the step-specific sections above as reference.
@@ -1,164 +0,0 @@
1
- ---
2
- title: Commerce Model
3
- excerpt: The following diagram is a model of commerce from Workarea's perspective.
4
- ---
5
-
6
- Commerce Model
7
- ======================================================================
8
-
9
- The following diagram is a model of _commerce_ from Workarea's perspective.
10
- In this model, Workarea receives _catalog data_ as input and returns _order data_ as output.
11
- Activity within Workarea is represented as a cycle of actions, some of which are completed by _administrators_ within the _Admin_; the rest by _shoppers_ within the _Storefront_.
12
-
13
- (
14
- Keep in mind this model is an abstraction of the Workarea system.
15
- In practice, catalog and order data are not the only input/output, and actions within the system are non-linear and asynchronous.
16
- )
17
-
18
- ![Commerce Model](../images/commerce-model.png)
19
-
20
-
21
- Code Mappings
22
- ----------------------------------------------------------------------
23
-
24
- Use this illustration of Workarea to improve your mental model of the system.
25
- Keep this representation of Workarea in mind when reading Workarea code and documentation.
26
-
27
- To help you in this regard, the following sections map the actions from the diagram to relevant _models_, _view models_, and _services_ within the base Workarea platform.
28
- (These object types are those used to write to and read from the primary data store.)
29
-
30
- Each section provides a command which you can run from the root of your application to list the pathnames of the relevant files within your version of Workarea.
31
-
32
-
33
- ### Admins Manage Catalog
34
-
35
- ```bash
36
- echo "
37
- $(bundle show workarea-core)/app/models/workarea/catalog/product.rb
38
- $(bundle show workarea-core)/app/models/workarea/catalog/variant.rb
39
- $(bundle show workarea-core)/app/models/workarea/catalog/product_image.rb
40
- $(bundle show workarea-core)/app/models/workarea/pricing/sku.rb
41
- $(bundle show workarea-core)/app/models/workarea/pricing/price.rb
42
- $(bundle show workarea-core)/app/models/workarea/inventory/sku.rb
43
- $(bundle show workarea-core)/app/models/workarea/shipping/sku.rb
44
- $(bundle show workarea-core)/app/services/workarea/copy_product.rb
45
- $(bundle show workarea-core)/app/models/workarea/shipping/service.rb
46
- $(bundle show workarea-core)/app/models/workarea/shipping/rate.rb
47
- $(bundle show workarea-core)/app/models/workarea/tax/category.rb
48
- $(bundle show workarea-core)/app/models/workarea/tax/rate.rb
49
- "
50
- ```
51
-
52
-
53
- ### Admins Merchandise Store
54
-
55
- ```bash
56
- echo "
57
- $(bundle show workarea-core)/app/models/workarea/release.rb
58
- $(bundle show workarea-core)/app/models/workarea/release/changeset.rb
59
- $(bundle show workarea-core)/app/models/workarea/catalog/category.rb
60
- $(bundle show workarea-core)/app/models/workarea/product_rule.rb
61
- $(bundle show workarea-core)/app/models/workarea/search/settings.rb
62
- $(bundle show workarea-core)/app/models/workarea/search/customization.rb
63
- $(bundle show workarea-core)/app/models/workarea/content.rb
64
- $(bundle show workarea-core)/app/models/workarea/content/page.rb
65
- $(bundle show workarea-core)/app/models/workarea/content/block.rb
66
- $(bundle show workarea-core)/app/models/workarea/content/asset.rb
67
- $(bundle show workarea-core)/app/models/workarea/navigation/redirect.rb
68
- $(bundle show workarea-core)/app/models/workarea/navigation/taxon.rb
69
- $(bundle show workarea-core)/app/models/workarea/navigation/menu.rb
70
- $(bundle show workarea-core)/app/models/workarea/recommendation/settings.rb
71
- $(bundle show workarea-core)/app/models/workarea/pricing/discount.rb
72
- "
73
- ```
74
-
75
-
76
- ### Shoppers Search & Browse Products
77
-
78
- ```bash
79
- echo "
80
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/category_view_model.rb
81
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/search_view_model.rb
82
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/search_suggestion_view_model.rb
83
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/page_view_model.rb
84
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/content_view_model.rb
85
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/menu_view_model.rb
86
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/recommendations_view_model.rb
87
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/product_view_model.rb
88
- "
89
- ```
90
-
91
- ### Shoppers View Products
92
-
93
- ```bash
94
- echo "
95
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/product_view_model.rb
96
- "
97
- ```
98
-
99
-
100
- ### Shoppers Create & Manage Carts
101
-
102
- ```bash
103
- echo "
104
- $(bundle show workarea-core)/app/models/workarea/order.rb
105
- $(bundle show workarea-core)/app/models/workarea/order/item.rb
106
- $(bundle show workarea-core)/app/models/workarea/pricing.rb
107
- $(bundle show workarea-core)/app/models/workarea/price_adjustment.rb
108
- $(bundle show workarea-core)/app/models/workarea/pricing/calculator.rb
109
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/cart_view_model.rb
110
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/cart_item_view_model.rb
111
- "
112
- ```
113
-
114
- ### Shoppers Place Orders
115
-
116
- ```bash
117
- echo "
118
- $(bundle show workarea-core)/app/models/workarea/checkout.rb
119
- $(bundle show workarea-core)/app/models/workarea/checkout/steps/base.rb
120
- $(bundle show workarea-core)/app/models/workarea/payment.rb
121
- $(bundle show workarea-core)/app/models/workarea/payment/transaction.rb
122
- $(bundle show workarea-core)/app/models/workarea/inventory.rb
123
- $(bundle show workarea-core)/app/models/workarea/inventory/transaction.rb
124
- $(bundle show workarea-core)/app/models/workarea/inventory/transaction_item.rb
125
- $(bundle show workarea-core)/app/models/workarea/shipping.rb
126
- $(bundle show workarea-core)/app/models/workarea/shipping/service_selection.rb
127
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/order_view_model.rb
128
- $(bundle show workarea-storefront)/app/view_models/workarea/storefront/order_item_view_model.rb
129
- $(bundle show workarea-core)/app/models/workarea/pricing/discount/redemption.rb
130
- $(bundle show workarea-core)/app/services/workarea/create_fulfillment.rb
131
- "
132
- ```
133
-
134
-
135
- ### Admins Manage Orders
136
-
137
- ```bash
138
- echo "
139
- $(bundle show workarea-core)/app/models/workarea/fulfillment.rb
140
- $(bundle show workarea-core)/app/models/workarea/fulfillment/item.rb
141
- $(bundle show workarea-core)/app/models/workarea/fulfillment/event.rb
142
- $(bundle show workarea-core)/app/models/workarea/fulfillment/package.rb
143
- $(bundle show workarea-core)/app/models/workarea/pricing/override.rb
144
- $(bundle show workarea-core)/app/models/workarea/pricing/request.rb
145
- $(bundle show workarea-core)/app/models/workarea/payment/refund.rb
146
- $(bundle show workarea-core)/app/services/workarea/cancel_order.rb
147
- $(bundle show workarea-core)/app/services/workarea/copy_order.rb
148
- "
149
- ```
150
-
151
-
152
- ### Admins View Insights & Reports
153
-
154
- ```bash
155
- echo "
156
- $(bundle show workarea-core)/app/models/workarea/metrics/by_day.rb
157
- $(bundle show workarea-core)/app/models/workarea/metrics/by_week.rb
158
- $(bundle show workarea-core)/app/models/workarea/insights/base.rb
159
- $(bundle show workarea-admin)/app/view_models/workarea/admin/insight_view_model.rb
160
- $(bundle show workarea-admin)/app/view_models/workarea/admin/reports/insights_view_model.rb
161
- $(bundle show workarea-core)/app/models/workarea/reports/export.rb
162
- $(bundle show workarea-core)/app/services/workarea/export_report.rb
163
- "
164
- ```