Kiwi documentation

Accueil > Présentation > Technique

Technique

Techniquement, Kiwi n'est qu'un module Python dépendant de Django. Il fournit cependant un projet Django par défaut dans $KIWI_PROJECT/examplesite/ qui permet de l'utiliser comme un wiki autonome.

Il est conseillé de connaître Django pour pouvoir comprendre pleinement ce qui suit.

Modèles

Template

Ce modèle de données sert à enregistrer les templates de détails disponibles pour l'attribut template des Wikipage. Il servira donc à y ranger tout les templates que les administrateurs autoriseront à l'utilisation pour l'affichage des Wikipages ou des documents.

Chaque objet comprend une date, un titre et un chemin :

  • La date est automatiquement remplie dès la création, vous n'avez pas à vous en soucier.
  • Le titre doit être clair et explicite car il est à destination des rédacteurs, en général il indiquera donc le type d'affichage et d'informations qu'il contiendra.
  • Le chemin indique le fichier du template, ce chemin doit être relatif à un de vos répertoire de templates configurés dans vos settings.

Vous pouvez supprimer les templates que vous ne souhaitez pas utiliser ou en rajouter de nouveaux. Si vous comptez utiliser Kiwi en collaboration, vous devriez réserver les droits d'accès à Template aux administrateurs.

Wikipage

C'est le coeur du wiki, en plus du contenu il contient plusieurs options :

  • parent permet de rendre la page dépendante d'une autre page et donc de devenir son enfant. Par défaut, une Wikipage ne dépend d'aucune page et se trouvera donc à la racine de l'arborescence globale du wiki.
  • activé indique si la page est activé dans le wiki ou non. Si une Wikipage est désactivée, elle ne sera affiché ni comme page ni comme document. Cette option impacte sur ses enfants.
  • visible indique si la page est accessible en tant que page. Si elle est désactivée une Wikipage ne peut être visible que comme document et ne sera pas affichée dans les arborescences de pages du wiki. Cette option impacte sur ses enfants.
  • ordre est un indice numérique qui permet de ranger la page avant ou après d'autres pages au même niveau d'arborescence.
  • uri est un identifiant texte qui servira dans l'url pour accéder à la page. Il ne doit pas contenir de caractères spéciaux ou d'espaces. Notez que si vous utilisez PyWiki2Xhtml, sa syntaxe requiert que votre uri commence par une majuscule.
  • archivé indique si la modification d'une page existante doit entrainer l'archivage du contenu précédent dans le modèle Version. Attention l'état de cette option est sauvegardé à chaque fois, si vous le décochez une fois, la fois suivante il sera toujours décoché. Par défaut cette option est toujours activée, vous pouvez changer cette valeur par défaut en rajoutant WIKIPAGE_ARCHIVED_DEFAULT = False dans vos settings.
  • template indique un template particulier pour afficher la Wikipage. La liste de choix est fournie depuis le modèle Template. Si aucun choix n'est séléctionné, le template par défaut pour une page sera kiwi/details.html et pour un document ce sera kiwi/document.html.

Version

Une Version est enregistrée à chaque modification d'une Wikipage si son option archivé est activée. La Wikipage est dupliquée à l'identique si l'option archivé n'est pas activée. En plus de tout les options initiales d'une Wikipage, une Version a un attribut version qui indique le numéro de version mais qui est automatiquement rempli à la création d'une Version.

Vues

Wikipage

  • kiwi.views.wikipage.sitemap affiche le plan complet du wiki en arborescence. Dans l'exemple de wiki autonome examplesite/ cette page est en page d'accueil du site.
  • kiwi.views.wikipage.details pour afficher le détails d'une page wiki. Si l'url demandée ne correspond à aucune uri d'une Wikipage, une erreur 404 est levée.

Version

  • kiwi.views.version.history affiche la liste de toute les versions existantes pour une Wikipage.
  • kiwi.views.version.details pour afficher le détails archivé d'une page wiki à la version demandée.
  • kiwi.views.version.diff pour afficher la comparaison des différences entre la version demandée et celle en cours.

Tags

Il y a plusieurs template tags disponibles :

  • treeview pour lister une arborescence des pages, complète ou partielle.
  • pathline pour afficher le 'fil de fer' ou 'chemin de parcours' d'une page.
  • wikidocument pour insérer une page wiki dans un template.

En outre spécifiquement pour l'utilisation de PyWiki2Xhtml, il y'a deux tags supplémentaires :

  • wiki2xhtml qui est la version standard d'un tag de markup à la manière de ceux fournis dans Django. Il reçoit en entrée un texte et renvoie à la place sa version formatée par le parser.
  • "wiki2xhtml_render est un tag un peu différent car il ne modifie rien dans le template. Il reçoit en entrée un texte et met à disposition dans le contexte plusieurs variables dont le texte formaté et un sommaire de ses titres.

Templates

Des templates de démonstration du fonctionnement sont disponibles dans $KIWI_PROJECT/kiwi/templates/kiwi/. Il y a notamment les templates du plan du site, historique des versions,un template récursif pour la génération des arborescence, ainsi que les templates par défaut pour afficher une Wikipage :

  • details.html qui est le template par défaut pour les Wikipage n'ayant pas de Template spécifique attribué.
  • details_columned.html est une version sur deux colonnes comprenant le texte formaté d'une part et de l'autre tout ses informations dans le sommaire de ses titres, sa date de modification et lien vers l'historique des versions.
  • details_with_subsummary.html qui est similaire au template par défaut avec en plus une liste de ses sous pages en dessous le texte formaté.
  • document.html qui est reservé à l'utilisation des Wikipage à inclure dans d'autres pages. Ce template ne doit pas être utilisé pour une Wikipage normale, sinon son affichage ne sera pas correcte.

Ces templates de détails sont ceux disponibles comme séléction de template des Wikipage.

Administration

Tout les modèles sont directement gérables via l'administration automatique fourni dans Django.