Sha256: cfdde07bb6e418116748ecde779e40490dd9948dd984c4b9bb64793e1b49eb5b

Contents?: true

Size: 1.58 KB

Versions: 16

Compression:

Stored size: 1.58 KB

Contents

# frozen_string_literal: true

module PagesCore
  class SitemapsController < ::ApplicationController
    include PagesCore::PagePathHelper
    static_cache :show

    def show
      @entries = formatted_entries
    end

    private

    def format_time(timestamp)
      if timestamp.is_a?(Date)
        timestamp.strftime("%Y-%m-%d")
      else
        timestamp.strftime("%Y-%m-%dT%H:%M:%S#{timestamp.formatted_offset}")
      end
    end

    def format_record(record)
      {
        loc: record_url(record),
        lastmod: format_time(record.updated_at)
      }
    end

    def formatted_entries
      records.map { |r| format_record(r) }
    end

    def locales
      if PagesCore.config.locales
        PagesCore.config.locales.keys
      else
        [I18n.default_locale]
      end
    end

    def localized?(record)
      record.is_a?(LocalizableModel::InstanceMethods)
    end

    def pages
      ([Page.root.try(:localize, I18n.default_locale)] +
       locales.flat_map do |locale|
         Page.published.localized(locale).includes(:parent)
       end).compact.uniq
    end

    def page_record_url(record)
      if record == root_page && record.locale == I18n.default_locale
        root_url
      else
        page_url(record.locale, record)
      end
    end

    def record_url(record)
      if record.is_a?(Page)
        page_record_url(record)
      elsif localized?(record)
        polymorphic_url(record, locale: record.locale)
      else
        polymorphic_url(record)
      end
    end

    def records
      pages
    end

    def root_page
      @root_page ||= Page.root
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
pages_core-3.12.1 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.12.0 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.11.3 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.11.2 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.11.1 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.11.0 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.10.2 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.10.1 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.9.2 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.9.1 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.9.0 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.8.3 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.8.2 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.8.1 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.8.0 app/controllers/pages_core/sitemaps_controller.rb
pages_core-3.7.0 app/controllers/pages_core/sitemaps_controller.rb