- module MenuFilter
- def menu(input, displayurl)
- def create_menu(pages, base, displayurl)
- result = Array.new
- for page in pages
- cururl = page['url'].sub('/index.html', '')
- if cururl.start_with?(base) and cururl.count('/') == base.count('/')
- # figure out CSS class
- if cururl == displayurl
- css_class = 'current'
- elsif cururl.start_with?(displayurl)
- css_class = 'child'
- elsif displayurl.start_with?(cururl)
- css_class = 'parent'
- else
- css_class = 'sibling'
- end
- # create menu node
- menu_node = { 'url' => page['url'], 'title' => page['slug'] ? page['slug'] : (page['title'] ? page['title'] : page['url']), 'class' => css_class, 'sort' => page['sort'] }
- # potentially recurse
- if (css_class == 'parent' or css_class == 'current')
- sub_nodes = create_menu(pages, cururl + "/", displayurl)
- if sub_nodes.size > 0
- menu_node['sub'] = sub_nodes
- end
- end
- # store menu node
- result.push(menu_node)
- end
- end
- # sort the result before returning it
- result.sort_by { |a| [a['sort'], a['url']] }
+ module MenuFilter
+ def menu(input, displayurl)
+ def create_menu(pages, base, displayurl)
+ result = Array.new
+ for page in pages
+ cururl = page['url'].sub('/index.html', '')
+ if cururl.start_with?(base) and cururl.count('/') == base.count('/') and (not page['hide'])
+ # figure out CSS class
+ if cururl == displayurl
+ css_class = 'current'
+ elsif cururl.start_with?(displayurl)
+ css_class = 'child'
+ elsif displayurl.start_with?(cururl)
+ css_class = 'parent'
+ else
+ css_class = 'sibling'