# HG changeset patch # User Tero Marttila # Date 1233965552 -7200 # Node ID 2abc5ace0b1526d07207f35a3c38b95835aaf0ec # Parent fa216534ae453567233e4b14c4feac384750bc49 basic multi-level menu diff -r fa216534ae45 -r 2abc5ace0b15 lib/menu.py --- a/lib/menu.py Sat Feb 07 01:33:30 2009 +0200 +++ b/lib/menu.py Sat Feb 07 02:12:32 2009 +0200 @@ -17,7 +17,10 @@ # the selected page self.page = _page_tree.get_page(page.url) + + # the selected pagen's inheritance + self.ancestry = self.page.get_ancestry() # list of menu items == page siblings - self.items = _page_tree.get_siblings(page.url) + self.items = _page_tree.root.children diff -r fa216534ae45 -r 2abc5ace0b15 lib/page.py --- a/lib/page.py Sat Feb 07 01:33:30 2009 +0200 +++ b/lib/page.py Sat Feb 07 02:12:32 2009 +0200 @@ -67,6 +67,29 @@ return dict((c.name, c) for c in self.children).get(name) + def get_ancestry (self) : + """ + Returns a list of this page's parents and the page itself, but not root + """ + + # collect in reverse order + ancestry = [] + + # starting from self + item = self + + # add all items, but not root + while item and item.parent : + ancestry.append(item) + + item = item.parent + + # reverse + ancestry.reverse() + + # done + return ancestry + @property def url (self) : """ @@ -76,26 +99,13 @@ # cached? if self._url : return self._url + + segments = [item.name for item in self.get_ancestry()] - # collect URL segments in reverse order - segments = [] - # add empty segment if dir if self.children : segments.append('') - # iterate over ancestry - item = self - - # add all parent names, but not root's - while item and item.parent : - segments.append(item.name) - - item = item.parent - - # reverse segments - segments.reverse() - # join url = '/'.join(segments) diff -r fa216534ae45 -r 2abc5ace0b15 pages/list --- a/pages/list Sat Feb 07 01:33:30 2009 +0200 +++ b/pages/list Sat Feb 07 02:12:32 2009 +0200 @@ -2,6 +2,7 @@ : Index foo : Foo projects : Projects list - foo : Project Foo + foo : foo + bar : bar about : About page diff -r fa216534ae45 -r 2abc5ace0b15 pages/projects/index.html --- a/pages/projects/index.html Sat Feb 07 01:33:30 2009 +0200 +++ b/pages/projects/index.html Sat Feb 07 02:12:32 2009 +0200 @@ -1,4 +1,2 @@ -Projects list: +Lots of projects -Foo - diff -r fa216534ae45 -r 2abc5ace0b15 static/style.css --- a/static/style.css Sat Feb 07 01:33:30 2009 +0200 +++ b/static/style.css Sat Feb 07 02:12:32 2009 +0200 @@ -50,7 +50,7 @@ /* * Main navigation menu */ -ul#nav { +#nav ul { float: left; margin: 0px; padding: 0px; @@ -62,19 +62,24 @@ padding-top: 25px; } -ul#nav li a { +#nav ul ul { + padding-top: 0px; + border-left: 15px solid #d0d0d0; +} + +#nav li a { display: block; padding: 10px; padding-left: 20px; } -ul#nav li a:hover { +#nav li a:hover { background-color: #d0d0d0; text-decoration: none; } -ul#nav li a.selected-page { +#nav li a.selected-page { border-left: 5px solid black; padding-left: 15px; } diff -r fa216534ae45 -r 2abc5ace0b15 templates/layout.tmpl --- a/templates/layout.tmpl Sat Feb 07 01:33:30 2009 +0200 +++ b/templates/layout.tmpl Sat Feb 07 02:12:32 2009 +0200 @@ -1,5 +1,18 @@ +<%def name="render_menu(open_page, page, items, ancestry)"> + + + qmsk.net :: ${page.title} @@ -9,15 +22,10 @@ - - + +
${page.content}