]> oss.titaniummirror.com Git - webber.git/blobdiff - plugins/hierarchy.py
Fix directories key error in get_path_to_root
[webber.git] / plugins / hierarchy.py
index 184d66b926b7ee703612f906f978d9966125ebf3..91575561525c25d9f1b35b3ef1a353b078455096 100644 (file)
@@ -72,8 +72,19 @@ def scan_done(params):
                # And now sort by priority. Since Python 2.2 and upwards has stable-sort,
                # this effectively makes a two-dimensional sort.
                _childs[c].sort(key = lambda x: x[0])
-       return
 
+       visited = {}
+       visited[get_file_for("Home")] = True
+       for f in _parent:
+               visited[f] = True
+       for f in files:
+               file = files[f]
+               if not file.has_key("linktitle"):
+                       continue
+               if not visited.has_key(file ):
+                       warning("orphan file '%s'" % f)
+
+       return
        print "_parent:"
        for c in _parent:
                print " ", c, _parent[c]
@@ -137,50 +148,32 @@ def get_sidemenu(root="Home", level=1):
 
 
 @set_function("get_hierarchical_sitemap")
-def get_hierarchical_sitemap(root="Home", show_orphans=False):
+def get_hierarchical_sitemap(root="Home"):
        page = get_current_file()
        if not isinstance(root, webber.File):
                root = get_file_for(root)
 
-       visited = {root: True}
        def do_menu(pg):
                res = []
                if _childs.has_key(pg):
                        for p in _childs[pg]:
                                subpage = 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.title), []) )
-
        #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):
+def get_linear_sitemap(root="Home", level=1):
        page = get_current_file()
        if not isinstance(root, webber.File):
                root = get_file_for(root)
 
-       visited = {root: None}
        res = [(0, root, get_link_from(page, root))]
 
        def do_menu(pg, level):
@@ -193,26 +186,10 @@ def get_linear_sitemap(root="Home", show_orphans=False, level=1):
                                #print "subpage:", subpage
                                link = get_link_from(page, subpage)
                                res.append((level, subpage, link))
-                               visited[subpage] = None
                                do_menu(subpage, level+1)
 
        do_menu(root, level)
 
-       #print "visited:", visited
-       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( (0, file, get_link_from(page, file.title)))
        #import pprint
        #pprint.pprint(res)
        return res
@@ -231,9 +208,9 @@ def get_recently(page=None, max_items=10):
        def addPage(res, page):
                #print "page:", page
                res.append( (page, get_link_from(orig_page, page)) )
-               if _childs.has_key(page.title):
-                       for c in _childs[page.title]:
-                               addPage(res, get_file_for(c[1]))
+               if _childs.has_key(page):
+                       for c in _childs[page]:
+                               addPage(res, c[1])
        addPage(res, orig_page)
        res.sort(cmp = lambda x,y: cmp(y[0].mtime, x[0].mtime))
        return res[:max_items]