Module: SimpleNavigation::Helpers

Defined in:
lib/simple_navigation/rendering/helpers.rb

Overview

View helpers to render the navigation.

Use render_navigation as following to render your navigation:

  • call render_navigation without :level option to render your complete navigation as nested tree.

  • call render_navigation(:level => x) to render a specific navigation level (e.g. :level => 1 to render your primary navigation, :level => 2 to render the sub navigation and so forth)

  • call render_navigation(:level => 2..3) to render navigation levels 2 and 3). For example, you could use render_navigation(:level => 1) to render your primary navigation as tabs and render_navigation(:level => 2..3) to render the rest of the navigation as a tree in a sidebar.

Examples (using Haml)

#primary_navigation= render_navigation(:level => 1)

#sub_navigation= render_navigation(:level => 2)

#nested_navigation= render_navigation

#top_navigation= render_navigation(:level => 1..2)
#sidebar_navigation= render_navigation(:level => 3)

Instance Method Summary collapse

Instance Method Details

#active_navigation_item_name(options = {}) ⇒ Object

Returns the name of the currently active navigation item belonging to the specified level.

The following options are supported:

  • :level - defaults to :all which returns the most specific/deepest selected item (the leaf). Specify a specific level to only look for the selected item in the specified level of navigation (e.g. :level => 1 for primary_navigation etc…).

  • :context - specifies the context for which you would like to find the active navigation item. Defaults to :default which loads the default navigation.rb (i.e. config/navigation.rb). If you specify a context then the plugin tries to load the configuration file for that context, e.g. if you call active_navigation_item_name(:context => :admin) the file config/admin_navigation.rb will be loaded and used for searching the active item.

  • :items - you can specify the items directly (e.g. if items are dynamically generated from database). See SimpleNavigation::ItemsProvider for documentation on what to provide as items.

Returns an empty string if no active item can be found for the specified options



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/simple_navigation/rendering/helpers.rb', line 52

def active_navigation_item_name(options={})
  options = apply_defaults(options)
  load_config(options)
  options[:level] = :leaves if options[:level] == :all
  active_item_container = SimpleNavigation.active_item_container_for(options[:level])
  if active_item_container && !active_item_container.selected_item.nil?
    active_item_container.selected_item.name
  else
    ''
  end
end

#render_navigation(options = {}) ⇒ Object

Renders the navigation according to the specified options-hash.

The following options are supported:

  • :level - defaults to :all which renders the the sub_navigation for an active primary_navigation inside that active primary_navigation item. Specify a specific level to only render that level of navigation (e.g. :level => 1 for primary_navigation etc…). Specifiy a Range of levels to render only those specific levels (e.g. :level => 1..2 to render both your first and second levels, maybe you want to render your third level somewhere else on the page)

  • :expand_all - defaults to false. If set to true the all specified levels will be rendered as a fully expanded tree (always open). This is useful for javascript menus like Superfish.

  • :context - specifies the context for which you would render the navigation. Defaults to :default which loads the default navigation.rb (i.e. config/navigation.rb). If you specify a context then the plugin tries to load the configuration file for that context, e.g. if you call render_navigation(:context => :admin) the file config/admin_navigation.rb will be loaded and used for rendering the navigation.

  • :items - you can specify the items directly (e.g. if items are dynamically generated from database). See SimpleNavigation::ItemsProvider for documentation on what to provide as items.

  • :renderer - specify the renderer to be used for rendering the navigation. Either provide the Class or a symbol matching a registered renderer. Defaults to :list (html list renderer).



34
35
36
37
38
39
# File 'lib/simple_navigation/rendering/helpers.rb', line 34

def render_navigation(options={})
  options = apply_defaults(options)
  load_config(options)
  active_item_container = SimpleNavigation.active_item_container_for(options[:level])
  active_item_container.render(options) unless active_item_container.nil?
end