class WonderNavigation::Menu

Attributes

items[R]
permission_checker[RW]

Public Class Methods

get_instance(menu_id, menu_manager) click to toggle source
# File lib/wonder_navigation/menu.rb, line 23
def self.get_instance(menu_id, menu_manager)
  instance = menu_manager.fetch(menu_id)
  unless instance
    instance = Menu.new
    instance.items[:root] = MenuItem.new(instance, 0, :root, validate: false)
    menu_manager.set(menu_id, instance)
  end

  instance
end
new() click to toggle source
# File lib/wonder_navigation/menu.rb, line 7
def initialize
  @items = {}
end
register(menu_id, menu_manager = MenuManager, &block) click to toggle source
# File lib/wonder_navigation/menu.rb, line 17
def self.register(menu_id, menu_manager = MenuManager, &block)
  get_instance(menu_id, menu_manager).tap do |instance|
    instance.items[:root].instance_eval(&block)
  end
end
register_permission_check(menu_id, menu_manager = MenuManager, &block) click to toggle source
# File lib/wonder_navigation/menu.rb, line 11
def self.register_permission_check(menu_id, menu_manager = MenuManager, &block)
  get_instance(menu_id, menu_manager).tap do |instance|
    instance.permission_checker = block
  end
end

Public Instance Methods

breadcrumb_for(id, object = nil) click to toggle source
item_exists?(id) click to toggle source
# File lib/wonder_navigation/menu.rb, line 34
def item_exists?(id)
  items[id].present?
end
menu_tree(options = {}) click to toggle source
menu_tree_flat(options = {}) click to toggle source

Private Instance Methods

extract_children(menu_entry) click to toggle source
# File lib/wonder_navigation/menu.rb, line 59
def extract_children(menu_entry)
  result = []
  result << menu_entry
  result << menu_entry.visible_children.collect do |child|
    extract_children(child)
  end
  menu_entry.children = []

  result.flatten
end