Index: hierwiki/macros/parentwiki.py =================================================================== --- hierwiki/macros/parentwiki.py (revision 4358) +++ hierwiki/macros/parentwiki.py (working copy) @@ -29,7 +29,7 @@ """Return the subclass's docstring.""" return inspect.getdoc(self.__class__) - def render_macro(self, req, name, args): + def expand_macro(self, formatter, name, args): db = self.env.get_db_cnx() cursor = db.cursor() @@ -39,7 +39,7 @@ if args: prefix = args.replace('\'', '\'\'') else: - prefix = req.hdf.getValue('wiki.page_name', '') + '/' + prefix = formatter.resource.id + '/' parent = 'WikiStart' Index: hierwiki/macros/subwiki.py =================================================================== --- hierwiki/macros/subwiki.py (revision 4358) +++ hierwiki/macros/subwiki.py (working copy) @@ -20,37 +20,118 @@ This now takes the text of the first heading and displays it as the link name. """ + good_pages = [] + index = 0 + href = 0 + style = 1 TITLE_RE = re.compile(r'=+\s([^=]*)=+') - def render_macro(self, req, name, args): + def expand_macro(self, formatter, name, args): # Args seperated by commas: # prefix,level # # Page Name prefix to search for. # how many 'levels' in the hierarchy to go down. - prefix = req.hdf.getValue('wiki.page_name', '') + '/' + + prefix = formatter.resource.id + '/' + self.log.debug('HierWikiPlugin: Generating SubWiki-Toc for %r', prefix) + level = 0 + self.style = 1 if args: args = args.replace('\'', '\'\'') args = args.split(',') - if args[0] != 'None': + if args[0] != None and args[0].strip() != '': prefix = args[0] - if len(args) > 1 and args[1] != 'None': + + if len(args) > 1 and args[1] != None and args[1].strip() != '': level = int(args[1]) + + if len(args) > 2 and args[2] != None and args[2].strip() != '': + self.style = int(args[2]) + if(prefix == '/'): + prefix = '' + pages = WikiSystem(self.env).get_pages(prefix) - good_pages = [] + + self.good_pages = [] for p in pages: + len_name = p.split('/') if level: - len_name = p.split('/') if len(len_name) > level+1: continue page = WikiPage(self.env, p) md = self.TITLE_RE.search(page.text) - title = '' + title = p if md: title = md.group(1) - good_pages.append((p, title)) - return html.UL([html.LI(html.A(p, title=t, href=req.href.wiki(p)), ' ', t) for p,t in good_pages]) + + self.good_pages.append((p, title, len_name[len(len_name)-1])) + self.good_pages.sort() + self.href = formatter.context.href + self.log.debug('HierWikiPlugin: Found %r valid pages below', len(self.good_pages)) + self.index = 0 + if len(self.good_pages) > 0: + return self.render_tree(prefix, 1) + else: + return '' + + def render_tree(self, prefix, isroot): + self.log.debug('HierWikiPlugin: Entering Recursion for %r at index %r of %r pages', prefix, self.index, len(self.good_pages)) + if self.index >= len(self.good_pages): + return '' + + p = self.good_pages[self.index][0] + + if not p.startswith(prefix): + return ' ' + + buf = StringIO() + if isroot: + buf.write('