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