Created
September 26, 2010 20:14
-
-
Save parndt/598282 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# How to re-use the menu partial for a submenu in Refinery CMS >= 0.9.8.5 and < 0.9.9.22 | |
# header menu (main menu) which hides its children. | |
<%= render :partial => "/shared/menu", | |
:locals => { | |
:dom_id => 'menu', | |
:css => 'menu', | |
:collection => @menu_pages, | |
:hide_children => true | |
} -%> | |
# content menu (submenu) (extra_suffix cures double-up on cache) | |
<%= render :partial => '/shared/menu', | |
:locals => { | |
:dom_id => 'submenu', | |
:css => 'menu', | |
:roots => @menu_pages.reject{|p| p.parent_id != @page.root.id }, | |
:collection => @menu_pages.reject{|p| !p.self_and_ancestors.map(&:id).include?(@page.root.id) }, | |
:extra_suffix => 'submenu' | |
} %> |
Refinery 2.0.0
<%
Collect the root items.
::Refinery::Menu is smart enough to remember all of the items in the original collection.
if (roots = local_assigns[:roots] || (collection ||= refinery_menu_pages).roots).present?
dom_id ||= 'menu'
css = [(css || 'menu'), 'clearfix'].flatten.join(' ')
hide_children = Refinery::Core.menu_hide_children if hide_children.nil?
# generating collection for sub menu
cll = refinery_menu_pages.reject{|p| ([p.original_id] | p.ancestors.map(&:original_id)).include?(@page.root.id) }
cll = refinery_menu_pages.reject{|p| p.parent_id != @page.root.id }
-%>
<%= render :partial => '/refinery/menu_branch', :collection => cll,
:locals => {
:hide_children => hide_children,
:sibling_count => (roots.length - 1),
:menu_levels => local_assigns[:menu_levels],
:apply_css => true #if you don't care about class='first' class='last' or class='selected' set apply_css to false for speed.
} -%>
sorry, im a newbie... if i did something wrong...
this works for me:
<ul class="sidenav">
<%= render :partial => '/refinery/menu_branch',
:collection => refinery_menu_pages.select{|p| p.parent_id == @page.root.id},
:locals => {
:hide_children => false,
:apply_css => true
} -%>
</ul>
It'll display all sub menu links for a root menu item while on a page for that root.
Anyone got this working in 2.1?
For 2.1's sexy new menu presenter:
<%=
presenter = Refinery::Pages::MenuPresenter.new(refinery_menu_pages, self)
presenter.roots = refinery_menu_pages.select{|p| p.parent_id == @page.root.id}
presenter.to_html
%>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
sorry I was in a rush commenting as aripoya, my colleague. I didn't see my own page source after trying this out. To my surprise the unless_current thingie already done to the code by automatically appending 'selected' class on the li. I feel silly now hehe. Thank you for replying anyway:D