class SimpleNavigation::Renderer::Sidebar
Public Instance Methods
render(item_container)
click to toggle source
# File lib/simple_navigation/renderer/sidebar.rb, line 4 def render(item_container) if skip_if_empty? && item_container.empty? '' else tag = options[:ordered] ? :ol : :ul content = list_content(item_container) content_tag(tag, content, item_container.dom_attributes) end end
Private Instance Methods
list_content(item_container)
click to toggle source
# File lib/simple_navigation/renderer/sidebar.rb, line 16 def list_content(item_container) item_container.items.map { |item| li_options = item.html_options.except(*[:link, :icon]) li_options[:class] = [li_options[:class], 'accordion'].flatten.compact.join(' ') if include_sub_navigation?(item) item_options = item.html_options item_options.merge!({ 'data-parent' => "##{item_container.dom_id}" }) if include_sub_navigation?(item) item_options.merge!({ 'data-target' => "##{item_container.dom_id}-#{item_options[:id]}" }) if include_sub_navigation?(item) item_options.merge!({ 'data-toggle' => "collapse" }) if include_sub_navigation?(item) item_options.merge!({ :class => "collapsed" }) if include_sub_navigation?(item) && !item.selected? li_content = tag_for(item, item_options) if include_sub_navigation?(item) item.sub_navigation.dom_id = [item.sub_navigation.dom_id, "#{item_container.dom_id}-#{item_options[:id]}"].flatten.compact.join(' ') item.sub_navigation.dom_class = [item.sub_navigation.dom_class, 'nav collapse'].flatten.compact.join(' ') li_content << render_sub_navigation_for(item) end content_tag(:li, li_content, li_options) }.join end
tag_for(item, options = {})
click to toggle source
# File lib/simple_navigation/renderer/sidebar.rb, line 35 def tag_for(item, options = {}) icon = options.delete(:icon) if suppress_link?(item) content_tag('span', item.name, link_options_for(item).except(:method)) else item.name.insert(0, "#{content_tag('span', '', { :class => "glyphicon #{icon}" })}\n") if icon item.name << content_tag('span', '', { :class => "accordion-icon glyphicon glyphicon-chevron-right" }) if include_sub_navigation?(item) item.name << content_tag('span', '', { :class => "accordion-icon glyphicon glyphicon-chevron-down" }) if include_sub_navigation?(item) link_to(item.name.html_safe, item.url, options.except(:icon)) end end