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.



8
9
10
# File 'lib/active_admin/menu_collection.rb', line 8

def initialize
  @menus = {}
end

Instance Method Details

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

Add a new menu item to a menu in the collection



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

def add(menu_name, menu_item_options = {})
  find_or_create(menu_name).add(menu_item_options)
end

#build_default_menuObject



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

def build_default_menu
  find_or_create DEFAULT_MENU
end

#built?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/active_admin/menu_collection.rb', line 38

def built?
  @menus.present?
end

#clear!Object



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

def clear!
  @menus = {}
end

#exists?(menu_name) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#fetch(menu_name) ⇒ Object



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

def fetch(menu_name)
  build_default_menu unless built?

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


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

def menu(menu_name, &block)
  find_or_create(menu_name).tap do |menu|
    yield(menu) if block_given?
  end
end