Sha256: 31ca27d710f77067c888032cc46ad4f3f6f441cc7b709aedf55bb8484b5ecc01

Contents?: true

Size: 1.53 KB

Versions: 4

Compression:

Stored size: 1.53 KB

Contents

module Nesta
  module Navigation
    module Renderers
      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

      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
          haml_tag :li do
            haml_tag :a, :<, :href => item.abspath do
              haml_concat item.heading
            end
          end
        end
      end

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

      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 => page.abspath do
                haml_concat breadcrumb_label(page)
              end
            end
          end
          haml_tag(:li) { haml_concat breadcrumb_label(@page) }
        end
      end

      def breadcrumb_label(page)
        (page.abspath == '/') ? 'Home' : page.heading
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
nesta-0.9.5 lib/nesta/navigation.rb
mars-nesta-0.9.6 lib/nesta/navigation.rb
mars-nesta-0.9.5 lib/nesta/navigation.rb
mars-nesta-0.9.4 lib/nesta/navigation.rb