Sha256: 6ccd6f1cd04b3a55f22725dd7a56e13811cf5230538beb882e7d8da14baa12e7

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

module BreadcrumbsHelper
  
  def breadcrumbs(breadcrumbs={})
    html_safe <<-HTML
      <h3 class="breadcrumbs">
        <ul class="nav nav-pills">
          #{render_breadcrumbs(breadcrumbs)}
        </ul>
      </h3>
    HTML
  end
  
  def render_breadcrumbs(breadcrumbs)
    html = ""
    breadcrumbs.each_with_index do |(name, value), index|
      active = (index + 1) == breadcrumbs.length
      html << render_breadcrumb(active, name, value)
    end
    html
  end
  
  def render_breadcrumb(active, name, value=nil)
    if value.nil?
      render_selected_breadcrumb(active, name)
    elsif value.is_a?(Array)
      if value.length <= 1
        render_breadcrumb_option(name, active)
      else
        render_dropdown_breadcrumb(active, name, value)
      end
    else
      render_simple_breadcrumb(active, name, value)
    end
  end
  
  def render_dropdown_breadcrumb(active, model, options)
    <<-HTML
    <li class="dropdown #{"active" if active}">
      <a class="dropdown-toggle" data-toggle="dropdown" href="#">#{model.name} <b class="caret"></b></a>
      <ul class="dropdown-menu">
        
        #{options.map(&method(:render_breadcrumb_option)).join}
      </ul>
    </li>
    HTML
  end
  
  def render_breadcrumb_option(model, active=false)
    "<li class=\"#{"active" if active}\"><a href=\"#{url_for(model)}\">#{model.name}</a></li>"
  end
  
  def render_simple_breadcrumb(active, name, url)
    "<li class=\"#{"active" if active}\"><a href=\"#{url}\">#{name}</a></li>"
  end
  
  def render_selected_breadcrumb(active, name)
    "<li class=\"#{"active" if active}\"><a>#{name}</a></li>"
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
houston-core-0.5.0.beta1 app/helpers/breadcrumbs_helper.rb