Sha256: e7b36349277f0490181c0ffd5a8889573990c31e4d6ba5d381c6521ba19b5ee4

Contents?: true

Size: 1.5 KB

Versions: 44

Compression:

Stored size: 1.5 KB

Contents

module GovukPublishingComponents
  module Presenters
    class TaxonomyNavigation
      RELATED_SECTIONS = %w(
        topical_events
        world_locations
        statistical_data_sets
      ).freeze

      def initialize(content_item)
        @content_item = ContentItem.new content_item
        @related_navigation = RelatedNavigationHelper.new(content_item)
      end

      def sidebar
        {
          items: related_items,
          collections: collections,
        }.merge(related_navigation_links)
      end

    private

      def related_navigation_links
        {}.tap do |hash|
          @related_navigation.related_navigation.each do |key, items|
            hash[key.to_sym] = items if RELATED_SECTIONS.include?(key)
          end
        end
      end

      def there_are_related_item_overrides?
        # TODO: We should check for any external links when we have "new"
        # external links being curated in Content Tagger
        @content_item.curated_taxonomy_sidebar_links.any?
      end

      def related_items
        related_items_factory.new(@content_item).related_items
      end

      def related_items_factory
        if there_are_related_item_overrides?
          CuratedTaxonomySidebarLinks
        else
          RummagerTaxonomySidebarLinks
        end
      end

      def collections
        links = @content_item.related_collections
        links.map do |link|
          {
            path: link["base_path"],
            text: link["title"]
          }
        end
      end
    end
  end
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
govuk_publishing_components-9.26.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.25.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.24.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.23.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.22.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.21.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.20.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.19.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.18.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.17.1 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.17 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.16.1 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.16.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.15.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.14.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.13.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.12.2 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.12.1 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.12.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb
govuk_publishing_components-9.11.0 lib/govuk_publishing_components/presenters/taxonomy_navigation.rb