Ticket #264: irequestfilter.diff
| File irequestfilter.diff, 1.7 KB (added by anonymous, 7 years ago) |
|---|
-
tracnav/tracnav.py
62 62 from trac.core import Component, implements 63 63 from trac.wiki.api import WikiSystem, IWikiMacroProvider 64 64 from trac.web.chrome import ITemplateProvider, add_stylesheet 65 from trac.web.main import IRequestFilter 65 66 from trac.wiki.model import WikiPage 66 67 from trac.wiki.formatter import Formatter, OneLinerFormatter 67 68 from StringIO import StringIO … … 292 293 293 294 class TracNav(Component): 294 295 295 implements(IWikiMacroProvider, ITemplateProvider )296 implements(IWikiMacroProvider, ITemplateProvider, IRequestFilter) 296 297 298 # IWikiMacroProvider methods 297 299 def get_macros(self): 298 300 yield 'TracNav' 299 301 yield 'JPNav' # legacy … … 307 309 from inspect import getdoc, getmodule 308 310 return getdoc(getmodule(self)) 309 311 312 313 # ITemplateProvider methods 310 314 def get_htdocs_dirs(self): 311 315 from pkg_resources import resource_filename 312 316 return [('tracnav', resource_filename(__name__, 'htdocs'))] … … 314 318 def get_templates_dirs(self): 315 319 # we don't provide templates 316 320 return [] 321 322 323 # IRequestFilter methods 324 def pre_process_request(self, req, handler): 325 return handler 326 327 def post_process_request(self, req, template, content_type): 328 if req.path_info == '/' or \ 329 req.path_info.startswith('/wiki'): 330 self._do_post_process(req) 331 return template, content_type 332 333 def _do_post_process(self, req): 334 out = StringIO() 335 Invocation(self.env, req, '', out).run() 336 req.hdf.setValue('tracnavplugin.toc', out.getvalue())
