Sha256: b238e1f3b4fd979a534344d2d8bdf92ab2248183645ff5c479712967eb2294ac

Contents?: true

Size: 1.33 KB

Versions: 6

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true

# Methods added to this helper will be available to all templates
# in the application.
module PagesCore
  module ApplicationHelper
    include PagesCore::AttachmentsHelper
    include PagesCore::HeadTagsHelper
    include PagesCore::ImagesHelper
    include PagesCore::MetaTagsHelper
    include PagesCore::OpenGraphTagsHelper
    include PagesCore::PagePathHelper

    def page_link(page, options = {})
      link_locale = options[:locale] || locale
      page.localize(link_locale) do |p|
        title = options[:title] || p.name.to_s
        return title unless conditional_options?(options)

        link_to(title, page_link_path(link_locale, p), class: options[:class])
      end
    end

    def unique_page(page_name, &)
      page = Page.where(unique_name: page_name).first
      if page && block_given?
        output = capture(page.localize(content_locale), &)
        concat(output)
      end
      page&.localize(content_locale)
    end

    private

    def conditional_options?(options = {})
      if options.key?(:if)
        options[:if]
      elsif options.key?(:unless)
        !options[:unless]
      else
        true
      end
    end

    def page_link_path(locale, page)
      if page.redirects?
        page.redirect_path(locale:)
      else
        page_path(locale, page)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pages_core-3.15.4 app/helpers/pages_core/application_helper.rb
pages_core-3.15.3 app/helpers/pages_core/application_helper.rb
pages_core-3.15.2 app/helpers/pages_core/application_helper.rb
pages_core-3.15.1 app/helpers/pages_core/application_helper.rb
pages_core-3.14.0 app/helpers/pages_core/application_helper.rb
pages_core-3.13.0 app/helpers/pages_core/application_helper.rb