Sha256: 6a787c7fc6c43dbbc6871041a99906a5061e0fcbf7cdd51bb6eb20fd1ac2ae69

Contents?: true

Size: 1.56 KB

Versions: 40

Compression:

Stored size: 1.56 KB

Contents

module Admix
  module Navigation
    class NavBar
      # Menus
      mattr_accessor :menus
      @@menus = Array.new
      # Menus Procs
      # are executed after default menus are added
      mattr_accessor :menus_procs
      @@menus_procs = Array.new

      def self.post_menu(&block)
        @@menus_procs << block
      end

      def self.insert_post_menus
        Rails.application.railties.engines.select do |e|
          if e.respond_to?(:navigation)
            e.navigation
          end
        end
        @@menus_procs.each do |proc|
          proc.call()
        end
      end

      def self.add(*menus)
        menus.each do |menu|
          self.add_menu menu
        end
      end

      def self.add_menu(menu)
        if menu.is_a? Admix::Navigation::Menu
          @@menus << menu
        end
      end

      def self.find(key)
        @@menus.each do |menu|
          submenu = self.deeply_find(key, menu)

          if submenu
            yield submenu
            return submenu
          elsif menu.key == key
            yield menu
            return menu
          end
        end
      end

      def self.deeply_find(key, menu)
        return false if menu.children.length == 0

        i = 0
        while i < menu.children.length do
          submenu = menu.children[i]
          self.deeply_find(key, submenu)

          return submenu if submenu.key == key

          i += 1
        end

        false
      end

      def self.all
        @@menus
      end

      def self.clear!
        @@menus  = []
        @@menus_procs  = []
      end


    end
  end
end

Version data entries

40 entries across 40 versions & 2 rubygems

Version Path
mix-rails-0.26.3 admix/lib/admix/navigation/navbar.rb
admix-0.26.3 lib/admix/navigation/navbar.rb
mix-rails-0.26.2 admix/lib/admix/navigation/navbar.rb
admix-0.26.2 lib/admix/navigation/navbar.rb
mix-rails-0.26.1 admix/lib/admix/navigation/navbar.rb
admix-0.26.1 lib/admix/navigation/navbar.rb
mix-rails-0.26.0 admix/lib/admix/navigation/navbar.rb
admix-0.26.0 lib/admix/navigation/navbar.rb
mix-rails-0.25.1 admix/lib/admix/navigation/navbar.rb
admix-0.25.1 lib/admix/navigation/navbar.rb
mix-rails-0.25.0 admix/lib/admix/navigation/navbar.rb
admix-0.25.0 lib/admix/navigation/navbar.rb
mix-rails-0.24.1 admix/lib/admix/navigation/navbar.rb
admix-0.24.1 lib/admix/navigation/navbar.rb
mix-rails-0.24.0 admix/lib/admix/navigation/navbar.rb
admix-0.24.0 lib/admix/navigation/navbar.rb
mix-rails-0.23.1 admix/lib/admix/navigation/navbar.rb
admix-0.23.1 lib/admix/navigation/navbar.rb
mix-rails-0.23.0 admix/lib/admix/navigation/navbar.rb
admix-0.23.0 lib/admix/navigation/navbar.rb