# Changes between Version 3 and Version 4 of TracInterfaceCustomization

Ignore:
Timestamp:
Mar 5, 2012 2:35:09 PM (10 years ago)
Comment:

--

Unmodified
Added
Removed
Modified
• ## TracInterfaceCustomization

 v3 = Customizing the Trac Interface = [[TracGuideToc]] [[PageOutline]] == Introduction == === Logo === Change the src setting to site/ followed by the name of your image file.  The width and height settings should be modified to match your image's dimensions (the Trac chrome handler uses "site/" for files within the project directory htdocs and "common/" for the common ones). Change the src setting to site/ followed by the name of your image file.  The width and height settings should be modified to match your image's dimensions (the Trac chrome handler uses "site/" for files within the project directory htdocs, and "common/" for the common htdocs directory belonging to a Trac installation). Note that 'site/' is not a placeholder for your project name, it is the actual prefix that should be used (literally). For example, if your project is named 'sandbox', and the image file is 'red_logo.gif' then the 'src' setting would be 'site/red_logo.gif', not 'sandbox/red_logo.gif'. {{{ === Icon === Icons should be a 16x16 image in .gif or .ico format.  Change the icon setting to site/ followed by the name of your icon file.  Icons will typically be displayed by your web browser next to the site's URL and in the Bookmarks menu. Icons should be a 32x32 image in .gif or .ico format.  Change the icon setting to site/ followed by the name of your icon file.  Icons will typically be displayed by your web browser next to the site's URL and in the Bookmarks menu. {{{ The new [mainnav] and [metanav] can now be used to customize the text and link used for the navigation items, or even to disable them (but not for adding new ones). In the following example, we rename the link to the Wiki start "Home", and hide the "Help/Guide". We also make the "View Tickets" entry link to a specific report . In the following example, we rename the link to the Wiki start "Home", and hide the "!Help/Guide". We also make the "View Tickets" entry link to a specific report . {{{ [mainnav] Say you want to add a link to a custom stylesheet, and then your own header and footer. Save the following content as 'site.html' inside your projects templates directory (each Trac project can have their own site.html), e.g. {{{/path/to/env/templates/site.html}}}: header and footer. Save the following content as site.html inside your projects templates/ directory (each Trac project can have their own site.html), e.g. {{{/path/to/env/templates/site.html}}}: {{{ }}} Those who are familiar with XSLT may notice that Genshi templates bear some similarities. However, there are some Trac specific features - for example '''${href.chrome('site/style.css')}''' attribute references template placed into environment's ''htdocs/'' In a similar fashion '''${chrome.htdocs_location}''' is used to specify common ''htdocs/'' directory from Trac installation. site.html is one file to contain all your modifications. It usually works by the py:match (element or attribute), and it allows you to modify the page as it renders - the matches hook onto specific sections depending on what it tries to find Those who are familiar with XSLT may notice that Genshi templates bear some similarities. However, there are some Trac specific features - for example ${href.chrome('site/style.css')} attribute references a CSS file placed into environment's htdocs/ directory. In a similar fashion ${chrome.htdocs_location} is used to specify the common htdocs/ directory belonging to a Trac installation. That latter location can however be overriden using the [[TracIni#trac-config|[trac] htdocs_location]] configuration setting. site.html is one file to contain all your modifications. It usually works using the py:match directive (element or attribute), and it allows you to modify the page as it renders - the matches hook onto specific sections depending on what it tries to find and modify them. See [http://groups.google.com/group/trac-users/browse_thread/thread/70487fb2c406c937/ this thread] for a detailed explanation of the above example site.html. A site.html can contain any number of such py:match sections for whatever you need to modify. This is all [http://genshi.edgewall.org/ Genshi], so the docs on the exact syntax can be found there. Example snippet of adding introduction text to the new ticket form (hide when preview): {{{ #!xml A site.html can contain any number of such py:match sections for whatever you need to modify. This is all Genshi, so the [http://genshi.edgewall.org/wiki/Documentation/xml-templates.html docs on the exact syntax] can be found there. Example snippet of adding introduction text to the new ticket form (but not shown during preview): {{{#!xml }}} This example illustrates a technique of using '''req.environ['PATH_INFO']''' to limit scope of changes to one view only. For instance, to make changes in site.html only for timeline and avoid modifying other sections - use  ''req.environ['PATH_INFO'] == '/timeline''' condition in test. This example illustrates a technique of using req.environ['PATH_INFO'] to limit scope of changes to one view only. For instance, to make changes in site.html only for timeline and avoid modifying other sections - use  req.environ['PATH_INFO'] == '/timeline' condition in  test. More examples snippets for site.html can be found at [trac:wiki:CookBook/SiteHtml CookBook/SiteHtml]. }}} Also note that the site.html (despite its name) can be put in a common templates directory - see the [inherit] templates_dir option. This could provide easier maintainence (and a migration path from 0.10 for larger installations) as one new global site.html file can be made to include any existing header, footer and newticket snippets. Also note that the site.html (despite its name) can be put in a common templates directory - see the [[TracIni#inherit-section|[inherit] templates_dir]] option. This could provide easier maintainence (and a migration path from 0.10 for larger installations) as one new global site.html file can be made to include any existing header, footer and newticket snippets. == Project List == #ProjectList Trac caches templates in memory by default to improve performance. To apply a template you need to restart the server. ---- See also TracGuide, TracIni