Module: Knitkit::Extensions::Railties::ActionView::Helpers::MenuHelper

Defined in:
lib/knitkit/extensions/railties/action_view/helpers/menu_helper.rb

Instance Method Summary collapse

Instance Method Details



8
9
10
11
12
13
14
15
16
17
# File 'lib/knitkit/extensions/railties/action_view/helpers/menu_helper.rb', line 8

def menu_item_selected(menu_item)
  result = request.env['REQUEST_PATH'] == menu_item.path
  unless result
    menu_item.descendants.each do |child|
      result = request.env['REQUEST_PATH'] == child.path
      break if result
    end
  end
  result
end

#render_menu(contents, options = {}) ⇒ Object

options menu

  • use a designed layout not sections

layout

  • use defined layout



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/knitkit/extensions/railties/action_view/helpers/menu_helper.rb', line 24

def render_menu(contents, options={})
  locals = {:contents => contents}
  if options[:menu]
    menu = WebsiteNav.find_by_name_and_website_id(options[:menu], @website.id)
    raise "Menu with name #{options[:menu]} does not exist" if menu.nil?
    layout = options[:layout] ? "menus/#{options[:layout]}" : "menus/knitkit/default_menu"
    locals[:menu_items] = menu.website_nav_items.positioned
  else
    layout = options[:layout] ? "menus/#{options[:layout]}" : "menus/knitkit/default_section_menu"
  end

  render :partial => layout, :locals => locals
end

#render_sub_menu(contents, options = {}) ⇒ Object

options menu

  • use a designed layout not sections

menu_item

  • menu item title to start at

section_unique_name

  • section to begin at

layout

  • use defined layout



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/knitkit/extensions/railties/action_view/helpers/menu_helper.rb', line 47

def render_sub_menu(contents, options={})
  locals = {:contents => contents}
  if options[:menu]
    menu = WebsiteNav.find_by_name_and_website_id(options[:menu], @website.id)
    raise "Menu with name #{options[:menu]} does not exist" if menu.nil?
    locals[:menu_items] = (options[:menu_item].nil? ? menu.all_menu_items.find{|item| menu_item_selected(item)}.positioned_children : menu.all_menu_items.find{|item| item.title = options[:menu_item]}.positioned_children)
    raise "No menu items exist" if locals[:menu_items].nil?
    layout = options[:layout] ? "menus/#{options[:layout]}" : "menus/knitkit/default_sub_menu"
  else
    section = options[:section_unique_name].nil? ? @website_section : WebsiteSection.find_by_internal_identifier(options[:section_unique_name])
    locals[:section] = section
    layout = options[:layout] ? "menus/#{options[:layout]}" : "menus/knitkit/default_sub_section_menu"
  end

  render :partial => layout, :locals => locals
end