Module: Nesta::Navigation::Renderers

Defined in:
lib/nesta/navigation.rb

Instance Method Summary collapse

Instance Method Details



33
34
35
36
37
38
39
40
41
# File 'lib/nesta/navigation.rb', line 33

def breadcrumb_ancestors
  ancestors = []
  page = @page
  while page
    ancestors << page
    page = page.parent
  end
  ancestors.reverse
end


67
68
69
70
# File 'lib/nesta/navigation.rb', line 67

def breadcrumb_label(page)
  Nesta.deprecated('breadcrumb_label', 'use link_text')
  link_text(page)
end

#current_breadcrumb_classObject



80
81
82
# File 'lib/nesta/navigation.rb', line 80

def current_breadcrumb_class
  nil
end

#current_item?(item) ⇒ Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/nesta/navigation.rb', line 72

def current_item?(item)
  request.path == item.abspath
end

#current_menu_item_classObject



76
77
78
# File 'lib/nesta/navigation.rb', line 76

def current_menu_item_class
  'current'
end

#display_breadcrumbs(options = {}) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/nesta/navigation.rb', line 43

def display_breadcrumbs(options = {})
  haml_tag :ul, class: options[:class] do
    breadcrumb_ancestors[0...-1].each do |page|
      haml_tag :li do
        haml_tag :a, :<, href: path_to(page.abspath), itemprop: 'url' do
          haml_tag :span, :<, itemprop: 'title' do
            haml_concat link_text(page)
          end
        end
      end
    end
    haml_tag(:li, class: current_breadcrumb_class) do
      haml_concat link_text(@page)
    end
  end
end

#display_menu(menu, options = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/nesta/navigation.rb', line 4

def display_menu(menu, options = {})
  defaults = { class: nil, levels: 2 }
  options = defaults.merge(options)
  if options[:levels] > 0
    haml_tag :ul, class: options[:class] do
      menu.each do |item|
        display_menu_item(item, options)
      end
    end
  end
end

#display_menu_item(item, options = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/nesta/navigation.rb', line 16

def display_menu_item(item, options = {})
  if item.respond_to?(:each)
    if (options[:levels] - 1) > 0
      haml_tag :li do
        display_menu(item, levels: (options[:levels] - 1))
      end
    end
  else
    html_class = current_item?(item) ? current_menu_item_class : nil
    haml_tag :li, class: html_class do
      haml_tag :a, :<, href: path_to(item.abspath) do
        haml_concat link_text(item)
      end
    end
  end
end


60
61
62
63
64
65
# File 'lib/nesta/navigation.rb', line 60

def link_text(page)
  page.link_text
rescue LinkTextNotSet
  return 'Home' if page.abspath == '/'
  raise
end