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,45 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Configure Locales
|
3
|
-
excerpt: Configure locales as explained in the Rails Internationalization (I18n) API guide. For the most foolproof configuration, set available locales, default locale, and fallbacks.
|
4
|
-
---
|
5
|
-
|
6
|
-
# Configure Locales
|
7
|
-
|
8
|
-
Configure locales as explained in the [Rails Internationalization (I18n) API guide](http://guides.rubyonrails.org/i18n.html). For the most foolproof configuration, set available locales, default locale, and fallbacks.
|
9
|
-
|
10
|
-
```
|
11
|
-
# config/application.rb
|
12
|
-
|
13
|
-
# ...
|
14
|
-
|
15
|
-
module YourApp
|
16
|
-
class Application < Rails::Application
|
17
|
-
|
18
|
-
# ...
|
19
|
-
|
20
|
-
config.i18n.available_locales = [:en, :de]
|
21
|
-
config.i18n.default_locale = :en
|
22
|
-
config.i18n.fallbacks = [:de, :en]
|
23
|
-
|
24
|
-
# ...
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
```
|
29
|
-
|
30
|
-
Then, add the full name of the locale to each locale file. This is required for Workarea to recognize and use the locale.
|
31
|
-
|
32
|
-
```
|
33
|
-
# config/locales/en.yml
|
34
|
-
|
35
|
-
en:
|
36
|
-
name: English
|
37
|
-
```
|
38
|
-
|
39
|
-
## Adding Additional Locales to an Existing App
|
40
|
-
|
41
|
-
When adding a locale to an existing Production app, you must consider the impact on search indexes. At a minimum, you must create additional search indexes to account for the additional locale. However, you may also want to index documents as well, to ensure adequate search results within that locale.
|
42
|
-
|
43
|
-
Review the [Search](searching.html) guide to understand the relationship between locales and search indexes.
|
44
|
-
|
45
|
-
In Development, there should be no harm in fully re-indexing search by running a [Rake task](searching.html#rake-tasks_15) to create and populate the necessary indexes.
|
@@ -1,42 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Configure Logins & Authentication
|
3
|
-
excerpt: Workarea provides several configuration options related to user login and authentication.
|
4
|
-
---
|
5
|
-
|
6
|
-
# Configure Logins & Authentication
|
7
|
-
|
8
|
-
Workarea provides several configuration options related to user login and authentication.
|
9
|
-
|
10
|
-
| Config | Description |
|
11
|
-
| --- | --- |
|
12
|
-
| `config.allowed_login_attempts` | Number of failed login attempts before locking out the user |
|
13
|
-
| `config.lockout_period` | How long an account is locked out after making too many failed login attempts |
|
14
|
-
| `config.password_lifetime` | How long an adminstrator's password lasts |
|
15
|
-
| `config.password_history_length` | How many passwords to keep and validate against |
|
16
|
-
| `config.password_strength` | Password requirement level: `:weak`, `:medium`, or `:strong` |
|
17
|
-
|
18
|
-
your\_app/config/initializers/workarea.rb:
|
19
|
-
|
20
|
-
```
|
21
|
-
# ...
|
22
|
-
|
23
|
-
Workarea.configure do |config|
|
24
|
-
|
25
|
-
# ...
|
26
|
-
|
27
|
-
config.allowed_login_attempts = 6
|
28
|
-
|
29
|
-
config.lockout_period = 30.minutes
|
30
|
-
|
31
|
-
config.password_lifetime = 90.days
|
32
|
-
|
33
|
-
config.password_history_length = 4
|
34
|
-
|
35
|
-
config.password_strength = :weak
|
36
|
-
|
37
|
-
# ...
|
38
|
-
|
39
|
-
end
|
40
|
-
```
|
41
|
-
|
42
|
-
|
@@ -1,26 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Configure Low Inventory Threshold
|
3
|
-
excerpt: config.low_inventory_threshold determines the minimum available quantity for a sku before low inventory status is displayed. Configure the value in an initializer.
|
4
|
-
---
|
5
|
-
|
6
|
-
# Configure Low Inventory Threshold
|
7
|
-
|
8
|
-
`config.low_inventory_threshold` determines the minimum available quantity for a sku before low inventory status is displayed. Configure the value in an initializer.
|
9
|
-
|
10
|
-
your\_app/config/initializers/workarea.rb:
|
11
|
-
|
12
|
-
```
|
13
|
-
# ...
|
14
|
-
|
15
|
-
Workarea.configure do |config|
|
16
|
-
|
17
|
-
# ...
|
18
|
-
|
19
|
-
config.low_inventory_threshold = 5
|
20
|
-
|
21
|
-
# ...
|
22
|
-
|
23
|
-
end
|
24
|
-
```
|
25
|
-
|
26
|
-
|
@@ -1,28 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Configure Product Image Sizes & Processing
|
3
|
-
excerpt: There is an initializer which sets up a Dragonfly application for the Workarea platform. This initializer sets up image optimization, URLs, logging, etc.
|
4
|
-
---
|
5
|
-
|
6
|
-
# Configure Product Image Sizes & Processing
|
7
|
-
|
8
|
-
There is an initializer which sets up a Dragonfly application for the Workarea platform. This initializer sets up image optimization, URLs, logging, etc.
|
9
|
-
|
10
|
-
This configuration can be reopened in the host app to override settings, processing, or add additional image sizes. Full documentation is available at [the official Dragonfly configuration documentation.](http://markevans.github.io/dragonfly/configuration/).
|
11
|
-
|
12
|
-
your\_app/config/initializers/dragonfly.rb:
|
13
|
-
|
14
|
-
```
|
15
|
-
Dragonfly.app(:workarea).configure do
|
16
|
-
# Add a new image size
|
17
|
-
processor :micro_thumb do |content|
|
18
|
-
content.process!(:encode, :jpg, '-quality 100')
|
19
|
-
content.process!(:thumb, '50x50#')
|
20
|
-
content.process!(:optim)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Change admin upload asset URLs
|
24
|
-
url_format '/media/:job/:name'
|
25
|
-
end
|
26
|
-
```
|
27
|
-
|
28
|
-
|
@@ -1,554 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Content
|
3
|
-
excerpt: The Content namespace is responsible for modeling administrable content.
|
4
|
-
---
|
5
|
-
|
6
|
-
# Content
|
7
|
-
|
8
|
-
The `Content` namespace is responsible for modeling administrable content.
|
9
|
-
|
10
|
-
## Asset
|
11
|
-
|
12
|
-
A <dfn>content asset</dfn> (`Workarea::Content::Asset`) is a [taggable](taggable.html) [application document](application-document.html) that represents a file, such as an image or PDF document, that is available for use within administrable content.
|
13
|
-
|
14
|
-
```
|
15
|
-
# Create an asset
|
16
|
-
asset = Workarea::Content::Asset.create!(file: File.new('foo.png'))
|
17
|
-
|
18
|
-
# Inspect its attributes
|
19
|
-
asset.name
|
20
|
-
# => "foo"
|
21
|
-
|
22
|
-
asset.id.to_s
|
23
|
-
# => "58af0a74eefbfef6f328470a"
|
24
|
-
|
25
|
-
asset.type
|
26
|
-
# => "image"
|
27
|
-
|
28
|
-
asset.pdf?
|
29
|
-
# => false
|
30
|
-
|
31
|
-
asset.image?
|
32
|
-
# => true
|
33
|
-
|
34
|
-
asset.format
|
35
|
-
# => "png"
|
36
|
-
|
37
|
-
asset.height
|
38
|
-
# => 300
|
39
|
-
|
40
|
-
asset.width
|
41
|
-
# => 300
|
42
|
-
|
43
|
-
asset.aspect_ratio
|
44
|
-
# => 1.0
|
45
|
-
|
46
|
-
asset.portrait?
|
47
|
-
# => true
|
48
|
-
```
|
49
|
-
|
50
|
-
## Page
|
51
|
-
|
52
|
-
A <dfn>content page</dfn> (`Workarea::Content::Page`) is a [contentable](contentable.html), [navigable](navigable.html), [releasable](releasable.html), and [taggable](taggable.html) [application document](application-document.html) that represents a page containing administrable content to which end users may navigate.
|
53
|
-
|
54
|
-
A page has few attributes of its own because the actual content is stored on its associated content. However, each page has a name and several attributes to control its presentation in the storefront.
|
55
|
-
|
56
|
-
```
|
57
|
-
page = Workarea::Content::Page.create!(name: 'Shopping Guide')
|
58
|
-
|
59
|
-
page.name
|
60
|
-
# => "Shopping Guide"
|
61
|
-
|
62
|
-
page.template
|
63
|
-
# => "generic"
|
64
|
-
|
65
|
-
page.show_navigation
|
66
|
-
# => false
|
67
|
-
|
68
|
-
page.display_h1
|
69
|
-
# => true
|
70
|
-
```
|
71
|
-
|
72
|
-
## Content
|
73
|
-
|
74
|
-
A <dfn>content</dfn> (`Workarea::Content`) is a [releasable](releasable.html) [application document](application-document.html) that represents administrable content. A content may belong to a [contentable](contentable.html). A content embeds many blocks.
|
75
|
-
|
76
|
-
### System Content
|
77
|
-
|
78
|
-
Contents that do not belong to contentables are identified by name and are referred to as "system content". Pass a string representing the content name to `Content.for` to `find_or_create` a system content. The string will be `titleize`ed before finding or creating the content.
|
79
|
-
|
80
|
-
```
|
81
|
-
# Create a content
|
82
|
-
content = Workarea::Content.for('foo_bar')
|
83
|
-
|
84
|
-
content.name
|
85
|
-
# => "Foo Bar"
|
86
|
-
|
87
|
-
content.id.to_s
|
88
|
-
# => "58ac7eefeefbfe3e5ac2ae54"
|
89
|
-
|
90
|
-
content.system?
|
91
|
-
# => true
|
92
|
-
|
93
|
-
# Find the same content
|
94
|
-
Workarea::Content.for('foo_bar').name
|
95
|
-
# => "Foo Bar"
|
96
|
-
|
97
|
-
Workarea::Content.for('Foo Bar').id
|
98
|
-
# => "58ac7eefeefbfe3e5ac2ae54"
|
99
|
-
|
100
|
-
Workarea::Content.for('foo bar').system?
|
101
|
-
# => true
|
102
|
-
```
|
103
|
-
|
104
|
-
### Attributes
|
105
|
-
|
106
|
-
In addition to managing its blocks, a content has attributes representing HTML document metadata. The `automate_metadata` boolean specifies if HTML metadata should be generated automatically if none is provided. Explicit values for `browser_title`, `meta_keywords`, and `meta_description` will override any automated values generated.
|
107
|
-
|
108
|
-
```
|
109
|
-
content = Workarea::Content.for('foo_bar')
|
110
|
-
|
111
|
-
content.browser_title
|
112
|
-
# => nil
|
113
|
-
|
114
|
-
content.meta_keywords
|
115
|
-
# => nil
|
116
|
-
|
117
|
-
content.meta_description
|
118
|
-
# => nil
|
119
|
-
|
120
|
-
content.automate_metadata
|
121
|
-
# => true
|
122
|
-
```
|
123
|
-
|
124
|
-
A content also has attributes that store strings of CSS and JavaScript. These strings may be output as inline CSS and JavaScript in the Storefront depending on how the content is used.
|
125
|
-
|
126
|
-
```
|
127
|
-
content.css
|
128
|
-
# => nil
|
129
|
-
|
130
|
-
content.javascript
|
131
|
-
# => nil
|
132
|
-
```
|
133
|
-
|
134
|
-
## Block
|
135
|
-
|
136
|
-
A <dfn>content block</dfn> (`Workarea::Content::Block`) is a [releasable](releasable.html) [application document](application-document.html) that represents a unit of administrable content. A block is embedded in a content.
|
137
|
-
|
138
|
-
A newly created content has 0 blocks.
|
139
|
-
|
140
|
-
```
|
141
|
-
content.blocks.count
|
142
|
-
# => 0
|
143
|
-
|
144
|
-
content.blocks
|
145
|
-
# => []
|
146
|
-
```
|
147
|
-
|
148
|
-
Create a block within a content by specifying the type of block to be created.
|
149
|
-
|
150
|
-
```
|
151
|
-
# Create an instance of an 'Image' block
|
152
|
-
content.blocks.create!(type: 'image')
|
153
|
-
|
154
|
-
content.blocks.count
|
155
|
-
# => 1
|
156
|
-
|
157
|
-
# Access the block from the content
|
158
|
-
block = content.blocks.first
|
159
|
-
block.name
|
160
|
-
# => "Image - 960x470 Light"
|
161
|
-
|
162
|
-
# Access the content from the block
|
163
|
-
block.content.class
|
164
|
-
# => Workarea::Content
|
165
|
-
```
|
166
|
-
|
167
|
-
### Type
|
168
|
-
|
169
|
-
Use a block's `type` method to access the corresponding block type instance. Block type instances are kept in memory within `Workarea.config.content_block_types`. View that collection to see all available block types.
|
170
|
-
|
171
|
-
```
|
172
|
-
block.type.class
|
173
|
-
# => Workarea::Content::BlockType
|
174
|
-
|
175
|
-
block.type.name
|
176
|
-
# => "Image"
|
177
|
-
|
178
|
-
puts Workarea.config.content_block_types.map(&:name)
|
179
|
-
# Hero
|
180
|
-
# Image
|
181
|
-
# Text
|
182
|
-
# Video
|
183
|
-
# Button
|
184
|
-
# Taxonomy
|
185
|
-
# Two Column Taxonomy
|
186
|
-
# Three Column Taxonomy
|
187
|
-
# Quote
|
188
|
-
# Image Group
|
189
|
-
# Image and Text
|
190
|
-
# Video and Text
|
191
|
-
# Category Summary
|
192
|
-
# Recommendations
|
193
|
-
# Product List
|
194
|
-
# HTML
|
195
|
-
# Divider
|
196
|
-
# Social Networks
|
197
|
-
```
|
198
|
-
|
199
|
-
### Data
|
200
|
-
|
201
|
-
Use a block's `data` method to get or set its data, which is stored as a `HashWithIndifferentAccess`.
|
202
|
-
|
203
|
-
If a block was not initialized with data, it's data will be constructed from the field names and their default values, as defined by the block's type. In the examples below, note the relationship between the persisted data keys on the block and the in-memory field names on the block's type.
|
204
|
-
|
205
|
-
```
|
206
|
-
block.data
|
207
|
-
# => {
|
208
|
-
"image" => "58ac6ad2eefbfe1ebac121ae",
|
209
|
-
"alt" => "",
|
210
|
-
"link" => "/",
|
211
|
-
"align" => "Center"
|
212
|
-
}
|
213
|
-
|
214
|
-
block.type.fields.map(&:name)
|
215
|
-
# => [
|
216
|
-
"Image",
|
217
|
-
"Alt",
|
218
|
-
"Link",
|
219
|
-
"Align"
|
220
|
-
]
|
221
|
-
```
|
222
|
-
|
223
|
-
#### Typecasting
|
224
|
-
|
225
|
-
Before validation, the block's data is mutated. Each value is typecast by the corresponding field in the block type. Each field may provide its own implementation of `typecast`. In the following example a data value specified as an integer is cast as a string.
|
226
|
-
|
227
|
-
```
|
228
|
-
block = content.blocks.create!(type: 'html', data: { html: 42 })
|
229
|
-
block.data[:html]
|
230
|
-
# => "42"
|
231
|
-
```
|
232
|
-
|
233
|
-
#### Validation
|
234
|
-
|
235
|
-
A data value may not be blank if the corresponding field on the block type is required.
|
236
|
-
|
237
|
-
```
|
238
|
-
content.blocks.create!(type: 'image', data: { asset: '' })
|
239
|
-
# Mongoid::Errors::Validations:
|
240
|
-
# message:
|
241
|
-
# Validation of Workarea::Content::Block failed.
|
242
|
-
# summary:
|
243
|
-
# The following errors were found: Image can't be blank
|
244
|
-
```
|
245
|
-
|
246
|
-
### Attributes
|
247
|
-
|
248
|
-
Content blocks have several other attributes that are used to manage their display in the Storefront. Be aware that `name` is derived from the block's type and data and is not an attribute on the model.
|
249
|
-
|
250
|
-
```
|
251
|
-
block.area
|
252
|
-
# => "default"
|
253
|
-
|
254
|
-
block.position
|
255
|
-
# => 0
|
256
|
-
|
257
|
-
block.breakpoints
|
258
|
-
# => [:small, :medium, :wide, :x_wide]
|
259
|
-
```
|
260
|
-
|
261
|
-
## Block Type
|
262
|
-
|
263
|
-
A <dfn>block type</dfn> (`Workarea::Content::BlockType`) defines a type of content block using fieldsets and fields.
|
264
|
-
|
265
|
-
The default block types are defined using the content block DSL in an initializer that ships with the platform. Modify these block types or create your own using the content block DSL in an initializer within your application.
|
266
|
-
|
267
|
-
Block types exist in memory only (they aren't persisted). Access all block types via the `Workarea.config.content_block_types` collection or look up a specific block type using `BlockType.find`.
|
268
|
-
|
269
|
-
```
|
270
|
-
puts Workarea.config.content_block_types.map(&:id)
|
271
|
-
# hero
|
272
|
-
# image
|
273
|
-
# text
|
274
|
-
# video
|
275
|
-
# button
|
276
|
-
# taxonomy
|
277
|
-
# two_column_taxonomy
|
278
|
-
# three_column_taxonomy
|
279
|
-
# quote
|
280
|
-
# image_group
|
281
|
-
# image_and_text
|
282
|
-
# video_and_text
|
283
|
-
# category_summary
|
284
|
-
# recommendations
|
285
|
-
# product_list
|
286
|
-
# html
|
287
|
-
# divider
|
288
|
-
# social_networks
|
289
|
-
|
290
|
-
Workarea::Content::BlockType.find(:image_and_text).name
|
291
|
-
# => "Image and Text"
|
292
|
-
```
|
293
|
-
|
294
|
-
A block type has a name and an id (also called a slug) that is derived from the name. Beyond that, a block type is primarily a collection of fieldsets. The `fields` method returns a flattened list of all fields across all fieldsets on a given block type.
|
295
|
-
|
296
|
-
```
|
297
|
-
image_and_text_type = Workarea::Content::BlockType.find(:image_and_text)
|
298
|
-
|
299
|
-
image_and_text_type.name
|
300
|
-
# => "Image and Text"
|
301
|
-
|
302
|
-
image_and_text_type.id
|
303
|
-
# => :image_and_text
|
304
|
-
|
305
|
-
image_and_text_type.slug
|
306
|
-
# => :image_and_text
|
307
|
-
|
308
|
-
image_and_text_type.fieldsets.count
|
309
|
-
# => 2
|
310
|
-
|
311
|
-
image_and_text_type.fieldsets.map(&:name)
|
312
|
-
# => ["Image", "Text"]
|
313
|
-
|
314
|
-
image_and_text_type.fields.count
|
315
|
-
# => 6
|
316
|
-
|
317
|
-
image_and_text_type.fields.map(&:name)
|
318
|
-
# => ["Image", "Image Alt", "Image Link", "Image Position", "Text", "Text Alignment"]
|
319
|
-
```
|
320
|
-
|
321
|
-
## Fieldset
|
322
|
-
|
323
|
-
A <dfn>fieldset</dfn> (`Workarea::Content::Fieldset`) groups fields within a block type to improve the experience of administrating a content block.
|
324
|
-
|
325
|
-
A fieldset has a name, which will be used as a label in the admin, and a group a fields that will appear under that label.
|
326
|
-
|
327
|
-
```
|
328
|
-
fieldset = image_and_text_type.fieldsets.first
|
329
|
-
|
330
|
-
fieldset.name
|
331
|
-
# => "Image"
|
332
|
-
|
333
|
-
fieldset.fields.count
|
334
|
-
# => 4
|
335
|
-
|
336
|
-
fieldset.fields.map(&:name)
|
337
|
-
# => ["Image", "Image Alt", "Image Link", "Image Position"]
|
338
|
-
```
|
339
|
-
|
340
|
-
## Field
|
341
|
-
|
342
|
-
A <dfn>field</dfn> (subclasses of `Workarea::Content::Field`) represents a field to be displayed for a block type in the Admin UI. It defines how the field's value should be typecast before being persisted, and it optionally provides a default value.
|
343
|
-
|
344
|
-
### Type
|
345
|
-
|
346
|
-
When adding a field to a block type using the content block DSL, you provide name, type, and options. The type corresponds to a subclass of `Workarea::Content::Field` and determines the partial that will be rendered in the Admin to capture the value for that field and also how the value will be typecast before being persisted.
|
347
|
-
|
348
|
-
```
|
349
|
-
product_list_blocktype = Workarea::Content::BlockType.find(:product_list)
|
350
|
-
|
351
|
-
product_list_blocktype.fields.count
|
352
|
-
# => 2
|
353
|
-
|
354
|
-
field_1 = product_list_blocktype.fields[0]
|
355
|
-
field_2 = product_list_blocktype.fields[1]
|
356
|
-
|
357
|
-
field_1.type
|
358
|
-
# => :string
|
359
|
-
|
360
|
-
field_1.partial
|
361
|
-
# => "string"
|
362
|
-
|
363
|
-
# string fields cast to string
|
364
|
-
field_1.typecast(1)
|
365
|
-
# => "1"
|
366
|
-
|
367
|
-
field_2.type
|
368
|
-
# => :products
|
369
|
-
|
370
|
-
field_2.partial
|
371
|
-
# => "products"
|
372
|
-
|
373
|
-
# products fields cast to array of strings
|
374
|
-
field_2.typecast(1)
|
375
|
-
# => ["1"]
|
376
|
-
```
|
377
|
-
|
378
|
-
The following table summarizes the default field types.
|
379
|
-
|
380
|
-
| Field Type | Data Type | UI Control | Unique Options |
|
381
|
-
| --- | --- | --- | --- |
|
382
|
-
| asset | string (id of the selected content asset) | `asset-picker-field` component | `file_types` (array): asset types to be included in the asset picker |
|
383
|
-
| boolean | boolean | `toggle-button` component | - |
|
384
|
-
| category | string (id of the selected category) | remote select (an HTML `select` enhanced by `WORKAREA.remoteSelects`) | - |
|
385
|
-
| color | string | HTML `input[type=color]` | - |
|
386
|
-
| integer | integer | HTML `input[type=number]` | - |
|
387
|
-
| options | string | HTML `select` | `values` (array): options for the select |
|
388
|
-
| products | array of strings (ids of the selected products) | remote select (an HTML `select` enhanced by `WORKAREA.remoteSelects`) | `single` (boolean), allows enforcing only a single product selection (since v3.3.3) |
|
389
|
-
| range | float | HTML `input[type=range]` and `input[type=number]` | `min`, `max`, and `step` (all floats) are passed through to the `input[type=range]` control; `note` displays within a `.property__note` |
|
390
|
-
| string | string | HTML `input[type=text]` or `textarea` | `multi_line` (boolean), determines type of UI control |
|
391
|
-
| taxonomy | string (id of the selected taxon) | `taxon-select` component | - |
|
392
|
-
| text | string | `wysiwyg` component | - |
|
393
|
-
| url | string | HTML `input[type=text]` | - |
|
394
|
-
| breakpoints \* | array | HTML `input[type=checkbox]`s, one for each key in `Workarea.config.storefront_break_points` | - |
|
395
|
-
|
396
|
-
\* Each block type includes a breakpoints field automatically. You should not specify this type of field when defining a block type using the content block DSL.
|
397
|
-
|
398
|
-
### Attributes
|
399
|
-
|
400
|
-
The name of a field is used as the field label in the Admin UI, while the options are used to determine the default value, whether the field is required, and other details that are specific to the field type. The `default` option can provide a value or a callable object that returns the value. The `default` method will return the value, calling the object if present. The `required?` method returns `true` if the `required` option is set to `true`.
|
401
|
-
|
402
|
-
```
|
403
|
-
field_1.name
|
404
|
-
# => "Title"
|
405
|
-
|
406
|
-
field_1.options
|
407
|
-
# => { :default => "Featured" }
|
408
|
-
|
409
|
-
field_1.default
|
410
|
-
# => "Featured"
|
411
|
-
|
412
|
-
field_1.required?
|
413
|
-
# => false
|
414
|
-
|
415
|
-
field_2.name
|
416
|
-
# => "Products"
|
417
|
-
|
418
|
-
# default value is a
|
419
|
-
field_2.options
|
420
|
-
# => { :default => #<Proc> }
|
421
|
-
|
422
|
-
field_2.default
|
423
|
-
# => ["E5F83359BC", "8AC32E3757", "2B3D02499A"]
|
424
|
-
|
425
|
-
field_2.required?
|
426
|
-
# => false
|
427
|
-
```
|
428
|
-
|
429
|
-
## Content Block DSL
|
430
|
-
|
431
|
-
The <dfn>content block DSL</dfn> allows you to extend and augment the content block types available to your application. Use the DSL within an initializer in your app.
|
432
|
-
|
433
|
-
The entry point for the DSL is `Content.define_block_types`. Pass this method a block in which you define the block types you want to add (or extend). Give each block type a name and use a block to set its attributes. Each new block type is pushed onto the collection of block types stored in `Workarea.config.content_block_types`.
|
434
|
-
|
435
|
-
```
|
436
|
-
Workarea::Content.define_block_types do
|
437
|
-
block_type 'Foo' do
|
438
|
-
# ...
|
439
|
-
end
|
440
|
-
|
441
|
-
block_type 'Bar' do
|
442
|
-
# ...
|
443
|
-
end
|
444
|
-
end
|
445
|
-
```
|
446
|
-
|
447
|
-
### Meta Data
|
448
|
-
|
449
|
-
Use the `description` setter to set a description for the block type that will be shown to administrators when browsing block types in the Admin UI. Use `tags` to set tags which can be used to filter block types in the Admin. Use `icon` to specify the path to an SVG icon to represent the block in the admin. Use this only if you do not want to use the default icon path.
|
450
|
-
|
451
|
-
```
|
452
|
-
Workarea::Content.define_block_types do
|
453
|
-
block_type 'Foo' do
|
454
|
-
icon 'path/to/icon.svg'
|
455
|
-
description 'Foo description'
|
456
|
-
tags %w(foo bar baz)
|
457
|
-
end
|
458
|
-
end
|
459
|
-
```
|
460
|
-
|
461
|
-
### Fields & Fieldsets
|
462
|
-
|
463
|
-
Use the `field`, `fieldset`, and `series` setters to declare the fields and fieldsets for each block type.
|
464
|
-
|
465
|
-
Use `field` to add a field to the default "Settings" fieldset. Provide name, type, and options for the field. Refer to the field documentation, above, for the list of available field types and options.
|
466
|
-
|
467
|
-
```
|
468
|
-
Workarea::Content.define_block_types do
|
469
|
-
block_type 'Foo' do
|
470
|
-
# ...
|
471
|
-
field 'Message', :text, required: true, default: 'Your text here'
|
472
|
-
end
|
473
|
-
end
|
474
|
-
```
|
475
|
-
|
476
|
-
Use `fieldset` to create a new fieldset. Provide a name for the fieldset and a block defining the fields for that fieldset.
|
477
|
-
|
478
|
-
```
|
479
|
-
Workarea::Content.define_block_types do
|
480
|
-
block_type 'Foo' do
|
481
|
-
# ...
|
482
|
-
fieldset 'Message' do
|
483
|
-
field 'Type', :options, values: %w(info warning), default: 'info'
|
484
|
-
field 'Message', :text, required: true, default: 'Your text here'
|
485
|
-
end
|
486
|
-
end
|
487
|
-
end
|
488
|
-
```
|
489
|
-
|
490
|
-
Use `series` to create a series of fieldsets that share the same fields. The example below creates 4 fieldsets, each with a 'Image' and 'Alt' field.
|
491
|
-
|
492
|
-
```
|
493
|
-
Workarea::Content.define_block_types do
|
494
|
-
block_type 'Image Slideshow' do
|
495
|
-
# ...
|
496
|
-
series 4 do
|
497
|
-
field 'Image', :asset
|
498
|
-
field 'Alt', :string
|
499
|
-
end
|
500
|
-
end
|
501
|
-
end
|
502
|
-
```
|
503
|
-
|
504
|
-
Persisted block data contains only fields, not fieldsets, so the fields of a series will have a suffix to differentiate themselves. Data for the block type shown above will look something like the example below.
|
505
|
-
|
506
|
-
```
|
507
|
-
{
|
508
|
-
'image_1' => '...',
|
509
|
-
'alt_1' => '...',
|
510
|
-
'image_2' => '...',
|
511
|
-
'alt_2' => '...',
|
512
|
-
'image_3' => '...',
|
513
|
-
'alt_3' => '...',
|
514
|
-
'image_4' => '...',
|
515
|
-
'alt_4' => '...'
|
516
|
-
}
|
517
|
-
```
|
518
|
-
|
519
|
-
## Preset
|
520
|
-
|
521
|
-
A <dfn>content preset</dfn> (`Workarea::Content::Preset`) is an [application document](application-document.html) that represents preset data for a new content block instance. Admins can create presets from existing blocks and then create new blocks from those presets rather than using the default data for a block.
|
522
|
-
|
523
|
-
```
|
524
|
-
content = Workarea::Content.for('foo')
|
525
|
-
|
526
|
-
new_block = content.blocks.create!(type: 'text', data: {
|
527
|
-
text: 'Not the default, something re-usable'
|
528
|
-
})
|
529
|
-
|
530
|
-
Workarea::Content::Preset.create_from_block({}, new_block)
|
531
|
-
# => true
|
532
|
-
|
533
|
-
preset = Workarea::Content::Preset.first
|
534
|
-
|
535
|
-
block_from_preset = content.blocks.create!(preset.block_attributes)
|
536
|
-
|
537
|
-
new_block.type_id
|
538
|
-
# => :text
|
539
|
-
|
540
|
-
preset.type_id
|
541
|
-
# => :text
|
542
|
-
|
543
|
-
block_from_preset.type_id
|
544
|
-
# => :text
|
545
|
-
|
546
|
-
new_block.data
|
547
|
-
# => {"text"=>"Not the default, something re-usable"}
|
548
|
-
|
549
|
-
preset.data
|
550
|
-
# => {"text"=>"Not the default, something re-usable"}
|
551
|
-
|
552
|
-
block_from_preset.data
|
553
|
-
# => {"text"=>"Not the default, something re-usable"}
|
554
|
-
```
|