Class: Www::VideoPresenter
- Inherits:
-
VideoBasePresenter
- Object
- SimpleDelegator
- BasePresenter
- VideoBasePresenter
- Www::VideoPresenter
- Defined in:
- app/presenters/www/video_presenter.rb
Overview
Presenter: video presenter.
Instance Attribute Summary
Attributes inherited from BasePresenter
#current_account, #options, #url_helper
Instance Method Summary collapse
-
#breadcrumb_links_array(_params) ⇒ Array<Hash>
Breadcrumb trail entries for the video page.
-
#cloudflare_stream_url ⇒ String?
Cloudflare Stream playback URL for the video.
-
#expanded_description ⇒ String?
Localized expanded description.
-
#id_iri ⇒ String
Provide a stable @id IRI for the VideoObject so WebPage mainEntity can reference it.
-
#initialize(model, view = nil, options = nil) ⇒ VideoPresenter
constructor
A new instance of VideoPresenter.
-
#page_description ⇒ String?
Localized meta description.
-
#page_title ⇒ String
HTML title for the video page.
-
#path ⇒ String
Absolute canonical URL.
-
#primary_product_line ⇒ ProductLine?
First product line associated with the video.
-
#render_transcript ⇒ ActiveSupport::SafeBuffer, String
Transcript rendering methods for public pages.
-
#sub_header ⇒ String?
Localized sub-header.
-
#text_description ⇒ String
Best available plain-text description for the video.
-
#to_json_ld ⇒ String
JSON-LD serialization of the video schema.
-
#transcript ⇒ String?
Localized transcript HTML.
Methods inherited from VideoBasePresenter
#build_transcript_schema, #cf_poster_url, #chapter_clips, #cloudflare_embed_url, #cloudflare_mp4_url, #cloudflare_video_url, #created_at, #format_duration, #format_duration_for_display, #format_paragraphs_as_text, #format_sentences_as_text, #format_structured_paragraphs_as_text, #format_timestamp, #has_assemblyai_transcript_id?, #has_audio_extraction?, #has_cloudflare_captions?, #has_html_transcript?, #has_structured_transcript_json?, #published_on, #schema_dot_org_structure, #title, #transcript_display, #transcript_duration, #transcript_language, #video_medias_url
Methods inherited from BasePresenter
#can?, #capture, #concat, #content_tag, #fa_icon, #h, #link_to, #number_to_currency, #present, presents, #r, #safe_present, #simple_format, #u
Constructor Details
#initialize(model, view = nil, options = nil) ⇒ VideoPresenter
Returns a new instance of VideoPresenter.
9 10 11 12 |
# File 'app/presenters/www/video_presenter.rb', line 9 def initialize(model, view = nil, = nil) @url_helper = Www::Router.new super end |
Instance Method Details
#breadcrumb_links_array(_params) ⇒ Array<Hash>
Breadcrumb trail entries for the video page.
23 24 25 26 27 28 |
# File 'app/presenters/www/video_presenter.rb', line 23 def (_params) b_arr = [{ name: 'Video Library', url: h.cms_link('/videos') }] b_arr += h.(primary_product_line) if primary_product_line b_arr << { name: video.title } b_arr end |
#cloudflare_stream_url ⇒ String?
Cloudflare Stream playback URL for the video.
63 64 65 |
# File 'app/presenters/www/video_presenter.rb', line 63 def cloudflare_stream_url cloudflare_video_url end |
#expanded_description ⇒ String?
Localized expanded description.
32 33 34 |
# File 'app/presenters/www/video_presenter.rb', line 32 def h.localize_content video. end |
#id_iri ⇒ String
Provide a stable @id IRI for the VideoObject so WebPage mainEntity can reference it
94 95 96 |
# File 'app/presenters/www/video_presenter.rb', line 94 def id_iri path end |
#page_description ⇒ String?
Localized meta description.
57 58 59 |
# File 'app/presenters/www/video_presenter.rb', line 57 def page_description h.localize_content(super) end |
#page_title ⇒ String
HTML title for the video page.
69 70 71 72 73 74 75 76 |
# File 'app/presenters/www/video_presenter.rb', line 69 def page_title t = +'' t << (video..presence || video.title.presence) # We append the company locale, unless the company name is already in the title t << " | #{h.company_locale}" unless t.include?(h.company_locale) t.prepend('Video: ') unless t.start_with?('Video:') t end |
#path ⇒ String
Absolute canonical URL. Used as the VideoObject/WebPage @id and in schema
URLs (Clip #t= links), which must be absolute IRIs — not a relative
cms_link path — so cross-node entity-graph references resolve.
88 89 90 |
# File 'app/presenters/www/video_presenter.rb', line 88 def path video.cms_url end |
#primary_product_line ⇒ ProductLine?
First product line associated with the video.
16 17 18 |
# File 'app/presenters/www/video_presenter.rb', line 16 def primary_product_line video.product_lines.first end |
#render_transcript ⇒ ActiveSupport::SafeBuffer, String
Transcript rendering methods for public pages
100 101 102 103 104 105 106 107 108 109 |
# File 'app/presenters/www/video_presenter.rb', line 100 def render_transcript return '' if video.transcript.blank? h.content_tag(:div, class: 'transcript') do h.safe_join([ render_transcript_header, render_transcript_content ]) end end |
#sub_header ⇒ String?
Localized sub-header.
44 45 46 |
# File 'app/presenters/www/video_presenter.rb', line 44 def sub_header h.localize_content video.sub_header end |
#text_description ⇒ String
Best available plain-text description for the video.
50 51 52 53 |
# File 'app/presenters/www/video_presenter.rb', line 50 def text_description d = video..presence || (Nokogiri::HTML(video.).text if video..present?) || video.sub_header.presence || video..presence || video.title.presence h.localize_content(d.squeeze(' ').strip) end |
#to_json_ld ⇒ String
JSON-LD serialization of the video schema.
80 81 82 |
# File 'app/presenters/www/video_presenter.rb', line 80 def to_json_ld schema_dot_org_structure.to_s end |
#transcript ⇒ String?
Localized transcript HTML.
38 39 40 |
# File 'app/presenters/www/video_presenter.rb', line 38 def transcript h.localize_content video.transcript end |