changeset 56:950f75b72a1e

Trac port: use a function to build mainnav/metanav.
author cmlenz
date Tue, 04 Jul 2006 13:36:37 +0000
parents 5f0b2976f8c4
children b387cf24d329
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))
Copyright (C) 2012-2017 Edgewall Software