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

Returns:

  • (Boolean)


8
9
10
11
# File 'lib/knitkit/extensions/railties/action_view/helpers/menu_helper.rb', line 8

def menu_active?(section, selected_section_parent)
  (!@website_section.nil? && section.id == @website_section.id) or 
  (!selected_section_parent.nil? and selected_section_parent.id == section.id)
end


13
14
15
16
17
18
19
20
21
22
# File 'lib/knitkit/extensions/railties/action_view/helpers/menu_helper.rb', line 13

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



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/knitkit/extensions/railties/action_view/helpers/menu_helper.rb', line 29

def render_menu(contents, options={})
  locals = {:contents => contents}

  if options[:locals]
    locals = locals.merge(options[:locals])
  end

  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



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/knitkit/extensions/railties/action_view/helpers/menu_helper.rb', line 57

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