xref: /plugin/pagesicon/DOKU (revision a3ea184d8fbbe3d7b0907bb9f539dee5a6e56ad6)
1b603bbe1SLORTET====== Pagesicon Plugin ======
2b603bbe1SLORTET
3b603bbe1SLORTET---- plugin ----
4b603bbe1SLORTETdescription: Gère et expose des icônes de page et de média
5b603bbe1SLORTETauthor     : Valentin LORTET
6b603bbe1SLORTETemail      : contact@valentinlortet.fr
7b603bbe1SLORTETtype       : Action, Helper
8*a3ea184dSLORTETlastupdate : 2026-03-12
9b603bbe1SLORTETcompatible : Librarian
10b603bbe1SLORTETdepends    :
11b603bbe1SLORTETconflicts  :
12b603bbe1SLORTETsimilar    :
13b603bbe1SLORTETtags       : Media, UI, Navigation, Helper, Icons
14b603bbe1SLORTET
15b603bbe1SLORTETdownloadurl: https://github.com/Lortet/dokuwiki-plugin-pagesicon/zipball/master
16b603bbe1SLORTETbugtracker : https://github.com/Lortet/dokuwiki-plugin-pagesicon/issues
17b603bbe1SLORTETsourcerepo : https://github.com/Lortet/dokuwiki-plugin-pagesicon/
18b603bbe1SLORTETdonationurl:
19b603bbe1SLORTETscreenshot_img :
20b603bbe1SLORTET----
21b603bbe1SLORTET
22b603bbe1SLORTET===== Installation =====
23b603bbe1SLORTET
24b603bbe1SLORTETInstaller le plugin depuis le [[fr:plugin:extension|Gestionnaire d'extensions]] avec l'URL ci-dessus, ou en copiant le dossier dans ''lib/plugins/pagesicon''.
25b603bbe1SLORTET
26b603bbe1SLORTET===== Description =====
27b603bbe1SLORTET
28b603bbe1SLORTETLe plugin **pagesicon** permet :
29b603bbe1SLORTET  * d'afficher une icône en haut de la page ;
30b603bbe1SLORTET  * d'utiliser cette icône comme favicon ;
31b603bbe1SLORTET  * de gérer les icônes depuis l'action de page ''?do=pagesicon'' ;
32b603bbe1SLORTET  * de gérer deux variantes : ''big'' et ''small'' ;
33b603bbe1SLORTET  * d'exposer un helper pour les autres plugins.
34b603bbe1SLORTET
35b603bbe1SLORTETLe plugin travaille sur la page courante. Il n'y a pas de cible externe à saisir pour l'écran de gestion.
36b603bbe1SLORTET
37b603bbe1SLORTET===== Paramètres =====
38b603bbe1SLORTET
39b603bbe1SLORTET^ Nom ^ Description ^ Valeur par défaut ^
40b603bbe1SLORTET| icon_name | Noms candidats pour l'icône ''big'' (séparés par '';''). Supporte ''~pagename~''. | ''~pagename~;icon_thumbnail;icon'' |
41b603bbe1SLORTET| icon_thumbnail_name | Noms candidats pour l'icône ''small'' (séparés par '';''). Supporte ''~pagename~''. | ''~pagename~;icon'' |
42b603bbe1SLORTET| default_image | Image par défaut (mediaID), utilisée seulement quand une méthode helper demande explicitement un fallback. | '''' |
43b603bbe1SLORTET| icon_size | Taille de l'icône affichée en haut de page (px). | ''55'' |
44b603bbe1SLORTET| extensions | Extensions d'images autorisées (séparées par '';''). | ''svg;png;jpg;jpeg'' |
45b603bbe1SLORTET| show_on_top | Afficher l'icône en haut de page. | ''true'' |
46b603bbe1SLORTET| show_as_favicon | Utiliser l'icône comme favicon. | ''true'' |
47*a3ea184dSLORTET| parent_fallback | Politique d'héritage si la page n'a pas d'icône : aucune, parent direct, ou première icône trouvée en remontant les parents. | ''none'' |
48b603bbe1SLORTET
49b603bbe1SLORTET===== Utilisation =====
50b603bbe1SLORTET
51b603bbe1SLORTETDepuis une page, utiliser l'action **Gérer l'icône** puis :
52b603bbe1SLORTET  * importer une icône ''big'' ;
53b603bbe1SLORTET  * importer une icône ''small'' ;
54b603bbe1SLORTET  * supprimer l'icône actuelle.
55b603bbe1SLORTET
56b603bbe1SLORTETLe formulaire :
57b603bbe1SLORTET  * calcule les noms de fichiers autorisés à partir de la configuration ;
58b603bbe1SLORTET  * limite les extensions à la liste configurée ;
59b603bbe1SLORTET  * ouvre le gestionnaire de médias sur le namespace de la page.
60b603bbe1SLORTET
61b603bbe1SLORTET===== API Helper =====
62b603bbe1SLORTET
63b603bbe1SLORTETCharger le helper :
64b603bbe1SLORTET''$pagesicon = plugin_load('helper', 'pagesicon');''
65b603bbe1SLORTET
66b603bbe1SLORTET==== Méthodes principales ====
67b603bbe1SLORTET
68b603bbe1SLORTET^ Méthode ^ Depuis ^ Description ^
69b603bbe1SLORTET| ''getPageIconId($namespace, $pageID, $size = 'bigorsmall')'' | ''2026-03-09'' | Retourne le mediaID de l'icône d'une page, ou ''false''. |
70b603bbe1SLORTET| ''getMediaIconId($mediaID, $size = 'bigorsmall')'' | ''2026-03-09'' | Retourne le mediaID de l'icône associée à un média, ou ''false''. |
71b603bbe1SLORTET| ''getPageIconUrl($namespace, $pageID, $size = 'bigorsmall', $params = ['width' => 55], &$mtime = null, $withDefault = false)'' | ''2026-03-09'' | Retourne l'URL versionnée d'une icône de page, ou ''false''. |
72b603bbe1SLORTET| ''getMediaIconUrl($mediaID, $size = 'bigorsmall', $params = ['width' => 55], &$mtime = null, $withDefault = false)'' | ''2026-03-09'' | Retourne l'URL versionnée d'une icône associée à un média, ou ''false''. |
73b603bbe1SLORTET| ''getDefaultIconUrl($params = ['width' => 55], &$mtime = null)'' | ''2026-03-09'' | Retourne l'image par défaut à utiliser quand aucune icône n'est trouvée. |
74b603bbe1SLORTET| ''getUploadIconPage($targetPage = "")'' | ''2026-03-06'' | Retourne l'URL ''?do=pagesicon'' d'une page, ou ''null'' si non autorisé. |
75b603bbe1SLORTET| ''getUploadMediaIconPage($mediaID = "")'' | ''2026-03-06'' | Retourne l'URL de gestion d'icône associée à un média. |
76b603bbe1SLORTET| ''notifyIconUpdated($targetPage, $action = "update", $mediaID = "")'' | ''2026-03-06'' | Déclenche l'événement d'invalidation de cache. |
77b603bbe1SLORTET| ''isPageIconMedia($mediaID)'' | ''2026-03-11'' | Indique si un média doit être considéré comme une icône gérée par le plugin. |
78b603bbe1SLORTET
79b603bbe1SLORTET===== Événement =====
80b603bbe1SLORTET
81b603bbe1SLORTETLors d'un upload ou d'une suppression, le plugin émet :
82b603bbe1SLORTET  * ''PLUGIN_PAGESICON_UPDATED''
83b603bbe1SLORTET
84b603bbe1SLORTETPayload :
85b603bbe1SLORTET  * ''target_page''
86b603bbe1SLORTET  * ''action''
87b603bbe1SLORTET  * ''media_id''
88b603bbe1SLORTET
89b603bbe1SLORTETLes plugins consommateurs restent responsables de leur propre invalidation de cache.
90b603bbe1SLORTET
91b603bbe1SLORTET===== Compatibilité =====
92b603bbe1SLORTET
93b603bbe1SLORTETLes anciennes signatures de l'API sont conservées via des alias legacy.
94b603bbe1SLORTET
95b603bbe1SLORTET^ Alias historique ^ Ajout ^ Déprécié ^ Remplacement ^
96b603bbe1SLORTET| ''getPageImage(...)'' | ''2026-03-06'' | ''2026-03-09'' | ''getPageIconId(...)'' |
97b603bbe1SLORTET| ''getMediaImage(...)'' | ''2026-03-06'' | ''2026-03-09'' | ''getMediaIconId(...)'' |
98b603bbe1SLORTET| ''getImageIcon(...)'' | ''2026-03-06'' | ''2026-03-09'' | ''getPageIconUrl(...)'' |
99b603bbe1SLORTET| ''getMediaIcon(...)'' | ''2026-03-06'' | ''2026-03-09'' | ''getMediaIconUrl(...)'' |
100b603bbe1SLORTET| ''getDefaultImageIcon(...)'' | ''2026-03-09'' | ''2026-03-09'' | ''getDefaultIconUrl(...)'' |
101b603bbe1SLORTET
102b603bbe1SLORTET===== Fonctionnement =====
103b603bbe1SLORTET
104b603bbe1SLORTETLa résolution d'une icône suit l'ordre défini par la configuration :
105b603bbe1SLORTET  * noms configurés pour la variante demandée ;
106b603bbe1SLORTET  * remplacements de ''~pagename~'' ;
107b603bbe1SLORTET  * fallbacks historiques du plugin comme ''logo'' et ''thumbnail''.
108b603bbe1SLORTET
109*a3ea184dSLORTETSi aucune icône n'est trouvée sur la page elle-même, le plugin peut aussi hériter :
110*a3ea184dSLORTET  * d'aucune icône ;
111*a3ea184dSLORTET  * de l'icône du parent direct ;
112*a3ea184dSLORTET  * de la première icône trouvée en remontant les parents.
113*a3ea184dSLORTET
114b603bbe1SLORTETLes URLs retournées par le helper sont versionnées avec un paramètre ''pi_ts'' basé sur le ''filemtime'' du média.
115b603bbe1SLORTET
116b603bbe1SLORTET===== Notes =====
117b603bbe1SLORTET
118b603bbe1SLORTET  * Le plugin ignore les pages techniques comme ''sidebar'' et ''footer'' lors de l'injection d'icône/favicon, pour éviter qu'un include de layout remplace l'icône de la page courante.
119b603bbe1SLORTET  * L'écran de gestion utilise la configuration actuelle du plugin. Si une configuration obligatoire est vide ou invalide, le plugin émet un warning PHP et n'invente pas de valeur de secours.
120