1*3c9c7f3bSLORTET# Visualindex 2*3c9c7f3bSLORTET 3*3c9c7f3bSLORTETLe plugin **visualindex** affiche un index visuel des pages (ou des médias) d’un namespace DokuWiki. 4*3c9c7f3bSLORTET 5*3c9c7f3bSLORTETIl est compatible avec : 6*3c9c7f3bSLORTET- l’éditeur classique ; 7*3c9c7f3bSLORTET- ProseMirror. 8*3c9c7f3bSLORTET 9*3c9c7f3bSLORTET## Fonctionnement 10*3c9c7f3bSLORTET 11*3c9c7f3bSLORTETLe plugin lit un namespace, construit une liste d’éléments accessibles en lecture, puis affiche des tuiles avec : 12*3c9c7f3bSLORTET- une image ; 13*3c9c7f3bSLORTET- un titre ; 14*3c9c7f3bSLORTET- un lien vers la page ou le média. 15*3c9c7f3bSLORTET 16*3c9c7f3bSLORTETSi aucun élément n’est disponible, un message traduit est affiché. 17*3c9c7f3bSLORTET 18*3c9c7f3bSLORTET## Syntaxe 19*3c9c7f3bSLORTET 20*3c9c7f3bSLORTETSyntaxe de base : 21*3c9c7f3bSLORTET 22*3c9c7f3bSLORTET```txt 23*3c9c7f3bSLORTET{{visualindex>namespace}} 24*3c9c7f3bSLORTET``` 25*3c9c7f3bSLORTET 26*3c9c7f3bSLORTETExemples utiles : 27*3c9c7f3bSLORTET 28*3c9c7f3bSLORTET```txt 29*3c9c7f3bSLORTET{{visualindex>.}} 30*3c9c7f3bSLORTET{{visualindex>wiki}} 31*3c9c7f3bSLORTET{{visualindex>wiki;filter=start|syntax*}} 32*3c9c7f3bSLORTET{{visualindex>wiki;desc=1}} 33*3c9c7f3bSLORTET{{visualindex>wiki;medias=1}} 34*3c9c7f3bSLORTET{{visualindex>.;filter=guide*;desc=1;medias=1}} 35*3c9c7f3bSLORTET``` 36*3c9c7f3bSLORTET 37*3c9c7f3bSLORTETOptions supportées : 38*3c9c7f3bSLORTET- `filter` : filtre simple avec `*` (ex. `guide*|doc*`) ; 39*3c9c7f3bSLORTET- `desc` : tri descendant (`1` / `true`) ; 40*3c9c7f3bSLORTET- `medias` : affiche les médias du namespace (`1` / `true`). 41*3c9c7f3bSLORTET 42*3c9c7f3bSLORTETNamespace spécial : 43*3c9c7f3bSLORTET- `.` : namespace courant ; 44*3c9c7f3bSLORTET- `~sous:dossier` : namespace relatif au namespace courant. 45*3c9c7f3bSLORTET 46*3c9c7f3bSLORTET## Paramètres de configuration 47*3c9c7f3bSLORTET 48*3c9c7f3bSLORTETDans le gestionnaire de configuration : 49*3c9c7f3bSLORTET 50*3c9c7f3bSLORTET- `taille_icone` : taille de l’icône (ex. `100px`) ; 51*3c9c7f3bSLORTET- `taille_texte` : taille du texte (ex. `13px`) ; 52*3c9c7f3bSLORTET- `couleur_texte` : couleur du texte (hex, rgb/rgba, ou nom CSS) ; 53*3c9c7f3bSLORTET- `skip_file` : expression régulière des pages à ignorer ; 54*3c9c7f3bSLORTET- `show_in_editor_menu` : afficher Visualindex dans les menus d’édition (classique et ProseMirror) ; 55*3c9c7f3bSLORTET- `use_pagesicon` : utiliser le helper `pagesicon` si disponible ; 56*3c9c7f3bSLORTET- `default_image` : image par défaut (ID média, ex : `wiki:logo.png`) ; si vide, l’image interne du plugin est utilisée. 57*3c9c7f3bSLORTET 58*3c9c7f3bSLORTET## Intégration avec pagesicon 59*3c9c7f3bSLORTET 60*3c9c7f3bSLORTETSi le plugin `pagesicon` est présent et activé via `use_pagesicon` : 61*3c9c7f3bSLORTET- Visualindex récupère les icônes des pages via le helper ; 62*3c9c7f3bSLORTET- Visualindex récupère aussi les icônes des médias ; 63*3c9c7f3bSLORTET- si aucune icône n’est trouvée, le fallback par défaut est utilisé. 64*3c9c7f3bSLORTET 65*3c9c7f3bSLORTETOrdre de fallback : 66*3c9c7f3bSLORTET1. icône fournie par `pagesicon` ; 67*3c9c7f3bSLORTET2. `default_image` de Visualindex ; 68*3c9c7f3bSLORTET3. image interne du plugin (`images/default_image.png`). 69*3c9c7f3bSLORTET 70*3c9c7f3bSLORTET## ProseMirror 71*3c9c7f3bSLORTET 72*3c9c7f3bSLORTETLe plugin expose un bouton `Visualindex` dans ProseMirror (si `show_in_editor_menu` est activé) avec une popup de configuration. 73*3c9c7f3bSLORTET 74*3c9c7f3bSLORTETLa popup permet de renseigner : 75*3c9c7f3bSLORTET- le namespace ; 76*3c9c7f3bSLORTET- le filtre ; 77*3c9c7f3bSLORTET- l’ordre descendant ; 78*3c9c7f3bSLORTET- l’affichage des médias. 79*3c9c7f3bSLORTET 80*3c9c7f3bSLORTET## Fichiers principaux 81*3c9c7f3bSLORTET 82*3c9c7f3bSLORTET- `syntax/visualindex.php` : parsing et rendu XHTML ; 83*3c9c7f3bSLORTET- `action/prosemirror.php` : intégration éditeur ; 84*3c9c7f3bSLORTET- `script/prosemirror.js` : nœud ProseMirror ; 85*3c9c7f3bSLORTET- `script/toolbar.js` : bouton et popup ; 86*3c9c7f3bSLORTET- `style.css` : styles d’affichage. 87