Skip to content

Instantly share code, notes, and snippets.

@parndt
Created November 16, 2010 22:54
Show Gist options
  • Save parndt/702686 to your computer and use it in GitHub Desktop.
Save parndt/702686 to your computer and use it in GitHub Desktop.
<% children = @page.root.children.map {|child| (child.in_menu?) ? child : nil}
if children.any?
unless defined?(selected_item)
selected_item = collection.detect{|page| selected_page?(page)}
selected_item = @page if selected_item.nil?
end
sibling_count = children.size - 1
-%>
<ul id="submenu"><%= render :partial => "/shared/submenu_branch", :collection => children, :locals => {
:hide_children => hide_children,
:sibling_count => sibling_count,
:collection => collection,
:selected_item => selected_item,
:apply_css => true #if you don't care about class='first' class='last' or class='selected' set apply_css to false for speed.
}
-%></ul><% end -%>
<% if submenu_branch && submenu_branch.in_menu? then
classes = css_for_menu_branch(submenu_branch, submenu_branch_counter, sibling_count||=nil, collection, selected_item ||= nil) -%><li<%= " class='#{classes.join(' ')}'".html_safe if classes.any? -%>><%= link_to submenu_branch.title, submenu_branch.url -%>
<%
# logger.info "#{submenu_branch.title} children.any?:#{submenu_branch.children.any?} selected_page?: #{selected_page?(submenu_branch)} descendant_page_selected?:#{descendant_page_selected?(submenu_branch)}\n#{request.path.encoding}"
%>
<% if classes.include?('selected') && (children = submenu_branch.children).any? %>
<ul><%= render :partial => "/shared/submenu_branch",
:collection => children,
:locals => {
:apply_css => local_assigns[:apply_css],
:hide_children => hide_children,
:collection => children,
:selected_item => selected_item,
:sibling_count => children.size - 1
} -%></ul><% end -%></li>
<% end -%>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment