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