Module: Pageflow::SocialShareHelper

Includes:
EntriesHelper, PagesHelper, RevisionFileHelper
Included in:
HreflangLinksHelper, SocialShareLinksHelper, StructuredDataHelper
Defined in:
app/helpers/pageflow/social_share_helper.rb

Overview

rubocop:todo Style/Documentation

Instance Method Summary collapse

Methods included from RevisionFileHelper

#find_file_in_entry

Methods included from PagesHelper

#page_css_class, #page_default_content, #page_has_content, #page_header, #page_media_breakpoints, #page_navigation_css_class, #page_print_image, #page_text, #page_thumbnail_file, #page_thumbnail_image_class, #page_thumbnail_url, #render_page_template, #shadow_div

Methods included from EntriesHelper

#entry_css_class, #entry_file_rights, #entry_global_links, #entry_header_css_class, #entry_mobile_navigation_pages, #entry_privacy_link_url, #entry_stylesheet_link_tag, #entry_summary, #entry_theme_stylesheet_link_tag, #pretty_entry_title, #pretty_entry_url

Instance Method Details

#social_share_entry_description(entry) ⇒ Object



52
53
54
55
56
57
58
59
60
61
# File 'app/helpers/pageflow/social_share_helper.rb', line 52

def social_share_entry_description(entry)
  return social_share_sanitize(entry.summary) if entry.summary.present?

  entry.pages.each do |page|
    if page.configuration['text'].present?
      return social_share_sanitize(page.configuration['text'])
    end
  end
  ''
end

#social_share_entry_image_tags(entry) ⇒ Object

rubocop:todo Metrics/AbcSize



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'app/helpers/pageflow/social_share_helper.rb', line 64

def social_share_entry_image_tags(entry) # rubocop:todo Metrics/MethodLength
  share_images = []
  image_file = find_file_in_entry(ImageFile, entry.share_image_id, entry)

  if image_file
    image_url = image_file.thumbnail_url(
      image_file.output_present?(:social) ? :social : :medium
    )

    share_images.push(image_url:, width: image_file.width, height: image_file.height)
  else
    entry.pages.each do |page|
      break if share_images.size >= 4

      thumbnail_file = page_thumbnail_file(page)
      next unless thumbnail_file.present?

      image_url = thumbnail_file.thumbnail_url(:medium)
      thumbnail_width = 1200
      thumbnail_height = 630
      if thumbnail_file.file.methods.include?(:width)
        thumbnail_width = thumbnail_file.file.width
        thumbnail_height = thumbnail_file.file.height
      end
      share_images.push(image_url:,
                        width: thumbnail_width,
                        height: thumbnail_height)
      share_images.uniq!
    end
  end

  render 'pageflow/social_share/image_tags', share_images:
end

#social_share_entry_url(entry) ⇒ Object



15
16
17
# File 'app/helpers/pageflow/social_share_helper.rb', line 15

def social_share_entry_url(entry)
  entry.share_url.presence || pretty_entry_url(entry)
end

#social_share_meta_tags_for(target) ⇒ Object



7
8
9
10
11
12
13
# File 'app/helpers/pageflow/social_share_helper.rb', line 7

def social_share_meta_tags_for(target)
  if target.is_a?(Page)
    render('pageflow/social_share/page_meta_tags', entry: @entry, page: @entry.share_target)
  else
    render('pageflow/social_share/entry_meta_tags', entry: target)
  end
end

#social_share_normalize_protocol(url) ⇒ Object

rubocop:enable Metrics/AbcSize



99
100
101
# File 'app/helpers/pageflow/social_share_helper.rb', line 99

def social_share_normalize_protocol(url)
  url.gsub(%r{^//}, 'https://')
end

#social_share_page_description(entry, page) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'app/helpers/pageflow/social_share_helper.rb', line 41

def social_share_page_description(entry, page)
  if page.configuration['text'].present?
    return social_share_sanitize(page.configuration['text'])
  end
  if page.configuration['description'].present?
    return social_share_sanitize(page.configuration['description'])
  end

  social_share_entry_description(entry)
end

#social_share_page_title(page) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'app/helpers/pageflow/social_share_helper.rb', line 30

def social_share_page_title(page)
  entry = page.chapter.entry

  title = ["#{entry.title}:"]
  title << page.title
  title << '-' if entry.site.cname_domain.present?
  title << entry.site.cname_domain

  title.join(' ')
end

#social_share_page_url(entry, page_or_perma_id) ⇒ Object



19
20
21
22
23
24
25
26
27
28
# File 'app/helpers/pageflow/social_share_helper.rb', line 19

def social_share_page_url(entry, page_or_perma_id)
  perma_id =
    if page_or_perma_id.respond_to?(:perma_id)
      page_or_perma_id.perma_id
    else
      page_or_perma_id
    end

  pretty_entry_url(entry, page: perma_id)
end