workarea-admin 3.4.45 → 3.5.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +52 -0
- data/app/assets/images/workarea/admin/email_logo.png +0 -0
- data/app/assets/javascripts/workarea/admin/application.js.erb +11 -1
- data/app/assets/javascripts/workarea/admin/config.js.erb +96 -0
- data/app/assets/javascripts/workarea/admin/modules/active_by_segment_tooltips.js +108 -0
- data/app/assets/javascripts/workarea/admin/modules/calendars.js +1 -1
- data/app/assets/javascripts/workarea/admin/modules/categorized_autocomplete_fields.js +1 -1
- data/app/assets/javascripts/workarea/admin/modules/impersonation_notification.js +44 -0
- data/app/assets/javascripts/workarea/admin/modules/jump_to_menus.js +74 -0
- data/app/assets/javascripts/workarea/admin/modules/new_navigation_taxons.js +1 -2
- data/app/assets/javascripts/workarea/admin/modules/release_reminder.js +1 -0
- data/app/assets/javascripts/workarea/admin/modules/selects.js +33 -0
- data/app/assets/javascripts/workarea/admin/modules/style_guide_autocomplete_fields.js +42 -0
- data/app/assets/javascripts/workarea/admin/modules/timeline_report_chart.js +105 -0
- data/app/assets/javascripts/workarea/admin/modules/toggle_elements.js +27 -0
- data/app/assets/javascripts/workarea/admin/modules/tribute_areas.js +91 -0
- data/app/assets/javascripts/workarea/admin/templates/chart_legend.jst.ejs +17 -9
- data/app/assets/javascripts/workarea/admin/templates/jump_to_menu.jst.ejs +13 -0
- data/app/assets/stylesheets/workarea/admin/application.scss.erb +3 -0
- data/app/assets/stylesheets/workarea/admin/base/_forms.scss +2 -2
- data/app/assets/stylesheets/workarea/admin/components/_activity.scss +24 -16
- data/app/assets/stylesheets/workarea/admin/components/_activity_group.scss +3 -19
- data/app/assets/stylesheets/workarea/admin/components/_box.scss +21 -5
- data/app/assets/stylesheets/workarea/admin/components/_calendar.scss +102 -140
- data/app/assets/stylesheets/workarea/admin/components/_chart_legend.scss +10 -13
- data/app/assets/stylesheets/workarea/admin/components/_checkbox.scss +49 -23
- data/app/assets/stylesheets/workarea/admin/components/_content_block_list.scss +5 -3
- data/app/assets/stylesheets/workarea/admin/components/_date_marker.scss +24 -3
- data/app/assets/stylesheets/workarea/admin/components/_index_table.scss +5 -0
- data/app/assets/stylesheets/workarea/admin/components/_jump_to_menu.scss +57 -0
- data/app/assets/stylesheets/workarea/admin/components/_product_summary.scss +46 -0
- data/app/assets/stylesheets/workarea/admin/components/_toggle_button.scss +1 -4
- data/app/assets/stylesheets/workarea/admin/email/_base.scss +30 -2
- data/app/assets/stylesheets/workarea/admin/email/_components.scss +66 -5
- data/app/assets/stylesheets/workarea/admin/email/_helpers.scss +16 -5
- data/app/assets/stylesheets/workarea/admin/email/{_settings.scss → _settings.scss.erb} +4 -4
- data/app/controllers/workarea/admin/application_controller.rb +2 -4
- data/app/controllers/workarea/admin/bulk_action_sequential_product_edits_controller.rb +4 -6
- data/app/controllers/workarea/admin/bulk_variant_saving.rb +1 -2
- data/app/controllers/workarea/admin/catalog_products_controller.rb +4 -6
- data/app/controllers/workarea/admin/catalog_variants_controller.rb +2 -3
- data/app/controllers/workarea/admin/comments_controller.rb +9 -0
- data/app/controllers/workarea/admin/configurations_controller.rb +29 -0
- data/app/controllers/workarea/admin/content_assets_controller.rb +3 -1
- data/app/controllers/workarea/admin/content_blocks_controller.rb +1 -7
- data/app/controllers/workarea/admin/create_catalog_products_controller.rb +2 -8
- data/app/controllers/workarea/admin/create_release_undos_controller.rb +43 -0
- data/app/controllers/workarea/admin/create_segments_controller.rb +68 -0
- data/app/controllers/workarea/admin/dashboards_controller.rb +2 -0
- data/app/controllers/workarea/admin/data_file_imports_controller.rb +7 -2
- data/app/controllers/workarea/admin/fulfillment_skus_controller.rb +58 -0
- data/app/controllers/workarea/admin/fulfillment_tokens_controller.rb +56 -0
- data/app/controllers/workarea/admin/guest_browsings_controller.rb +2 -2
- data/app/controllers/workarea/admin/impersonations_controller.rb +3 -4
- data/app/controllers/workarea/admin/orders_controller.rb +3 -0
- data/app/controllers/workarea/admin/pricing_discount_redemptions_controller.rb +13 -0
- data/app/controllers/workarea/admin/pricing_overrides_controller.rb +1 -1
- data/app/controllers/workarea/admin/product_rules_controller.rb +1 -2
- data/app/controllers/workarea/admin/releases_controller.rb +8 -13
- data/app/controllers/workarea/admin/reports_controller.rb +18 -0
- data/app/controllers/workarea/admin/segment_overrides_controller.rb +19 -0
- data/app/controllers/workarea/admin/segment_rules_controller.rb +62 -0
- data/app/controllers/workarea/admin/segments_controller.rb +48 -0
- data/app/controllers/workarea/admin/tax_rates_controller.rb +62 -1
- data/app/controllers/workarea/admin/unsubscribes_controller.rb +40 -0
- data/app/controllers/workarea/admin/users_controller.rb +19 -0
- data/app/helpers/workarea/admin/application_helper.rb +2 -12
- data/app/helpers/workarea/admin/configurations_helper.rb +9 -0
- data/app/helpers/workarea/admin/content_helper.rb +2 -3
- data/app/helpers/workarea/admin/fulfillment_helper.rb +10 -0
- data/app/helpers/workarea/admin/icons_helper.rb +26 -0
- data/app/helpers/workarea/admin/navigation_helper.rb +1 -0
- data/app/helpers/workarea/admin/pricing_overrides_helper.rb +1 -1
- data/app/helpers/workarea/admin/products_helper.rb +13 -0
- data/app/helpers/workarea/admin/releases_helper.rb +5 -21
- data/app/helpers/workarea/admin/segments_helper.rb +68 -0
- data/app/helpers/workarea/admin/settings_helper.rb +11 -3
- data/app/mailers/workarea/admin/comment_mailer.rb +3 -3
- data/app/mailers/workarea/admin/status_report_mailer.rb +19 -6
- data/app/view_models/workarea/admin/bulk_action_product_edit_view_model.rb +5 -0
- data/app/view_models/workarea/admin/changeset_view_model.rb +15 -3
- data/app/view_models/workarea/admin/code_list_view_model.rb +1 -1
- data/app/view_models/workarea/admin/commentable_view_model.rb +4 -0
- data/app/view_models/workarea/admin/content_view_model.rb +2 -0
- data/app/view_models/workarea/admin/dashboards/marketing_view_model.rb +5 -9
- data/app/view_models/workarea/admin/dashboards/reports_view_model.rb +25 -0
- data/app/view_models/workarea/admin/discounts/buy_some_get_some_view_model.rb +6 -0
- data/app/view_models/workarea/admin/discounts/category_view_model.rb +6 -0
- data/app/view_models/workarea/admin/discounts/free_gift_view_model.rb +6 -0
- data/app/view_models/workarea/admin/discounts/order_total_view_model.rb +6 -0
- data/app/view_models/workarea/admin/discounts/product_attribute_view_model.rb +6 -0
- data/app/view_models/workarea/admin/discounts/product_view_model.rb +6 -0
- data/app/view_models/workarea/admin/discounts/quantity_fixed_price_view_model.rb +6 -0
- data/app/view_models/workarea/admin/discounts/shipping_view_model.rb +6 -0
- data/app/view_models/workarea/admin/featured_products_view_model.rb +6 -12
- data/app/view_models/workarea/admin/fulfillment_sku_view_model.rb +22 -0
- data/app/view_models/workarea/admin/fulfillment_token_view_model.rb +15 -0
- data/app/view_models/workarea/admin/fulfillment_view_model.rb +14 -0
- data/app/view_models/workarea/admin/insight_view_model.rb +2 -2
- data/app/view_models/workarea/admin/insights/product_view_model.rb +2 -2
- data/app/view_models/workarea/admin/insights/segment_view_model.rb +25 -0
- data/app/view_models/workarea/admin/order_view_model.rb +4 -0
- data/app/view_models/workarea/admin/pricing_sku_view_model.rb +0 -51
- data/app/view_models/workarea/admin/product_rules_preview_view_model.rb +2 -2
- data/app/view_models/workarea/admin/product_view_model.rb +26 -5
- data/app/view_models/workarea/admin/recommendations_view_model.rb +3 -11
- data/app/view_models/workarea/admin/release_calendar_view_model.rb +4 -9
- data/app/view_models/workarea/admin/release_event_view_model.rb +8 -41
- data/app/view_models/workarea/admin/release_view_model.rb +10 -17
- data/app/view_models/workarea/admin/releases_feed_view_model.rb +5 -13
- data/app/view_models/workarea/admin/reports/customers_view_model.rb +4 -2
- data/app/view_models/workarea/admin/reports/low_inventory_view_model.rb +2 -5
- data/app/view_models/workarea/admin/reports/sales_by_category_view_model.rb +2 -5
- data/app/view_models/workarea/admin/reports/sales_by_discount_view_model.rb +2 -5
- data/app/view_models/workarea/admin/reports/sales_by_product_view_model.rb +2 -5
- data/app/view_models/workarea/admin/reports/sales_by_tender_view_model.rb +13 -0
- data/app/view_models/workarea/admin/reports/timeline_view_model.rb +74 -0
- data/app/view_models/workarea/admin/search_customization_product_rules_view_model.rb +1 -1
- data/app/view_models/workarea/admin/segment_view_model.rb +19 -0
- data/app/view_models/workarea/admin/user_view_model.rb +6 -9
- data/app/view_models/workarea/admin/variant_view_model.rb +8 -0
- data/app/views/layouts/workarea/admin/application.html.haml +1 -1
- data/app/views/layouts/workarea/admin/email.html.haml +35 -41
- data/app/views/workarea/admin/activities/_configuration_admin_update.html.haml +10 -0
- data/app/views/workarea/admin/activities/_fulfillment_sku_create.html.haml +12 -0
- data/app/views/workarea/admin/activities/_fulfillment_sku_destroy.html.haml +10 -0
- data/app/views/workarea/admin/activities/_fulfillment_sku_update.html.haml +10 -0
- data/app/views/workarea/admin/activities/_segment_create.html.haml +12 -0
- data/app/views/workarea/admin/activities/_segment_destroy.html.haml +10 -0
- data/app/views/workarea/admin/activities/_segment_update.html.haml +10 -0
- data/app/views/workarea/admin/activities/show.html.haml +18 -11
- data/app/views/workarea/admin/bulk_action_product_edits/edit.html.haml +4 -0
- data/app/views/workarea/admin/bulk_action_product_edits/review.html.haml +11 -4
- data/app/views/workarea/admin/bulk_action_sequential_product_edits/product.html.haml +1 -1
- data/app/views/workarea/admin/catalog_categories/_cards.html.haml +3 -1
- data/app/views/workarea/admin/catalog_categories/edit.html.haml +1 -4
- data/app/views/workarea/admin/catalog_categories/index.html.haml +1 -0
- data/app/views/workarea/admin/catalog_product_images/edit.html.haml +1 -1
- data/app/views/workarea/admin/catalog_products/_cards.html.haml +2 -4
- data/app/views/workarea/admin/catalog_products/edit.html.haml +2 -1
- data/app/views/workarea/admin/catalog_products/index.html.haml +4 -2
- data/app/views/workarea/admin/catalog_products/insights.html.haml +2 -0
- data/app/views/workarea/admin/catalog_variants/edit.html.haml +6 -1
- data/app/views/workarea/admin/catalog_variants/index.html.haml +2 -0
- data/app/views/workarea/admin/catalog_variants/new.html.haml +5 -0
- data/app/views/workarea/admin/changesets/fields/_active_segment_ids.html.haml +4 -0
- data/app/views/workarea/admin/comment_mailer/notify.html.haml +27 -19
- data/app/views/workarea/admin/comments/index.html.haml +18 -12
- data/app/views/workarea/admin/configurations/_overridden.html.haml +2 -0
- data/app/views/workarea/admin/configurations/show.html.haml +49 -0
- data/app/views/workarea/admin/configurations/types/_array.html.haml +3 -0
- data/app/views/workarea/admin/configurations/types/_boolean.html.haml +1 -0
- data/app/views/workarea/admin/configurations/types/_duration.html.haml +2 -0
- data/app/views/workarea/admin/configurations/types/_encrypted.html.haml +1 -0
- data/app/views/workarea/admin/configurations/types/_float.html.haml +1 -0
- data/app/views/workarea/admin/configurations/types/_hash.html.haml +17 -0
- data/app/views/workarea/admin/configurations/types/_integer.html.haml +1 -0
- data/app/views/workarea/admin/configurations/types/_select.html.haml +1 -0
- data/app/views/workarea/admin/configurations/types/_string.html.haml +1 -0
- data/app/views/workarea/admin/configurations/types/_symbol.html.haml +1 -0
- data/app/views/workarea/admin/content/_edit.html.haml +8 -1
- data/app/views/workarea/admin/content/_form.html.haml +13 -7
- data/app/views/workarea/admin/content/advanced.html.haml +18 -10
- data/app/views/workarea/admin/content_assets/_cards.html.haml +3 -0
- data/app/views/workarea/admin/content_assets/_summary.html.haml +1 -1
- data/app/views/workarea/admin/content_assets/edit.html.haml +6 -0
- data/app/views/workarea/admin/content_assets/index.html.haml +7 -2
- data/app/views/workarea/admin/content_assets/new.html.haml +10 -3
- data/app/views/workarea/admin/content_blocks/_asset.html.haml +8 -1
- data/app/views/workarea/admin/content_pages/_cards.html.haml +1 -0
- data/app/views/workarea/admin/content_pages/edit.html.haml +1 -1
- data/app/views/workarea/admin/content_pages/index.html.haml +1 -0
- data/app/views/workarea/admin/create_catalog_categories/publish.html.haml +1 -0
- data/app/views/workarea/admin/create_catalog_products/content.html.haml +1 -1
- data/app/views/workarea/admin/create_catalog_products/publish.html.haml +1 -0
- data/app/views/workarea/admin/create_content_pages/publish.html.haml +1 -0
- data/app/views/workarea/admin/create_pricing_discounts/publish.html.haml +1 -0
- data/app/views/workarea/admin/create_release_undos/new.html.haml +45 -0
- data/app/views/workarea/admin/create_release_undos/review.html.haml +51 -0
- data/app/views/workarea/admin/create_releases/plan.html.haml +4 -3
- data/app/views/workarea/admin/create_releases/setup.html.haml +8 -12
- data/app/views/workarea/admin/create_segments/rules.html.haml +55 -0
- data/app/views/workarea/admin/create_segments/setup.html.haml +42 -0
- data/app/views/workarea/admin/create_users/admin.html.haml +0 -2
- data/app/views/workarea/admin/dashboards/catalog.html.haml +1 -0
- data/app/views/workarea/admin/dashboards/people.html.haml +1 -1
- data/app/views/workarea/admin/dashboards/reports.html.haml +31 -0
- data/app/views/workarea/admin/dashboards/settings.html.haml +23 -3
- data/app/views/workarea/admin/data_file_imports/new.html.haml +4 -2
- data/app/views/workarea/admin/data_file_mailer/export.html.haml +2 -0
- data/app/views/workarea/admin/data_file_mailer/import.html.haml +2 -0
- data/app/views/workarea/admin/data_file_mailer/import_failure.html.haml +2 -0
- data/app/views/workarea/admin/facets/_applied.html.haml +1 -1
- data/app/views/workarea/admin/featured_products/_selected.html.haml +3 -2
- data/app/views/workarea/admin/featured_products/_unselected.html.haml +3 -1
- data/app/views/workarea/admin/featured_products/edit.html.haml +3 -3
- data/app/views/workarea/admin/featured_products/select.html.haml +0 -1
- data/app/views/workarea/admin/fulfillment_skus/_aux_navigation.html.haml +3 -0
- data/app/views/workarea/admin/fulfillment_skus/_cards.html.haml +57 -0
- data/app/views/workarea/admin/fulfillment_skus/_summary.html.haml +6 -0
- data/app/views/workarea/admin/fulfillment_skus/edit.html.haml +53 -0
- data/app/views/workarea/admin/fulfillment_skus/index.html.haml +75 -0
- data/app/views/workarea/admin/fulfillment_skus/new.html.haml +41 -0
- data/app/views/workarea/admin/fulfillment_skus/show.html.haml +17 -0
- data/app/views/workarea/admin/fulfillment_tokens/index.html.haml +73 -0
- data/app/views/workarea/admin/fulfillments/show.html.haml +41 -6
- data/app/views/workarea/admin/insights/_most_discounted_products.html.haml +4 -4
- data/app/views/workarea/admin/inventory_skus/show.html.haml +1 -1
- data/app/views/workarea/admin/navigation_menus/_summary.html.haml +1 -1
- data/app/views/workarea/admin/navigation_menus/edit.html.haml +1 -1
- data/app/views/workarea/admin/navigation_menus/index.html.haml +3 -1
- data/app/views/workarea/admin/navigation_redirects/index.html.haml +0 -5
- data/app/views/workarea/admin/navigation_taxons/index.html.haml +20 -4
- data/app/views/workarea/admin/orders/_cards.html.haml +23 -5
- data/app/views/workarea/admin/orders/attributes.html.haml +4 -1
- data/app/views/workarea/admin/orders/fraud.html.haml +43 -0
- data/app/views/workarea/admin/orders/index.html.haml +1 -0
- data/app/views/workarea/admin/orders/timeline.html.haml +1 -1
- data/app/views/workarea/admin/pricing_discount_code_lists/_cards.html.haml +1 -1
- data/app/views/workarea/admin/pricing_discount_code_lists/promo_codes.html.haml +1 -1
- data/app/views/workarea/admin/pricing_discount_redemptions/index.html.haml +44 -0
- data/app/views/workarea/admin/pricing_discounts/_cards.html.haml +22 -0
- data/app/views/workarea/admin/pricing_discounts/conditions/_segments.html.haml +5 -0
- data/app/views/workarea/admin/pricing_discounts/edit.html.haml +5 -15
- data/app/views/workarea/admin/pricing_discounts/index.html.haml +1 -0
- data/app/views/workarea/admin/pricing_discounts/properties/_buy_some_get_some.html.haml +1 -0
- data/app/views/workarea/admin/pricing_discounts/properties/_category.html.haml +1 -0
- data/app/views/workarea/admin/pricing_discounts/properties/_free_gift.html.haml +1 -0
- data/app/views/workarea/admin/pricing_discounts/properties/_order_total.html.haml +1 -0
- data/app/views/workarea/admin/pricing_discounts/properties/_product.html.haml +1 -0
- data/app/views/workarea/admin/pricing_discounts/properties/_product_attribute.html.haml +2 -1
- data/app/views/workarea/admin/pricing_discounts/properties/_quantity_fixed_price.html.haml +1 -0
- data/app/views/workarea/admin/pricing_discounts/properties/_shipping.html.haml +1 -0
- data/app/views/workarea/admin/pricing_skus/_cards.html.haml +7 -7
- data/app/views/workarea/admin/pricing_skus/edit.html.haml +5 -5
- data/app/views/workarea/admin/pricing_skus/index.html.haml +4 -4
- data/app/views/workarea/admin/pricing_skus/new.html.haml +6 -9
- data/app/views/workarea/admin/product_rules/_card.html.haml +2 -2
- data/app/views/workarea/admin/product_rules/_form.html.haml +1 -0
- data/app/views/workarea/admin/product_rules/index.html.haml +2 -0
- data/app/views/workarea/admin/releases/_cards.html.haml +50 -12
- data/app/views/workarea/admin/releases/_publish.html.haml +1 -1
- data/app/views/workarea/admin/releases/edit.html.haml +33 -46
- data/app/views/workarea/admin/releases/index.html.haml +81 -90
- data/app/views/workarea/admin/releases/list.html.haml +107 -0
- data/app/views/workarea/admin/releases/original.html.haml +50 -0
- data/app/views/workarea/admin/releases/show.html.haml +3 -17
- data/app/views/workarea/admin/releases/undo.html.haml +64 -0
- data/app/views/workarea/admin/reports/average_order_value.html.haml +1 -1
- data/app/views/workarea/admin/reports/customers.html.haml +4 -0
- data/app/views/workarea/admin/reports/first_time_vs_returning_sales.html.haml +1 -1
- data/app/views/workarea/admin/reports/reference.html.haml +19 -60
- data/app/views/workarea/admin/reports/sales_by_country.html.haml +6 -0
- data/app/views/workarea/admin/reports/sales_by_product.html.haml +6 -0
- data/app/views/workarea/admin/reports/sales_by_sku.html.haml +6 -0
- data/app/views/workarea/admin/reports/sales_by_tender.html.haml +30 -0
- data/app/views/workarea/admin/reports/sales_over_time.html.haml +5 -1
- data/app/views/workarea/admin/reports/timeline.html.haml +20 -0
- data/app/views/workarea/admin/search_customizations/_cards.html.haml +1 -0
- data/app/views/workarea/admin/search_customizations/edit.html.haml +1 -1
- data/app/views/workarea/admin/search_customizations/index.html.haml +1 -0
- data/app/views/workarea/admin/searches/show.html.haml +6 -5
- data/app/views/workarea/admin/segment_overrides/show.html.haml +29 -0
- data/app/views/workarea/admin/segment_rules/_form.html.haml +13 -0
- data/app/views/workarea/admin/segment_rules/fields/_browser_info.html.haml +13 -0
- data/app/views/workarea/admin/segment_rules/fields/_geolocation.html.haml +4 -0
- data/app/views/workarea/admin/segment_rules/fields/_last_order.html.haml +3 -0
- data/app/views/workarea/admin/segment_rules/fields/_logged_in.html.haml +2 -0
- data/app/views/workarea/admin/segment_rules/fields/_orders.html.haml +5 -0
- data/app/views/workarea/admin/segment_rules/fields/_revenue.html.haml +9 -0
- data/app/views/workarea/admin/segment_rules/fields/_sessions.html.haml +5 -0
- data/app/views/workarea/admin/segment_rules/fields/_tags.html.haml +4 -0
- data/app/views/workarea/admin/segment_rules/fields/_traffic_referrer.html.haml +13 -0
- data/app/views/workarea/admin/segment_rules/geolocation_options.json.jbuilder +4 -0
- data/app/views/workarea/admin/segment_rules/index.html.haml +25 -0
- data/app/views/workarea/admin/segment_rules/summaries/_browser_info.html.haml +11 -0
- data/app/views/workarea/admin/segment_rules/summaries/_geolocation.html.haml +2 -0
- data/app/views/workarea/admin/segment_rules/summaries/_last_order.html.haml +2 -0
- data/app/views/workarea/admin/segment_rules/summaries/_logged_in.html.haml +5 -0
- data/app/views/workarea/admin/segment_rules/summaries/_orders.html.haml +6 -0
- data/app/views/workarea/admin/segment_rules/summaries/_revenue.html.haml +7 -0
- data/app/views/workarea/admin/segment_rules/summaries/_sessions.html.haml +6 -0
- data/app/views/workarea/admin/segment_rules/summaries/_tags.html.haml +2 -0
- data/app/views/workarea/admin/segment_rules/summaries/_traffic_referrer.html.haml +10 -0
- data/app/views/workarea/admin/segments/_cards.html.haml +81 -0
- data/app/views/workarea/admin/segments/_publish.html.haml +10 -0
- data/app/views/workarea/admin/segments/edit.html.haml +41 -0
- data/app/views/workarea/admin/segments/index.html.haml +64 -0
- data/app/views/workarea/admin/segments/insights.html.haml +52 -0
- data/app/views/workarea/admin/segments/show.html.haml +20 -0
- data/app/views/workarea/admin/shared/_active_field.html.haml +17 -0
- data/app/views/workarea/admin/shared/_bulk_actions.html.haml +10 -8
- data/app/views/workarea/admin/shared/_primary_nav.html.haml +5 -2
- data/app/views/workarea/admin/shared/_toggle_button.html.haml +1 -1
- data/app/views/workarea/admin/shipping_services/edit.html.haml +0 -4
- data/app/views/workarea/admin/shipping_services/new.html.haml +0 -4
- data/app/views/workarea/admin/status_report_mailer/report.html.haml +83 -86
- data/app/views/workarea/admin/style_guides/components/_activity.html.haml +3 -5
- data/app/views/workarea/admin/style_guides/components/_activity_group.html.haml +9 -15
- data/app/views/workarea/admin/style_guides/components/_box.html.haml +12 -7
- data/app/views/workarea/admin/style_guides/components/_checkbox.html.haml +21 -2
- data/app/views/workarea/admin/style_guides/components/_release_changeset.html.haml +3 -5
- data/app/views/workarea/admin/tax_rates/edit.html.haml +64 -0
- data/app/views/workarea/admin/tax_rates/index.html.haml +59 -20
- data/app/views/workarea/admin/tax_rates/new.html.haml +62 -0
- data/app/views/workarea/admin/timeline/show.html.haml +34 -41
- data/app/views/workarea/admin/toolbar/show.html.haml +11 -1
- data/app/views/workarea/admin/trash/index.html.haml +1 -1
- data/app/views/workarea/admin/users/edit.html.haml +60 -57
- data/app/views/workarea/admin/users/index.html.haml +1 -3
- data/app/views/workarea/admin/users/index.json.jbuilder +8 -0
- data/app/views/workarea/admin/users/insights.html.haml +31 -23
- data/app/views/workarea/admin/users/permissions.html.haml +10 -1
- data/app/views/workarea/admin/users/show.html.haml +7 -0
- data/config/locales/en.yml +569 -124
- data/config/routes.rb +57 -5
- data/lib/workarea/mailer_previews/admin/status_report_mailer_preview.rb +3 -1
- data/public/workarea/import_samples/tax_rates.csv +3 -3
- data/test/dummy/config/initializers/session_store.rb +1 -1
- data/test/helpers/workarea/admin/application_helper_test.rb +0 -16
- data/test/helpers/workarea/admin/icons_helper_test.rb +9 -0
- data/test/helpers/workarea/admin/products_helper_test.rb +73 -0
- data/test/helpers/workarea/admin/releases_helper_test.rb +0 -49
- data/test/helpers/workarea/admin/settings_helper_test.rb +22 -1
- data/test/integration/workarea/admin/assets_integration_test.rb +2 -5
- data/test/integration/workarea/admin/comments_integration_test.rb +27 -7
- data/test/integration/workarea/admin/configurations_integration_test.rb +21 -0
- data/test/integration/workarea/admin/create_release_undos_integration_test.rb +29 -0
- data/test/integration/workarea/admin/create_segments_integration_test.rb +26 -0
- data/test/integration/workarea/admin/data_file_imports_integration_test.rb +34 -8
- data/test/integration/workarea/admin/fulfillment_skus_integration_test.rb +55 -0
- data/test/integration/workarea/admin/fulfillment_tokens_integration_test.rb +43 -0
- data/test/integration/workarea/admin/guest_browsings_integration_test.rb +8 -32
- data/test/integration/workarea/admin/impersonations_integration_test.rb +13 -57
- data/test/integration/workarea/admin/jump_to_integration_test.rb +0 -29
- data/test/integration/workarea/admin/pricing_overrides_integration_test.rb +11 -0
- data/test/integration/workarea/admin/products_integration_test.rb +0 -13
- data/test/integration/workarea/admin/releases_integration_test.rb +71 -87
- data/test/integration/workarea/admin/segment_overrides_integration_test.rb +28 -0
- data/test/integration/workarea/admin/segment_rules_integration_test.rb +49 -0
- data/test/integration/workarea/admin/segments_integration_test.rb +31 -0
- data/test/integration/workarea/admin/shipping_service_integration_test.rb +1 -3
- data/test/integration/workarea/admin/tax_categories_integration_test.rb +1 -1
- data/test/integration/workarea/admin/unsubscribes_integration_test.rb +32 -0
- data/test/integration/workarea/admin/users_integration_test.rb +32 -0
- data/test/javascripts/fixtures/release_reminder.html.haml +3 -3
- data/test/javascripts/new_navigation_taxons_spec.js +1 -12
- data/test/mailers/workarea/admin/comment_mailer_test.rb +35 -0
- data/test/mailers/workarea/admin/status_report_mailer_test.rb +30 -25
- data/test/system/workarea/admin/alerts_system_test.rb +2 -1
- data/test/system/workarea/admin/bulk_actions_system_test.rb +1 -1
- data/test/system/workarea/admin/comments_system_test.rb +43 -0
- data/test/system/workarea/admin/content_system_test.rb +6 -0
- data/test/system/workarea/admin/dashboard_system_test.rb +8 -9
- data/test/system/workarea/admin/data_files_system_test.rb +1 -1
- data/test/system/workarea/admin/discounts_system_test.rb +18 -0
- data/test/system/workarea/admin/featured_products_system_test.rb +3 -0
- data/test/system/workarea/admin/fulfillment_skus_system_test.rb +48 -0
- data/test/system/workarea/admin/impersonation_system_test.rb +5 -2
- data/test/system/workarea/admin/orders_system_test.rb +32 -21
- data/test/system/workarea/admin/payment_transactions_system_test.rb +34 -32
- data/test/system/workarea/admin/releases_system_test.rb +151 -37
- data/test/system/workarea/admin/reports_system_test.rb +29 -0
- data/test/system/workarea/admin/segments_system_test.rb +124 -0
- data/test/system/workarea/admin/tax_categories_system_test.rb +166 -16
- data/test/system/workarea/admin/users_system_test.rb +15 -0
- data/test/view_models/workarea/admin/changeset_view_model_test.rb +59 -9
- data/test/view_models/workarea/admin/code_list_view_model_test.rb +0 -5
- data/test/view_models/workarea/admin/content_view_model_test.rb +13 -11
- data/test/view_models/workarea/admin/insights/product_view_model_test.rb +4 -4
- data/test/view_models/workarea/admin/insights/segment_view_model_test.rb +73 -0
- data/test/view_models/workarea/admin/product_rules_preview_view_model_test.rb +37 -0
- data/test/view_models/workarea/admin/product_view_model_test.rb +13 -19
- data/test/view_models/workarea/admin/release_calendar_view_model_test.rb +16 -0
- data/test/view_models/workarea/admin/release_view_model_test.rb +13 -56
- data/test/view_models/workarea/admin/releases_feed_view_model_test.rb +8 -21
- data/test/view_models/workarea/admin/reports/timeline_view_model_test.rb +76 -0
- data/test/view_models/workarea/admin/search_analysis_view_model_test.rb +14 -16
- data/test/view_models/workarea/admin/timeline_view_model_test.rb +1 -1
- metadata +128 -17
- data/app/views/workarea/admin/featured_products/_release_preview_warning.html.haml +0 -4
- data/app/views/workarea/admin/releases/calendar.html.haml +0 -54
- data/test/dummy/tmp/screenshots/.keep +0 -0
- data/test/helpers/workarea/admin/content_helper_test.rb +0 -17
- data/test/integration/workarea/admin/index_tracking_integration_test.rb +0 -21
- data/test/javascripts/fixtures/existing_navigation_taxon.html.haml +0 -10
- data/test/view_models/workarea/admin/pricing_sku_view_model_test.rb +0 -84
@@ -8,6 +8,12 @@ module Workarea
|
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
+
def tender_graph_data
|
12
|
+
sales_by_tender.results.take(5).reduce({}) do |memo, result|
|
13
|
+
memo.merge(result.name => result.revenue)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
11
17
|
def insights
|
12
18
|
@insights ||= Reports::InsightsViewModel.wrap(nil, options).feed
|
13
19
|
end
|
@@ -65,6 +71,13 @@ module Workarea
|
|
65
71
|
)
|
66
72
|
end
|
67
73
|
|
74
|
+
def sales_by_tender
|
75
|
+
@sales_by_tender ||= Reports::SalesByTenderViewModel.wrap(
|
76
|
+
Workarea::Reports::SalesByTender.new(options),
|
77
|
+
options
|
78
|
+
)
|
79
|
+
end
|
80
|
+
|
68
81
|
def one_time_customers
|
69
82
|
@one_time_customers ||= Reports::OneTimeCustomersViewModel.wrap(
|
70
83
|
Workarea::Reports::OneTimeCustomers.new(options),
|
@@ -99,6 +112,18 @@ module Workarea
|
|
99
112
|
options
|
100
113
|
)
|
101
114
|
end
|
115
|
+
|
116
|
+
def timeline
|
117
|
+
@timeline ||= Reports::TimelineViewModel.wrap(
|
118
|
+
Workarea::Reports::SalesOverTime.new(
|
119
|
+
options.merge(
|
120
|
+
starts_at: 3.months.ago,
|
121
|
+
group_by: 'day'
|
122
|
+
)
|
123
|
+
),
|
124
|
+
options
|
125
|
+
)
|
126
|
+
end
|
102
127
|
end
|
103
128
|
end
|
104
129
|
end
|
@@ -18,6 +18,10 @@ module Workarea
|
|
18
18
|
[
|
19
19
|
t('workarea.admin.pricing_discounts.options.when_user_is_tagged'),
|
20
20
|
'user_tag'
|
21
|
+
],
|
22
|
+
[
|
23
|
+
t('workarea.admin.pricing_discounts.options.when_in_segment'),
|
24
|
+
'segments'
|
21
25
|
]
|
22
26
|
]
|
23
27
|
end
|
@@ -27,6 +31,8 @@ module Workarea
|
|
27
31
|
'order_total'
|
28
32
|
elsif user_tag?
|
29
33
|
'user_tag'
|
34
|
+
elsif active_segment_ids.present?
|
35
|
+
'segments'
|
30
36
|
end
|
31
37
|
end
|
32
38
|
end
|
@@ -21,6 +21,10 @@ module Workarea
|
|
21
21
|
[
|
22
22
|
t('workarea.admin.pricing_discounts.options.when_user_is_tagged'),
|
23
23
|
'user_tag'
|
24
|
+
],
|
25
|
+
[
|
26
|
+
t('workarea.admin.pricing_discounts.options.when_in_segment'),
|
27
|
+
'segments'
|
24
28
|
]
|
25
29
|
]
|
26
30
|
end
|
@@ -32,6 +36,8 @@ module Workarea
|
|
32
36
|
'item_quantity'
|
33
37
|
elsif user_tag?
|
34
38
|
'user_tag'
|
39
|
+
elsif active_segment_ids.present?
|
40
|
+
'segments'
|
35
41
|
end
|
36
42
|
end
|
37
43
|
end
|
@@ -18,6 +18,10 @@ module Workarea
|
|
18
18
|
[
|
19
19
|
t('workarea.admin.pricing_discounts.options.when_user_is_tagged'),
|
20
20
|
'user_tag'
|
21
|
+
],
|
22
|
+
[
|
23
|
+
t('workarea.admin.pricing_discounts.options.when_in_segment'),
|
24
|
+
'segments'
|
21
25
|
]
|
22
26
|
]
|
23
27
|
end
|
@@ -27,6 +31,8 @@ module Workarea
|
|
27
31
|
'order_total'
|
28
32
|
elsif user_tag?
|
29
33
|
'user_tag'
|
34
|
+
elsif active_segment_ids.present?
|
35
|
+
'segments'
|
30
36
|
end
|
31
37
|
end
|
32
38
|
end
|
@@ -15,6 +15,10 @@ module Workarea
|
|
15
15
|
[
|
16
16
|
t('workarea.admin.pricing_discounts.options.when_user_is_tagged'),
|
17
17
|
'user_tag'
|
18
|
+
],
|
19
|
+
[
|
20
|
+
t('workarea.admin.pricing_discounts.options.when_in_segment'),
|
21
|
+
'segments'
|
18
22
|
]
|
19
23
|
]
|
20
24
|
end
|
@@ -24,6 +28,8 @@ module Workarea
|
|
24
28
|
'order_total'
|
25
29
|
elsif user_tag?
|
26
30
|
'user_tag'
|
31
|
+
elsif active_segment_ids.present?
|
32
|
+
'segments'
|
27
33
|
end
|
28
34
|
end
|
29
35
|
end
|
@@ -19,6 +19,10 @@ module Workarea
|
|
19
19
|
[
|
20
20
|
t('workarea.admin.pricing_discounts.options.when_user_is_tagged'),
|
21
21
|
'user_tag'
|
22
|
+
],
|
23
|
+
[
|
24
|
+
t('workarea.admin.pricing_discounts.options.when_in_segment'),
|
25
|
+
'segments'
|
22
26
|
]
|
23
27
|
]
|
24
28
|
end
|
@@ -30,6 +34,8 @@ module Workarea
|
|
30
34
|
'item_quantity'
|
31
35
|
elsif user_tag?
|
32
36
|
'user_tag'
|
37
|
+
elsif active_segment_ids.present?
|
38
|
+
'segments'
|
33
39
|
end
|
34
40
|
end
|
35
41
|
end
|
@@ -21,6 +21,10 @@ module Workarea
|
|
21
21
|
[
|
22
22
|
t('workarea.admin.pricing_discounts.options.when_user_is_tagged'),
|
23
23
|
'user_tag'
|
24
|
+
],
|
25
|
+
[
|
26
|
+
t('workarea.admin.pricing_discounts.options.when_in_segment'),
|
27
|
+
'segments'
|
24
28
|
]
|
25
29
|
]
|
26
30
|
end
|
@@ -32,6 +36,8 @@ module Workarea
|
|
32
36
|
'item_quantity'
|
33
37
|
elsif user_tag?
|
34
38
|
'user_tag'
|
39
|
+
elsif active_segment_ids.present?
|
40
|
+
'segments'
|
35
41
|
end
|
36
42
|
end
|
37
43
|
end
|
@@ -18,6 +18,10 @@ module Workarea
|
|
18
18
|
[
|
19
19
|
t('workarea.admin.pricing_discounts.options.when_user_is_tagged'),
|
20
20
|
'user_tag'
|
21
|
+
],
|
22
|
+
[
|
23
|
+
t('workarea.admin.pricing_discounts.options.when_in_segment'),
|
24
|
+
'segments'
|
21
25
|
]
|
22
26
|
]
|
23
27
|
end
|
@@ -27,6 +31,8 @@ module Workarea
|
|
27
31
|
'order_total'
|
28
32
|
elsif user_tag?
|
29
33
|
'user_tag'
|
34
|
+
elsif active_segment_ids.present?
|
35
|
+
'segments'
|
30
36
|
end
|
31
37
|
end
|
32
38
|
end
|
@@ -19,6 +19,10 @@ module Workarea
|
|
19
19
|
[
|
20
20
|
t('workarea.admin.pricing_discounts.options.when_user_is_tagged'),
|
21
21
|
'user_tag'
|
22
|
+
],
|
23
|
+
[
|
24
|
+
t('workarea.admin.pricing_discounts.options.when_in_segment'),
|
25
|
+
'segments'
|
22
26
|
]
|
23
27
|
]
|
24
28
|
end
|
@@ -28,6 +32,8 @@ module Workarea
|
|
28
32
|
'order_total'
|
29
33
|
elsif user_tag?
|
30
34
|
'user_tag'
|
35
|
+
elsif active_segment_ids.present?
|
36
|
+
'segments'
|
31
37
|
end
|
32
38
|
end
|
33
39
|
end
|
@@ -2,18 +2,12 @@ module Workarea
|
|
2
2
|
module Admin
|
3
3
|
module FeaturedProductsViewModel
|
4
4
|
def featured_products
|
5
|
-
@featured_products ||=
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
next unless tmp.present?
|
12
|
-
Admin::ProductViewModel.new(tmp)
|
13
|
-
end
|
14
|
-
|
15
|
-
results.compact
|
16
|
-
end
|
5
|
+
@featured_products ||= Catalog::Product.find_ordered(model.product_ids).map do |product|
|
6
|
+
Admin::ProductViewModel.wrap(
|
7
|
+
product,
|
8
|
+
inventory: Inventory::Collection.new(product.skus)
|
9
|
+
)
|
10
|
+
end
|
17
11
|
end
|
18
12
|
end
|
19
13
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Admin
|
3
|
+
class FulfillmentSkuViewModel < ApplicationViewModel
|
4
|
+
def timeline
|
5
|
+
@timeline ||= TimelineViewModel.new(model)
|
6
|
+
end
|
7
|
+
|
8
|
+
def tokens
|
9
|
+
return [] unless download?
|
10
|
+
@tokens ||= Fulfillment::Token.for_sku(id)
|
11
|
+
end
|
12
|
+
|
13
|
+
def product
|
14
|
+
@product ||=
|
15
|
+
begin
|
16
|
+
product = Catalog::Product.find_by_sku(model.id)
|
17
|
+
ProductViewModel.wrap(product, options) if product.present?
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Admin
|
3
|
+
class FulfillmentTokenViewModel < ApplicationViewModel
|
4
|
+
def order
|
5
|
+
return unless order_id.present?
|
6
|
+
@order ||= options[:order] || Order.find(order_id)
|
7
|
+
end
|
8
|
+
|
9
|
+
def order_item
|
10
|
+
return unless order.present? && order_item_id.present?
|
11
|
+
@order_item ||= order.items.detect { |i| i.id.to_s == order_item_id }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -36,6 +36,20 @@ module Workarea
|
|
36
36
|
)
|
37
37
|
end.compact
|
38
38
|
end
|
39
|
+
|
40
|
+
def skus
|
41
|
+
@skus ||= FulfillmentSkusViewModel.wrap(
|
42
|
+
Fulfillment::Sku.in(id: order.items.map(&:sku).uniq).to_a,
|
43
|
+
options
|
44
|
+
)
|
45
|
+
end
|
46
|
+
|
47
|
+
def tokens
|
48
|
+
@tokens ||= FulfillmentTokenViewModel.wrap(
|
49
|
+
Fulfillment::Token.by_order(order.id).to_a,
|
50
|
+
options.merge(order: order)
|
51
|
+
)
|
52
|
+
end
|
39
53
|
end
|
40
54
|
end
|
41
55
|
end
|
@@ -17,12 +17,12 @@ module Workarea
|
|
17
17
|
id_key_name = "#{key_name}_id"
|
18
18
|
|
19
19
|
ids = model.results.flat_map { |r| r.select { |k| k =~ /#{id_key_name}$/ }.values }
|
20
|
-
models = klass.any_in(id: ids).
|
20
|
+
models = klass.any_in(id: ids).to_lookup_hash
|
21
21
|
|
22
22
|
insight_result.each do |key, value|
|
23
23
|
if key =~ /#{id_key_name}$/
|
24
24
|
new_key = key.gsub(/#{id_key_name}$/, key_name)
|
25
|
-
model = models
|
25
|
+
model = models[value]
|
26
26
|
|
27
27
|
if model.present?
|
28
28
|
result.merge!(new_key => ApplicationController.wrap_in_view_model(model))
|
@@ -38,12 +38,12 @@ module Workarea
|
|
38
38
|
|
39
39
|
def average_price
|
40
40
|
return nil if orders.zero?
|
41
|
-
(merchandise - discounts) /
|
41
|
+
(merchandise - discounts) / orders
|
42
42
|
end
|
43
43
|
|
44
44
|
def previous_average_price
|
45
45
|
return nil if previous_orders.zero?
|
46
|
-
(previous_merchandise - previous_discounts) /
|
46
|
+
(previous_merchandise - previous_discounts) / previous_orders
|
47
47
|
end
|
48
48
|
|
49
49
|
def average_price_percent_change
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Admin
|
3
|
+
module Insights
|
4
|
+
class SegmentViewModel < ApplicationViewModel
|
5
|
+
include InsightsDetails
|
6
|
+
|
7
|
+
insights_scope -> { Metrics::SegmentByDay.by_segment(model.id) }
|
8
|
+
|
9
|
+
add_sparkline :orders
|
10
|
+
add_summaries :orders, :revenue, :average_order_value
|
11
|
+
add_graph_data :orders, :revenue, :average_order_value
|
12
|
+
|
13
|
+
def average_order_value
|
14
|
+
return nil if orders.zero?
|
15
|
+
revenue / orders.to_f
|
16
|
+
end
|
17
|
+
|
18
|
+
def previous_average_order_value
|
19
|
+
return nil if previous_orders.zero?
|
20
|
+
previous_revenue / previous_orders.to_f
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -16,57 +16,6 @@ module Workarea
|
|
16
16
|
def inventory
|
17
17
|
@inventory ||= Inventory::Sku.where(id: model.id).first
|
18
18
|
end
|
19
|
-
|
20
|
-
# All prices that this SKU will be sold at. Makes a determination
|
21
|
-
# based on whether the price is on sale.
|
22
|
-
#
|
23
|
-
# @return [Array<Workarea::Pricing::Price>]
|
24
|
-
def sell_prices
|
25
|
-
prices.sort_by(&:sell)
|
26
|
-
end
|
27
|
-
|
28
|
-
# The lowest price that this SKU can be purchased for. Dependent
|
29
|
-
# on the current sale state of the SKU.
|
30
|
-
#
|
31
|
-
# @return [Money]
|
32
|
-
def min_price
|
33
|
-
sell_prices.first&.sell
|
34
|
-
end
|
35
|
-
|
36
|
-
# The highest regular price set on this SKU.
|
37
|
-
#
|
38
|
-
# @return [Money]
|
39
|
-
def max_price
|
40
|
-
sell_prices.last&.sell
|
41
|
-
end
|
42
|
-
|
43
|
-
# Show a price range if the `min_price` and `max_price` are not
|
44
|
-
# the same value.
|
45
|
-
#
|
46
|
-
# @return [Boolean]
|
47
|
-
def show_range?
|
48
|
-
min_price.present? && max_price.present? && min_price != max_price
|
49
|
-
end
|
50
|
-
|
51
|
-
# This SKU is considered "on sale" if it is marked as such, or if
|
52
|
-
# any prices that it contains are marked as such.
|
53
|
-
#
|
54
|
-
# @return [Boolean]
|
55
|
-
def on_sale?
|
56
|
-
model.on_sale? || prices.any?(&:on_sale?)
|
57
|
-
end
|
58
|
-
|
59
|
-
# The price of this SKU as rendered on the index page. Shows a
|
60
|
-
# price range when multiple prices are contained within the SKU,
|
61
|
-
# otherwise it just shows the only sell price available.
|
62
|
-
#
|
63
|
-
# @return [String]
|
64
|
-
def sell_price
|
65
|
-
return if min_price.blank?
|
66
|
-
return min_price.format unless show_range?
|
67
|
-
|
68
|
-
"#{max_price.format} – #{min_price.format}"
|
69
|
-
end
|
70
19
|
end
|
71
20
|
end
|
72
21
|
end
|
@@ -25,7 +25,7 @@ module Workarea
|
|
25
25
|
#
|
26
26
|
def search
|
27
27
|
@search ||= Search::CategoryBrowse.new(
|
28
|
-
rules: model.product_rules.
|
28
|
+
rules: model.product_rules.usable,
|
29
29
|
sort: model.default_sort,
|
30
30
|
page: options[:page] || 1,
|
31
31
|
show_all: show_all?
|
@@ -52,7 +52,7 @@ module Workarea
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def display_results?
|
55
|
-
model.product_rules.
|
55
|
+
model.product_rules.usable.present?
|
56
56
|
end
|
57
57
|
|
58
58
|
def base_query
|
@@ -42,7 +42,7 @@ module Workarea
|
|
42
42
|
def storefront_view_model
|
43
43
|
@storefront_view_model ||= Storefront::ProductViewModel.wrap(
|
44
44
|
model,
|
45
|
-
options
|
45
|
+
@options
|
46
46
|
)
|
47
47
|
end
|
48
48
|
|
@@ -93,13 +93,16 @@ module Workarea
|
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
96
|
-
def
|
97
|
-
variants.
|
96
|
+
def options
|
97
|
+
variants.reduce({}) do |memo, variant|
|
98
98
|
variant.details.each do |name, value|
|
99
99
|
memo[name] ||= []
|
100
|
-
memo[name]
|
100
|
+
memo[name] << value
|
101
|
+
memo[name].flatten!
|
101
102
|
memo[name].uniq!
|
102
103
|
end
|
104
|
+
|
105
|
+
memo
|
103
106
|
end
|
104
107
|
end
|
105
108
|
|
@@ -122,7 +125,7 @@ module Workarea
|
|
122
125
|
end
|
123
126
|
|
124
127
|
def insights
|
125
|
-
@insights ||= Insights::ProductViewModel.wrap(model, options)
|
128
|
+
@insights ||= Insights::ProductViewModel.wrap(model, @options)
|
126
129
|
end
|
127
130
|
|
128
131
|
def inventory
|
@@ -134,6 +137,24 @@ module Workarea
|
|
134
137
|
active? && inventory.any?(&:displayable?)
|
135
138
|
end
|
136
139
|
|
140
|
+
def inventory_message
|
141
|
+
@inventory_message ||=
|
142
|
+
if !active?
|
143
|
+
t('workarea.admin.featured_products.statuses.inactive')
|
144
|
+
elsif inventory.backordered?
|
145
|
+
t('workarea.admin.featured_products.statuses.backordered')
|
146
|
+
elsif inventory.out_of_stock?
|
147
|
+
t('workarea.admin.featured_products.statuses.out_of_stock')
|
148
|
+
elsif inventory.low_inventory?
|
149
|
+
t(
|
150
|
+
'workarea.admin.featured_products.statuses.low_inventory',
|
151
|
+
count: inventory.available_to_sell
|
152
|
+
)
|
153
|
+
else
|
154
|
+
''
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
137
158
|
private
|
138
159
|
|
139
160
|
def default_customization_options
|
@@ -6,17 +6,9 @@ module Workarea
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def products
|
9
|
-
@products ||=
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
product_ids.map do |id|
|
14
|
-
model = models.detect { |m| m.id == id }
|
15
|
-
next unless model
|
16
|
-
|
17
|
-
ProductViewModel.new(model)
|
18
|
-
end.compact
|
19
|
-
end
|
9
|
+
@products ||= Catalog::Product.find_ordered(product_ids).map do |product|
|
10
|
+
ProductViewModel.wrap(product)
|
11
|
+
end
|
20
12
|
end
|
21
13
|
end
|
22
14
|
end
|
@@ -31,15 +31,10 @@ module Workarea
|
|
31
31
|
private
|
32
32
|
|
33
33
|
def find_releases_for_date(date)
|
34
|
-
releases_in_range
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
def date_within_range?(date, release)
|
39
|
-
return true if date == release.publish_time.to_date
|
40
|
-
return false if release.undo_at.blank?
|
41
|
-
|
42
|
-
date.to_time.to_i.between?(release.publish_time.to_i, release.undo_at.to_i)
|
34
|
+
releases_in_range
|
35
|
+
.map { |r| ReleaseViewModel.new(r, options) }
|
36
|
+
.select { |r| r.calendar_on == date }
|
37
|
+
.sort_by(&:calendar_at)
|
43
38
|
end
|
44
39
|
|
45
40
|
def releases_in_range
|
@@ -3,53 +3,20 @@ module Workarea
|
|
3
3
|
class ReleaseEventViewModel < ApplicationViewModel
|
4
4
|
include Workarea::Admin::Engine.routes.url_helpers
|
5
5
|
|
6
|
-
def all_day_event?
|
7
|
-
return false unless starts_and_ends?
|
8
|
-
ends_at - starts_at > 1
|
9
|
-
end
|
10
|
-
|
11
|
-
def starts_and_ends?
|
12
|
-
starts_at.present? && ends_at.present?
|
13
|
-
end
|
14
|
-
|
15
6
|
def description
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
if all_day_event?
|
22
|
-
description << I18n.t('workarea.admin.releases.feed.starts_on',
|
23
|
-
date: starts_at.strftime('%b %-d, %Y at %r'))
|
24
|
-
description << I18n.t('workarea.admin.releases.feed.ends_on',
|
25
|
-
date: ends_at.strftime('%b %-d, %Y at %r'))
|
26
|
-
end
|
27
|
-
|
28
|
-
unless ends_at.present?
|
29
|
-
description << I18n.t('workarea.admin.releases.feed.no_undo_date')
|
30
|
-
end
|
31
|
-
|
32
|
-
description.join('\n')
|
33
|
-
end
|
34
|
-
|
35
|
-
def publish_time
|
36
|
-
model.publish_at || model.published_at
|
37
|
-
end
|
38
|
-
|
39
|
-
def undo_time
|
40
|
-
model.undo_at || model.undone_at
|
41
|
-
end
|
7
|
+
I18n.t(
|
8
|
+
'workarea.admin.releases.feed.view_release',
|
9
|
+
url: release_url(host: Workarea.config.host, id: id)
|
10
|
+
)
|
11
|
+
end
|
42
12
|
|
43
13
|
def starts_at
|
44
|
-
|
45
|
-
time = publish_time.strftime('%Y %m %d %H %M %S').split(' ').map(&:to_i)
|
46
|
-
DateTime.civil(*time, publish_time.strftime('%z'))
|
14
|
+
model.publish_at || model.published_at
|
47
15
|
end
|
48
16
|
|
49
17
|
def ends_at
|
50
|
-
return if
|
51
|
-
|
52
|
-
DateTime.civil(*time, undo_time.strftime('%z'))
|
18
|
+
return if starts_at.blank?
|
19
|
+
starts_at + Workarea.config.release_publish_calendar_event_size
|
53
20
|
end
|
54
21
|
end
|
55
22
|
end
|
@@ -15,29 +15,22 @@ module Workarea
|
|
15
15
|
.reject { |changeset| changeset.releasable.blank? }
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
def published_on_date?(date)
|
23
|
-
date == publish_time.to_date
|
24
|
-
end
|
25
|
-
|
26
|
-
def ended_on_date?(date)
|
27
|
-
return true if content_release?
|
28
|
-
date == model.undo_at.to_date
|
18
|
+
def calendar_at
|
19
|
+
model.publish_at || model.published_at
|
29
20
|
end
|
30
21
|
|
31
|
-
def
|
32
|
-
|
22
|
+
def calendar_on
|
23
|
+
calendar_at&.to_date
|
33
24
|
end
|
34
25
|
|
35
|
-
def
|
36
|
-
|
26
|
+
def undo
|
27
|
+
return unless undo?
|
28
|
+
@undo ||= ReleaseViewModel.wrap(model.undo, options)
|
37
29
|
end
|
38
30
|
|
39
|
-
def
|
40
|
-
|
31
|
+
def undoes
|
32
|
+
return unless undoes?
|
33
|
+
@undoes ||= ReleaseViewModel.wrap(model.undoes, options)
|
41
34
|
end
|
42
35
|
end
|
43
36
|
end
|