def enter_page(request, pagename, title): _ = request.getText title = _(title) request.theme.send_title(title, pagename=pagename) # Start content - IMPORTANT - without content div, there is no # direction support! if not hasattr(request, 'formatter'): formatter = HtmlFormatter(request) else: formatter = request.formatter request.page.formatter = formatter request.write(request.page.formatter.startContent("content"))
def parse(self, body): """Parse body and return html Create a page with body, then parse it and format using html formatter """ request = self.request assert body is not None request.reset() page = Page(request, PAGENAME) page.hilite_re = None page.set_raw_body(body) formatter = HtmlFormatter(request) formatter.setPage(page) page.formatter = formatter request.formatter = formatter parser = WikiParser(body, request, line_anchors=False) formatter.startContent('') # needed for _include_stack init output = request.redirectedOutput(parser.format, formatter) formatter.endContent('') return output
def execute(pagename, request): _ = request.getText # Start content - IMPORTANT - without content div, there is no # direction support! if not hasattr(request, 'formatter'): formatter = HtmlFormatter(request) else: formatter = request.formatter request.page.formatter = formatter formatter.setPage(request.page) # This action generate data using the user language request.setContentLanguage(request.lang) request.theme.send_title(request.getText('Search by metadata'), pagename=pagename) request.write(formatter.startContent("content")) q = '' mtabq = '' if request.values.has_key('q'): if request.values.has_key('mtab'): mtabq = ''.join(request.values.getlist('q')) else: q = ''.join(request.values.getlist('q')) request.write(u'<form method="GET" action="%s">\n' % actionname(request, pagename)) request.write(u'<input type=hidden name=action value="%s">' % 'MetaSearch') request.write(u'<input type="text" name="q" size=50 value="%s"> ' % (form_escape(q))) request.write(u'<input type="submit" name="mtab" value="Search as MetaTable">') request.write(u'<input type="submit" value="' + _('Search') + '">' + u'\n</form>\n') if q: if regexp_re.match(q): try: page_re = re.compile(q[1:-1]) q = '' except re.error: request.write(render_error(_("Bad regexp!"))) graphdata = request.graphdata graphdata.reverse_meta() keys_on_pages = graphdata.keys_on_pages vals_on_pages = graphdata.vals_on_pages keyhits = set([]) keys = set([]) for key in keys_on_pages: if q: if key == q: keyhits.update(keys_on_pages[key]) keys.add(key) else: if page_re.match(key): keyhits.update(keys_on_pages[key]) keys.add(key) valhits = set([]) vals = set([]) for val in vals_on_pages: if q: if val == q: valhits.update(vals_on_pages[val]) vals.add(val) else: if page_re.match(val): valhits.update(vals_on_pages[val]) vals.add(val) if not q: elemlist(request, formatter, keys, _('keys')) elemlist(request, formatter, vals, _('values')) request.write(formatter.paragraph(1)) request.write(formatter.text(_("Found as key in following pages"))) request.write(formatter.paragraph(0)) request.write(formatter.bullet_list(1)) for page in sorted(keyhits): # Do not include revisions etc so far, enabling this as per request if not graphdata[page].has_key(u'saved'): continue request.write(formatter.listitem(1)) request.write(formatter.pagelink(1, page)) request.write(formatter.text(page)) request.write(formatter.pagelink(0)) request.write(formatter.listitem(0)) request.write(formatter.bullet_list(0)) request.write(formatter.paragraph(1)) request.write(formatter.text(_("Found as value in following pages"))) request.write(formatter.paragraph(0)) request.write(formatter.bullet_list(1)) for page in sorted(valhits): # Do not include revisions etc so far, enabling this as per request if not graphdata[page].has_key(u'saved'): continue request.write(formatter.listitem(1)) request.write(formatter.pagelink(1, page)) request.write(formatter.text(page)) request.write(formatter.pagelink(0)) request.write(formatter.listitem(0)) request.write(formatter.bullet_list(0)) if mtabq: metatab = wikiutil.importPlugin(request.cfg, 'macro', 'MetaTable') request.write("<br>") # Poor but sufficient emulation of macro object mtabHTML = metatab(request.page, mtabq) request.write(mtabHTML) # End content request.write(formatter.endContent()) # end content div # Footer request.theme.send_footer(pagename) request.theme.send_closing_html()