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.

Constant Summary collapse

NoMenuError =
Class.new(KeyError)

Instance Method Summary collapse

Constructor Details

#initializeMenuCollection

Returns a new instance of MenuCollection.



11
12
13
14
15
# File 'lib/active_admin/menu_collection.rb', line 11

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



18
19
20
21
22
# File 'lib/active_admin/menu_collection.rb', line 18

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



50
51
52
# File 'lib/active_admin/menu_collection.rb', line 50

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

#clear!Object



24
25
26
27
# File 'lib/active_admin/menu_collection.rb', line 24

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

#exists?(menu_name) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/active_admin/menu_collection.rb', line 29

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

#fetch(menu_name) ⇒ Object



33
34
35
36
37
38
# File 'lib/active_admin/menu_collection.rb', line 33

def fetch(menu_name)
  build_menus!

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

Yields:



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

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.



45
46
47
# File 'lib/active_admin/menu_collection.rb', line 45

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