Module: Pageflow::EntriesHelper

Included in:
SocialShareHelper
Defined in:
app/helpers/pageflow/entries_helper.rb

Overview

rubocop:todo Style/Documentation

Defined Under Namespace

Modules: PrettyUrl

Instance Method Summary collapse

Instance Method Details

#entry_css_class(entry) ⇒ Object



157
158
159
160
161
162
# File 'app/helpers/pageflow/entries_helper.rb', line 157

def entry_css_class(entry)
  [
    present_widgets_css_class(entry),
    entry.emphasize_chapter_beginning ? 'emphasize_chapter_beginning' : nil
  ].compact.join(' ')
end

#entry_file_rights(entry) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'app/helpers/pageflow/entries_helper.rb', line 83

def entry_file_rights(entry)
  rights = Pageflow.config.file_types.map { |file_type|
    entry.find_files(file_type.model).map do |file|
      file.rights.presence || entry..default_file_rights.presence
    end
  }.flatten.compact.sort.uniq

  if rights.any?
     :p, class: 'rights' do
      "#{I18n.t('pageflow.helpers.entries.image_rights')}: #{rights * ', '}"
    end
  else
    ''
  end
end

#entry_global_links(entry) ⇒ Object

rubocop:todo Metrics/AbcSize



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'app/helpers/pageflow/entries_helper.rb', line 99

def entry_global_links(entry) # rubocop:todo Metrics/AbcSize
  legal_info = entry.legal_info

  candidates = [
    [legal_info.imprint.label, legal_info.imprint.url, 'legal'],
    [legal_info.copyright.label, legal_info.copyright.url, 'copy'],
    [I18n.t('pageflow.public.privacy_notice'), entry_privacy_link_url(entry), 'privacy']
  ]

  links = candidates.filter_map do |label, url, css_class|
    next if label.blank? || url.blank?

    link_to(raw(label),
            url,
            target: url.start_with?('javascript:') ? nil : '_blank',
            tabindex: 2,
            class: css_class)
  end

  return '' if links.empty?

  (:span, I18n.t('pageflow.helpers.entries.global_links'),
              class: 'hidden') + safe_join(links, ''.html_safe)
end

#entry_header_css_class(entry) ⇒ Object



164
165
166
167
168
# File 'app/helpers/pageflow/entries_helper.rb', line 164

def entry_header_css_class(entry)
  css_class = 'header'
  css_class += ' invert' if entry.pages.any? && entry.pages.first.configuration['invert']
  css_class
end

#entry_mobile_navigation_pages(entry) ⇒ Object



149
150
151
152
153
154
155
# File 'app/helpers/pageflow/entries_helper.rb', line 149

def entry_mobile_navigation_pages(entry)
  entry.pages.displayed_in_navigation.tap do |pages|
    if entry.pages.any? && !entry.pages.first.display_in_navigation
      [entry.pages.first, pages].flatten
    end
  end
end

#entry_privacy_link_url(entry) ⇒ Object



74
75
76
77
78
79
80
81
# File 'app/helpers/pageflow/entries_helper.rb', line 74

def entry_privacy_link_url(entry)
  url = entry.legal_info.privacy_url

  return unless url.present?
  return url if url.start_with?('javascript:')

  "#{url}?lang=#{entry.locale}"
end

#entry_stylesheet_link_tag(entry) ⇒ Object



130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'app/helpers/pageflow/entries_helper.rb', line 130

def entry_stylesheet_link_tag(entry)
  url = pageflow.polymorphic_path(entry.stylesheet_model,
                                  action: :stylesheet,
                                  v: entry.stylesheet_cache_key,
                                  p: Pageflow::VERSION,
                                  format: 'css')

  # We cannot use stylesheet_link_tag here since that always uses
  # the asset host. Entry stylesheet requests are subject to
  # `Configuration#public_entry_request_scope` and
  # `Configuration#public_entry_redirect` which might depend on
  # the hostname.
  tag(:link,
      rel: 'stylesheet',
      href: url,
      media: 'all',
      data: {name: 'entry'})
end

#entry_summary(entry) ⇒ Object



170
171
172
173
174
# File 'app/helpers/pageflow/entries_helper.rb', line 170

def entry_summary(entry)
  return '' if entry.summary.blank?

  strip_tags(entry.summary.gsub(%r{<br ?/?>}, ' ').squish)
end

#entry_theme_stylesheet_link_tag(entry) ⇒ Object



124
125
126
127
128
# File 'app/helpers/pageflow/entries_helper.rb', line 124

def entry_theme_stylesheet_link_tag(entry)
  stylesheet_link_tag(entry.theme.stylesheet_path,
                      media: 'all',
                      data: {name: 'theme'})
end

#pretty_entry_title(entry) ⇒ Object



3
4
5
6
7
8
# File 'app/helpers/pageflow/entries_helper.rb', line 3

def pretty_entry_title(entry)
  return entry.title if entry.site.title == ' '

  [entry.title,
   entry.site.display_title].compact.join(' - ')
end

#pretty_entry_url(entry, options = {}) ⇒ Object



10
11
12
# File 'app/helpers/pageflow/entries_helper.rb', line 10

def pretty_entry_url(entry, options = {})
  PrettyUrl.build(pageflow, entry, options)
end