1# Pagesicon 2 3J'aime beaucoup DokuWiki, mais je l'ai toujours trouvé un peu triste : il manquait une façon simple de mettre de belles icônes sur les pages. 4Avec **pagesicon**, c'est possible. 5 6`pagesicon` est à la fois : 7- un **plugin** (affichage et gestion des icônes), 8- un **helper** (API réutilisable par d'autres plugins, comme `catmenu` et `visualindex`). 9 10## Ce que fait le plugin 11 12- Affiche une icône en haut de la page (`show`), si activé. 13- Peut utiliser l'icône de la page comme favicon d'onglet (`show_as_favicon`). 14- Fournit une page de gestion d'icône par page : `?do=pagesicon`. 15- Gère les variantes `big` et `small`. 16- Notifie les autres plugins quand une icône change via `PLUGIN_PAGESICON_UPDATED` (pour invalider leurs caches). 17 18## Paramètres de configuration 19 20Dans le `Configuration Manager` : 21 22- `icon_name` : noms candidats pour l'icône `big` (séparés par `;`). 23 Supporte `~pagename~`. 24 25- `icon_thumbnail_name` : noms candidats pour l'icône `small` (séparés par `;`). 26 Supporte `~pagename~`. 27 28- `default_image` : image par défaut (mediaID) utilisée uniquement quand le fallback est explicitement activé dans l'API helper. 29 30- `icon_size` : taille (px) de l'icône affichée en haut de page. 31 32- `extensions` : extensions autorisées (séparées par `;`), par exemple `svg;png;jpg;jpeg`. 33 34- `show_on_top` : activer/désactiver l'affichage en haut de page. 35 36- `show_as_favicon` : utiliser l'icône de la page comme favicon. 37 38## Usage 39 40Depuis une page, utiliser l'action `Gérer l'icône` puis uploader/supprimer. 41 42Le plugin travaille sur la **page courante** (`$ID`), pas sur une cible passée en paramètre. 43 44## API helper 45 46Charger le helper : 47 48```php 49$pagesicon = plugin_load('helper', 'pagesicon'); 50``` 51 52### Résolution en mediaID 53 54- `getPageIconId(string $namespace, string $pageID, string $size = 'bigorsmall')` 55 Retourne un mediaID (`ns:file.ext`) ou `false`. 56 57- `getMediaIconId(string $mediaID, string $size = 'bigorsmall')` 58 Retourne le mediaID d'icône pour un média, ou `false`. 59 60`size` accepte : `big`, `small`, `bigorsmall`, `smallorbig`. 61 62### Résolution en URL versionnée 63 64- `getPageIconUrl(string $namespace, string $pageID, string $size = 'bigorsmall', array $params = ['width' => 55], ?int &$mtime = null, bool $withDefault = false)` 65 Retourne une URL d'icône (avec `pi_ts=<filemtime>`) ou `false`. 66 Renseigne aussi `$mtime`. 67 68- `getMediaIconUrl(string $mediaID, string $size = 'bigorsmall', array $params = ['width' => 55], ?int &$mtime = null, bool $withDefault = false)` 69 Retourne une URL d'icône de média (avec `pi_ts=<filemtime>`) ou `false`. 70 Renseigne aussi `$mtime`. 71 72- `getDefaultIconUrl(array $params = ['width' => 55], ?int &$mtime = null)` 73 Retourne l'URL de l'image par défaut configurée, ou `false`. 74 75### URLs de gestion 76 77- `getUploadIconPage(string $targetPage = '')` 78 Retourne l'URL `?do=pagesicon` d'une page, ou `null` si non autorisé. 79 80- `getUploadMediaIconPage(string $mediaID = '')` 81 Retourne l'URL de gestion d'icône associée à un média. 82 83### Notification 84 85- `notifyIconUpdated(string $targetPage, string $action = 'update', string $mediaID = '')` 86 87Effets : 88- met à jour `purgefile`, 89- déclenche l'événement `PLUGIN_PAGESICON_UPDATED`. 90 91Payload : 92- `target_page`, 93- `action`, 94- `media_id`. 95 96Chaque plugin consommateur est responsable de sa propre invalidation de cache. 97 98## Compatibilité des signatures 99 100- Avant `09-03-2025` : 101 - `getPageImage(string $namespace, string $pageID, string $size = 'bigorsmall')` 102 - `getMediaImage(string $mediaID, string $size = 'bigorsmall')` 103 - `getImageIcon(string $namespace, string $pageID, string $size = 'bigorsmall', array $params = ['width' => 55], ?int &$mtime = null)` 104 - `getMediaIcon(string $mediaID, string $size = 'bigorsmall', array $params = ['width' => 55], ?int &$mtime = null)` 105 106La compatibilité est conservée via des alias legacy : 107- `getPageImage(...)` -> `getPageIconId(...)` (le paramètre legacy `$withDefault` est ignoré) 108- `getMediaImage(...)` -> `getMediaIconId(...)` (le paramètre legacy `$withDefault` est ignoré) 109- `getImageIcon(...)` -> `getPageIconUrl(...)` 110- `getMediaIcon(...)` -> `getMediaIconUrl(...)` 111- `getDefaultImageIcon(...)` -> `getDefaultIconUrl(...)` 112