def nav_title_of(i) i[:nav_title] || i[:title] || '' end def toc(root_item, focused_item, buffer='', layer=0) # Skip non-written or hidden items return buffer if root_item.nil? || root_item.path.nil? || root_item[:is_hidden] # Open list element is_active = @item_rep && @item_rep.path == root_item.path if is_active buffer << "<li class=\"active\">" else buffer << "<li>" end title = nav_title_of(root_item) if layer == 0 # Add section header. buffer << "<span class=\"nav-header\"><i class=\"fa fa-#{root_item[:nav_icon]}\"></i> #{title}</span>" else # Add link. buffer << link_to(title, root_item.path) end # Add children to sitemap, recursively visible_children = root_item.children.select { |child| !child[:is_hidden] && child.path } visible_children = visible_children.sort_by { |child| child[:sort_rank] || 0 } if visible_children.size > 0 buffer << '<ul class="nav">' visible_children.each do |child| toc(child, focused_item, buffer, layer + 1) end buffer << '</ul>' end # Close list element buffer << '</li>' # Return sitemap buffer end