workarea 3.4.16 → 3.4.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +81 -0
- metadata +10 -579
- data/docs/Gemfile +0 -8
- data/docs/Gemfile.lock +0 -130
- data/docs/bin/middleman +0 -29
- data/docs/config.rb +0 -87
- data/docs/config.ru +0 -7
- data/docs/data/articles.yml +0 -157
- data/docs/package.json +0 -15
- data/docs/source/404.html.erb +0 -13
- data/docs/source/articles/access-routes-in-javascript.html.md +0 -33
- data/docs/source/articles/add-a-content-area.html.md +0 -169
- data/docs/source/articles/add-a-content-block-type.html.md +0 -334
- data/docs/source/articles/add-a-report.html.md +0 -202
- data/docs/source/articles/add-css-through-the-admin-ui.html.md +0 -30
- data/docs/source/articles/add-javascript-through-a-manifest.html.md +0 -367
- data/docs/source/articles/add-javascript-through-a-view.html.md +0 -80
- data/docs/source/articles/add-javascript-through-the-admin-ui.html.md +0 -30
- data/docs/source/articles/add-metrics.html.md +0 -58
- data/docs/source/articles/add-or-replace-a-pricing-calculator.html.md +0 -150
- data/docs/source/articles/add-remove-or-change-a-mongoid-validation.html.md +0 -147
- data/docs/source/articles/add-remove-or-change-a-product-template.html.md +0 -142
- data/docs/source/articles/add-remove-sort-and-group-storefront-search-filters.html.md +0 -483
- data/docs/source/articles/add-stylesheets-through-a-manifest.html.md +0 -276
- data/docs/source/articles/add-system-content.html.md +0 -138
- data/docs/source/articles/analytics-overview.html.md +0 -51
- data/docs/source/articles/analyze-storefront-search-results.html.md +0 -261
- data/docs/source/articles/api-overview.html.md +0 -35
- data/docs/source/articles/appending.html.md +0 -506
- data/docs/source/articles/application-document.html.md +0 -88
- data/docs/source/articles/automated-javascript-testing.html.md +0 -162
- data/docs/source/articles/b2b-overview.html.md +0 -64
- data/docs/source/articles/browser-and-device-support.html.md +0 -47
- data/docs/source/articles/change-product-placeholder-image.html.md +0 -39
- data/docs/source/articles/change-storefront-search-results.html.md +0 -283
- data/docs/source/articles/change-the-storefront-product-pricing-ui.html.md +0 -348
- data/docs/source/articles/change-the-storefront-search-filters-ui.html.md +0 -103
- data/docs/source/articles/checkout.html.md +0 -479
- data/docs/source/articles/commerce-model.html.md +0 -164
- data/docs/source/articles/configuration-for-hosting.html.md +0 -106
- data/docs/source/articles/configuration.html.md +0 -406
- data/docs/source/articles/configure-a-payment-gateway.html.md +0 -58
- data/docs/source/articles/configure-asset-storage.html.md +0 -29
- data/docs/source/articles/configure-asset-types.html.md +0 -18
- data/docs/source/articles/configure-contact-form-subjects-list.html.md +0 -24
- data/docs/source/articles/configure-imageoptim.html.md +0 -23
- data/docs/source/articles/configure-locales.html.md +0 -45
- data/docs/source/articles/configure-logins-and-authentication.html.md +0 -42
- data/docs/source/articles/configure-low-inventory-threshold.html.md +0 -26
- data/docs/source/articles/configure-product-image-sizes-and-processing.html.md +0 -28
- data/docs/source/articles/content.html.md +0 -554
- data/docs/source/articles/contentable.html.md +0 -41
- data/docs/source/articles/contribute-code.html.md +0 -69
- data/docs/source/articles/contribute-documentation.html.md +0 -60
- data/docs/source/articles/create-a-custom-discount.html.md +0 -234
- data/docs/source/articles/create-a-new-app.html.md +0 -131
- data/docs/source/articles/create-a-plugin.html.md +0 -19
- data/docs/source/articles/create-a-style-guide.html.md +0 -71
- data/docs/source/articles/create-a-theme.html.md +0 -134
- data/docs/source/articles/css-architectural-overview.html.md +0 -89
- data/docs/source/articles/customize-a-helper.html.md +0 -91
- data/docs/source/articles/decoration.html.md +0 -415
- data/docs/source/articles/define-and-configure-inventory-policies.html.md +0 -107
- data/docs/source/articles/documentation-style-guide.html.md +0 -48
- data/docs/source/articles/documentation.html.md +0 -54
- data/docs/source/articles/domain-modeling.html.md +0 -82
- data/docs/source/articles/error-pages.html.md.erb +0 -95
- data/docs/source/articles/extension-overview.html.md +0 -152
- data/docs/source/articles/favicon-support.html.md +0 -112
- data/docs/source/articles/feature-spec-helper-stylesheet.html.md +0 -25
- data/docs/source/articles/featurejs-and-feature-spec-helper.html.md +0 -20
- data/docs/source/articles/help-and-support.html.md +0 -34
- data/docs/source/articles/html-fragment-caching.html.md +0 -46
- data/docs/source/articles/http-caching.html.md +0 -43
- data/docs/source/articles/i18n.html.md +0 -35
- data/docs/source/articles/images-flow.html.md +0 -10
- data/docs/source/articles/index-storefront-search-documents.html.md +0 -104
- data/docs/source/articles/infrastructure.html.md +0 -46
- data/docs/source/articles/installing.html.md +0 -61
- data/docs/source/articles/integrate-a-payment-gateway.html.md +0 -124
- data/docs/source/articles/integrate-a-web-analytics-provider.html.md +0 -35
- data/docs/source/articles/integrate-an-inventory-management-system.html.md +0 -88
- data/docs/source/articles/integrating-with-other-software.html.md +0 -59
- data/docs/source/articles/inventory.html.md +0 -352
- data/docs/source/articles/javascript-coding-standards.html.md +0 -30
- data/docs/source/articles/javascript-modules.html.md +0 -174
- data/docs/source/articles/javascript-overview.html.md +0 -62
- data/docs/source/articles/javascript-reference-documentation.html.md +0 -51
- data/docs/source/articles/javascript-templates.html.md +0 -52
- data/docs/source/articles/low-level-caching.html.md +0 -25
- data/docs/source/articles/maintain-a-plugin.html.md +0 -12
- data/docs/source/articles/maintenance-policy.html.md +0 -79
- data/docs/source/articles/navigable.html.md +0 -51
- data/docs/source/articles/navigating-the-code.html.md +0 -149
- data/docs/source/articles/navigation.html.md +0 -386
- data/docs/source/articles/order-life-cycle.html.md +0 -546
- data/docs/source/articles/order-pricing.html.md +0 -389
- data/docs/source/articles/orders-and-items.html.md +0 -210
- data/docs/source/articles/orders.html.md +0 -66
- data/docs/source/articles/overriding.html.md +0 -155
- data/docs/source/articles/overview.html.md +0 -43
- data/docs/source/articles/plugins-overview.html.md +0 -12
- data/docs/source/articles/prerequisites-and-dependencies.html.md +0 -202
- data/docs/source/articles/products.html.md.erb +0 -1270
- data/docs/source/articles/progressive-web-application-support.html.md +0 -148
- data/docs/source/articles/rails-asset-manifests.html.md +0 -33
- data/docs/source/articles/rails-asset-view-helpers.html.md +0 -25
- data/docs/source/articles/reading-data.html.md +0 -10
- data/docs/source/articles/releasable.html.md +0 -37
- data/docs/source/articles/report-a-bug.html.md +0 -75
- data/docs/source/articles/ruby-coding-standards.html.md +0 -10
- data/docs/source/articles/run-sidekiq-in-a-local-environment.html.md +0 -40
- data/docs/source/articles/searching.html.md +0 -1005
- data/docs/source/articles/security-policy.html.md +0 -42
- data/docs/source/articles/seeds.html.md +0 -345
- data/docs/source/articles/shipping.html.md +0 -756
- data/docs/source/articles/sort-and-exclude-product-options.html.md +0 -47
- data/docs/source/articles/storefront-search-features.html.md +0 -568
- data/docs/source/articles/storefront-searches.html.md +0 -126
- data/docs/source/articles/style-guides.html.md +0 -21
- data/docs/source/articles/stylesheet-coding-standards.html.md +0 -24
- data/docs/source/articles/stylesheets-overview.html.md +0 -67
- data/docs/source/articles/swappable-list-data-structure.html.md +0 -81
- data/docs/source/articles/system-emails.html.md +0 -102
- data/docs/source/articles/taggable.html.md +0 -8
- data/docs/source/articles/test-a-credit-card-transaction.html.md +0 -16
- data/docs/source/articles/test-if-a-plugin-is-installed.html.md +0 -34
- data/docs/source/articles/testing.html.md +0 -914
- data/docs/source/articles/themes-overview.html.md +0 -155
- data/docs/source/articles/translate-administrable-content.html.md +0 -14
- data/docs/source/articles/translate-javascript-content.html.md +0 -16
- data/docs/source/articles/translate-or-customize-message-content.html.md +0 -29
- data/docs/source/articles/translate-or-customize-static-content.html.md +0 -30
- data/docs/source/articles/use-an-existing-workarea-app.html.md +0 -108
- data/docs/source/articles/view-models.html.md +0 -509
- data/docs/source/articles/views.html.md +0 -14
- data/docs/source/articles/workers.html.md +0 -613
- data/docs/source/articles/writing-data.html.md +0 -10
- data/docs/source/cli.html.md +0 -163
- data/docs/source/favicon.ico +0 -0
- data/docs/source/images/3-variants-1-option.png +0 -0
- data/docs/source/images/3-variants-3-options.png +0 -0
- data/docs/source/images/3-years-primary-image.png +0 -0
- data/docs/source/images/404-storefront-error-page.png +0 -0
- data/docs/source/images/404-system-content-admin.png +0 -0
- data/docs/source/images/404.jpg +0 -0
- data/docs/source/images/5-years-primary-image.png +0 -0
- data/docs/source/images/activity-dashboard.png +0 -0
- data/docs/source/images/activity-for-object.png +0 -0
- data/docs/source/images/activity-ui.png +0 -0
- data/docs/source/images/adding-captioned-image-block-custom-icon.png +0 -0
- data/docs/source/images/adding-captioned-image-block-default-icon.png +0 -0
- data/docs/source/images/admin-alerts-ui.png +0 -0
- data/docs/source/images/admin-category-range-filters.png +0 -0
- data/docs/source/images/admin-for-3-column-hero.png +0 -0
- data/docs/source/images/admin-help-index.png +0 -0
- data/docs/source/images/admin-help-ui.png +0 -0
- data/docs/source/images/admin-javascript.png +0 -0
- data/docs/source/images/admin-notification-for-deactivated-discount.png +0 -0
- data/docs/source/images/admin-notifications-ui.png +0 -0
- data/docs/source/images/admin-product-show-page.png +0 -0
- data/docs/source/images/admin-products-index-page.png +0 -0
- data/docs/source/images/admin-range-filters.png +0 -0
- data/docs/source/images/admin-style-guides-navigation.png +0 -0
- data/docs/source/images/after-re-seeding.png +0 -0
- data/docs/source/images/after-seeding-localhost-3000.png +0 -0
- data/docs/source/images/after-seeding.png +0 -0
- data/docs/source/images/arrow.svg +0 -1
- data/docs/source/images/arrow_white.svg +0 -1
- data/docs/source/images/aws-resource-map.png +0 -0
- data/docs/source/images/backordered-until-output-on-inventory-sku-card.png +0 -0
- data/docs/source/images/before-seeding-localhost-3000.png +0 -0
- data/docs/source/images/before-seeding.png +0 -0
- data/docs/source/images/browsing-workarea-versions-on-the-web.png +0 -0
- data/docs/source/images/bulk-asset-upload-on-assets-index-page.png +0 -0
- data/docs/source/images/bulk-asset-upload-while-editing-content.png +0 -0
- data/docs/source/images/bundle-show-workarea-core.png +0 -0
- data/docs/source/images/bundle-show-workarea.png +0 -0
- data/docs/source/images/calendar-for-backordered-until-field.png +0 -0
- data/docs/source/images/captioned-image-block-in-storefront.png +0 -0
- data/docs/source/images/captioned-image-content-block-storefront-component-style-guide.png +0 -0
- data/docs/source/images/cart-system-content-in-admin.png +0 -0
- data/docs/source/images/cart-system-content-in-storefront.png +0 -0
- data/docs/source/images/checkout-addresses-guest.png +0 -0
- data/docs/source/images/checkout-addresses-user.png +0 -0
- data/docs/source/images/checkout-confirmation.png +0 -0
- data/docs/source/images/checkout-flow-0.png +0 -0
- data/docs/source/images/checkout-flow-1.png +0 -0
- data/docs/source/images/checkout-flow-2.png +0 -0
- data/docs/source/images/checkout-flow-3.png +0 -0
- data/docs/source/images/checkout-flow-4.png +0 -0
- data/docs/source/images/checkout-payment-guest.png +0 -0
- data/docs/source/images/checkout-payment-user.png +0 -0
- data/docs/source/images/checkout-shipping.png +0 -0
- data/docs/source/images/color-picker-component-admin-style-guide.png +0 -0
- data/docs/source/images/color-picker-component-on-content-editing-screen.png +0 -0
- data/docs/source/images/commerce-model-carts-orders.png +0 -0
- data/docs/source/images/commerce-model-order-pricing.png +0 -0
- data/docs/source/images/commerce-model.png +0 -0
- data/docs/source/images/configuring-an-index-pattern-in-kibana.png +0 -0
- data/docs/source/images/content-block-presets.png +0 -0
- data/docs/source/images/content-search-customization.png +0 -0
- data/docs/source/images/country-with-region-data-in-address-form.png +0 -0
- data/docs/source/images/country-without-region-data-in-address-form.png +0 -0
- data/docs/source/images/create-content-block-preset-ui.png +0 -0
- data/docs/source/images/credit-card-icons.png +0 -0
- data/docs/source/images/css-added-through-admin.png +0 -0
- data/docs/source/images/css-admin-ui.png +0 -0
- data/docs/source/images/current-configuration-shown-in-admin-settings.png +0 -0
- data/docs/source/images/customer-impersonation-in-admin.png +0 -0
- data/docs/source/images/customer-impersonation-in-store-front.png +0 -0
- data/docs/source/images/date-filter-same-day.png +0 -0
- data/docs/source/images/developer-toolbar-in-store-front.png +0 -0
- data/docs/source/images/discounts-sorted-by-most-redeemed.png +0 -0
- data/docs/source/images/edit-help-article.png +0 -0
- data/docs/source/images/editing-content-for-search-customization.png +0 -0
- data/docs/source/images/editing-dynamic-captioned-image-block.png +0 -0
- data/docs/source/images/editing-product-fields-in-the-admin.png +0 -0
- data/docs/source/images/editing-search-system-content.png +0 -0
- data/docs/source/images/editing-static-captioned-image-block-custom-icon.png +0 -0
- data/docs/source/images/editing-static-captioned-image-block-default-icon.png +0 -0
- data/docs/source/images/external.svg +0 -1
- data/docs/source/images/favicon_16.png +0 -0
- data/docs/source/images/favicon_180.png +0 -0
- data/docs/source/images/favicon_32.png +0 -0
- data/docs/source/images/filters-all.png +0 -0
- data/docs/source/images/filters-control.png +0 -0
- data/docs/source/images/filters-custom.png +0 -0
- data/docs/source/images/filters-groups.png +0 -0
- data/docs/source/images/filters-material.png +0 -0
- data/docs/source/images/filters-omitted.png +0 -0
- data/docs/source/images/filters-pinned.png +0 -0
- data/docs/source/images/filters-range.png +0 -0
- data/docs/source/images/filters-sorted.png +0 -0
- data/docs/source/images/filters-wrapping-to-second-line-in-admin.png +0 -0
- data/docs/source/images/generic-product-template-images-no-options-selected.png +0 -0
- data/docs/source/images/generic-product-template-images-options-selected.png +0 -0
- data/docs/source/images/generic-template.png +0 -0
- data/docs/source/images/hosting.svg +0 -1
- data/docs/source/images/image-group-content-block-in-storefront.png +0 -0
- data/docs/source/images/images.svg +0 -1
- data/docs/source/images/import-export-screenshot.png +0 -0
- data/docs/source/images/invalid-display.png +0 -0
- data/docs/source/images/itcss.png +0 -0
- data/docs/source/images/kibana-dev-tools-console.png +0 -0
- data/docs/source/images/layout-content-admin-with-2-areas.png +0 -0
- data/docs/source/images/layout-content-admin-with-3-areas.png +0 -0
- data/docs/source/images/link-to-search-system-content.png +0 -0
- data/docs/source/images/logo.svg +0 -1
- data/docs/source/images/menu.svg +0 -2
- data/docs/source/images/mongo-replica-set.svg +0 -1
- data/docs/source/images/multi-column-hero-blocks.png +0 -0
- data/docs/source/images/option-selects-product-template-images-options-selected.png +0 -0
- data/docs/source/images/option-selects-template.png +0 -0
- data/docs/source/images/option-thumbnails-template.png +0 -0
- data/docs/source/images/order-item-total-price-diagram.png +0 -0
- data/docs/source/images/order-pricing-cart-example.png +0 -0
- data/docs/source/images/order-pricing-example-adjustments.png +0 -0
- data/docs/source/images/order-pricing-example-totals.png +0 -0
- data/docs/source/images/order-pricing-placed-order-example.png +0 -0
- data/docs/source/images/order-shipping-total-diagram.png +0 -0
- data/docs/source/images/order-show-with-multiple-tenders.png +0 -0
- data/docs/source/images/order-subtotal-price-diagram.png +0 -0
- data/docs/source/images/order-tax-total-diagram.png +0 -0
- data/docs/source/images/order-total-price-diagram.png +0 -0
- data/docs/source/images/order-total-value-diagram.png +0 -0
- data/docs/source/images/orders-dashboard-links.png +0 -0
- data/docs/source/images/oval.svg +0 -1
- data/docs/source/images/payment-icon-storefront-style-guide.png +0 -0
- data/docs/source/images/people-dashboard-links.png +0 -0
- data/docs/source/images/price-adjustments-diagram.png +0 -0
- data/docs/source/images/price-display-no-options.png +0 -0
- data/docs/source/images/price-display-options-selected.png +0 -0
- data/docs/source/images/pricing-calculators-diagram.png +0 -0
- data/docs/source/images/product-list-content-block-admin.png +0 -0
- data/docs/source/images/product-list-content-block-in-store-front.png +0 -0
- data/docs/source/images/promo-products-excluded-autocomplete-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-featured-category-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-recommendations-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-search-category-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-search-results-after.png +0 -0
- data/docs/source/images/promo-products-included-autocomplete-results-before.png +0 -0
- data/docs/source/images/promo-products-included-featured-category-results-before.png +0 -0
- data/docs/source/images/promo-products-included-recommendations-results-before.png +0 -0
- data/docs/source/images/promo-products-included-search-category-results-before.png +0 -0
- data/docs/source/images/promo-products-included-search-results-before.png +0 -0
- data/docs/source/images/rails-version-constraint.png +0 -0
- data/docs/source/images/re-enable-discount.png +0 -0
- data/docs/source/images/reading-data.svg +0 -1
- data/docs/source/images/readme-hero.png +0 -0
- data/docs/source/images/redesigned-customized-sort-for-search-results.png +0 -0
- data/docs/source/images/reviews-summary-above-share-buttons.png +0 -0
- data/docs/source/images/reviews-summary-below-product-name.png +0 -0
- data/docs/source/images/reviews-summary-below-share-buttons.png +0 -0
- data/docs/source/images/reviews-summary-removed.png +0 -0
- data/docs/source/images/rsa-fingerprint-for-stash.png +0 -0
- data/docs/source/images/ruby-version-constraint.png +0 -0
- data/docs/source/images/script-tag-added-through-admin.png +0 -0
- data/docs/source/images/search-analysis-admin-alternate-rendering.png +0 -0
- data/docs/source/images/search-analysis-admin.png +0 -0
- data/docs/source/images/search-quality-report.png +0 -0
- data/docs/source/images/search.svg +0 -1
- data/docs/source/images/searching-for-cart-system-content-in-admin.png +0 -0
- data/docs/source/images/searching-for-layout-system-content-in-admin.png +0 -0
- data/docs/source/images/seeded-admin.png +0 -0
- data/docs/source/images/seeds-from-plugins.png +0 -0
- data/docs/source/images/seo-metadata-automation-ui.png +0 -0
- data/docs/source/images/show-password-button.png +0 -0
- data/docs/source/images/storefront-autocomplete.png +0 -0
- data/docs/source/images/storefront-category-summary-content-block.png +0 -0
- data/docs/source/images/storefront-category.png +0 -0
- data/docs/source/images/storefront-product-after-overriding.png +0 -0
- data/docs/source/images/storefront-product-before-overriding.png +0 -0
- data/docs/source/images/storefront-product-browse-page.png +0 -0
- data/docs/source/images/storefront-product-recommendations.png +0 -0
- data/docs/source/images/storefront-product-show-page.png +0 -0
- data/docs/source/images/storefront-requests-and-search-requests.png +0 -0
- data/docs/source/images/storefront-search-request-handling.png +0 -0
- data/docs/source/images/storefront-search-response-creation.png +0 -0
- data/docs/source/images/storefront-search.png +0 -0
- data/docs/source/images/storefront-style-guides-navigation.png +0 -0
- data/docs/source/images/styles.css +0 -3
- data/docs/source/images/tax-categories-ui.png +0 -0
- data/docs/source/images/tax-rates-ui.png +0 -0
- data/docs/source/images/unpurchasable-product.png +0 -0
- data/docs/source/images/url-redirects-filtering.png +0 -0
- data/docs/source/images/utility-nav-area-in-admin.png +0 -0
- data/docs/source/images/utility-nav-area-in-storefront.png +0 -0
- data/docs/source/images/validation-message-in-storefront.png +0 -0
- data/docs/source/images/view-model-interface.png +0 -0
- data/docs/source/images/viewing-workarea-version-in-source.png +0 -0
- data/docs/source/images/workarea.svg +0 -1
- data/docs/source/images/worst-performing-searches-on-results-customization-page.png +0 -0
- data/docs/source/images/writing-data.svg +0 -1
- data/docs/source/index.html.erb +0 -166
- data/docs/source/javascripts/jquery.js +0 -2
- data/docs/source/javascripts/lunr.js +0 -7
- data/docs/source/javascripts/site.js +0 -299
- data/docs/source/javascripts/vendor/highlight.pack.js +0 -2
- data/docs/source/layouts/article.erb +0 -106
- data/docs/source/layouts/bare.erb +0 -46
- data/docs/source/layouts/layout.erb +0 -43
- data/docs/source/release-notes/workarea-3-0-0.html.md +0 -146
- data/docs/source/release-notes/workarea-3-0-1.html.md +0 -161
- data/docs/source/release-notes/workarea-3-0-10.html.md +0 -39
- data/docs/source/release-notes/workarea-3-0-11.html.md +0 -277
- data/docs/source/release-notes/workarea-3-0-12.html.md +0 -14
- data/docs/source/release-notes/workarea-3-0-13.html.md +0 -153
- data/docs/source/release-notes/workarea-3-0-14.html.md +0 -93
- data/docs/source/release-notes/workarea-3-0-15.html.md +0 -107
- data/docs/source/release-notes/workarea-3-0-16.html.md +0 -36
- data/docs/source/release-notes/workarea-3-0-17.html.md +0 -141
- data/docs/source/release-notes/workarea-3-0-18.html.md +0 -123
- data/docs/source/release-notes/workarea-3-0-19.html.md +0 -160
- data/docs/source/release-notes/workarea-3-0-2.html.md +0 -222
- data/docs/source/release-notes/workarea-3-0-20.html.md +0 -95
- data/docs/source/release-notes/workarea-3-0-21.html.md +0 -168
- data/docs/source/release-notes/workarea-3-0-22.html.md +0 -268
- data/docs/source/release-notes/workarea-3-0-23.html.md +0 -173
- data/docs/source/release-notes/workarea-3-0-24.html.md +0 -19
- data/docs/source/release-notes/workarea-3-0-25.html.md +0 -26
- data/docs/source/release-notes/workarea-3-0-26.html.md +0 -199
- data/docs/source/release-notes/workarea-3-0-27.html.md +0 -113
- data/docs/source/release-notes/workarea-3-0-28.html.md +0 -39
- data/docs/source/release-notes/workarea-3-0-29.html.md +0 -73
- data/docs/source/release-notes/workarea-3-0-3.html.md +0 -35
- data/docs/source/release-notes/workarea-3-0-30.html.md +0 -186
- data/docs/source/release-notes/workarea-3-0-31.html.md +0 -125
- data/docs/source/release-notes/workarea-3-0-32.html.md +0 -73
- data/docs/source/release-notes/workarea-3-0-33.html.md +0 -137
- data/docs/source/release-notes/workarea-3-0-34.html.md +0 -203
- data/docs/source/release-notes/workarea-3-0-35.html.md +0 -205
- data/docs/source/release-notes/workarea-3-0-36.html.md +0 -105
- data/docs/source/release-notes/workarea-3-0-37.html.md +0 -144
- data/docs/source/release-notes/workarea-3-0-38.html.md +0 -73
- data/docs/source/release-notes/workarea-3-0-39.html.md +0 -77
- data/docs/source/release-notes/workarea-3-0-4.html.md +0 -14
- data/docs/source/release-notes/workarea-3-0-40.html.md +0 -130
- data/docs/source/release-notes/workarea-3-0-41.html.md +0 -70
- data/docs/source/release-notes/workarea-3-0-42.html.md +0 -52
- data/docs/source/release-notes/workarea-3-0-43.html.md +0 -72
- data/docs/source/release-notes/workarea-3-0-44.html.md +0 -93
- data/docs/source/release-notes/workarea-3-0-45.html.md +0 -61
- data/docs/source/release-notes/workarea-3-0-46.html.md +0 -171
- data/docs/source/release-notes/workarea-3-0-47.html.md +0 -130
- data/docs/source/release-notes/workarea-3-0-48.html.md +0 -160
- data/docs/source/release-notes/workarea-3-0-49.html.md +0 -28
- data/docs/source/release-notes/workarea-3-0-5.html.md +0 -225
- data/docs/source/release-notes/workarea-3-0-50.html.md +0 -74
- data/docs/source/release-notes/workarea-3-0-51.html.md +0 -61
- data/docs/source/release-notes/workarea-3-0-52.html.md +0 -76
- data/docs/source/release-notes/workarea-3-0-53.html.md +0 -126
- data/docs/source/release-notes/workarea-3-0-54.html.md +0 -112
- data/docs/source/release-notes/workarea-3-0-55.html.md +0 -105
- data/docs/source/release-notes/workarea-3-0-56.html.md +0 -56
- data/docs/source/release-notes/workarea-3-0-57.html.md +0 -82
- data/docs/source/release-notes/workarea-3-0-58.html.md +0 -153
- data/docs/source/release-notes/workarea-3-0-59.html.md +0 -78
- data/docs/source/release-notes/workarea-3-0-6.html.md +0 -165
- data/docs/source/release-notes/workarea-3-0-60.html.md +0 -43
- data/docs/source/release-notes/workarea-3-0-61.html.md +0 -46
- data/docs/source/release-notes/workarea-3-0-62.html.md +0 -23
- data/docs/source/release-notes/workarea-3-0-63.html.md +0 -25
- data/docs/source/release-notes/workarea-3-0-64.html.md +0 -25
- data/docs/source/release-notes/workarea-3-0-65.html.md +0 -37
- data/docs/source/release-notes/workarea-3-0-7.html.md +0 -207
- data/docs/source/release-notes/workarea-3-0-8.html.md +0 -337
- data/docs/source/release-notes/workarea-3-0-9.html.md +0 -196
- data/docs/source/release-notes/workarea-3-1-0.html.md +0 -414
- data/docs/source/release-notes/workarea-3-1-1.html.md +0 -139
- data/docs/source/release-notes/workarea-3-1-10.html.md +0 -19
- data/docs/source/release-notes/workarea-3-1-11.html.md +0 -27
- data/docs/source/release-notes/workarea-3-1-12.html.md +0 -216
- data/docs/source/release-notes/workarea-3-1-13.html.md +0 -113
- data/docs/source/release-notes/workarea-3-1-14.html.md +0 -39
- data/docs/source/release-notes/workarea-3-1-15.html.md +0 -107
- data/docs/source/release-notes/workarea-3-1-16.html.md +0 -188
- data/docs/source/release-notes/workarea-3-1-17.html.md +0 -141
- data/docs/source/release-notes/workarea-3-1-18.html.md +0 -73
- data/docs/source/release-notes/workarea-3-1-19.html.md +0 -137
- data/docs/source/release-notes/workarea-3-1-2.html.md +0 -55
- data/docs/source/release-notes/workarea-3-1-20.html.md +0 -203
- data/docs/source/release-notes/workarea-3-1-21.html.md +0 -205
- data/docs/source/release-notes/workarea-3-1-22.html.md +0 -121
- data/docs/source/release-notes/workarea-3-1-23.html.md +0 -144
- data/docs/source/release-notes/workarea-3-1-24.html.md +0 -94
- data/docs/source/release-notes/workarea-3-1-25.html.md +0 -77
- data/docs/source/release-notes/workarea-3-1-26.html.md +0 -130
- data/docs/source/release-notes/workarea-3-1-27.html.md +0 -70
- data/docs/source/release-notes/workarea-3-1-28.html.md +0 -52
- data/docs/source/release-notes/workarea-3-1-29.html.md +0 -44
- data/docs/source/release-notes/workarea-3-1-3.html.md +0 -185
- data/docs/source/release-notes/workarea-3-1-30.html.md +0 -72
- data/docs/source/release-notes/workarea-3-1-31.html.md +0 -93
- data/docs/source/release-notes/workarea-3-1-32.html.md +0 -61
- data/docs/source/release-notes/workarea-3-1-33.html.md +0 -171
- data/docs/source/release-notes/workarea-3-1-34.html.md +0 -130
- data/docs/source/release-notes/workarea-3-1-35.html.md +0 -179
- data/docs/source/release-notes/workarea-3-1-36.html.md +0 -28
- data/docs/source/release-notes/workarea-3-1-37.html.md +0 -74
- data/docs/source/release-notes/workarea-3-1-38.html.md +0 -61
- data/docs/source/release-notes/workarea-3-1-39.html.md +0 -96
- data/docs/source/release-notes/workarea-3-1-4.html.md +0 -148
- data/docs/source/release-notes/workarea-3-1-40.html.md +0 -126
- data/docs/source/release-notes/workarea-3-1-41.html.md +0 -128
- data/docs/source/release-notes/workarea-3-1-42.html.md +0 -105
- data/docs/source/release-notes/workarea-3-1-43.html.md +0 -37
- data/docs/source/release-notes/workarea-3-1-44.html.md +0 -82
- data/docs/source/release-notes/workarea-3-1-45.html.md +0 -153
- data/docs/source/release-notes/workarea-3-1-46.html.md +0 -91
- data/docs/source/release-notes/workarea-3-1-47.html.md +0 -65
- data/docs/source/release-notes/workarea-3-1-48.html.md +0 -46
- data/docs/source/release-notes/workarea-3-1-49.html.md +0 -23
- data/docs/source/release-notes/workarea-3-1-5.html.md +0 -169
- data/docs/source/release-notes/workarea-3-1-50.html.md +0 -42
- data/docs/source/release-notes/workarea-3-1-51.html.md +0 -25
- data/docs/source/release-notes/workarea-3-1-52.html.md +0 -57
- data/docs/source/release-notes/workarea-3-1-6.html.md +0 -117
- data/docs/source/release-notes/workarea-3-1-7.html.md +0 -176
- data/docs/source/release-notes/workarea-3-1-8.html.md +0 -283
- data/docs/source/release-notes/workarea-3-1-9.html.md +0 -212
- data/docs/source/release-notes/workarea-3-2-0.html.md +0 -1705
- data/docs/source/release-notes/workarea-3-2-1.html.md +0 -216
- data/docs/source/release-notes/workarea-3-2-10.html.md +0 -237
- data/docs/source/release-notes/workarea-3-2-11.html.md +0 -121
- data/docs/source/release-notes/workarea-3-2-12.html.md +0 -145
- data/docs/source/release-notes/workarea-3-2-13.html.md +0 -138
- data/docs/source/release-notes/workarea-3-2-14.html.md +0 -77
- data/docs/source/release-notes/workarea-3-2-15.html.md +0 -130
- data/docs/source/release-notes/workarea-3-2-16.html.md +0 -111
- data/docs/source/release-notes/workarea-3-2-17.html.md +0 -52
- data/docs/source/release-notes/workarea-3-2-18.html.md +0 -44
- data/docs/source/release-notes/workarea-3-2-19.html.md +0 -72
- data/docs/source/release-notes/workarea-3-2-2.html.md +0 -145
- data/docs/source/release-notes/workarea-3-2-20.html.md +0 -93
- data/docs/source/release-notes/workarea-3-2-21.html.md +0 -61
- data/docs/source/release-notes/workarea-3-2-22.html.md +0 -154
- data/docs/source/release-notes/workarea-3-2-23.html.md +0 -130
- data/docs/source/release-notes/workarea-3-2-24.html.md +0 -200
- data/docs/source/release-notes/workarea-3-2-25.html.md +0 -28
- data/docs/source/release-notes/workarea-3-2-26.html.md +0 -94
- data/docs/source/release-notes/workarea-3-2-27.html.md +0 -61
- data/docs/source/release-notes/workarea-3-2-28.html.md +0 -96
- data/docs/source/release-notes/workarea-3-2-29.html.md +0 -126
- data/docs/source/release-notes/workarea-3-2-30.html.md +0 -112
- data/docs/source/release-notes/workarea-3-2-31.html.md +0 -105
- data/docs/source/release-notes/workarea-3-2-32.html.md +0 -56
- data/docs/source/release-notes/workarea-3-2-33.html.md +0 -82
- data/docs/source/release-notes/workarea-3-2-34.html.md +0 -153
- data/docs/source/release-notes/workarea-3-2-35.html.md +0 -91
- data/docs/source/release-notes/workarea-3-2-36.html.md +0 -118
- data/docs/source/release-notes/workarea-3-2-37.html.md +0 -46
- data/docs/source/release-notes/workarea-3-2-38.html.md +0 -23
- data/docs/source/release-notes/workarea-3-2-39.html.md +0 -42
- data/docs/source/release-notes/workarea-3-2-4.html.md +0 -109
- data/docs/source/release-notes/workarea-3-2-40.html.md +0 -25
- data/docs/source/release-notes/workarea-3-2-41.html.md +0 -90
- data/docs/source/release-notes/workarea-3-2-5.html.md +0 -186
- data/docs/source/release-notes/workarea-3-2-6.html.md +0 -173
- data/docs/source/release-notes/workarea-3-2-7.html.md +0 -89
- data/docs/source/release-notes/workarea-3-2-8.html.md +0 -137
- data/docs/source/release-notes/workarea-3-2-9.html.md +0 -219
- data/docs/source/release-notes/workarea-3-3-0.html.md +0 -1272
- data/docs/source/release-notes/workarea-3-3-1.html.md +0 -324
- data/docs/source/release-notes/workarea-3-3-10.html.md +0 -69
- data/docs/source/release-notes/workarea-3-3-11.html.md +0 -72
- data/docs/source/release-notes/workarea-3-3-12.html.md +0 -136
- data/docs/source/release-notes/workarea-3-3-13.html.md +0 -61
- data/docs/source/release-notes/workarea-3-3-14.html.md +0 -196
- data/docs/source/release-notes/workarea-3-3-15.html.md +0 -167
- data/docs/source/release-notes/workarea-3-3-16.html.md +0 -234
- data/docs/source/release-notes/workarea-3-3-17.html.md +0 -82
- data/docs/source/release-notes/workarea-3-3-18.html.md +0 -165
- data/docs/source/release-notes/workarea-3-3-19.html.md +0 -106
- data/docs/source/release-notes/workarea-3-3-2.html.md +0 -72
- data/docs/source/release-notes/workarea-3-3-20.html.md +0 -116
- data/docs/source/release-notes/workarea-3-3-21.html.md +0 -228
- data/docs/source/release-notes/workarea-3-3-22.html.md +0 -125
- data/docs/source/release-notes/workarea-3-3-23.html.md +0 -154
- data/docs/source/release-notes/workarea-3-3-24.html.md +0 -70
- data/docs/source/release-notes/workarea-3-3-25.html.md +0 -114
- data/docs/source/release-notes/workarea-3-3-26.html.md +0 -260
- data/docs/source/release-notes/workarea-3-3-27.html.md +0 -138
- data/docs/source/release-notes/workarea-3-3-28.html.md +0 -147
- data/docs/source/release-notes/workarea-3-3-29.html.md +0 -63
- data/docs/source/release-notes/workarea-3-3-3.html.md +0 -153
- data/docs/source/release-notes/workarea-3-3-30.html.md +0 -102
- data/docs/source/release-notes/workarea-3-3-31.html.md +0 -57
- data/docs/source/release-notes/workarea-3-3-32.html.md +0 -44
- data/docs/source/release-notes/workarea-3-3-33.html.md +0 -114
- data/docs/source/release-notes/workarea-3-3-34.html.md +0 -29
- data/docs/source/release-notes/workarea-3-3-4.html.md +0 -332
- data/docs/source/release-notes/workarea-3-3-5.html.md +0 -242
- data/docs/source/release-notes/workarea-3-3-6.html.md +0 -100
- data/docs/source/release-notes/workarea-3-3-7.html.md +0 -148
- data/docs/source/release-notes/workarea-3-3-8.html.md +0 -163
- data/docs/source/release-notes/workarea-3-3-9.html.md +0 -93
- data/docs/source/release-notes/workarea-3-4-0.html.md +0 -580
- data/docs/source/release-notes/workarea-3-4-1.html.md +0 -150
- data/docs/source/release-notes/workarea-3-4-10.html.md +0 -72
- data/docs/source/release-notes/workarea-3-4-11.html.md +0 -60
- data/docs/source/release-notes/workarea-3-4-12.html.md +0 -155
- data/docs/source/release-notes/workarea-3-4-15.html.md +0 -100
- data/docs/source/release-notes/workarea-3-4-16.html.md +0 -88
- data/docs/source/release-notes/workarea-3-4-2.html.md +0 -188
- data/docs/source/release-notes/workarea-3-4-3.html.md +0 -136
- data/docs/source/release-notes/workarea-3-4-4.html.md +0 -114
- data/docs/source/release-notes/workarea-3-4-5.html.md +0 -275
- data/docs/source/release-notes/workarea-3-4-6.html.md +0 -169
- data/docs/source/release-notes/workarea-3-4-7.html.md +0 -162
- data/docs/source/release-notes/workarea-3-4-8.html.md +0 -95
- data/docs/source/release-notes/workarea-3-4-9.html.md +0 -135
- data/docs/source/release-notes.html.md +0 -261
- data/docs/source/search.html.erb +0 -34
- data/docs/source/shared/_header.erb +0 -61
- data/docs/source/shared/_svgs.erb +0 -17
- data/docs/source/style_guide/index.html.erb +0 -382
- data/docs/source/stylesheets/_base.scss +0 -125
- data/docs/source/stylesheets/_components.scss +0 -669
- data/docs/source/stylesheets/_helpers.scss +0 -10
- data/docs/source/stylesheets/_opinions.scss +0 -42
- data/docs/source/stylesheets/_settings.scss +0 -56
- data/docs/source/stylesheets/_typography.scss +0 -119
- data/docs/source/stylesheets/site.css.scss +0 -14
- data/docs/source/stylesheets/vendor/_avalanche.scss +0 -328
- data/docs/source/stylesheets/vendor/_normalize.scss +0 -341
- data/docs/source/stylesheets/vendor/highlight/_tomorrow_night_blue.scss +0 -75
- data/docs/source/upgrade-guides/workarea-3-4-0.html.md +0 -152
- data/docs/source/upgrade-guides.html.md +0 -18
- data/docs/workarea_renderer.rb +0 -8
- 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. <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 UI](https://jqueryui.com/) | Extensible UI widget library, version 1.11.x |
|
198
|
-
| [jQuery Validation 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 |
|