Wikini

ActionTrail

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-98-84-18-52.compute-1.amazonaws.com
<< ActionTextSearch ListeDesActionsWikiNi ActionUserSettings >>



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 :

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.


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.

Un exemple de page liée :
On peut lire dans les pages liées par toc="ListeDesActionsWikiNi", un navigateur comme celui-ci :
<< ActionTextSearch ListeDesActionsWikiNi ActionUserSettings >>


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
Commentaires [Cacher commentaires/formulaire]