Index
How it works
History
Acknowledgments
Contacting us
Return to docs.mandragor.org

Fonctionnement

Affichage des pages

Le système global repose en fait sur un système plutot simple. La documentation trouvée sur le net est rappatriée sous la forme de HTML brut, peu importe la version. Cette documentation est ensuite passée en XHTML 1.0 transitional, grâce à l'excellent programme htmltidy de Dave Ragget.

En effet, après un bon petit moment de réflexion, nous avons pensé que le traitement par XSLT des fichiers XHTML ainsi générés nous donneraient la meilleure flexibilité au niveau de la présentation de la documentation. La question est donc, si un utilisateur demande la page, mettons par exemple 'example.html', comment faire pour passer ce xhtml à notre parser XSLT comme nous le désirons. C'est là que le mod_rewrite de Apache nous vient en aide.

Alors, ce mod_rewrite, à quoi sert-il exactement? Et bien, d'après son nom, il s'agit d'un module de "réécriture d'urls". C'est à dire que si l'utilisateur demande une pageweb, on va pouvoir lui en délivrer une autre à la place. Et ce qui nous arrange encore plus, c'est que cela fonctionne par expressions régulières.

En effet, de quoi a-t-on besoin exactement: et bien, pour traiter un document xhtml en xslt, l'idéal serait une page du type afficher_page.php?adresse=chemin_de_la_page.html. Seulement, nous avons des restrictions imposées par les fichiers de documentations, notamment par les adresses relatives qu'ils contiennent. L'astuce réside donc en fait à ce que l'utilisateur croie afficher un ficheir, alors qu'en fait il en affiche un autre; il croit afficher page.html alors qu'il affiche bien notre afficher_page.php?adresse=chemin_de_la_page.html. Regardez la ligne suivante:

    RewriteRule (.*)\.htm(.*) /viewpage.php?page=$1\.htm$2
  

Il s'agit de la ligne principale, qui par une expression régulière va renvoyer sur la page que l'on désire. Vous voulez en savoir plus? Patience, tout le code sera délivré sous GPL une fois que je l'aurais bien relu :).

Le moteur de recherche

Rien de bien révolutionnaire de ce côté la; la taille de la documentation nous empêchant clairement de créer un moteur utilisant une base de données, nous nous sommes tournés vers un programme externe, en l'occurence swish-e, qui semblait correspondre le mieux à nos besoins, que ce soit au niveau performances qu'au niveau simplicité de mise en place.

J'en profite pour remercier toute l'équipe de swish-e pour leur excellent programme et leur très bon support via leur mailing-list.

Navigation dans la documentation

En ce qui concerne la navigation, j'ai longtemps hésité entre une structure d'arbre via MySQL et un simple listing des fichiers contenus dans le répertoire courant. C'est finalement cette seconde méthode que j'ai choisie, tout simplement car c'est cette dernière qui demandait le moins de maintenance. J'ai donc en fait simplement recréé un navigateur de fichiers en PHP, à grand coups de read_dir :).

Retour en haut de la page
Mandragor.org - Version 8.3