Interface Customization using site.html
This page collects useful snippets for inclusion in a project site.html
file. A snippet should reside inside the standard root element of the file:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://genshi.edgewall.org/" xmlns:xi="http://www.w3.org/2001/XInclude" py:strip=""> <!--! Add snippets here... --> </html>
Ideally, snippets are accompanied by a short description.
Quicksearch for tickets only
When no search filters are provided, Trac searches using all filters. This snippets adds a filter to the quicksearch that restricts searches to tickets only by default. More can of course be added by user after initial search:
<div py:match="body/div[@id='banner']/form[@id='search']/div" py:attrs="select('@*')" once="true"> ${select('*|text()|comment()')} <input type="hidden" name="ticket" value="on"/> </div>
Explanation: It grabs the <div/>
inside the quicksearch form into a new div, adding any attributes of the old (though no attributes by default) and then inserts any content (elements, text and comments) that the old element had with the ${select()}
call. To this new (identical) div, a new <input/>
element is added that provides a filter for ticket-only search.
Add licensing information when adding attachments
If adding attachments to your Trac site requires people to agree to some licensing terms, you can add the terms of the license on the "Add attachments" page as follows:
<py:match path="form[@id='attachment']/div[@class='buttons']" once="true"> <p>By submitting a file here, you accept that we can do whatever we want with it...</p> <div py:attrs="select('@*')"> ${select('*|comment()|text()')} </div> </py:match>
Explanation: This matches the <div>
containing the submit buttons, adds a paragraph with the text at that location, then reconstructs the matched <div>
with its initial content and attributes.
Rename Roadmap header
If your team would prefer to see a different title instead of Roadmap, add the following code to your site.html and restart the server. Don't forget to edit trac.ini to change the link title.
<span py:match="h1"> <py:if test="req.environ['PATH_INFO'] == '/roadmap'"> <h1>Open Milestones</h1> </py:if> </span>
Replace footer
If you want to change the default footer, this snippet strips out the current one and puts in my own. Tested with 1.0.1.
<!--! Replace standard footer with a site-specific footer --> <div id="footer" py:match="//div[@id='footer']" py:strip="True"> <div id="footer"> <hr /> <a id="tracpowered" href="http://www.tnky.ca/"> <img src="http://www.tnky.ca/TAI_tag.jpg" style="border: none; height: 98px; width: 185px;" alt="TAI Powered" /></a> <p class="left">Base Software is <a href="/about"><strong>Trac 1.0.1</strong></a> <br /> By Edgewall Software.</p> <p class="right">Visit Turnkey Automation at<br /><a href="http://www.tnky.ca/"> http://www.tnky.ca/</a></p> </div> </div>
See also: TracInterfaceCustomization, SiteStyleCss