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
item_exists?(id)
click to toggle source
# File lib/wonder_navigation/menu.rb, line 34 def item_exists?(id) items[id].present? end
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