class ActiveAdmin::Views::TabbedNavigation
The entire component is rendered within one ul element.
displayed given the current context and renders them appropriately.
This component takes cares of deciding which items should be
Renders an ActiveAdmin::Menu as a set of unordered list items.
def build(menu, options = {})
-
options
(Hash
) -- the options as passed to the underlying ul element. -
menu
(ActiveAdmin::Menu
) -- the Menu to render
def build(menu, options = {}) @menu = menu super(default_options.merge(options)) build_menu end
def build_menu
def build_menu menu_items.each do |item| build_menu_item(item) end end
def build_menu_item(item)
def build_menu_item(item) li :id => item.dom_id do |li_element| li_element.add_class "current" if current?(item) if item.children.any? li_element.add_class "has_nested" text_node link_to(item.name, item.url || "#") render_nested_menu(item) else link_to item.name, item.url end end end
def current?(menu_item)
def current?(menu_item) assigns[:current_tab].split("/").include?(menu_item.name) unless assigns[:current_tab].blank? end
def default_options
def default_options { :id => "tabs" } end
def display_item?(item)
def display_item?(item) return false unless call_method_or_proc_on(self, item.display_if_block) return false if (!item.url || item.url == "#") && !displayable_children?(item) true end
def displayable_children?(item)
def displayable_children?(item) !item.children.find{|child| display_item?(child) }.nil? end
def displayable_items(items)
def displayable_items(items) items.select do |item| display_item? item end end
def menu_items
def menu_items displayable_items(menu.items) end
def render_nested_menu(item)
def render_nested_menu(item) ul do displayable_items(item.children).each do |child| build_menu_item child end end end
def tag_name
def tag_name 'ul' end