Class: Www::VideoSectionComponent
- Inherits:
-
ApplicationComponent
- Object
- ViewComponent::Base
- ApplicationComponent
- Www::VideoSectionComponent
- Includes:
- PagesHelper, PresenterHelper, SeoHelper
- Defined in:
- app/components/www/video_section_component.rb
Overview
Renders the video section block: a grid or Splide slider of videos with an
optional section title, description, and "view more" link, plus video
schema.org markup collected via add_page_schema.
Constant Summary
Constants included from SeoHelper
SeoHelper::AWARDS, SeoHelper::CA_ADDRESS, SeoHelper::CA_BUSINESS_HOURS, SeoHelper::CA_CONTACT_POINT, SeoHelper::CA_CURRENCIES, SeoHelper::CA_DESCRIPTION, SeoHelper::CA_FOUNDING_DATE, SeoHelper::CA_GLOBAL_LOCATION_NUMBER, SeoHelper::CA_LEGAL_NAME, SeoHelper::CA_LOCAL_BUSINESS, SeoHelper::CA_ONLINE_STORE, SeoHelper::CA_RETURN_POLICY, SeoHelper::CA_SALES_DEPARTMENT, SeoHelper::CA_SERVICE_AREA, SeoHelper::CA_URL, SeoHelper::CA_VAT_ID, SeoHelper::CA_WAREHOUSE_DEPARTMENT, SeoHelper::CA_WAREHOUSE_HOURS, SeoHelper::COMPANY_EMAIL, SeoHelper::COMPANY_LOGO, SeoHelper::COMPANY_NAME, SeoHelper::COMPANY_SLOGAN, SeoHelper::EXPERTISE, SeoHelper::FAX_NUMBER, SeoHelper::GS1_COMPANY_PREFIX, SeoHelper::ISO6523_CODE, SeoHelper::PAYMENT_METHODS, SeoHelper::PHONE_NUMBER, SeoHelper::PRIMARY_NAICS, SeoHelper::REFUND_TYPE, SeoHelper::RETURN_FEES, SeoHelper::RETURN_METHOD, SeoHelper::RETURN_POLICY_CATEGORY, SeoHelper::SECONDARY_NAICS, SeoHelper::SOCIAL_PROFILES, SeoHelper::US_ADDRESS, SeoHelper::US_BUSINESS_HOURS, SeoHelper::US_CONTACT_POINT, SeoHelper::US_CURRENCIES, SeoHelper::US_DESCRIPTION, SeoHelper::US_FOUNDING_DATE, SeoHelper::US_GLOBAL_LOCATION_NUMBER, SeoHelper::US_IMAGE, SeoHelper::US_LEGAL_NAME, SeoHelper::US_LOCAL_BUSINESS, SeoHelper::US_ONLINE_STORE, SeoHelper::US_RETURN_POLICY, SeoHelper::US_SALES_DEPARTMENT, SeoHelper::US_SERVICE_AREA, SeoHelper::US_TAX_ID, SeoHelper::US_URL, SeoHelper::US_WAREHOUSE_DEPARTMENT, SeoHelper::US_WAREHOUSE_HOURS
Instance Method Summary collapse
-
#display_videos ⇒ Array<Video>
Videos to render in the grid/slider, with all featured videos (if any) prepended and de-duplicated from the regular results so a video tagged as featured doesn't appear twice when it's also on page 1.
-
#featured?(video) ⇒ Boolean
Whether the given video is one of the featured videos.
-
#initialize(videos: nil, slugs: nil, cloudflare_uids: nil, ids: nil, featured_videos: nil, title_heading_level: nil, section_title: nil, description: nil, view_more_title: nil, view_more_href: nil, render_only_thumbnails: nil, add_schema: true, display_category_badge: false, display_duration: true, header_style: 'h2', use_slider: true, border: nil) ⇒ VideoSectionComponent
constructor
rubocop:disable Metrics/ParameterLists.
-
#render? ⇒ Boolean
Whether the component has any videos to display.
-
#with_collection(videos) ⇒ Www::VideoSectionComponent
Replaces the videos when rendering a collection.
Methods included from SeoHelper
#add_page_schema, #add_webpage_schema, #canada?, #collect_schema, #company_social_links, #ensure_context_json, #json_ld_script_tag, #local_business_schema, #online_store_id, #online_store_schema, #page_main_entity, #page_main_entity_json, #render_auto_collection_page_schema, #render_collection_page_schema, #render_local_business_schema, #render_online_store_schema, #render_page_schemas, #render_page_video_schemas, #render_webpage_schema, #render_webpage_schema_with_collections, #usa?
Methods included from PresenterHelper
Methods included from PagesHelper
#banner_trust_badges, #heated_driveway_cost_rows, #page_article_faqs, #page_banner_image, #page_header_h1, #page_header_h2, #page_header_h3, #page_posts, #page_publications, #page_showcases, #page_videos, #review_benefit_card, #review_trust_badge
Methods included from UrlsHelper
#catalog_breadcrumb_links, #catalog_link, #catalog_link_for_product_line, #catalog_link_for_sku, #cms_link, #delocalized_path, #path_to_sales_product_sku, #path_to_sales_product_sku_for_product_line, #path_to_sales_product_sku_for_product_line_slug, #product_line_from_catalog_link, #protocol_neutral_url, #sanitize_external_url, #valid_external_url?
Methods inherited from ApplicationComponent
#cms_link, #fetch_or_fallback, #image_asset_tag, #image_tag, #number_to_currency, #number_with_delimiter, #post_path, #post_url, #strip_tags
Constructor Details
#initialize(videos: nil, slugs: nil, cloudflare_uids: nil, ids: nil, featured_videos: nil, title_heading_level: nil, section_title: nil, description: nil, view_more_title: nil, view_more_href: nil, render_only_thumbnails: nil, add_schema: true, display_category_badge: false, display_duration: true, header_style: 'h2', use_slider: true, border: nil) ⇒ VideoSectionComponent
rubocop:disable Metrics/ParameterLists
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'app/components/www/video_section_component.rb', line 31 def initialize( videos: nil, slugs: nil, cloudflare_uids: nil, ids: nil, featured_videos: nil, title_heading_level: nil, section_title: nil, description: nil, view_more_title: nil, view_more_href: nil, render_only_thumbnails: nil, add_schema: true, display_category_badge: false, display_duration: true, header_style: 'h2', use_slider: true, border: nil ) super() @videos = videos || resolve_videos(slugs: slugs, cloudflare_uids: cloudflare_uids, ids: ids) @featured_videos = Array(featured_videos) @title_heading_level = title_heading_level @section_title = section_title @description = description @view_more_title = view_more_title @view_more_href = view_more_href @render_only_thumbnails = render_only_thumbnails @add_schema = add_schema @display_category_badge = display_category_badge @display_duration = display_duration @header_style = header_style @use_slider = @border = border end |
Instance Method Details
#display_videos ⇒ Array<Video>
Videos to render in the grid/slider, with all featured videos (if any)
prepended and de-duplicated from the regular results so a video tagged
as featured doesn't appear twice when it's also on page 1.
89 90 91 92 93 94 |
# File 'app/components/www/video_section_component.rb', line 89 def display_videos return videos if featured_videos.empty? featured_ids = featured_videos.map(&:id) featured_videos + Array(videos).reject { |v| featured_ids.include?(v.id) } end |
#featured?(video) ⇒ Boolean
Whether the given video is one of the featured videos.
100 101 102 |
# File 'app/components/www/video_section_component.rb', line 100 def featured?(video) featured_videos.any? { |fv| fv.id == video.id } end |
#render? ⇒ Boolean
Whether the component has any videos to display.
71 72 73 |
# File 'app/components/www/video_section_component.rb', line 71 def render? display_videos.present? end |
#with_collection(videos) ⇒ Www::VideoSectionComponent
Replaces the videos when rendering a collection.
79 80 81 82 |
# File 'app/components/www/video_section_component.rb', line 79 def with_collection(videos) @videos = videos self end |