workarea-core 3.4.44 → 3.5.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE.txt +52 -0
- data/app/assets/javascripts/workarea/core/modules/duplicate_id.js +1 -5
- data/app/assets/javascripts/workarea/core/modules/style_guide_autocomplete_fields.js +9 -42
- data/app/assets/javascripts/workarea/core/modules/url.js +14 -0
- data/app/controllers/workarea/application_controller.rb +5 -1
- data/app/controllers/workarea/authentication.rb +15 -26
- data/app/controllers/workarea/authorization.rb +3 -3
- data/app/controllers/workarea/current_referrer.rb +1 -2
- data/app/controllers/workarea/current_release.rb +1 -1
- data/app/controllers/workarea/current_segments.rb +52 -0
- data/app/controllers/workarea/current_tracking.rb +45 -0
- data/app/controllers/workarea/http_caching.rb +30 -0
- data/app/controllers/workarea/impersonation.rb +18 -44
- data/app/helpers/workarea/schema_org_helper.rb +21 -0
- data/app/mailers/workarea/application_mailer.rb +2 -4
- data/app/middleware/workarea/application_middleware.rb +44 -0
- data/app/middleware/workarea/query_cache_middleware.rb +55 -0
- data/app/middleware/workarea/release_server_middleware.rb +1 -1
- data/app/models/workarea/application_document.rb +1 -1
- data/app/models/workarea/bulk_action/product_edit.rb +6 -6
- data/app/models/workarea/calculate_percent_change.rb +1 -1
- data/app/models/workarea/catalog/category.rb +0 -2
- data/app/models/workarea/catalog/product.rb +19 -2
- data/app/models/workarea/checkout.rb +18 -6
- data/app/models/workarea/checkout/collect_payment.rb +10 -1
- data/app/models/workarea/checkout/fraud/analyzer.rb +44 -0
- data/app/models/workarea/checkout/fraud/no_decision_analyzer.rb +14 -0
- data/app/models/workarea/checkout/fraud/test_analyzer.rb +26 -0
- data/app/models/workarea/configuration/admin.rb +25 -0
- data/app/models/workarea/configuration/params.rb +45 -0
- data/app/models/workarea/content.rb +12 -82
- data/app/models/workarea/content/asset.rb +5 -18
- data/app/models/workarea/content/block.rb +8 -2
- data/app/models/workarea/content/block_draft.rb +7 -2
- data/app/models/workarea/content/block_type.rb +2 -2
- data/app/models/workarea/content/block_type_definition.rb +4 -0
- data/app/models/workarea/content/preset.rb +1 -1
- data/app/models/workarea/data_file/csv.rb +6 -8
- data/app/models/workarea/data_file/import.rb +9 -1
- data/app/models/workarea/data_file/json.rb +1 -20
- data/app/models/workarea/data_file/operation.rb +0 -4
- data/app/models/workarea/data_file/tax_rates.rb +3 -0
- data/app/models/workarea/featured_products.rb +8 -0
- data/app/models/workarea/fulfillment/policies/base.rb +21 -0
- data/app/models/workarea/fulfillment/policies/download.rb +21 -0
- data/app/models/workarea/fulfillment/policies/ignore.rb +11 -0
- data/app/models/workarea/fulfillment/policies/ship.rb +15 -0
- data/app/models/workarea/fulfillment/sku.rb +72 -0
- data/app/models/workarea/fulfillment/token.rb +36 -0
- data/app/models/workarea/inquiry.rb +1 -2
- data/app/models/workarea/insights/customer_acquisition.rb +5 -9
- data/app/models/workarea/insights/trending_products.rb +2 -2
- data/app/models/workarea/insights/trending_searches.rb +2 -2
- data/app/models/workarea/inventory/collection.rb +30 -0
- data/app/models/workarea/inventory/collection_status.rb +40 -0
- data/app/models/workarea/metrics/affinity.rb +33 -0
- data/app/models/workarea/metrics/country_by_day.rb +4 -0
- data/app/models/workarea/metrics/product_by_day.rb +3 -0
- data/app/models/workarea/metrics/product_by_week.rb +2 -0
- data/app/models/workarea/metrics/product_for_last_week.rb +8 -12
- data/app/models/workarea/metrics/sales_by_day.rb +5 -0
- data/app/models/workarea/metrics/search_by_day.rb +1 -3
- data/app/models/workarea/metrics/search_for_last_week.rb +5 -11
- data/app/models/workarea/metrics/segment_by_day.rb +31 -0
- data/app/models/workarea/metrics/sku_by_day.rb +3 -0
- data/app/models/workarea/metrics/tender_by_day.rb +11 -0
- data/app/models/workarea/metrics/update_user_aggregations.rb +77 -0
- data/app/models/workarea/metrics/user.rb +73 -87
- data/app/models/workarea/navigation/breadcrumbs.rb +10 -1
- data/app/models/workarea/order.rb +47 -4
- data/app/models/workarea/order/fraud_decision.rb +18 -0
- data/app/models/workarea/order/item.rb +5 -0
- data/app/models/workarea/order/queries.rb +1 -0
- data/app/models/workarea/order/status.rb +10 -1
- data/app/models/workarea/payment.rb +7 -2
- data/app/models/workarea/payment/credit_card.rb +12 -0
- data/app/models/workarea/pricing/cache_key.rb +9 -3
- data/app/models/workarea/pricing/calculator.rb +5 -1
- data/app/models/workarea/pricing/calculators/tax_calculator.rb +32 -5
- data/app/models/workarea/pricing/discount.rb +2 -3
- data/app/models/workarea/pricing/discount/application_group.rb +8 -3
- data/app/models/workarea/pricing/discount/free_gift.rb +2 -1
- data/app/models/workarea/pricing/discount/redemption.rb +1 -1
- data/app/models/workarea/pricing/item_tax_applier.rb +41 -0
- data/app/models/workarea/pricing/price.rb +1 -0
- data/app/models/workarea/pricing/request.rb +11 -0
- data/app/models/workarea/pricing/sku.rb +1 -0
- data/app/models/workarea/pricing/tax_application.rb +21 -0
- data/app/models/workarea/pricing/tax_applier.rb +12 -15
- data/app/models/workarea/pricing/unsupported_segmentation.rb +22 -0
- data/app/models/workarea/product_rule.rb +5 -0
- data/app/models/workarea/releasable.rb +83 -89
- data/app/models/workarea/release.rb +72 -99
- data/app/models/workarea/release/activation.rb +45 -0
- data/app/models/workarea/release/changes.rb +45 -0
- data/app/models/workarea/release/changeset.rb +42 -52
- data/app/models/workarea/release/preview.rb +28 -0
- data/app/models/workarea/release/status.rb +2 -24
- data/app/models/workarea/release_session.rb +11 -11
- data/app/models/workarea/search/admin.rb +17 -39
- data/app/models/workarea/search/admin/catalog_product.rb +1 -2
- data/app/models/workarea/search/admin/fulfillment_sku.rb +27 -0
- data/app/models/workarea/search/admin/order.rb +1 -1
- data/app/models/workarea/search/admin/pricing_discount.rb +1 -1
- data/app/models/workarea/search/admin/release.rb +1 -4
- data/app/models/workarea/search/admin/segment.rb +19 -0
- data/app/models/workarea/search/order_text.rb +23 -6
- data/app/models/workarea/search/storefront.rb +33 -29
- data/app/models/workarea/search/storefront/category_query.rb +152 -0
- data/app/models/workarea/search/storefront/product/categories.rb +11 -45
- data/app/models/workarea/segment.rb +54 -0
- data/app/models/workarea/segment/first_time_customer.rb +8 -0
- data/app/models/workarea/segment/first_time_visitor.rb +12 -0
- data/app/models/workarea/segment/life_cycle.rb +44 -0
- data/app/models/workarea/segment/loyal_customer.rb +12 -0
- data/app/models/workarea/segment/returning_customer.rb +14 -0
- data/app/models/workarea/segment/returning_visitor.rb +12 -0
- data/app/models/workarea/segment/rules/base.rb +16 -0
- data/app/models/workarea/segment/rules/browser_info.rb +29 -0
- data/app/models/workarea/segment/rules/geolocation.rb +29 -0
- data/app/models/workarea/segment/rules/geolocation_option.rb +53 -0
- data/app/models/workarea/segment/rules/last_order.rb +14 -0
- data/app/models/workarea/segment/rules/logged_in.rb +13 -0
- data/app/models/workarea/segment/rules/orders.rb +17 -0
- data/app/models/workarea/segment/rules/revenue.rb +17 -0
- data/app/models/workarea/segment/rules/sessions.rb +17 -0
- data/app/models/workarea/segment/rules/tags.rb +14 -0
- data/app/models/workarea/segment/rules/traffic_referrer.rb +18 -0
- data/app/models/workarea/segmentable.rb +66 -0
- data/app/models/workarea/sort.rb +14 -2
- data/app/models/workarea/tax/rate.rb +35 -1
- data/app/models/workarea/user/authorization.rb +19 -13
- data/app/models/workarea/user/login.rb +4 -0
- data/app/models/workarea/user/password_reset.rb +1 -3
- data/app/queries/workarea/categorization.rb +3 -3
- data/app/queries/workarea/featured_categorization.rb +53 -0
- data/app/queries/workarea/order_cancellation_metrics.rb +155 -0
- data/app/queries/workarea/order_item_details.rb +16 -3
- data/app/queries/workarea/order_metrics.rb +32 -3
- data/app/queries/workarea/product_primary_navigation.rb +13 -2
- data/app/queries/workarea/product_releases.rb +38 -0
- data/app/queries/workarea/recommendation/user_activity_based.rb +14 -6
- data/app/queries/workarea/reports/average_order_value.rb +1 -1
- data/app/queries/workarea/reports/customers.rb +14 -11
- data/app/queries/workarea/reports/first_time_vs_returning_sales.rb +1 -1
- data/app/queries/workarea/reports/group_by_time.rb +13 -17
- data/app/queries/workarea/reports/sales_by_category.rb +1 -1
- data/app/queries/workarea/reports/sales_by_country.rb +10 -3
- data/app/queries/workarea/reports/sales_by_discount.rb +1 -1
- data/app/queries/workarea/reports/sales_by_menu.rb +1 -1
- data/app/queries/workarea/reports/sales_by_product.rb +39 -4
- data/app/queries/workarea/reports/sales_by_sku.rb +39 -4
- data/app/queries/workarea/reports/sales_by_tender.rb +42 -0
- data/app/queries/workarea/reports/sales_by_traffic_referrer.rb +1 -1
- data/app/queries/workarea/reports/sales_over_time.rb +10 -3
- data/app/queries/workarea/reports/searches.rb +1 -1
- data/app/queries/workarea/reports/searches_over_time.rb +1 -1
- data/app/queries/workarea/reports/searches_without_results_over_time.rb +1 -1
- data/app/queries/workarea/search/admin_fulfillment_skus.rb +20 -0
- data/app/queries/workarea/search/admin_releases.rb +1 -4
- data/app/queries/workarea/search/admin_search.rb +0 -4
- data/app/queries/workarea/search/admin_segments.rb +16 -0
- data/app/queries/workarea/search/admin_sorting.rb +1 -1
- data/app/queries/workarea/search/pagination.rb +1 -4
- data/app/queries/workarea/search/product_display_rules.rb +40 -8
- data/app/queries/workarea/search/product_entries.rb +15 -1
- data/app/queries/workarea/search/product_search.rb +4 -1
- data/app/queries/workarea/search/storefront_search.rb +5 -4
- data/app/queries/workarea/search/storefront_search/exact_matches.rb +1 -1
- data/app/queries/workarea/search/storefront_search/response.rb +6 -4
- data/app/seeds/workarea/assets_seeds.rb +2 -1
- data/app/seeds/workarea/insights_seeds.rb +0 -23
- data/app/seeds/workarea/orders_seeds.rb +7 -6
- data/app/seeds/workarea/products_seeds.rb +2 -0
- data/app/seeds/workarea/segments_seeds.rb +8 -0
- data/app/seeds/workarea/tax_seeds.rb +3 -3
- data/app/services/workarea/cancel_order.rb +8 -3
- data/app/services/workarea/copy_order.rb +6 -0
- data/app/services/workarea/create_fulfillment.rb +5 -3
- data/app/services/workarea/direct_upload.rb +11 -19
- data/app/services/workarea/hash_update.rb +1 -18
- data/app/services/workarea/packaging.rb +1 -1
- data/app/services/workarea/save_publishing.rb +5 -1
- data/app/workers/sidekiq/callbacks.rb +4 -52
- data/app/workers/sidekiq/callbacks_worker.rb +4 -6
- data/app/workers/workarea/bulk_index_admin.rb +2 -2
- data/app/workers/workarea/bulk_index_products.rb +6 -5
- data/app/workers/workarea/bulk_index_searches.rb +5 -5
- data/app/workers/workarea/deactivate_stale_discounts.rb +3 -3
- data/app/workers/workarea/generate_insights.rb +1 -1
- data/app/workers/workarea/index_admin_search.rb +1 -0
- data/app/workers/workarea/index_categorization.rb +4 -7
- data/app/workers/workarea/index_category.rb +2 -1
- data/app/workers/workarea/index_category_changes.rb +11 -6
- data/app/workers/workarea/index_fulfillment_changes.rb +2 -1
- data/app/workers/workarea/index_help.rb +2 -1
- data/app/workers/workarea/index_page.rb +2 -1
- data/app/workers/workarea/index_payment_transactions.rb +2 -1
- data/app/workers/workarea/index_product.rb +4 -4
- data/app/workers/workarea/index_product_children.rb +4 -3
- data/app/workers/workarea/index_product_rule.rb +3 -2
- data/app/workers/workarea/index_search_customizations.rb +3 -2
- data/app/workers/workarea/index_skus.rb +5 -6
- data/app/workers/workarea/keep_product_index_fresh.rb +3 -5
- data/app/workers/workarea/process_import.rb +3 -3
- data/app/workers/workarea/process_search_recommendations.rb +5 -9
- data/app/workers/workarea/publish_release.rb +1 -0
- data/app/workers/workarea/save_metrics.rb +116 -0
- data/app/workers/workarea/save_order_cancellation_metrics.rb +35 -0
- data/app/workers/workarea/save_order_metrics.rb +10 -74
- data/app/workers/workarea/status_reporter.rb +2 -4
- data/app/workers/workarea/synchronize_user_metrics.rb +17 -0
- data/app/workers/workarea/update_payment_profile_email.rb +22 -0
- data/app/workers/workarea/verify_scheduled_releases.rb +4 -11
- data/config/initializers/00_configuration.rb +185 -0
- data/config/initializers/02_assets.rb +1 -0
- data/config/initializers/05_scheduled_jobs.rb +0 -7
- data/config/initializers/10_rack_middleware.rb +2 -5
- data/config/initializers/11_payment.rb +4 -0
- data/config/initializers/13_rack_attack.rb +2 -4
- data/config/initializers/14_content_block_types.rb +16 -16
- data/config/initializers/15_endpoint_monitoring.rb +3 -6
- data/config/initializers/{21_premailer.rb → 24_premailer.rb} +1 -0
- data/config/initializers/{20_i18n_js.rb → 25_i18n_js.rb} +0 -0
- data/config/locales/en.yml +13 -24
- data/lib/generators/workarea/content_block_type/templates/initializer.rb +1 -1
- data/lib/generators/workarea/install/USAGE +0 -1
- data/lib/generators/workarea/install/install_generator.rb +0 -21
- data/lib/generators/workarea/install/templates/initializer.rb.erb +1 -1
- data/lib/tasks/insights.rake +1 -0
- data/lib/tasks/migrate.rake +106 -0
- data/lib/tasks/search.rake +17 -19
- data/lib/tasks/tests.rake +1 -1
- data/lib/workarea.rb +102 -3
- data/lib/workarea/cache.rb +6 -35
- data/lib/workarea/changelog.rake +2 -2
- data/lib/workarea/configuration.rb +121 -148
- data/lib/workarea/configuration/administrable/definition.rb +42 -0
- data/lib/workarea/configuration/administrable/field.rb +79 -0
- data/lib/workarea/configuration/administrable/fieldset.rb +44 -0
- data/lib/workarea/configuration/administrable_options.rb +24 -0
- data/lib/workarea/configuration/cache_store.rb +3 -1
- data/lib/workarea/configuration/content_blocks.rb +17 -0
- data/lib/workarea/configuration/mongoid.rb +1 -4
- data/lib/workarea/configuration/session.rb +36 -0
- data/lib/workarea/configuration/sidekiq.rb +3 -1
- data/lib/workarea/core.rb +15 -11
- data/lib/workarea/core/engine.rb +3 -58
- data/lib/workarea/elasticsearch/document.rb +8 -15
- data/lib/workarea/ext/freedom_patches/action_view_cache_helper.rb +4 -6
- data/lib/workarea/ext/freedom_patches/active_support_duration.rb +14 -0
- data/lib/workarea/ext/freedom_patches/money.rb +11 -0
- data/lib/workarea/ext/freedom_patches/premailer.rb +6 -0
- data/lib/workarea/ext/freedom_patches/string.rb +19 -4
- data/lib/workarea/ext/mongoid/find_ordered.rb +2 -2
- data/lib/workarea/ext/mongoid/lookup_hash.rb +30 -0
- data/lib/workarea/geolocation.rb +24 -6
- data/lib/workarea/routes_constraints/super_admin.rb +1 -1
- data/lib/workarea/version.rb +3 -4
- data/lib/workarea/visit.rb +92 -0
- data/lib/workarea/warnings.rb +95 -0
- data/test/dummy/config/initializers/session_store.rb +1 -1
- data/test/fixtures/tax_rates.csv +3 -3
- data/test/generators/workarea/content_block_type_generator_test.rb +1 -1
- data/test/generators/workarea/install_generator_test.rb +0 -13
- data/test/integration/workarea/authentication_test.rb +27 -4
- data/test/integration/workarea/authorization_test.rb +5 -0
- data/test/integration/workarea/cache_varies_integration_test.rb +21 -23
- data/test/integration/workarea/monitoring_integration_test.rb +5 -10
- data/test/javascripts/duplicate_id_spec.js +1 -7
- data/test/javascripts/fixtures/{duplicate_id_fail.html.haml → duplicate_id.html.haml} +0 -1
- data/test/javascripts/form_submitting_controls_spec.js +0 -1
- data/test/lib/workarea/asset_endpoints/favicons_test.rb +11 -13
- data/test/lib/workarea/configuration/administrable/definition_test.rb +71 -0
- data/test/lib/workarea/configuration/administrable/field_test.rb +128 -0
- data/test/lib/workarea/configuration/administrable/fieldset_test.rb +78 -0
- data/test/lib/workarea/configuration/configuration_test.rb +20 -0
- data/test/lib/workarea/elasticsearch/document_test.rb +0 -20
- data/test/lib/workarea/elasticsearch/query_cache_test.rb +7 -7
- data/test/lib/workarea/ext/freedom_patches/money_test.rb +11 -0
- data/test/lib/workarea/ext/mongoid/lookup_hash_test.rb +86 -0
- data/test/lib/workarea/geolocation_test.rb +20 -0
- data/test/mailers/workarea/application_mailer_test.rb +1 -11
- data/test/middleware/workarea/query_cache_middleware_test.rb +55 -0
- data/test/models/workarea/checkout/collect_payment_test.rb +14 -6
- data/test/models/workarea/checkout_test.rb +31 -57
- data/test/models/workarea/configuration/params_test.rb +37 -0
- data/test/models/workarea/data_file/csv_test.rb +8 -73
- data/test/models/workarea/data_file/import_test.rb +31 -0
- data/test/models/workarea/data_file/json_test.rb +6 -48
- data/test/models/workarea/data_file/tax_test.rb +3 -0
- data/test/models/workarea/fulfillment/policies/download_test.rb +39 -0
- data/test/models/workarea/fulfillment/sku_test.rb +54 -0
- data/test/models/workarea/insights/best_customers_test.rb +5 -2
- data/test/models/workarea/insights/best_full_price_customers_test.rb +5 -2
- data/test/models/workarea/insights/customer_acquisition_test.rb +1 -1
- data/test/models/workarea/insights/customers_at_risk_test.rb +1 -1
- data/test/models/workarea/insights/low_aov_customers_test.rb +1 -1
- data/test/models/workarea/inventory/collection_test.rb +75 -0
- data/test/models/workarea/metrics/affinity_test.rb +85 -0
- data/test/models/workarea/metrics/product_by_week_test.rb +27 -31
- data/test/models/workarea/metrics/search_by_day_test.rb +3 -0
- data/test/models/workarea/metrics/search_by_week_test.rb +27 -31
- data/test/models/workarea/metrics/update_user_aggregations_test.rb +62 -0
- data/test/models/workarea/metrics/user_test.rb +146 -63
- data/test/models/workarea/navigation/breadcrumbs_test.rb +12 -2
- data/test/models/workarea/order/queries_test.rb +2 -0
- data/test/models/workarea/order_test.rb +44 -0
- data/test/models/workarea/payment/address_test.rb +109 -111
- data/test/models/workarea/payment/credit_card_integration_test.rb +0 -52
- data/test/models/workarea/payment/credit_card_test.rb +5 -0
- data/test/models/workarea/pricing/cache_key_test.rb +7 -1
- data/test/models/workarea/pricing/calculators/tax_calculator_test.rb +41 -1
- data/test/models/workarea/pricing/discount/collection_test.rb +27 -29
- data/test/models/workarea/pricing/discount_test.rb +22 -24
- data/test/models/workarea/pricing/item_tax_applier_test.rb +83 -0
- data/test/models/workarea/pricing/price_test.rb +9 -0
- data/test/models/workarea/pricing/request_test.rb +13 -0
- data/test/models/workarea/pricing/sku_test.rb +9 -0
- data/test/models/workarea/releasable_active_test.rb +113 -0
- data/test/models/workarea/releasable_test.rb +69 -120
- data/test/models/workarea/release/changeset_test.rb +41 -0
- data/test/models/workarea/release_jobs_test.rb +52 -0
- data/test/models/workarea/release_previewing_test.rb +43 -0
- data/test/models/workarea/release_test.rb +59 -153
- data/test/models/workarea/search/admin/content_asset_test.rb +26 -28
- data/test/models/workarea/search/order_text_test.rb +35 -0
- data/test/models/workarea/search/storefront/category_query_test.rb +81 -0
- data/test/models/workarea/search/storefront/product/categories_test.rb +10 -70
- data/test/models/workarea/search/storefront/product_test.rb +10 -11
- data/test/models/workarea/search/storefront_test.rb +1 -13
- data/test/models/workarea/segment/life_cycle_test.rb +24 -0
- data/test/models/workarea/segment/rules/browser_info_test.rb +33 -0
- data/test/models/workarea/segment/rules/geolocation_option_test.rb +16 -0
- data/test/models/workarea/segment/rules/geolocation_test.rb +49 -0
- data/test/models/workarea/segment/rules/last_order_test.rb +32 -0
- data/test/models/workarea/segment/rules/logged_in_test.rb +25 -0
- data/test/models/workarea/segment/rules/orders_test.rb +59 -0
- data/test/models/workarea/segment/rules/revenue_test.rb +59 -0
- data/test/models/workarea/segment/rules/sessions_test.rb +26 -0
- data/test/models/workarea/segment/rules/tags_test.rb +27 -0
- data/test/models/workarea/segment/rules/traffic_referrer_test.rb +31 -0
- data/test/models/workarea/segment_test.rb +80 -0
- data/test/models/workarea/segmentable_test.rb +74 -0
- data/test/models/workarea/shipping/address_test.rb +109 -111
- data/test/models/workarea/shipping/sku_test.rb +8 -12
- data/test/models/workarea/user/password_reset_test.rb +4 -12
- data/test/models/workarea/user_test.rb +13 -10
- data/test/queries/workarea/admin_search_query_wrapper_test.rb +21 -25
- data/test/queries/workarea/categorization_test.rb +49 -0
- data/test/queries/workarea/featured_categorization_test.rb +66 -0
- data/test/queries/workarea/order_cancellation_metrics_test.rb +203 -0
- data/test/queries/workarea/order_item_details_test.rb +17 -0
- data/test/queries/workarea/order_metrics_test.rb +12 -0
- data/test/queries/workarea/product_releases_test.rb +56 -0
- data/test/queries/workarea/recommendation/searches_test.rb +3 -3
- data/test/queries/workarea/recommendation/user_activity_based_test.rb +4 -4
- data/test/queries/workarea/reports/customers_test.rb +12 -8
- data/test/queries/workarea/reports/report_test.rb +4 -6
- data/test/queries/workarea/reports/sales_by_country_test.rb +18 -3
- data/test/queries/workarea/reports/sales_by_product_test.rb +28 -8
- data/test/queries/workarea/reports/sales_by_sku_test.rb +28 -8
- data/test/queries/workarea/reports/sales_by_tender_test.rb +100 -0
- data/test/queries/workarea/reports/sales_by_traffic_referrer_test.rb +6 -6
- data/test/queries/workarea/search/admin_releases_test.rb +1 -26
- data/test/queries/workarea/search/admin_search_test.rb +0 -10
- data/test/queries/workarea/search/admin_users_test.rb +2 -2
- data/test/queries/workarea/search/category_browse_test.rb +53 -0
- data/test/queries/workarea/search/facet_sorting/size_test.rb +11 -13
- data/test/queries/workarea/search/pagination_test.rb +9 -26
- data/test/queries/workarea/search/product_entries_test.rb +27 -0
- data/test/queries/workarea/search/product_search_test.rb +0 -16
- data/test/queries/workarea/search/storefront_search/response_test.rb +26 -0
- data/test/queries/workarea/search/storefront_search_test.rb +34 -36
- data/test/services/workarea/cancel_order_test.rb +27 -13
- data/test/services/workarea/copy_order_test.rb +17 -0
- data/test/services/workarea/direct_upload_test.rb +1 -46
- data/test/services/workarea/export_report_test.rb +41 -45
- data/test/services/workarea/hash_update_test.rb +12 -12
- data/test/services/workarea/packaging_test.rb +9 -11
- data/test/services/workarea/save_publishing_test.rb +23 -0
- data/test/workers/sidekiq/callbacks_test.rb +0 -22
- data/test/workers/workarea/deactivate_stale_discounts_test.rb +2 -2
- data/test/workers/workarea/index_category_changes_test.rb +5 -7
- data/test/workers/workarea/keep_product_index_fresh_test.rb +1 -1
- data/test/workers/workarea/process_import_test.rb +0 -6
- data/test/workers/workarea/process_search_recommendations_test.rb +4 -5
- data/test/workers/workarea/status_reporter_test.rb +2 -1
- data/test/workers/workarea/synchronize_user_metrics_test.rb +57 -0
- data/test/workers/workarea/update_payment_profile_email_test.rb +27 -0
- data/test/workers/workarea/verify_scheduled_releases_test.rb +0 -26
- data/workarea-core.gemspec +12 -10
- metadata +188 -78
- data/app/assets/javascripts/workarea/core/templates/ui_menu_item.jst.ejs +0 -10
- data/app/controllers/workarea/admin_guest_browsing.rb +0 -54
- data/app/middleware/workarea/rack_cache_config_middleware.rb +0 -19
- data/app/queries/workarea/search/search_suggestions.rb +0 -43
- data/app/workers/workarea/bust_discount_cache.rb +0 -16
- data/app/workers/workarea/clean_user_activity.rb +0 -11
- data/app/workers/workarea/undo_release.rb +0 -15
- data/app/workers/workarea/update_email.rb +0 -33
- data/lib/generators/workarea/docker/USAGE +0 -16
- data/lib/generators/workarea/docker/docker_generator.rb +0 -61
- data/lib/generators/workarea/docker/templates/.env.erb +0 -6
- data/lib/generators/workarea/docker/templates/Dockerfile.erb +0 -48
- data/lib/generators/workarea/docker/templates/docker-compose.yml.erb +0 -72
- data/lib/generators/workarea/docker/templates/docker-entrypoint.sh.erb +0 -6
- data/lib/generators/workarea/docker/templates/docker-sync.yml.erb +0 -8
- data/lib/generators/workarea/docker/templates/docker-wait.sh +0 -11
- data/lib/generators/workarea/docker/templates/docker.env +0 -16
- data/lib/generators/workarea/docker/templates/docker_init.rb.erb +0 -29
- data/lib/workarea/configuration/headless_chrome.rb +0 -42
- data/lib/workarea/configuration/puma.rb +0 -37
- data/lib/workarea/ext/freedom_patches/i18n_js.rb +0 -27
- data/lib/workarea/ext/freedom_patches/mongoid_localized_defaults.rb +0 -25
- data/lib/workarea/ext/jbuilder/jbuilder_cache.rb +0 -29
- data/lib/workarea/ext/referer_parser/parser.decorator +0 -43
- data/lib/workarea/queues_pauser.rb +0 -26
- data/lib/workarea/robots.rb +0 -9
- data/test/generators/workarea/docker_generator_test.rb +0 -156
- data/test/javascripts/fixtures/duplicate_id_pass.html.haml +0 -2
- data/test/lib/workarea/ext/freedom_patches/mongoid_localized_defaults_test.rb +0 -25
- data/test/lib/workarea/ext/referer_parser/parser_test.rb +0 -20
- data/test/queries/workarea/search/search_suggestions_test.rb +0 -29
- data/test/workers/workarea/undo_release_test.rb +0 -23
- data/test/workers/workarea/update_email_test.rb +0 -39
|
File without changes
|
data/config/locales/en.yml
CHANGED
|
@@ -50,33 +50,12 @@ en:
|
|
|
50
50
|
unit: instance
|
|
51
51
|
csv:
|
|
52
52
|
unit: row
|
|
53
|
-
duration:
|
|
54
|
-
years:
|
|
55
|
-
one: '%{count} year'
|
|
56
|
-
other: '%{count} years'
|
|
57
|
-
months:
|
|
58
|
-
one: '%{count} month'
|
|
59
|
-
other: '%{count} months'
|
|
60
|
-
weeks:
|
|
61
|
-
one: '%{count} week'
|
|
62
|
-
other: '%{count} weeks'
|
|
63
|
-
days:
|
|
64
|
-
one: '%{count} day'
|
|
65
|
-
other: '%{count} days'
|
|
66
|
-
hours:
|
|
67
|
-
one: '%{count} hour'
|
|
68
|
-
other: '%{count} hours'
|
|
69
|
-
minutes:
|
|
70
|
-
one: '%{count} minute'
|
|
71
|
-
other: '%{count} minutes'
|
|
72
|
-
seconds:
|
|
73
|
-
one: '%{count} second'
|
|
74
|
-
other: '%{count} seconds'
|
|
75
53
|
errors:
|
|
76
54
|
messages:
|
|
77
55
|
contains_type: cannot contain 'type'
|
|
78
56
|
not_a_date: must be a date
|
|
79
57
|
invalid_credit_card_number: is not a valid credit card number
|
|
58
|
+
invalid_credit_card_issuer: '%{value} cards are not accepted. We accept %{issuers}.'
|
|
80
59
|
expired_date: is an expired date
|
|
81
60
|
incomplete: is incomplete
|
|
82
61
|
must_be_future: must be in the future
|
|
@@ -91,14 +70,16 @@ en:
|
|
|
91
70
|
must_be_unique: must be unique
|
|
92
71
|
not_star_query: "cannot be '*'"
|
|
93
72
|
undo_unpublished_release: cannot be set when Publish Date is blank
|
|
73
|
+
max_allowed_segments: You cannot have more than 15 total segments in Workarea.
|
|
74
|
+
unsupported_segmentation: aren't supported for pricing.
|
|
94
75
|
facets:
|
|
95
76
|
price_range:
|
|
96
77
|
over: 'Over %{price}'
|
|
97
78
|
under: 'Under %{price}'
|
|
79
|
+
fulfillment_sku:
|
|
80
|
+
name: "Fulfillment SKU %{id}"
|
|
98
81
|
inventory_sku:
|
|
99
82
|
name: "Inventory %{id}"
|
|
100
|
-
inquiry:
|
|
101
|
-
subjects: {}
|
|
102
83
|
order:
|
|
103
84
|
name: "Order %{id}"
|
|
104
85
|
traffic_referrer:
|
|
@@ -108,6 +89,8 @@ en:
|
|
|
108
89
|
search: search
|
|
109
90
|
social: social
|
|
110
91
|
unknown: unknown
|
|
92
|
+
errors:
|
|
93
|
+
count_limit: Orders cannot exceed %{size} items.
|
|
111
94
|
messages:
|
|
112
95
|
info: Info
|
|
113
96
|
error: Error
|
|
@@ -131,10 +114,14 @@ en:
|
|
|
131
114
|
description: Price Override
|
|
132
115
|
pricing_sku:
|
|
133
116
|
name: "Pricing %{id}"
|
|
117
|
+
release:
|
|
118
|
+
undo: Undo %{name}
|
|
134
119
|
sorts:
|
|
135
120
|
available: Available
|
|
136
121
|
average_order_value: Average Order Total
|
|
122
|
+
country: Country
|
|
137
123
|
destination: Destination
|
|
124
|
+
downloads: Most Downloaded
|
|
138
125
|
end: End Date
|
|
139
126
|
last_updated: Recently Updated
|
|
140
127
|
modified: Last Updated
|
|
@@ -147,6 +134,7 @@ en:
|
|
|
147
134
|
path: Path
|
|
148
135
|
pending: Pending
|
|
149
136
|
popularity: Most Popular
|
|
137
|
+
postal_code: Postal Code
|
|
150
138
|
price_asc: Price, Low to High
|
|
151
139
|
price_desc: Price, High to Low
|
|
152
140
|
published_date: Published Date
|
|
@@ -154,6 +142,7 @@ en:
|
|
|
154
142
|
query: Search Terms
|
|
155
143
|
rating: Highest Rated
|
|
156
144
|
redemptions: Most Redeemed
|
|
145
|
+
region: Region
|
|
157
146
|
relevance: Relevance
|
|
158
147
|
sales: Sales
|
|
159
148
|
sku: SKU
|
|
@@ -37,14 +37,6 @@ module Workarea
|
|
|
37
37
|
environment '# Run Sidekiq tasks synchronously so that Sidekiq is not required in Development', env: 'development'
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
def configure_puma
|
|
41
|
-
remove_file 'config/puma.rb'
|
|
42
|
-
create_file 'config/puma.rb', <<~TEXT
|
|
43
|
-
require 'workarea/configuration/puma'
|
|
44
|
-
Workarea::Configuration::Puma.load(self)
|
|
45
|
-
TEXT
|
|
46
|
-
end
|
|
47
|
-
|
|
48
40
|
def update_test_helper
|
|
49
41
|
inject_into_file(
|
|
50
42
|
'test/test_helper.rb',
|
|
@@ -63,19 +55,6 @@ module Workarea
|
|
|
63
55
|
remove_file 'public/favicon.ico'
|
|
64
56
|
end
|
|
65
57
|
|
|
66
|
-
def add_development_mailer_port
|
|
67
|
-
development_port = <<-CODE
|
|
68
|
-
|
|
69
|
-
config.action_mailer.default_url_options = { port: 3000 }
|
|
70
|
-
CODE
|
|
71
|
-
|
|
72
|
-
inject_into_file(
|
|
73
|
-
'config/environments/development.rb',
|
|
74
|
-
development_port,
|
|
75
|
-
before: /^end/
|
|
76
|
-
)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
58
|
private
|
|
80
59
|
|
|
81
60
|
def app_name
|
data/lib/tasks/insights.rake
CHANGED
|
@@ -39,6 +39,7 @@ namespace :workarea do
|
|
|
39
39
|
Workarea::Metrics::SearchByWeek.delete_all
|
|
40
40
|
Workarea::Metrics::SearchForLastWeek.delete_all
|
|
41
41
|
Workarea::Metrics::SkuByDay.delete_all
|
|
42
|
+
Workarea::Metrics::TenderByDay.delete_all
|
|
42
43
|
Workarea::Metrics::TrafficReferrerByDay.delete_all
|
|
43
44
|
Workarea::Metrics::User.delete_all
|
|
44
45
|
Workarea::Insights::Base.delete_all
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
namespace :workarea do
|
|
2
|
+
namespace :migrate do
|
|
3
|
+
desc 'Migrate the database from v3.4 to v3.5'
|
|
4
|
+
task v3_5: :environment do
|
|
5
|
+
count = 0
|
|
6
|
+
|
|
7
|
+
Workarea::Release.where(:undo_at.gte => Time.current).each do |release|
|
|
8
|
+
undo = release.build_undo(publish_at: release.undo_at).tap(&:save!)
|
|
9
|
+
|
|
10
|
+
release.changesets.each do |changeset|
|
|
11
|
+
changeset.build_undo(release: undo).save!
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
Workarea::Scheduler.delete(release.undo_job_id)
|
|
15
|
+
|
|
16
|
+
release.update_attributes!(undo_at: nil, undo_job_id: nil)
|
|
17
|
+
count += 1
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
Workarea::Release.all.each { |r| Workarea::IndexAdminSearch.perform(r) }
|
|
21
|
+
|
|
22
|
+
puts "✅ #{count} undo releases have been created."
|
|
23
|
+
|
|
24
|
+
count = 0
|
|
25
|
+
|
|
26
|
+
Workarea::Tax::Category.each_by(100) do |category|
|
|
27
|
+
category.rates.each_by(500) do |rate|
|
|
28
|
+
rate.postal_code_percentage = rate.percentage
|
|
29
|
+
rate.percentage = nil
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
category.save!
|
|
33
|
+
count += 1
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
puts "✅ #{count} tax categories updated."
|
|
37
|
+
|
|
38
|
+
Workarea::Catalog::Product.each_by(500) do |product|
|
|
39
|
+
next unless product.digital?
|
|
40
|
+
|
|
41
|
+
product.skus.each do |sku|
|
|
42
|
+
fulfillment = Workarea::Fulfillment::Sku.find_or_initialize_by(id: sku)
|
|
43
|
+
fulfillment.policy = 'ignore'
|
|
44
|
+
fulfillment.save!
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
puts "✅ #{count} fulfillment skus for digital product have been created."
|
|
49
|
+
|
|
50
|
+
count = 0
|
|
51
|
+
failed_ids = []
|
|
52
|
+
backup = Mongo::Collection.new(Mongoid::Clients.default.database, 'workarea_legacy_segments')
|
|
53
|
+
|
|
54
|
+
legacy_segments = Workarea::Segment.collection.find.to_a
|
|
55
|
+
legacy_segments.each do |doc|
|
|
56
|
+
backup.insert_one(doc)
|
|
57
|
+
Workarea::Segment.collection.delete_one(doc.slice('_id'))
|
|
58
|
+
|
|
59
|
+
segment = Workarea::Segment.new(
|
|
60
|
+
id: doc['_id'],
|
|
61
|
+
name: doc['name'],
|
|
62
|
+
subscribed_user_ids: doc['subscribed_user_ids'],
|
|
63
|
+
created_at: doc['created_at'],
|
|
64
|
+
updated_at: doc['updated_at']
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
doc['conditions'].each do |condition|
|
|
68
|
+
if condition['_type'] =~ /UserTag/
|
|
69
|
+
segment.rules << Workarea::Segment::Rules::Tags.new(tags: condition['tags'])
|
|
70
|
+
elsif condition['_type'] =~ /TotalSpent/
|
|
71
|
+
rule = Workarea::Segment::Rules::Revenue.new
|
|
72
|
+
|
|
73
|
+
if condition['operator'] == 'equals'
|
|
74
|
+
rule.minimum = rule.maximum = Money.demongoize(condition['amount'])
|
|
75
|
+
elsif condition['operator'] == 'less_than_or_equals'
|
|
76
|
+
rule.maximum = Money.demongoize(condition['amount'])
|
|
77
|
+
elsif condition['operator'] == 'less_than'
|
|
78
|
+
rule.maximum = (Money.demongoize(condition['amount']) - 0.01.to_m)
|
|
79
|
+
elsif condition['operator'] == 'greater_than_or_equals'
|
|
80
|
+
rule.minimum = Money.demongoize(condition['amount'])
|
|
81
|
+
elsif condition['operator'] == 'greater_than'
|
|
82
|
+
rule.minimum = (Money.demongoize(condition['amount']) + 0.01.to_m)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
segment.rules << rule
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
if doc['conditions'].size == segment.rules.size && segment.save
|
|
90
|
+
count += 1
|
|
91
|
+
else
|
|
92
|
+
failed_ids << doc['_id']
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
puts "✅ #{count} segments have been migrated." if count > 0
|
|
97
|
+
if failed_ids.any?
|
|
98
|
+
puts "⛔️ #{failed_ids.count} segments failed to migrate."
|
|
99
|
+
puts "You can find copies of the original segments in the workarea_legacy_segments collection."
|
|
100
|
+
puts "The segments that failed are #{failed_ids.to_sentence}."
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
puts "\nMigration complete!"
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
data/lib/tasks/search.rake
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
namespace :workarea do
|
|
2
2
|
namespace :search_index do
|
|
3
|
+
def setup
|
|
4
|
+
require 'sidekiq/testing/inline' unless ENV['INLINE'] == 'false'
|
|
5
|
+
Workarea.config.bulk_index_batch_size = ENV['BATCH_SIZE'].to_i if ENV['BATCH_SIZE'].present?
|
|
6
|
+
end
|
|
7
|
+
|
|
3
8
|
desc 'Reindex all data'
|
|
4
9
|
task all: :environment do
|
|
5
10
|
Rake::Task['workarea:search_index:storefront'].invoke
|
|
@@ -9,17 +14,14 @@ namespace :workarea do
|
|
|
9
14
|
|
|
10
15
|
desc 'Reindex admin'
|
|
11
16
|
task admin: :environment do
|
|
12
|
-
|
|
17
|
+
setup
|
|
13
18
|
puts 'Indexing admin...'
|
|
14
|
-
|
|
15
|
-
Workarea::QueuesPauser.with_paused_queues do
|
|
16
|
-
Workarea::Search::Admin.reset_indexes!
|
|
17
|
-
end
|
|
19
|
+
Workarea::Search::Admin.reset_indexes!
|
|
18
20
|
|
|
19
21
|
Mongoid.models.each do |klass|
|
|
20
22
|
next unless Workarea::Search::Admin.for(klass.first).present?
|
|
21
23
|
|
|
22
|
-
klass.all.each_slice_of(
|
|
24
|
+
klass.all.each_slice_of(Workarea.config.bulk_index_batch_size) do |models|
|
|
23
25
|
Workarea::BulkIndexAdmin.perform_by_models(models)
|
|
24
26
|
end
|
|
25
27
|
end
|
|
@@ -31,13 +33,11 @@ namespace :workarea do
|
|
|
31
33
|
|
|
32
34
|
desc 'Reindex storefront'
|
|
33
35
|
task storefront: :environment do
|
|
34
|
-
|
|
36
|
+
setup
|
|
35
37
|
puts 'Indexing storefront...'
|
|
36
38
|
|
|
37
|
-
Workarea::
|
|
38
|
-
|
|
39
|
-
Workarea::Search::Storefront.ensure_dynamic_mappings
|
|
40
|
-
end
|
|
39
|
+
Workarea::Search::Storefront.reset_indexes!
|
|
40
|
+
Workarea::Search::Storefront.ensure_dynamic_mappings
|
|
41
41
|
|
|
42
42
|
# This code finds all unique filters for products so we can index a sample
|
|
43
43
|
# product for each to ensure the dynamic mappings get created.
|
|
@@ -65,12 +65,12 @@ namespace :workarea do
|
|
|
65
65
|
Workarea::Search::Storefront::Product.new(product).save
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
-
Workarea::Catalog::Category.all.each_by(
|
|
69
|
-
Workarea::Search::Storefront::
|
|
68
|
+
Workarea::Catalog::Category.all.each_by(Workarea.config.bulk_index_batch_size) do |category|
|
|
69
|
+
Workarea::Search::Storefront::CategoryQuery.new(category).create
|
|
70
70
|
Workarea::Search::Storefront::Category.new(category).save
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
-
Workarea::Content::Page.all.each_by(
|
|
73
|
+
Workarea::Content::Page.all.each_by(Workarea.config.bulk_index_batch_size) do |page|
|
|
74
74
|
Workarea::Search::Storefront::Page.new(page).save
|
|
75
75
|
end
|
|
76
76
|
|
|
@@ -80,14 +80,12 @@ namespace :workarea do
|
|
|
80
80
|
|
|
81
81
|
desc 'Reindex help'
|
|
82
82
|
task help: :environment do
|
|
83
|
-
|
|
83
|
+
setup
|
|
84
84
|
puts 'Indexing help...'
|
|
85
85
|
|
|
86
|
-
Workarea::
|
|
87
|
-
Workarea::Search::Help.reset_indexes!
|
|
88
|
-
end
|
|
86
|
+
Workarea::Search::Help.reset_indexes!
|
|
89
87
|
|
|
90
|
-
Workarea::Help::Article.all.each_by(
|
|
88
|
+
Workarea::Help::Article.all.each_by(Workarea.config.bulk_index_batch_size) do |help_article|
|
|
91
89
|
Workarea::Search::Help.new(help_article).save
|
|
92
90
|
end
|
|
93
91
|
end
|
data/lib/tasks/tests.rake
CHANGED
data/lib/workarea.rb
CHANGED
|
@@ -29,7 +29,7 @@ module Workarea
|
|
|
29
29
|
# A shortcut to the Rails' application config
|
|
30
30
|
# relevant to Workarea.
|
|
31
31
|
#
|
|
32
|
-
# @return [
|
|
32
|
+
# @return [Workarea::Configuration::AdministrableOptions]
|
|
33
33
|
#
|
|
34
34
|
def self.config
|
|
35
35
|
@custom_config.presence || Configuration.config
|
|
@@ -81,8 +81,107 @@ module Workarea
|
|
|
81
81
|
Fog::AWS::Storage.new(options)
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
|
+
|
|
85
|
+
# Use this to parse a referrer. It's globalized here because each instantiation
|
|
86
|
+
# will read a file, and we may need an instance on every request if there's a
|
|
87
|
+
# segment setup for referrer.
|
|
88
|
+
#
|
|
89
|
+
# @return [RefererParser::Parser]
|
|
90
|
+
#
|
|
91
|
+
def self.referrer_parser
|
|
92
|
+
@referrer_parser ||= RefererParser::Parser.new
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Define block types for use by administrators. A block type represents a
|
|
96
|
+
# row of content on the storefront, self-contained with its own styles and
|
|
97
|
+
# responsive logic.
|
|
98
|
+
#
|
|
99
|
+
# == Defining new block types
|
|
100
|
+
#
|
|
101
|
+
# Workarea.define_content_block_types do
|
|
102
|
+
# # Create a new block type called 2 Column Text
|
|
103
|
+
# # The ID or slug for this type will be :2_column_text
|
|
104
|
+
# block_type '2 Column Text' do
|
|
105
|
+
# # Set a description, which will be shown to admin users when
|
|
106
|
+
# # selecting a block type
|
|
107
|
+
# description 'Provides 2 columns of text'
|
|
108
|
+
#
|
|
109
|
+
# # Allows custom specification of which icon to use to display this
|
|
110
|
+
# # block type in the admin when selecting a new block. The default
|
|
111
|
+
# # is workarea/admin/content_block_types/#{block_type_id}
|
|
112
|
+
# icon 'workarea/admin/content_block_types/columns'
|
|
113
|
+
#
|
|
114
|
+
# # Tags are used for filtering content block types in the admin when
|
|
115
|
+
# # creating a new block and selecting its type
|
|
116
|
+
# tags %w(columns text)
|
|
117
|
+
#
|
|
118
|
+
# # You can also specify a custom view model to be used in the store
|
|
119
|
+
# # front when rendering. You could even share view models for
|
|
120
|
+
# # different blocks
|
|
121
|
+
# view_model 'Workarea::Storefront::ContentBlocks::ColumnsViewModel'
|
|
122
|
+
#
|
|
123
|
+
# # If your block type requires developer-facing configuration, you
|
|
124
|
+
# # you can specify any arbitrary attributes and they will be added
|
|
125
|
+
# # to the #config hash on the block type. For example, configuration
|
|
126
|
+
# # values tied to site design.
|
|
127
|
+
# height 960
|
|
128
|
+
# width 470
|
|
129
|
+
#
|
|
130
|
+
# # Use fieldset to group fields together for admin display. The
|
|
131
|
+
# # fieldset has no other use.
|
|
132
|
+
# fieldset 'Left Column' do
|
|
133
|
+
# # A field corresponds to one input in the admin and one key in
|
|
134
|
+
# # the Workarea::Content::Block#data hash. It will be referenced
|
|
135
|
+
# # by a systemized version of the name.
|
|
136
|
+
#
|
|
137
|
+
# # The second argument must be a type. Out-of-the-box valid types
|
|
138
|
+
# # include :asset, :category, :options, :products, :rich_text,
|
|
139
|
+
# # :string, and :url.
|
|
140
|
+
#
|
|
141
|
+
# # Options can be specific to the field type. All field types
|
|
142
|
+
# # support :default and :required.
|
|
143
|
+
# field 'Left Column Text', :text, required: true, default: 'Left Column'
|
|
144
|
+
# end
|
|
145
|
+
#
|
|
146
|
+
# fieldset 'Right Column' do
|
|
147
|
+
# field 'Right Column Text', :text, required: true, default: 'Right Column'
|
|
148
|
+
# end
|
|
149
|
+
# end
|
|
150
|
+
# end
|
|
151
|
+
#
|
|
152
|
+
# == Overriding values for existing block types
|
|
153
|
+
#
|
|
154
|
+
# To allow full customization, all details about a block type and its fields
|
|
155
|
+
# can be overridden. Here's an example of overriding details on the Product
|
|
156
|
+
# List block type which ships out of the box.
|
|
157
|
+
#
|
|
158
|
+
# Workarea.define_content_block_types do
|
|
159
|
+
# # Open the Product List block up again
|
|
160
|
+
# block_type 'Product List' do
|
|
161
|
+
# # Override the default on Title
|
|
162
|
+
# field 'Title', :string, default: 'Staff Picks'
|
|
163
|
+
# # Add a new field called description
|
|
164
|
+
# field 'Description', :text, default: 'Top picks by our staff
|
|
165
|
+
#
|
|
166
|
+
# # No need to touch other fields, they remain the same
|
|
167
|
+
# end
|
|
168
|
+
# end
|
|
169
|
+
#
|
|
170
|
+
# == Admin UI
|
|
171
|
+
# The admin UI for the block will be automatically generated based on the
|
|
172
|
+
# fields provided.
|
|
173
|
+
#
|
|
174
|
+
def self.define_content_block_types(&block)
|
|
175
|
+
Configuration::ContentBlocks.building_blocks << block
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# Use this deprecation to warn about the next minor release.
|
|
179
|
+
#
|
|
180
|
+
# @return [ActiveSupport::Deprecation]
|
|
181
|
+
#
|
|
182
|
+
def self.deprecation
|
|
183
|
+
@deprecation ||= ActiveSupport::Deprecation.new('3.6', 'Workarea')
|
|
184
|
+
end
|
|
84
185
|
end
|
|
85
186
|
|
|
86
187
|
require 'workarea/core'
|
|
87
|
-
require 'workarea/admin'
|
|
88
|
-
require 'workarea/storefront'
|