Mercurial > genshi > mirror
changeset 56:6474226bb8b6 trunk
Trac port: use a function to build mainnav/metanav.
author | cmlenz |
---|---|
date | Tue, 04 Jul 2006 13:36:37 +0000 |
parents | f722c43f36d7 |
children | 300b6a3b0730 |
files | examples/trac/templates/layout.html examples/trac/trac/web/chrome.py |
diffstat | 2 files changed, 24 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/examples/trac/templates/layout.html +++ b/examples/trac/templates/layout.html @@ -10,9 +10,19 @@ <link rel="${rel}" py:for="link in links" py:attrs="link"/> </div> <script py:for="script in chrome.scripts" - type="${script.type}" src="${script.href}"/> + type="${script.type}" src="${script.href}"></script> </head> + <div py:def="navigation(category)" id="${category}" class="nav"> + <ul py:if="chrome.nav[category]"> + <li py:for="idx, item in enumerate(chrome.nav[category])" + class="${' '.join(filter(None, [ + (idx == 0) and 'first', + (idx == len(chrome.nav[category]) - 1) and 'last' + ])) or None}">${HTML(item.label)}</li> + </ul> + </div> + <body py:match="body"> <div id="banner"> <div id="header"> @@ -20,37 +30,17 @@ src="${chrome.logo.src}" /></a> </div> <form py:if="'SEARCH_VIEW' in perm" id="search" - action="${href.search()}" method="get"> - <div> + action="${href.search()}" method="get"><div> <label for="proj-search">Search:</label> <input type="text" id="proj-search" name="q" size="10" accesskey="f" value="" /> <input type="submit" value="Search" /> <input type="hidden" name="wiki" value="on" /> <input type="hidden" name="changeset" value="on" /> <input type="hidden" name="ticket" value="on" /> - </div> - </form> - <div id="metanav" class="nav"> - <ul py:if="chrome.nav.metanav"> - <li py:for="idx, item in enumerate(chrome.nav.metanav)" - py:content="HTML(item.label)" - class="${' '.join(filter(None, [ - (idx == 0) and 'first', - (idx == len(chrome.nav.metanav) - 1) and 'last' - ])) or None}"/> - </ul> - </div> + </div></form> + ${navigation('metanav')} </div> - <div id="mainnav" class="nav"> - <ul py:if="chrome.nav.mainnav"> - <li py:for="idx, item in enumerate(chrome.nav.mainnav)" - py:content="HTML(item.label)" - class="${' '.join(filter(None, [ - (idx == 0) and 'first', - (idx == len(chrome.nav.mainnav) - 1) and 'last' - ])) or None}"/> - </ul> - </div> + ${navigation('mainnav')} <div id="main"> ${select('*')} @@ -76,7 +66,7 @@ By <a href="http://www.edgewall.com/">Edgewall Software</a>. </p> <p class="right"> - ${HTML(config.project.get('footer'))} + ${chrome.footer} </p> </div> </body>
--- a/examples/trac/trac/web/chrome.py +++ b/examples/trac/trac/web/chrome.py @@ -235,20 +235,26 @@ return dirs def render_response(self, req, template_name, content_type, data): + from markup.core import Markup from markup.input import HTML, XML from markup.template import Context, TemplateLoader + from trac import __version__ as VERSION + loader = TemplateLoader(self.get_all_templates_dirs()) template = loader.load(template_name) data.setdefault('chrome', {}).update({ + 'footer': Markup(self.env.project_footer), 'logo': req.environ.get('trac.chrome.logo', {}), 'links': req.environ.get('trac.chrome.links', []), 'nav': req.environ.get('trac.chrome.nav', {}), - 'scripts': req.environ.get('trac.chrome.scripts', []) + 'scripts': req.environ.get('trac.chrome.scripts', []), + 'version': VERSION }) - data['config'] = self.config + data['req'] = req data['href'] = req.href data['perm'] = req.perm + data['Markup'] = Markup data['HTML'] = HTML data['XML'] = XML stream = template.generate(Context(**data))