L'action
{{trail toc="NomDePage"}} (
WikiNi >= 0.4.1) permet de lier des pages entres elles grâce à une page de sommaire. Cette action est écrite dans les pages liées et y affiche un navigateur du type "précédente/suivante" en indiquant le nom des pages précédente et suivante.
Paramètre
Le paramètre
toc permet d'indiquer le nom de la page contenant la liste des pages liées. (toc est l'abréviation de "table of content")
Configuration
L'aspect des liens du navigateur est défini par deux classes CSS présentes dans wakka.css :
.trail_table { line-height: 30px;}
.trail_button { color: #993333; }
Écriture d'une page "toc" , c'est-à-dire de la page sommaire
Cette page peut contenir n'importe quel texte. Les règles qui permettent de définir la liste des pages liées sont :
- Le nom de la page appartient à une liste (numéroté, à bulle ou sans signe)
- Le nom de la page est le 1er mot de chaque élément de la liste
- Les liens [[NomPageWikiNi Nom d'une page WikiNi]] sont acceptés et doivent être le 1er mot de chaque éléments de la liste.
NB : La liste se trouvant dans la page sommaire ne doit pas être le résultat d'une action wikini, car elle n'est pas inscrite dans la base.
Un exemple de page sommaire :
Sommaire
Texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte.
- Page1 : texte texte texte texte texte texte texte texte texte texte texte
- Page2 : texte texte texte texte texte texte texte texte texte texte texte texte texte
- Vers la page 3? : texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte
- Page31? : texte texte texte texte texte texte texte texte texte texte texte
- Page32? : texte texte texte texte texte texte texte texte texte texte texte
- Page4? : texte texte texte texte texte texte texte texte texte texte texte
texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte.
- Page5? : texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte
- Page6? : texte texte texte texte texte texte texte texte texte texte texte texte texte texte texte
Un exemple de page liée :
On peut lire dans les pages liées par toc="
ListeDesActionsWikiNi", un navigateur comme celui-ci :
Discussion
Peut être faudrait-il ajouter un paramètre
last="yes" pour indiquer la dernière page de la liste. En effet, il peut y avoir des pages ne devant apparaitre dans le navigateur. Par exemple, sur la page
ListeDesActionsWikiNi, les pages "
DocumentationAdministrateurFonctionnel et
FonctionnalitesDetaillees" ne doivent pas figurer dans la navigation, mais c'est actuellement le cas. --
GarfieldFr
Inutile, il suffit, par exemple, de changer de type de liste --
FidelioEspoir
Trail = liste + utilisation sur chaque carte
L'action trail définit une liste puis l'utilise sur toutes les pages appartenant à la liste. Ayant besoin d'utiliser les listes contenues dans les pages, je me suis permis d'en extraire cette première partie pour en faire une action liste.php.
<?php
/*
Cette action est extraite de l'action trail.php qui permet d'afficher des liens "Page Suivante" "Sommaire" "Page Precedente" dans une page
Copyright 2003 Eric FELDSTEIN
j'ai simplement détaché la constitution de la liste de son utilisation.
Elle profite aussi de la dernière version de textsearch.php
......CH DAMAGE.
liste nom/page="telnom" couleur="oui"
*/
$separator =", ";
$couleur = $this->GetParameter("couleur");
$nom = $this->GetParameter("nom");
if (empty($nom)) $nom= $this->GetParameter("page");
echo "<table class=\"trail_table\" >\n </tr><td>\n";
$tocPage = $this->LoadPage($nom);
//analyse de la page sommaire pour rÈcupÈrer la liste des pages
//recuperation de la liste
if (preg_match_all("/\n[\t ]+(.*)/",$tocPage["body"],$tocListe)){
//analyse de chaque ligne de la liste pour recupÈrer la page cible
$currentPageIndex = NULL;
foreach ($tocListe[1] as $line){
//suppression d'un signe de liste eventuel
$line = trim(preg_replace("/^([A-Za-z0-9]+\)|-)/","",$line));
//recuperation du 1er mot
$line = preg_replace("/^(\[\[.*\]\]|[A-Za-z0-9]+)\s*(.*)$/","$1",$line);
//ajout a la liste des pages si le 1er mot est un lien force ou un mot wiki
if (preg_match("/\[\[.*\]\]/",$line,$match)|$this->IsWikiName($line)){
$pages[] = $line;
//traite le cas des lien force
if (preg_match("/\[\[(.*:)?".$this->GetPageTag()."(\s.*)?\]\]$/",$line)) {
$currentPageIndex = count($pages)-1;
}
else
//écriure de la ligne
echo $this->ComposeLinkToPage($line).$separator ;
}
}
}
echo "<td></tr>\n </table>\n";
?>
Cette action
{{liste page/nom//="telnom" couleur="oui"}} affiche la première liste se trouvant sur la page "telnom" autre que la page affichée. Bien entendu, ne vous génez pas por améliorer le script ! -- 2004-05-23 -- 15 : 13 --
FidelioEspoir