Après le blog, le Trac et après le Trac, le Twitter...

Après avoir changé le thème du blog, je me suis attaqué à celui du Trac que j'ai renommé en "Plateforme de développement" et passé sous le sous-domaine dev.llaumgui.com. En effet, je voulais une certaine cohérence entre le design du blog et celui de la plateforme de développement. J'ai donc entrepris de porter Emplode sous Trac, et là, force est d'avouer que le truc est assez déconcertant.

Le moteur de template de Trac est basé sur un système d'XSLT qui me fait comprendre la charge serveur d'un Trac ;-). En plus pour appliquer le nouveau thème, bien sûr, il faut redémarrer le serveur apache, normal quoi...

Bon, au final, ça surprend mais ça ne casse pas 3 pattes à un canard. Histoire d'aider ceux qui voudraient appréhender la customisation de Trac, je vous donne mon site.html commenté :

  1. <html xmlns="http://www.w3.org/1999/xhtml"
  2. xmlns:py="http://genshi.edgewall.org/"
  3. py:strip="">
  4.  
  5. <!--! Add site-specific style sheet -->
  6. <head py:match="head" py:attrs="select('@*')">
  7. ${select('*|comment()|text()')}
  8. <!-- Là, je rajoute ma CSS perso (dans htdocs) en plus des autres champs de head -->
  9. <link rel="stylesheet" type="text/css" href="${href.chrome('site/style.css')}" />
  10. </head>
  11. <body py:match="body">
  12. <div id="page">
  13. <div id="top">
  14. <div class="wrapped">
  15.  
  16. <!-- Login et préférences... -->
  17. ${navigation('metanav')}
  18.  
  19. <!-- Formulaire de recherche... -->
  20. <form id="search" action="${href.search}" method="get">
  21. <div py:if="'SEARCH_VIEW' in perm">
  22. <label for="q">Search:</label>
  23. <input type="text" id="q" name="q" size="10" accesskey="f" value="Rechercher" />
  24. </div>
  25. </form>
  26.  
  27. <!-- Là on va se servire dans trac.ini -->
  28. <h1><span><a href="${chrome.logo.link}">${project.name}</a></span></h1>
  29. <p id="blogdesc">${project.descr}</p>
  30. </div>
  31. </div>
  32. <div id="navigation">
  33.  
  34. <!-- Le menu principale -->
  35. <div class="wrapped">
  36. <ul>
  37. <li py:for="idx, item in enumerate(chrome.nav['mainnav'])" class="${classes(first_last(idx, chrome.nav['mainnav']), active=item.active)}">
  38. ${item.label}
  39. </li>
  40. </ul>
  41. <br class="clear"/>
  42. </div>
  43. </div>
  44.  
  45. <!-- Contenu -->
  46. <div id="inner">
  47. <div id="wrapper">
  48. ${select('*[@id="main"]|text()')}
  49. </div>
  50. </div>
  51.  
  52. <!-- Pied de page -->
  53. <div id="footer" xml:lang="en">
  54. <div class="wrapped">
  55. <p class="left">
  56. Powered by <a href="${href.about()}"><strong>Trac ${trac.version}</strong></a> by <a href="http://www.edgewall.org/">Edgewall Software</a><br />
  57. Basé sur le thème Emplode par <a href="http://arcsin.se/">Arcsin</a>
  58. </p>
  59. <p class="right">${chrome.footer}</p>
  60. </div>
  61. </div>
  62.  
  63. </div>
  64. </body>
  65. </html>

Maintenant il y a plus qu'à faire pareil sur le Trac de Fedora-Fr...

Comme j'étais parti sur ma lancée, j'ai aussi refait le design de mon profils Twitter.

3 réactions

  • De bochecha De bochecha - 29/04/2009, 20:37 #1

    T'es sur que c'est Apache que tu dois redémarrer ?

    Trac est codé en Python, et utilise le moteur de templates Genshi.

    Je sais pas ce qu'utilise Trac comme serveur d'appli Python, mais en tous cas avec CherryPy (le serveur d'appli Python utilisé dans TurboGears), pas besoin de redémarrer quoi que ce soit :)

  • De llaumgui De llaumgui - 29/04/2009, 22:21 #2

    C'est la solution données sur le chan IRC et ça a marché pour moi...

  • De pingou De pingou - 03/09/2009, 13:39 #3

    Pour info ta fonction recherche est cassé, il y a sans doute un truc à ajuster dans ton site.html

Attribution - Partage dans les Mêmes Conditions 4.0 International