Class: ActiveAdmin::MenuCollection

Inherits:
Object
  • Object
show all
Defined in:
lib/active_admin/menu_collection.rb

Overview

A MenuCollection stores multiple menus for any given namespace. Namespaces delegate the addition of menu items to this class.

Instance Method Summary collapse

Constructor Details

#initializeMenuCollection



9
10
11
12
13
# File 'lib/active_admin/menu_collection.rb', line 9

def initialize
  @menus = {}
  @build_callbacks = []
  @built = false
end

Instance Method Details

#add(menu_name, menu_item_options = {}) ⇒ Object

Add a new menu item to a menu in the collection



16
17
18
19
20
# File 'lib/active_admin/menu_collection.rb', line 16

def add(menu_name, menu_item_options = {})
  menu = find_or_create(menu_name)

  menu.add menu_item_options
end

#before_build(&block) ⇒ Object

Add callbacks that will be run before the menu is built



48
49
50
# File 'lib/active_admin/menu_collection.rb', line 48

def before_build(&block)
  @build_callbacks.unshift(block)
end

#clear!Object



22
23
24
25
# File 'lib/active_admin/menu_collection.rb', line 22

def clear!
  @menus = {}
  @built = false
end

#exists?(menu_name) ⇒ Boolean



27
28
29
# File 'lib/active_admin/menu_collection.rb', line 27

def exists?(menu_name)
  @menus.keys.include? menu_name
end

#fetch(menu_name) ⇒ Object



31
32
33
34
35
36
# File 'lib/active_admin/menu_collection.rb', line 31

def fetch(menu_name)
  build_menus!

  @menus[menu_name] or
    raise NoMenuError, "No menu by the name of #{menu_name.inspect} in available menus: #{@menus.keys.join(", ")}"
end

Yields:



52
53
54
55
56
57
58
# File 'lib/active_admin/menu_collection.rb', line 52

def menu(menu_name)
  menu = find_or_create(menu_name)

  yield(menu) if block_given?

  menu
end

#on_build(&block) ⇒ Object

Add callbacks that will be run when the menu is going to be built. This helps use with reloading and allows configurations to add items to menus.



43
44
45
# File 'lib/active_admin/menu_collection.rb', line 43

def on_build(&block)
  @build_callbacks << block
end