SourceForge.net Logo
23 Mai, 2006
© GPL
FractalWikiFR - ProWikiCentre
Pro Wiki Programmation

Cette introduction sur la programmation du script ProWiki est juste en train de se développer. Elle est conçue pour fourni la grande image du cosmos ProWiki dont a besoin un développeur pour devenir efficace. Si vous êtes intéressé par un thème particulier, merci de poster toutes vos questions ou intérêts sur ProWiki:ProWikiProgramming, de façon à ce qu'on puisse augmenter les priorités. -- HelmutLeitner 22 mai 2006 12:18 CET

EnConstruction

Introduction

Le ProWikiScript est un script unique Perl "wiki.pl" qui est appelé par le logiciel de ServeurWeb (généralement Apache) utilisant le bon vieux (CommonGatewayInterface). Il répond à des requêtes HTTP, qui proviennent généralemnet d'un NavigateurWeb opéré par un utilisateur sur son ordinateur client.

Le nom du script "wiki.cgi" de l'URL ne fait simplement que des liens vers "wiki.pl" qui sont maintenus dans un répertoire cgi central pour fonctionner pour tous les wikis sur votre serveur. Si vous avez une centaine de wikis, ils fonctionnent tous généralement à partir du même script. Si vous mettez à jour l'unique "wiki.pl", ils disposent tous de la nouvelle version.

Le ProWikiScript agit selon la Commande requêtée (souvent simplement le nom d'une WikiPage) et construit dynamiquement une page HTML qui est imprimée vers la sortie standard qu'Apache transfère vers le navigateur web client pour affichage.

Logging

Toutes les requêtes sont logués dans des LogFiles wiki spécifiques qui sont complètement séparés du log Apache mais beaucoup plus riches en information. Par exemple la ligne log contient aussi le NomUtilisateur, l'URL, des paramètres additionnels (qui ne sont pas des passes par l'URL) et l'information horaire générale.

Chaque wiki a ses propres fichiers de log dans son répertoire spécifique DataDir. Les LogFiles sont des fichiers mensuels "log_YYMM" (par ex. "log_0602" pour le mois de février 2006). Ils peuvent être conservés, effacés ou compressés selon les besoins de l'administrateur wiki. ActionStat, ActionLog, ActionTop et les CdmlHotspots opèrent sur ces fichiers, de façon qu'au moins un mois devrait être disponible.

Il y a en plus des RcLogFiles séparés qui suivent le même schéma et sont nommés "rclog_YYMM". Il ne contiennent que les changements de log page et contiennent beaucoup moins d'informations. Ils sont généralement conservés pour toujours.

Si le ProWikiScript imprime des "messages" par MsgPrint(...) ; (l'information dont vous avez besoin pour tester, une version devrait en général ne pas contenir de tels messages), ceux-ci vont vers un fichier "msglog" dans le DataDir.

Si vous voulez visualiser la sortie totale exacte provenant de quelque requête durant le test, vous pouvez configurer le système pour produire un fichier "answer.txt" dans le DataDir.

Fichiers Cache

Les CacheFiles sont situés dans le répertoire DataDir. Ils existent pour l'optimisation de performance.

Le fichier "pages" monitore la création et l'effacement de pages et de catégories pour une création efficace de dossier et de listes d'index de pages. Voir par exemple CeWiki:action=index et DossierDossiers.

Le fichier "words" cache les pages pour le WordLinking. Voir par exemple ces liens : Branche ou Options.

Gabarits

Les Pages (ou résultats de commandes) ont la structure (titre, contenu) et sont affichées dans le cadre d'un GabaritTexte HTML/CSS. Les gabarits contiennent les InsertCommands qui sont utilisées pour spécifier quelle information devrait aller où. Le GabaritTexte peut être conservé dans un fichier ou une WikiPage.

ProWiki peut utiiser un gabarit pour toutes les pages mais pourrait aussi assigner des gabarits individuels aux Branches (morceaux du wiki et même à des pages uniques). La variable TemplateFile est utilisée pour configurer ça (voir aussi : WikiContextualité et WikiFractalité).

En parallèle, il y a en option des variables GabaritEdition et GabaritImpression, dans le cas où ces gabarits simplifiés pour l'édition et/ou l'impression sont désirables.

Restitution

Typique sur les wikis est la conversion du contenu écrit décoré-par-la-syntaxe en du texte décoré-HTML qui peut être inséré vers le gabarit et affiché par les navigateurs.

Il y a différents types dans ProWiki :

  • quelque HTML qui est accepté et passé à travers (par ex. <u>..</u>)
  • WikiSyntaxes qui fonctionnent dans des lignes uniques (par ex. gras et italique)
  • WikiSyntaxes qui chevauchent plusieurs lignes (par ex. pour les listes)
  • CdmlElements pour des éléments de layout plus compliqués.
Voir aussi : WikiRenderingProcess

Stockage de page

Les WikiPages sont stockéees dans le sous-répertoire "page" du répertoire DataDir.

Les WikiPages sont stockées comme des fichiers normaux. Plus exactement, il y a trois fichiers pour chaque page :

  • page/X/nompage.dw -- le pur contenu de la page wiki
  • page/X/nompage.db -- les métadonnées de la page, contenant les diffs, dates, informationutilisateur, texte sauvegardé du précédent auteur, ...
  • page/X/nompage.txt_r -- l'HistoriquePage
X est soit une lettre unique, la première lettre du nom de la page, en lettre capitale (par exemple "page/F/FrontPage.dw") ou la chaîne "other" pour des page-noms qui démarrent avec une lettre différente de "[A-Za-z]" (par exemple "page/other/12345.dw").

La séparation du contenu dans un fichier séparé signifie qu'il y a un compromis important. Cela veut dire qu'il n'y a pas de différence entre accéder à l'information à partir d'un fichier ou à partir d'une page (par ex. au moment de stocker un gabarit dans une page wiki ou en faisant une recherche plein texte à travers toutes les pages wiki).

Données utilisateurs informelles / Préférences

Les données utilisateurs informelles sont conservées dans un sous-répertoire "user" du répertoire DataDir. Il est synchronisé en utilisant une cookie wiki spécifique qui vit longtemps.

Données utilisateurs formelles / Enregistrement

Les données utilisateurs formelles sont conservées dans un sous-répertoire "user" du répertoire GlobalDir. Il est synchronisé en utilisant une cookie wiki commune qui est effacée pour la sécurité quand la session du navigateur se termine.

Voir aussi / Sujets spéciaux


LangueFrançaise PageTranslation ProWiki:ProWikiProgramming DossierPointsDeDépart DossierProgrammation DossierFichiers