Sha256: 209a2d190e4f59cd32fd51ecaf47ea3f1f805bfc9e26105ce96b5bdc666fc36f

Contents?: true

Size: 1.21 KB

Versions: 10

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

module AmaLayout
  class Navigation
    include ActiveModel::Model

    def decorate
      AmaLayout::NavigationDecorator.new(self)
    end

    attr_accessor :user, :current_url, :nav_file_path, :display_name

    def initialize(args = {})
      args = defaults.merge args
      super
    end

    cattr_accessor :member do
      'member'
    end

    cattr_accessor :non_member do
      'non-member'
    end

    cattr_accessor :member_in_renewal do
      'member-in-renewal'
    end

    cattr_accessor :member_in_renewal_late do
      'member-in-renewal-late'
    end

    cattr_accessor :member_with_outstanding_balance do
      'member-with-outstanding-balance'
    end

    def items
      navigation_items.fetch(user.try(:navigation), []).map do |n|
        NavigationItem.new n.merge(current_url: current_url)
      end
    end

    def navigation_items
      YAML.safe_load(ERB.new(File.read(nav_file_path)).result)
    end

    def email
      user.email
    end

    private

    def defaults
      {
        nav_file_path: File.join(
          Gem.loaded_specs['ama_layout'].full_gem_path,
          'lib',
          'ama_layout',
          'navigation.yml'
        )
      }
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
ama_layout-11.5.1 lib/ama_layout/navigation.rb
ama_layout-11.5.0 lib/ama_layout/navigation.rb
ama_layout-11.4.0 lib/ama_layout/navigation.rb
ama_layout-11.3.1 lib/ama_layout/navigation.rb
ama_layout-11.3.0 lib/ama_layout/navigation.rb
ama_layout-11.2.0 lib/ama_layout/navigation.rb
ama_layout-11.1.0 lib/ama_layout/navigation.rb
ama_layout-10.2.0 lib/ama_layout/navigation.rb
ama_layout-10.1.0 lib/ama_layout/navigation.rb
ama_layout-10.0.1 lib/ama_layout/navigation.rb