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 8a3ea184dSLORTETlastupdate : 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 ; 31*c8e99a27SLORTET * d'afficher une icône devant les liens internes wiki ; 32b603bbe1SLORTET * de gérer les icônes depuis l'action de page ''?do=pagesicon'' ; 33b603bbe1SLORTET * de gérer deux variantes : ''big'' et ''small'' ; 34b603bbe1SLORTET * d'exposer un helper pour les autres plugins. 35b603bbe1SLORTET 36b603bbe1SLORTETLe plugin travaille sur la page courante. Il n'y a pas de cible externe à saisir pour l'écran de gestion. 37b603bbe1SLORTET 38b603bbe1SLORTET===== Paramètres ===== 39b603bbe1SLORTET 40b603bbe1SLORTET^ Nom ^ Description ^ Valeur par défaut ^ 41b603bbe1SLORTET| icon_name | Noms candidats pour l'icône ''big'' (séparés par '';''). Supporte ''~pagename~''. | ''~pagename~;icon_thumbnail;icon'' | 42b603bbe1SLORTET| icon_thumbnail_name | Noms candidats pour l'icône ''small'' (séparés par '';''). Supporte ''~pagename~''. | ''~pagename~;icon'' | 43b603bbe1SLORTET| default_image | Image par défaut (mediaID), utilisée seulement quand une méthode helper demande explicitement un fallback. | '''' | 44b603bbe1SLORTET| icon_size | Taille de l'icône affichée en haut de page (px). | ''55'' | 45b603bbe1SLORTET| extensions | Extensions d'images autorisées (séparées par '';''). | ''svg;png;jpg;jpeg'' | 46b603bbe1SLORTET| show_on_top | Afficher l'icône en haut de page. | ''true'' | 47b603bbe1SLORTET| show_as_favicon | Utiliser l'icône comme favicon. | ''true'' | 48a3ea184dSLORTET| 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'' | 49*c8e99a27SLORTET| link_icons | Afficher une icône devant les liens internes : ''none'' (désactivé), ''existing'' (pages existantes uniquement), ''all'' (toutes les pages). | ''none'' | 50b603bbe1SLORTET 51b603bbe1SLORTET===== Utilisation ===== 52b603bbe1SLORTET 53b603bbe1SLORTETDepuis une page, utiliser l'action **Gérer l'icône** puis : 54b603bbe1SLORTET * importer une icône ''big'' ; 55b603bbe1SLORTET * importer une icône ''small'' ; 56b603bbe1SLORTET * supprimer l'icône actuelle. 57b603bbe1SLORTET 58b603bbe1SLORTETLe formulaire : 59b603bbe1SLORTET * calcule les noms de fichiers autorisés à partir de la configuration ; 60b603bbe1SLORTET * limite les extensions à la liste configurée ; 61b603bbe1SLORTET * ouvre le gestionnaire de médias sur le namespace de la page. 62b603bbe1SLORTET 63b603bbe1SLORTET===== API Helper ===== 64b603bbe1SLORTET 65b603bbe1SLORTETCharger le helper : 66b603bbe1SLORTET''$pagesicon = plugin_load('helper', 'pagesicon');'' 67b603bbe1SLORTET 68b603bbe1SLORTET==== Méthodes principales ==== 69b603bbe1SLORTET 70b603bbe1SLORTET^ Méthode ^ Depuis ^ Description ^ 71b603bbe1SLORTET| ''getPageIconId($namespace, $pageID, $size = 'bigorsmall')'' | ''2026-03-09'' | Retourne le mediaID de l'icône d'une page, ou ''false''. | 72b603bbe1SLORTET| ''getMediaIconId($mediaID, $size = 'bigorsmall')'' | ''2026-03-09'' | Retourne le mediaID de l'icône associée à un média, ou ''false''. | 73b603bbe1SLORTET| ''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''. | 74b603bbe1SLORTET| ''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''. | 75b603bbe1SLORTET| ''getDefaultIconUrl($params = ['width' => 55], &$mtime = null)'' | ''2026-03-09'' | Retourne l'image par défaut à utiliser quand aucune icône n'est trouvée. | 76b603bbe1SLORTET| ''getUploadIconPage($targetPage = "")'' | ''2026-03-06'' | Retourne l'URL ''?do=pagesicon'' d'une page, ou ''null'' si non autorisé. | 77b603bbe1SLORTET| ''getUploadMediaIconPage($mediaID = "")'' | ''2026-03-06'' | Retourne l'URL de gestion d'icône associée à un média. | 78b603bbe1SLORTET| ''notifyIconUpdated($targetPage, $action = "update", $mediaID = "")'' | ''2026-03-06'' | Déclenche l'événement d'invalidation de cache. | 79b603bbe1SLORTET| ''isPageIconMedia($mediaID)'' | ''2026-03-11'' | Indique si un média doit être considéré comme une icône gérée par le plugin. | 80b603bbe1SLORTET 81b603bbe1SLORTET===== Événement ===== 82b603bbe1SLORTET 83b603bbe1SLORTETLors d'un upload ou d'une suppression, le plugin émet : 84b603bbe1SLORTET * ''PLUGIN_PAGESICON_UPDATED'' 85b603bbe1SLORTET 86b603bbe1SLORTETPayload : 87b603bbe1SLORTET * ''target_page'' 88b603bbe1SLORTET * ''action'' 89b603bbe1SLORTET * ''media_id'' 90b603bbe1SLORTET 91b603bbe1SLORTETLes plugins consommateurs restent responsables de leur propre invalidation de cache. 92b603bbe1SLORTET 93b603bbe1SLORTET===== Compatibilité ===== 94b603bbe1SLORTET 95b603bbe1SLORTETLes anciennes signatures de l'API sont conservées via des alias legacy. 96b603bbe1SLORTET 97b603bbe1SLORTET^ Alias historique ^ Ajout ^ Déprécié ^ Remplacement ^ 98b603bbe1SLORTET| ''getPageImage(...)'' | ''2026-03-06'' | ''2026-03-09'' | ''getPageIconId(...)'' | 99b603bbe1SLORTET| ''getMediaImage(...)'' | ''2026-03-06'' | ''2026-03-09'' | ''getMediaIconId(...)'' | 100b603bbe1SLORTET| ''getImageIcon(...)'' | ''2026-03-06'' | ''2026-03-09'' | ''getPageIconUrl(...)'' | 101b603bbe1SLORTET| ''getMediaIcon(...)'' | ''2026-03-06'' | ''2026-03-09'' | ''getMediaIconUrl(...)'' | 102b603bbe1SLORTET| ''getDefaultImageIcon(...)'' | ''2026-03-09'' | ''2026-03-09'' | ''getDefaultIconUrl(...)'' | 103b603bbe1SLORTET 104b603bbe1SLORTET===== Fonctionnement ===== 105b603bbe1SLORTET 106b603bbe1SLORTETLa résolution d'une icône suit l'ordre défini par la configuration : 107b603bbe1SLORTET * noms configurés pour la variante demandée ; 108*c8e99a27SLORTET * remplacements de ''~pagename~''. 109b603bbe1SLORTET 110a3ea184dSLORTETSi aucune icône n'est trouvée sur la page elle-même, le plugin peut aussi hériter : 111a3ea184dSLORTET * d'aucune icône ; 112a3ea184dSLORTET * de l'icône du parent direct ; 113a3ea184dSLORTET * de la première icône trouvée en remontant les parents. 114a3ea184dSLORTET 115b603bbe1SLORTETLes URLs retournées par le helper sont versionnées avec un paramètre ''pi_ts'' basé sur le ''filemtime'' du média. 116b603bbe1SLORTET 117b603bbe1SLORTET===== Notes ===== 118b603bbe1SLORTET 119b603bbe1SLORTET * 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. 120b603bbe1SLORTET * 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. 121