workarea 3.4.16 → 3.4.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
- ```