Class: WonderNavigation::Menu

Inherits:
Object
  • Object
show all
Defined in:
lib/wonder_navigation/menu.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMenu

Returns a new instance of Menu.



7
8
9
# File 'lib/wonder_navigation/menu.rb', line 7

def initialize
  @items = {}
end

Instance Attribute Details

#itemsObject (readonly)

Returns the value of attribute items.



4
5
6
# File 'lib/wonder_navigation/menu.rb', line 4

def items
  @items
end

#permission_checkerObject

Returns the value of attribute permission_checker.



5
6
7
# File 'lib/wonder_navigation/menu.rb', line 5

def permission_checker
  @permission_checker
end

Class Method Details

.get_instance(menu_id, menu_manager) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# 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

.register(menu_id, menu_manager = MenuManager, &block) ⇒ Object



17
18
19
20
21
# 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) ⇒ Object



11
12
13
14
15
# 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

Instance Method Details



38
39
40
41
42
43
44
# File 'lib/wonder_navigation/menu.rb', line 38

def breadcrumb_for(id, object = nil)
  if items[id]
    items[id].breadcrumbs(object)
  else
    raise ENotDefinedMenu.new "Menu '#{id}' not defined"
  end
end

#item_exists?(id) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/wonder_navigation/menu.rb', line 34

def item_exists?(id)
  items[id].present?
end


46
47
48
49
50
51
# File 'lib/wonder_navigation/menu.rb', line 46

def menu_tree(options = {})
  current_user  = options[:current_user]
  current_page  = options[:current_page]
  max_depth     = options[:max_depth] || 10
  items[:root].tree(current_page, max_depth, current_user)
end


53
54
55
# File 'lib/wonder_navigation/menu.rb', line 53

def menu_tree_flat(options = {})
  extract_children menu_tree(options)
end