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

Returns a new instance of MenuCollection.



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

Returns:

  • (Boolean)


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

def exists?(menu_name)
  @menus.key?(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.

Parameters:

  • block (Proc)

    A block which will be ran when the menu is built. The will have the menu collection yielded.



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

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