Class: ActiveAdmin::MenuItem

Inherits:
Object
  • Object
show all
Includes:
ActiveAdmin::Menu::MenuNode, MethodOrProcHelper
Defined in:
lib/active_admin/menu_item.rb

Instance Attribute Summary collapse

Attributes included from ActiveAdmin::Menu::MenuNode

#children

Instance Method Summary collapse

Methods included from MethodOrProcHelper

#call_method_or_exec_proc, #call_method_or_proc_on, #render_in_context, #render_or_call_method_or_proc_on

Methods included from ActiveAdmin::Menu::MenuNode

#[], #[]=, #add, #current?, #include?, #items

Constructor Details

#initialize(options = {}) {|_self| ... } ⇒ MenuItem

Builds a new menu item

NOTE: for :label, :url, and :if These options are evaluated in the view context at render time. Symbols are called as methods on ‘self`, and Procs are exec’d within ‘self`. Here are some examples of what you can do:

menu if:  :admin?
menu url: :new_book_path
menu url: :awesome_helper_you_defined
menu label: ->{ User.some_method }
menu label: ->{ I18n.t 'menus.user' }

Parameters:

  • options (Hash) (defaults to: {})

    The options for the menu

  • [ActiveAdmin::MenuItem] (Hash)

    a customizable set of options

Options Hash (options):

  • :label (String, Symbol, Proc)

    The label to display for this menu item. Default: Titleized Resource Name

  • :id (String)

    A custom id to reference this menu item with. Default: underscored_resource_name

  • :url (String, Symbol, Proc)

    The URL this item will link to.

  • :priority (Integer)

    The lower the priority, the earlier in the menu the item will be displayed. Default: 10

  • :if (Symbol, Proc)

    This decides whether the menu item will be displayed. Evaluated on each request.

  • :html_options (Hash)

    A hash of options to pass to ‘link_to` when rendering the item

Yields:

  • (_self)

Yield Parameters:



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/active_admin/menu_item.rb', line 49

def initialize(options = {})
  super() # MenuNode
  @label          = options[:label]
  @dirty_id       = options[:id]           || options[:label]
  @url            = options[:url]          || '#'
  @priority       = options[:priority]     || 10
  @html_options   = options[:html_options] || {}
  @should_display = options[:if]           || proc{true}
  @parent         = options[:parent]

  yield(self) if block_given? # Builder style syntax
end

Instance Attribute Details

#html_optionsObject (readonly)

Returns the value of attribute html_options.



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

def html_options
  @html_options
end

#parentObject (readonly)

Returns the value of attribute parent.



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

def parent
  @parent
end

#priorityObject (readonly)

Returns the value of attribute priority.



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

def priority
  @priority
end

Instance Method Details

#ancestorsObject

Returns an array of the ancestory of this menu item. The first item is the immediate parent of the item.



84
85
86
# File 'lib/active_admin/menu_item.rb', line 84

def ancestors
  parent ? [parent, parent.ancestors].flatten : []
end

#display?(context = nil) ⇒ Boolean

Don’t display if the :if option passed says so Don’t display if the link isn’t real, we have children, and none of the children are being displayed.

Returns:

  • (Boolean)


76
77
78
79
80
# File 'lib/active_admin/menu_item.rb', line 76

def display?(context = nil)
  return false unless render_in_context(context, @should_display)
  return false if     !real_url?(context) && @children.any? && !items(context).any?
  true
end

#idObject



62
63
64
# File 'lib/active_admin/menu_item.rb', line 62

def id
  @id ||= normalize_id @dirty_id
end

#label(context = nil) ⇒ Object



66
67
68
# File 'lib/active_admin/menu_item.rb', line 66

def label(context = nil)
  render_in_context context, @label
end

#url(context = nil) ⇒ Object



70
71
72
# File 'lib/active_admin/menu_item.rb', line 70

def url(context = nil)
  render_in_context context, @url
end