X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=plugins%2Fhierarchy.py;h=82cbd6a14a5e975d2c7e407b2227484533be9404;hb=fe27dbbfc478e2993f27fbbbba5c51a21b5d4849;hp=1a33597cc4710b9759963c04391cc7e0b80d994c;hpb=8a0c0c329455d6bb1ae42b73ad1f3d7351bd4921;p=webber.git diff --git a/plugins/hierarchy.py b/plugins/hierarchy.py index 1a33597..82cbd6a 100644 --- a/plugins/hierarchy.py +++ b/plugins/hierarchy.py @@ -31,7 +31,7 @@ def memorize_parent(title, parent, order=100): _childs[parent] = [] _childs[parent].append( (order, title) ) _parent[title] = parent - + # # The "scan" plugins should scan for meta-data, mostly for links. @@ -43,6 +43,11 @@ def memorize_parent(title, parent, order=100): @set_hook("scan") def scan(params): file = params["file"] + + # Ignore hidden pages + if file.has_key("hide") and file.hide: + return + if file.has_key("links"): memorize_links(file.linktitle, file.links) if file.has_key("parent"): @@ -122,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, get_link_from(page, root))] + def do_menu(pg, level): #print "pg:", pg #, _childs.has_key(pg.linktitle) @@ -161,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 @@ -179,9 +224,7 @@ def get_recently(page=None, max_items=10): res.append( (page, get_link_from(orig_page, page)) ) if _childs.has_key(page.linktitle): for c in _childs[page.linktitle]: - if len(res) < max_items: - addPage(res, get_file_for(c[1])) + addPage(res, get_file_for(c[1])) addPage(res, orig_page) - res.sort(cmp = lambda x,y: x[0].mtime < y[0].mtime) - #for p in res: print p - return res + res.sort(cmp = lambda x,y: cmp(y[0].mtime, x[0].mtime)) + return res[:max_items]