Changeset 3702
- Timestamp:
- 05/20/08 14:08:33 (8 months ago)
- Files:
-
- showpathplugin/0.11/ShowPath.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
showpathplugin/0.11/ShowPath.py
r3699 r3702 1 # -*- coding: utf-8 -*- 1 from trac.web.api import IRequestFilter 2 from trac.web.chrome import * 3 from trac.core import * 4 5 from genshi.builder import tag 2 6 3 7 """ … … 19 23 specifies the character to use in the path display: 20 24 [showpath] 21 sep_character = ยป25 sep_character = . 22 26 The default is a forward slash (/); note that no matter what character 23 27 is specified, it will always be rendered with a single space on … … 31 35 """ 32 36 33 from pprint import pprint, pformat34 35 from trac.core import *36 #from trac.ticket.query import TicketQueryMacro37 #from trac.wiki.macros import WikiMacroBase38 from trac.wiki.api import parse_args39 from trac.web import IRequestHandler, IRequestFilter, ITemplateStreamFilter40 41 ## genshi imports (genshi.filters.Transformer requires Genshi 0.5+)42 ## http://genshi.edgewall.org/43 from genshi.builder import tag44 from genshi.filters import Transformer45 from genshi.core import TEXT46 from genshi.input import HTML47 48 37 _DEFAULT_SEP = '/' 49 38 50 39 class ShowPath(Component): 51 implements(I TemplateStreamFilter)40 implements(IRequestFilter) 52 41 53 42 def __init__(self, *args, **kwargs): … … 59 48 self.sep_character = _DEFAULT_SEP 60 49 self.sep_character = self.sep_character[0] 61 62 50 63 # ITemplateStreamFilter methods 64 65 def filter_stream(self, req, method, filename, stream, data): 66 href = self.env.href 51 # IRequestFilter methods 52 53 def post_process_request(self, req, template, data, content_type): 67 54 page_path = req.args.get('page',None) 68 55 if not page_path or page_path == 'WikiStart': 69 return stream 56 return template, data, content_type 57 58 href = req.href 59 nav = req.chrome['ctxtnav'] 60 wikiStartIndex = None 61 for i, elm in enumerate( nav ): 62 if elm.tag == 'a' and elm.attrib.get('href') == href.wiki('WikiStart'): 63 wikiStartIndex = i 64 break 65 66 if wikiStartIndex is None: 67 return template, data, content_type 70 68 71 69 page_paths = page_path.split('/') … … 97 95 # ..so no sep char appended 98 96 r += tag(text) 99 100 # http://genshi.edgewall.org/wiki/GenshiRecipes/HtmlTransform101 # http://genshi.edgewall.org/browser/trunk/genshi/filters/transform.py 102 t1 = Transformer(103 "//div[@id='ctxtnav']//a[contains(@href,'%s')]" % href.wiki('WikiStart')) \104 .replace(r) 105 stream |= t1106 return stream97 98 nav[i] = r 99 100 print r 101 return template, data, content_type 102 103 def pre_process_request(self, req, handler): 104 return handler
