Sha256: 510ba2b0f280ef875e72813cb92815f63fa66b72dac2776431d1c1313c6e5ca8

Contents?: true

Size: 1.19 KB

Versions: 3

Compression:

Stored size: 1.19 KB

Contents

module Seiten
  class Navigation
    attr_accessor :name, :locale, :config, :dir, :page_collection

    def initialize(options={})
      @name   = options[:name].to_s
      @locale = options[:locale].to_s
      @config = options[:config] || File.join(Rails.root, Seiten.config[:config_dir], "#{id}.yml")
      @dir    = options[:dir]    || File.join(Rails.root, Seiten.config[:pages_dir], @name, @locale)
      @page_collection = Seiten::PageCollection.new(navigation_id: id)
    end

    class << self
      def find_by(params={})
        where(params).first
      end

      def where(params={})
        Seiten.navigations.select do |navigation|
          params.all? do |param|
            navigation.send(param[0]) == param[1]
          end
        end
      end
    end

    def id
      "%s.%s" % [name, locale]
    end

    def pages
      page_collection
    end

    def pages=(pages_array)
      page_collection.pages = pages_array.map { |page| page.navigation_id = id; page }
      # return page_collection
      # NOTE: This doesn't work and just returns page_array.
      # I think because page_collection#pages= attr_accessor is called first
      # and thus why our return call is ignored.
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
seiten-1.0.2 lib/seiten/navigation.rb
seiten-1.0.1 lib/seiten/navigation.rb
seiten-1.0.0 lib/seiten/navigation.rb