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,155 +0,0 @@
1
- ---
2
- title: Overriding
3
- excerpt: Overriding is a UI extension technique where an application replaces views and assets from the platform with its own customized copies of the files. The replacement files—called overrides—allow HTML, CSS, and JavaScript sent to the browser to be exten
4
- ---
5
-
6
- # Overriding
7
-
8
- <dfn>Overriding</dfn> is a UI extension technique where an application _replaces_ views and assets from the platform with its own customized copies of the files. The replacement files—called <dfn>overrides</dfn>—allow HTML, CSS, and JavaScript sent to the browser to be extensively customized by the application.
9
-
10
- An application can override platform views, layouts, and partials, as well as platform files served by the asset pipeline, such as stylesheets, JavaScript files, images, and fonts.
11
-
12
- To override any of these files, simply copy the file to the same path within your application. Rails will render or serve your override instead of the original file from the platform. This works because when resolving paths, Action View and Sprockets both look for files within your application before looking in any Rails engines, including the Workarea engines.
13
-
14
- ## Example
15
-
16
- UI customizations can be extensive, but I'll use a simple example to demonstrate the concept of overriding. By default, product pages in the Storefront display recommendations below the full product description. Refer to the following image.
17
-
18
- ![Storefront product page before overriding](images/storefront-product-before-overriding.png)
19
-
20
- The following example overrides the _products#show_ view in order to change the rendered HTML, moving the recommendations _above_ the product description.
21
-
22
- ### Identify the File to Override
23
-
24
- Before you can create an override, you must identify the file you want to customize. In my case, the file is _app/views/workarea/storefront/products/show.html.haml_. I know this from experience, but there are a variety of ways to search for the file if you are less familiar with the composition of the Storefront.
25
-
26
- For example, you can tail the Rails log while browsing to the page of interest. The following example demonstrates a simple search on the log to list recently rendered Haml files.
27
-
28
- ```bash
29
- $ tail -f log/development.log | grep 'haml'
30
- Rendered vendor/ruby/2.4.0/gems/workarea-reviews-2.1.0/app/views/workarea/storefront/products/_rating.html.haml (20.2ms)
31
- Rendered vendor/ruby/2.4.0/gems/workarea-reviews-2.1.0/app/views/workarea/storefront/products/_reviews_summary.html.haml (35.0ms)
32
- Rendered vendor/ruby/2.4.0/gems/workarea-clothing-2.1.0/app/views/workarea/storefront/products/_clothing_summary.html.haml (7.1ms)
33
- Rendered vendor/ruby/2.4.0/gems/workarea-storefront-3.1.1/app/views/workarea/storefront/products/_summary.html.haml (274.9ms)
34
- Rendered vendor/ruby/2.4.0/gems/workarea-storefront-3.1.1/app/views/workarea/storefront/recent_views/show.html.haml (329.8ms)
35
- Rendering vendor/ruby/2.4.0/gems/workarea-storefront-3.1.1/app/views/workarea/storefront/products/show.html.haml within layouts/workarea/storefront/application
36
- Rendered vendor/ruby/2.4.0/gems/workarea-storefront-3.1.1/app/views/workarea/storefront/products/_price.html.haml (5.8ms)
37
- Rendered vendor/ruby/2.4.0/gems/workarea-storefront-3.1.1/app/views/workarea/storefront/products/_pricing.html.haml (19.7ms)
38
- # ...
39
- ```
40
-
41
- Or, inspect the DOM for a unique string, and search for that string within all installed Workarea engines. In my example, I observed the class value _product-detail-container_, which seemed like a good search term. As shown below, this reduced the list of candidates to three files (two of them views), a small enough set to review manually.&nbsp;<sup><a href="#notes" id="note-1-context">[1]</a></sup>
42
-
43
- ```bash
44
- $ grep -lr 'product-detail-container' $(bundle show --paths | grep 'workarea')</kbd>
45
- /vagrant/board-game-supercenter/vendor/ruby/2.4.0/gems/workarea-package_products-3.1.0/app/views/workarea/storefront/products/package_show.html.haml
46
- /vagrant/board-game-supercenter/vendor/ruby/2.4.0/gems/workarea-storefront-3.1.1/app/assets/stylesheets/workarea/storefront/components/_product_detail_container.scss
47
- /vagrant/board-game-supercenter/vendor/ruby/2.4.0/gems/workarea-storefront-3.1.1/app/views/workarea/storefront/products/show.html.haml
48
- ```
49
-
50
- ### Copy the File into Your Application
51
-
52
- Next, I create the necessary directory structure and copy the file into my application. The file path, relative to the engine root, is identical within the Storefront engine and my application.
53
-
54
- ```bash
55
- $ mkdir -p app/views/workarea/storefront/products
56
- $ cp vendor/ruby/2.4.0/gems/workarea-storefront-3.1.1/app/views/workarea/storefront/products/show.html.haml app/views/workarea/storefront/products
57
- ```
58
-
59
- The override has now effectively replaced the original Storefront file, but the files are identical, so there is no observable difference in the application. It is a good idea to commit the new file to your application repository before changing it, so that the introduction of the file and the changes you make to it are recorded separately in your repository history.
60
-
61
- ```bash
62
- $ git commit -m 'Override view' app/views/workarea/storefront/products/show.html.haml
63
- ```
64
-
65
- ### Customize the File
66
-
67
- Now you can edit the file as necessary for your requirements. Be sure to edit the copy of the file within your application and not the original engine copy. For my example, I re-ordered the product description and recommendations, as shown in the diff below.
68
-
69
- ```diff
70
- diff --git a/app/views/workarea/storefront/products/show.html.haml b/app/views/workarea/storefront/products/show.html.haml
71
- index 1ef4ec4..6969e5e 100644
72
- --- a/app/views/workarea/storefront/products/show.html.haml
73
- +++ b/app/views/workarea/storefront/products/show.html.haml
74
- @@ -27,11 +27,6 @@
75
- .product-details{ class: "product-details--#{@product.template}" }
76
- = render "workarea/storefront/products/templates/#{@product.template}", product: @product
77
-
78
- - - if @product.description.present?
79
- - .product-detail-container__description#description
80
- - %h2.product-detail-container__description-heading= t('workarea.storefront.products.description')
81
- - .product-detail-container__description-body{ itemprop: 'description' }!= @product.description
82
- -
83
- - if @product.recommendations.any?
84
- %h2= t('workarea.storefront.recommendations.heading')
85
-
86
- @@ -41,6 +36,11 @@
87
- .product-summary.product-summary--small{ itemprop: 'isRelatedTo', itemscope: true, itemtype: 'http://schema.org/Product' }
88
- = render 'workarea/storefront/products/summary', product: product
89
-
90
- + - if @product.description.present?
91
- + .product-detail-container__description#description
92
- + %h2.product-detail-container__description-heading= t('workarea.storefront.products.description')
93
- + .product-detail-container__description-body{ itemprop: 'description' }!= @product.description
94
- +
95
- %div{ data: { recommendations_placeholder: recent_views_path } }
96
-
97
- = append_partials('storefront.product_show', product: @product)
98
- ```
99
-
100
- Browsing to the same page demonstrates the final result: the recommendations display above the product description.
101
-
102
- ![Storefront product page after overriding](images/storefront-product-after-overriding.png)
103
-
104
- ## Override Generator
105
-
106
- Workarea also provides an override generator, which you can use to create overrides for a given type and path. Run the generator with the _‑‑help_ option to view its documentation. The following example demonstrates running the command in Workarea 3.1.2.
107
-
108
- ```bash
109
- $ bin/rails g workarea:override --help
110
- Usage:
111
- rails generate workarea:override TYPE PATH [options]
112
-
113
- Runtime options:
114
- -f, [--force] # Overwrite files that already exist
115
- -p, [--pretend], [--no-pretend] # Run but do not make any changes
116
- -q, [--quiet], [--no-quiet] # Suppress status output
117
- -s, [--skip], [--no-skip] # Skip files that already exist
118
-
119
- Options:
120
- TYPE can be one of:
121
- - views
122
- - layouts
123
- - stylesheets
124
- - javascripts
125
- - images
126
- - fonts
127
-
128
- Description:
129
- Generates application-specific overrides of Workarea front-end files
130
-
131
- Examples:
132
- rails g workarea:override views workarea/storefront
133
- rails g workarea:override layouts workarea/storefront/application.html.haml
134
- rails g workarea:override layouts workarea/admin/application.html.haml
135
- rails g workarea:override stylesheets workarea/storefront/reviews
136
- rails g workarea:override stylesheets workarea/core/helpers/_respond_to.scss
137
- rails g workarea:override javascripts workarea/core/modules/string.js
138
- rails g workarea:override javascripts workarea/storefront/templates/btn.jst.ejs
139
- rails g workarea:override fonts workarea/storefront/icons.woff
140
- rails g workarea:override stylesheets jquery_ui/admin/_ui_dialog.scss
141
- ```
142
-
143
- ## Impact on Upgrades
144
-
145
- Overrides provide enormous design flexibility, but they can affect the cost of upgrading your application to a newer release of the platform. Because your overrides maintain no relationship to the files they've replaced in the platform, changes to the files introduced by the platform will not be present in your application after upgrading. You will need to manually apply the same changes to your overrides if desired.
146
-
147
- To mitigate this problem, Workarea provides [Workarea Upgrade](https://stash.tools.weblinc.com/projects/WL/repos/workarea-upgrade/browse). Among its features, it will show diffs of Workarea changes for the files you've overridden in your application, easing the process of merging those changes into your overrides.
148
-
149
- ## Overrides within Plugins
150
-
151
- Unlike other [extension](extension-overview.html) techniques, overriding is used almost exclusively by applications and is used by plugins in only rare cases. Although plugins are technically able to override files, it becomes problematic when other plugins or the application in which they are installed also want to override the same files. Plugins therefore override files only when they can assume they are the canonical source for the files, such as a theme plugin overriding the Storefront layout and assets.
152
-
153
- ## Notes
154
-
155
- [1] I'm using Unix tools in my examples because they're universally available and are easy to represent in textual documentation. You should use whatever tools you are comfortable with for searching and browsing source code.
@@ -1,43 +0,0 @@
1
- ---
2
- title: Overview
3
- excerpt: An overview of what Workarea is, how it's distributed, and its major technologies.
4
- ---
5
-
6
- # Overview
7
-
8
- Workarea is an open-source, enterprise-grade commerce platform. The platform and many of its plugins are maintained by Workarea. The rest of the Workarea community maintain the majority of Workarea's plugins and also contribute directly to the platform. Workarea Commerce Cloud is a subscription service offered by the [Workarea](https://www.workarea.com) company, which includes extended functionality and cloud-based hosting.
9
-
10
- ## Built with
11
-
12
- ### Ruby
13
-
14
- Workarea is written in Ruby, and is built on the [Ruby on Rails](https://rubyonrails.org) framework. As such, it's distributed as a gem via [RubyGems](http://guides.rubygems.org/). Workarea and it's plugins are [Rails' engines](https://guides.rubyonrails.org/engines.html) that get mounted inside a host Rails application. Workarea also relies on [Sidekiq](https://sidekiq.org) for processing background work.
15
-
16
- ### Databases
17
-
18
- #### MongoDB
19
-
20
- [MongoDB](https://www.mongodb.com) serves as the canonical, database-of-record in Workarea. Its flexible, document-oriented data model is a good fit for diverse catalogs offered by retailers and fits well with our plugin model, where the schema can be managed in the application code.
21
-
22
- #### Elasticsearch
23
-
24
- [Elasticsearch](https://www.elastic.co/products/elasticsearch) drives all the important listing and browsing done in Workarea. This includes storefront search, product recommendations, category browsing, admin indexes, and more. Its robust querying makes it a perfect fit for all the searching requirements a large ecommerce system has.
25
-
26
- #### Redis
27
-
28
- [Redis](https://redis.io) is Workarea's Swiss army knife of databases. It stores the Sidekiq job queue, provides storage for recommendations, serves as the Rails cache, and more.
29
-
30
- ## Customization
31
-
32
- Workarea is designed to be customized to work for merchants with different needs. The four primary ways of customizing Workarea's behaviors are [configuration](configuration.html), [plugins](plugins-overview.html), [decoration](decoration.html), and Rails' overrides system ([overriding](overriding.html)).
33
-
34
- ## Testing
35
-
36
- Workarea inherits the Rails' community's ethic of testing. In this spirit, Workarea distributes its test suite as runnable and customizable, just like any application code using decoration techniques. This helps implementers of Workarea to ensure their customizations don't break Workarea out-of-the-box functionality and helps with upgrades to new versions. [Read more on testing.](testing.html)
37
-
38
- ## How do I get started?
39
-
40
- You have two options for jumping in with Workarea.
41
-
42
- 1. Try out a user-facing demo, using [instructions from our README](https://github.com/workarea-commerce/workarea#demo)
43
- 2. [Create a new app](create-a-new-app.html) and start coding
@@ -1,12 +0,0 @@
1
- ---
2
- title: Plugins Overview
3
- excerpt: A Workarea plugin is a Rails engine used to add to or customize the features of the Workarea platform. Plugins allow code to be managed and maintained separately by different teams, in different repositories, and on different schedules. Plugins distribu
4
- ---
5
-
6
- # Plugins Overview
7
-
8
- A Workarea plugin is a Rails engine used to add to or customize the features of the Workarea platform. Plugins allow code to be managed and maintained separately by different teams, in different repositories, and on different schedules. Plugins distribute the development of the platform so the core developers don't have to develop every feature a project may require.
9
-
10
- Systems integrators (SIs) are encouraged to develop their own plugins to package features for re-use across projects or teams.
11
-
12
-
@@ -1,202 +0,0 @@
1
- ---
2
- title: Prerequisites & Dependencies
3
- excerpt: The Workarea platform stands on the shoulders of many other software projects. Workarea's training and support materials focus on Workarea software and do not teach the specifics of Workarea's dependencies. However, this "prerequisite" knowledge is covere
4
- ---
5
-
6
- # Prerequisites & Dependencies
7
-
8
- The Workarea platform stands on the shoulders of many other software projects. Workarea's training and support materials focus on Workarea software and do not teach the specifics of Workarea's dependencies. However, this "prerequisite" knowledge is covered in depth by many other resources. In this guide, I introduce Workarea's most notable dependencies and provide links to resources that cover each.
9
-
10
- ## Help from the Workarea Community
11
-
12
- While studying these topics, you may need to reach out for help. In addition to the usual places ([Google](https://www.google.com/), [Stack Overflow](http://stackoverflow.com/)), consider jumping on the [Workarea Slack](https://workarea-community.slack.com), where developers who have experience with Workarea applications will have the opportunity to help you.
13
-
14
- ## Critical Paths
15
-
16
- For those looking for the short list(s), I've listed below the critical paths for back end and front end specialists.
17
-
18
- ### Back End
19
-
20
- - [Ruby language](https://www.ruby-lang.org/en/) and [object oriented programming in Ruby](http://www.poodr.com/)
21
- - [Ruby on Rails web framework](http://rubyonrails.org/)
22
- - [Sidekiq background jobs](http://sidekiq.org/)
23
- - [MongoDB document database](https://www.mongodb.org/) and [Mongoid object-document mapper](https://docs.mongodb.org/ecosystem/tutorial/ruby-mongoid-tutorial/)
24
- - [Elasticsearch full text search engine](https://www.elastic.co/products/elasticsearch) and [Elasticsearch libraries for Rails applications](https://github.com/elastic/elasticsearch-rails/tree/master/elasticsearch-persistence)
25
-
26
- ### Front End
27
-
28
- - [Ruby language](https://www.ruby-lang.org/en/)
29
- - [Ruby on Rails web framework](http://rubyonrails.org/)
30
- - [Haml templates](http://haml.info/)
31
- - [SCSS stylesheets](http://sass-lang.com/)
32
- - [BEM-based UI components](http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/)
33
- - [lodash utility library](https://lodash.com/)
34
- - [jQuery DOM manipulation and ajax library](https://jquery.com/)
35
-
36
- Continue reading for a deeper dive into Workarea's dependencies.
37
-
38
- ## Fundamentals
39
-
40
- Let's start with some fundamentals.
41
-
42
- ### Operating System & Shell
43
-
44
- Although it may be possible to develop Workarea applications on Windows, Workarea is hosted on and designed for use on Unix operating systems (including macOS). The <dfn>shell</dfn> is the program that passes commands from your keyboard to the operating system, and is also known as the <dfn>command line interface</dfn>, or <dfn>CLI</dfn>, for the OS. Many Workarea features depend on familiarity with the shell.
45
-
46
- [The Command Line Crash Course](http://cli.learncodethehardway.org/book/) and [LinuxCommand.org](http://linuxcommand.org/) are online tutorials that present increasingly complex shell concepts while encouraging you to follow along. The material from LinuxCommand.org has also been developed into an ebook that's available [from the author](http://linuxcommand.org/tlcl.php) and [from No Starch Press](https://www.nostarch.com/tlcl.htm).
47
-
48
- ### Git
49
-
50
- [Git](https://git-scm.com/) is the version control system used to manage Workarea source code and is the VCS you will most likely use to manage your application source code as well.
51
-
52
- If you're completely new to Git, try it out interactively with [Try Git](https://try.github.io/levels/1/challenges/1). The [project's website](https://git-scm.com/) provides full API documentation for the command line interface and provides information about [graphical applications](https://git-scm.com/downloads/guis) for working with Git.
53
-
54
- The site also provides downloads of the book [Pro Git](https://git-scm.com/book/en/v2), a easily digestible introduction to using Git. The book is also available [from Apress](http://www.apress.com/9781484200773).
55
-
56
- ## Ruby & Rails
57
-
58
- Ruby and Rails are at the heart of Workarea, both technologically and philosophically. Both value developer happiness and productivity, two design principles that guide the development of the Workarea platform.
59
-
60
- ### Ruby Language
61
-
62
- The predominant programming language in Workarea is [Ruby](https://www.ruby-lang.org/en/), a general purpose programming language used primarily for web applications due to the success of Ruby on Rails, which I cover below. While known chiefly as an object-oriented language, Ruby also provides strong support for the functional programming paradigm and is often used procedurally as a scripting language. Ruby's reader-friendly syntax, supportive community, and expansive standard library make it a favorite among developers.
63
-
64
- Those new to Ruby can learn it interactively at [Try Ruby](http://tryruby.org/levels/1/challenges/0). Beyond that, check out [Programming Ruby](https://pragprog.com/book/ruby4/programming-ruby-1-9-2-0), also known as <dfn>The Pickaxe</dfn>. The book was the seminal English language work on Ruby. It provides a complete tutorial and reference for the language and is updated regularly by its original author and publisher. For a more whimsical explanation of the language, check out the ebook [Why's (Poignant) Guide to Ruby](http://poignant.guide/), a community favorite. Or, if you're an experienced programmer coming from another language, you may want to consult O'Reilly's [The Ruby Programming Language](http://shop.oreilly.com/product/9780596516178.do), co-authored by Yukihiro Matsumoto (Matz), the creator of Ruby.
65
-
66
- Ruby's [official documentation](http://ruby-doc.org/) covers Ruby Core as well as the Standard Library, a collection of "blessed" libraries that ship with Ruby. The Ruby [project website](https://www.ruby-lang.org/en/) links to many other Ruby resources.
67
-
68
- I'd also like to note that the Rails web framework includes [Active Support Core Extensions](http://edgeguides.rubyonrails.org/active_support_core_extensions.html) which extend many of Ruby's classes with additional useful methods. Many of these methods are used heavily in Workarea.
69
-
70
- ### Ruby Version Management
71
-
72
- Ruby version managers exist to (1) install ruby versions and (2) change ruby versions. You will likely need many versions of Ruby installed to work on multiple applications that were developed at different points in time.
73
-
74
- Workarea developers generally use [rbenv](https://github.com/rbenv/rbenv) + [ruby-build](https://github.com/rbenv/ruby-build) for this purpose. Other popular choices are [chruby](https://github.com/postmodern/chruby) + [ruby-install](https://github.com/postmodern/ruby-install) or [rvm](https://rvm.io/). Refer to each project's documentation to see how the tool installs and switches between different ruby versions.
75
-
76
- ### Ruby Programming
77
-
78
- Ruby is often used for two different types of programming, scripting and applications. While scripts are typically written procedurally, applications tend to follow object-oriented design principles in order to manage complexity. For a primer on object-oriented design in Ruby, I highly recommend [Practical Object-Oriented Design in Ruby](http://www.poodr.com/), aka <dfn>POODR</dfn>. Sandi Metz leverages her decades of programming experience to bring object-orientation to life with clear examples using idomatic Ruby.
79
-
80
- Central to the long term maintenance of applications is <dfn>refactoring</dfn>, restructuring software without changing its observable behavior. [Refactoring: Ruby Edition](http://martinfowler.com/books/refactoringRubyEd.html) is a rewrite of Martin Fowler's classic text on refactoring, this time with code examples in Ruby.
81
-
82
- ### Rails
83
-
84
- [Ruby on Rails](http://rubyonrails.org/) is the de facto standard web framework for Ruby. Rails' [design principles](http://rubyonrails.org/doctrine/) of developer happiness and productivity were inspired by Ruby. Workarea builds heavily on Rails, both technologically and philosophically.
85
-
86
- If you're new to Rails, get started with one of many Rails tutorials. The book [Agile Web Development with Rails](https://pragprog.com/book/rails4/agile-web-development-with-rails-4) is one such tutorial and was originally written by David Heinemeier Hansson (DHH), the creator of Rails. The book is now maintained by Sam Ruby under the same publisher and is diligently updated for each new version of Rails.
87
-
88
- Next move on to the [Ruby on Rails Guides](http://guides.rubyonrails.org/), which are maintened by the Rails team and community, and cover the different aspects of Rails in greater depth. Workarea tries to deviate as little as possible from Rails, but one difference is the use of Mongoid instead of Active Record. I explain Mongoid below, but mention it here because Active Record is covered prominently in the Rails guides. Fortunately, Mongoid copies the API of Active Record, so if you have an existing knowledge of Active Record, it will translate well to Mongoid.
89
-
90
- Finally, for a class and method level reference, refer to the [Rails API Documentation](http://api.rubyonrails.org/).
91
-
92
- ### Testing
93
-
94
- Automated testing is core to the Ruby community and to Workarea. Workarea uses several testing tools, some of which are listed below.
95
-
96
- | Project | Description |
97
- | --- | --- |
98
- | [Minitest](https://github.com/seattlerb/minitest) | Testing framework for Ruby including test runner, assertion library, and mocking library |
99
- | [Capybara](https://github.com/jnicklas/capybara) | Acceptance testing library providing a DSL to drive a headless browser |
100
- | [WebMock](https://github.com/bblimke/webmock) | A library for stubbing and setting expectations on HTTP requests in Ruby |
101
- | [vcr](https://github.com/vcr/vcr) | Library for recording and replaying HTTP requests and responses |
102
-
103
- ### Additional Dependencies
104
-
105
- The following table lists other notable libraries utilized by Workarea.
106
-
107
- | Project | Usage |
108
- | --- | --- |
109
- | [Sidekiq](https://github.com/mperham/sidekiq) | Process potentially expensive jobs in the background |
110
- | [Sidekiq-Cron](https://github.com/ondrejbartas/sidekiq-cron) | Schedule Sidekiq jobs |
111
- | [Dragonfly](https://markevans.github.io/dragonfly/) | Store files and process images using ImageMagick |
112
- | [Active Merchant](https://github.com/activemerchant/active_merchant) | Integrate with a variety of payment gateways |
113
- | [I18n.js](https://github.com/fnando/i18n-js) | Provide Ruby I18n translations in JavaScript |
114
- | [JsRoutes](https://github.com/railsware/js-routes) | Provide Rails named routes in JavaScript |
115
- | [Kaminari](https://github.com/amatsuda/kaminari) | Paginate collections |
116
- | [Local Time](https://github.com/basecamp/local_time) | Display times in a user's local time zone |
117
- | [Predictor](https://github.com/Pathgather/predictor) | Produce product recommendations |
118
- | [Rack::Attack!!!](https://github.com/kickstarter/rack-attack) | Block and throttle abusive requests |
119
-
120
- Ruby libraries for interacting with databases are covered below.
121
-
122
- ## Databases
123
-
124
- Workarea applications depend on three different document-based (NoSQL) databases: MongoDB, Elasticsearch, and Redis. Each of the databases uses a client/server architecture, and Workarea provides a Ruby client for each database. Resources for the three databases and their Ruby drivers are provided below.
125
-
126
- ### MongoDB & Mongoid
127
-
128
- [MongoDB](https://www.mongodb.org/) is used as the primary data store in Workarea applications. MongoDB is a NoSQL database designed for modern web applications. It is designed primarily for developers rather than analysts and employs an intuitive data model based on documents rather than tables. MongoDB utilizes a client/server architecture where programming language APIs are used to communicate with the server via BSON, a binary representation of JSON (with proprietary extensions).
129
-
130
- Workarea applications typically run on the latest version of the database, currently v3.2.
131
-
132
- While there is a low level Ruby driver for MongoDB, Workarea uses [Mongoid](https://docs.mongodb.org/ecosystem/tutorial/ruby-mongoid-tutorial/), an <dfn>Object-Document Mapper</dfn>, or <dfn>ODM</dfn>. Mongoid provides an API that is purposefully similar to [Active Record](http://guides.rubyonrails.org/active_record_basics.html), the library used to persist models in Rails applictions using relational databases. If you have any familiarity with Active Record, that knowledge should transfer directly to Mongoid.
133
-
134
- If you're new to MongoDB, I recommend the book [MongoDB in Action, Second Edition](https://www.manning.com/books/mongodb-in-action-second-edition), written by a former employee of [MongoDB, Inc.](https://www.mongodb.com/), the corporate sponsor and developer of MongoDB. The book introduces Mongo and compares it to other databases before explaining how to develop a Mongo application using the MongoDB shell and MongoDB Ruby driver. The second edition was updated to cover MongoDB version 3.0.
135
-
136
- MongoDB Inc. also provides free online courses at [MongoDB University](https://university.mongodb.com/). While they don't teach a Ruby-specific course, all the Mongo drivers have a similar API, so knowledge of one will transfer to any other.
137
-
138
- The following learning resources are available directly from MongoDB:
139
-
140
- - [MongoDB Manual](https://docs.mongodb.org/manual/)
141
- - [Getting Started Guide](https://docs.mongodb.org/getting-started/shell/)
142
- - [Ruby Driver Tutorial](https://docs.mongodb.org/ecosystem/drivers/ruby/)
143
- - [Mongoid Tutorial](https://docs.mongodb.org/ecosystem/tutorial/ruby-mongoid-tutorial/)
144
-
145
- Workarea also uses the following libraries to extend Mongoid:
146
-
147
- | Project | Extension to Mongoid |
148
- | --- | --- |
149
- | [Money-Rails](https://github.com/RubyMoney/money-rails) | `Money` data type |
150
- | [Mongoid::ActiveMerchant](https://github.com/bencrouse/mongoid-active_merchant) | `ActiveMerchant::Billing::Response` data type |
151
- | [Mongoid::AuditLog](https://github.com/bencrouse/mongoid-audit_log) | Audit logging of Mongoid documents |
152
- | [mongoid-paranoia](https://github.com/haihappen/mongoid-paranoia) | "Soft" deletion of Mongoid documents |
153
- | [mongoid-tree](https://github.com/benedikt/mongoid-tree) | Tree structure |
154
-
155
- ### Elasticsearch
156
-
157
- [Elasticsearch](https://www.elastic.co/products/elasticsearch) is the full text search engine for Workarea applications. The project is built on top of Apache Lucene, a full text search engine library used to integrate search functionality into Java applications. Elasticsearch, also written in Java, hides the complexities of Lucene behind RESTful APIs. Elasticsearch clients use these APIs to communicate with Elasticsearch servers via JSON over HTTP.
158
-
159
- Workarea uses Elasticsearch version 5.x. Workarea applications use a Ruby client to communicate with the Elasticsearch server.
160
-
161
- If you're new to Elasticsearch there is no better resource than [Elasticsearch: The Definitive Guide](https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html). This holistic and accessible book presents the technology and philosophy of Elasticsearch and is written and maintained by two trainers from [Elastic](https://www.elastic.co/), the corporate sponsor and developer of Elasticsearch. The book is also available from [O'Reilly Media](http://shop.oreilly.com/product/0636920028505.do).
162
-
163
- Elastic also provides [in person trainings](https://www.elastic.co/training) at various locations for a fee.
164
-
165
- The [Elasticsearch Reference (v5.0)](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/index.html) is a complete reference to the Elasticsearch RESTful APIs.
166
-
167
- ### Redis
168
-
169
- Workarea also makes use of [Redis](http://redis.io/), an in-memory data structure store, used as a database and cache. Workarea applications use the [Ruby client library for Redis](https://github.com/redis/redis-rb) to communicate with a Redis server over the network via a proprietary protocol.
170
-
171
- Due to its simplicity, there is little to learn about Redis. Refer to the [command reference](http://redis.io/commands) as needed to manipulate keys and values stored in Redis.
172
-
173
- ## Front End
174
-
175
- ### HTML & CSS
176
-
177
- Workarea uses a modular component library to compose its UIs. Front end developers will benefit from familiarity with a UI component library, such as [Bootstrap](http://getbootstrap.com/components/). Workarea uses [style guides](style-guides.html) to document and unit test its UI components. Unit testing of front end components is not a well adopted practice among front end developers. If this concept is new to you, review the [test suite for Normalize.css](https://github.com/necolas/normalize.css/blob/master/test.html) ([view the rendered HTML](http://htmlpreview.github.io/?https://github.com/necolas/normalize.css/blob/master/test.html)), which demonstrates the idea well.
178
-
179
- Another important concept of the Workarea front end is [BEM](http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/), which stands for <dfn>Block, Element, Modifier</dfn>. Workarea uses the BEM methodology for naming and structuring HTML and CSS. BEM and other concepts are explained in [CSS Guidelines](http://cssguidelin.es/), which Workarea follows as a style guide.
180
-
181
- Front end developers should also familiarize themselves with the following HTML/CSS dependencies:
182
-
183
- | Project | Description |
184
- | --- | --- |
185
- | [Haml](http://haml.info/) | The server-side templating language responsible for rendering HTML |
186
- | [Sass (SCSS)](http://sass-lang.com/) | The stylesheet language used to produce CSS |
187
- | [Normalize.css](https://necolas.github.io/normalize.css/) | A library to normalize CSS across browsers (similar to a CSS reset), version 3.x |
188
-
189
- ### JavaScript
190
-
191
- Workarea depends on a variety of JavaScript libraries, most notably the following:
192
-
193
- | Project | Description |
194
- | --- | --- |
195
- | [lodash](https://lodash.com/) | JavaScript's missing standard library which provides cross-browser implementations of `map`, `reduce`, and similar functions, version 3.x |
196
- | [jQuery](https://jquery.com/) | The de facto standard libarary for DOM manipulations and ajax, version 1.11.x |
197
- | [jQuery&nbsp;UI](https://jqueryui.com/) | Extensible UI widget library, version 1.11.x |
198
- | [jQuery&nbsp;Validation&nbsp;Plugin](http://jqueryvalidation.org/) | Library for client-side validation |
199
- | [Feature.js](http://featurejs.com/) | Feature detection library, version 1.0.1 |
200
- | [Teaspoon](https://github.com/modeset/teaspoon) | JavaScript test runner for Rails applications |
201
- | [Mocha](https://mochajs.org/) | JavaScript testing framework |
202
- | [Chai](http://chaijs.com/) | JavaScript assertion library |