]> oss.titaniummirror.com Git - webber.git/commitdiff
hierarchy.py: preliminary get_hierarchal_sitemap()
authorHolger Schurig <holgerschurig@gmail.com>
Fri, 2 Jul 2010 10:52:00 +0000 (12:52 +0200)
committerHolger Schurig <holgerschurig@gmail.com>
Fri, 2 Jul 2010 10:52:00 +0000 (12:52 +0200)
in/functions.md
in/plugins/hierarchy.md
in/style/sitemap.tmpl
plugins/hierarchy.py

index c91418c43d59d52cb55c465ed921556a2798ba16..9ee79498c3d946cc8a6426b876a61e0ab6a7b645 100644 (file)
@@ -66,7 +66,7 @@ You'll need to specify "`root`" if your top-most page isn't named "`Home`".
 Defined in [[hierarchy.py|hierarchy]], where you find an example.
 
 
-== get_sitemap(root, show_orphans) ==
+== get_linear_sitemap(root, show_orphans, level) ==
 
 Returns all pages as "`(level, page, link)`" tuples, where "`page`" is a
 "`class File`"-object and link is a relative link from the current page to
@@ -74,6 +74,8 @@ Returns all pages as "`(level, page, link)`" tuples, where "`page`" is a
 
 You'll need to specify "`root`" if your top-most page isn't named "`Home`".
 
+The "`level`" will by default start at 1.
+
 To put pages into the sitemap that are outside the parent/child relationships,
 specify "`True`" for "`show_orphans`".
 
index 33658ed7f5937df736bed71504934a73c872c338..8f331469849c47ab89833249d386af0c6c257999 100644 (file)
@@ -147,7 +147,7 @@ To generate a site map for your whole project, do something like
 this:
 
        <%
-         site = get_sitemap()
+         site = get_linear_sitemap()
        %>
        <ul>
        % for level, page, link in site:
@@ -160,7 +160,7 @@ normal "`<ul>..<li><ul><li></li></ul>..</il>`" style, you'd could do this
 with some more advanced Mako template magic:
 
        <%
-         site = get_sitemap()
+         site = get_linear_sitemap()
          lvl = -1
        %>
        % for level, page, link in site:
index 3d1927401893d81c3f72033d82d148f08270a686..629da4a0202e4ee0569c59c05abc5d22d23a87bc 100644 (file)
@@ -3,7 +3,7 @@
 <%def name="contents()">\
 ${body}
 <%
-  site = get_sitemap("Webber", True)
+  site = get_linear_sitemap("Webber", True)
 %>
 <ul>
 % for level, page, link in site:
index 2c9c4dc4b5e3b5167e90c17580679adc7f24ecfd..5940ed4ff12c0fcd64fb9a7f619965688f68929e 100644 (file)
@@ -127,15 +127,54 @@ def get_sidemenu(root="Home", level=1):
 
 
 
-@set_function("get_sitemap")
-def get_sitemap(root="Home", show_orphans=False, level=1):
+@set_function("get_hierarchical_sitemap")
+def get_hierarchical_sitemap(root="Home", show_orphans=False):
        page = get_current_file()
        if not isinstance(root, webber.File):
                root = get_file_for(root)
 
-       res = [(0, root, get_link_from(page, root))]
+       visited = {root: True}
+       def do_menu(pg):
+               res = []
+               if _childs.has_key(pg.linktitle):
+                       for p in _childs[pg.linktitle]:
+                               subpage = get_file_for(p[1])
+                               visited[subpage] = True
+                               res.append( do_menu(subpage) )
+               return (pg, get_link_from(root, pg), res)
+               
+       res = do_menu(root)
+
+
+       if show_orphans:
+               for f in files:
+                       #print f
+                       file = files[f]
+                       if not file.has_key("linktitle"):
+                               continue
+                       try:
+                               if file in visited:
+                                       #print "found", file.linktitle
+                                       continue
+                       except KeyError:
+                               continue
+                       #print "not found:", file.linktitle
+                       res.append( (file, get_link_from(page, file.linktitle), []) )
+
+       #import pprint
+       #pprint.pprint(res, indent=4)
+       return res
+
+
+@set_function("get_linear_sitemap")
+def get_linear_sitemap(root="Home", show_orphans=False, level=1):
+       page = get_current_file()
+       if not isinstance(root, webber.File):
+               root = get_file_for(root)
 
        visited = {root: None}
+       res = [(0, root, )]
+
        def do_menu(pg, level):
                #print "pg:", pg
                #, _childs.has_key(pg.linktitle)
@@ -166,7 +205,8 @@ def get_sitemap(root="Home", show_orphans=False, level=1):
                                continue
                        #print "not found:", file.linktitle
                        res.append( (0, file, get_link_from(page, file.linktitle)))
-       #for t in res: print t
+       import pprint
+       pprint.pprint(res)
        return res