xref: /plugin/pagesicon/README.md (revision da933f899c3fc9c630c3a0106c319fb606ed9385)
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`.
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- `icon_size` : taille (px) de l'icône affichée en haut de page.
29
30- `extensions` : extensions autorisées (séparées par `;`), par exemple `svg;png;jpg;jpeg`.
31
32- `show_on_top` : activer/désactiver l'affichage en haut de page.
33
34- `show_as_favicon` : utiliser l'icône de la page comme favicon.
35
36## Usage
37
38Depuis une page, utiliser l'action `Gérer l'icône` puis uploader/supprimer.
39
40Le plugin travaille sur la **page courante** (`$ID`), pas sur une cible passée en paramètre.
41
42## API Helper
43
44Charger le helper :
45
46```php
47$pagesicon = plugin_load('helper', 'pagesicon');
48```
49
50### Résolution En mediaID
51
52- `getPageImage(string $namespace, string $pageID, string $size = 'bigorsmall')`
53  Retourne un mediaID (`ns:file.ext`) ou `false`.
54
55- `getMediaImage(string $mediaID, string $size = 'bigorsmall')`
56  Retourne le mediaID d'icône pour un média, ou `false`.
57
58`size` accepte : `big`, `small`, `bigorsmall`, `smallorbig`.
59
60### Résolution En URL Versionnée
61
62- `getImageIcon(string $namespace, string $pageID, string $size = 'bigorsmall', array $params = ['width' => 55], ?int &$mtime = null)`
63  Retourne une URL d'icône (avec `pi_ts=<filemtime>`) ou `false`.
64  Renseigne aussi `$mtime`.
65
66- `getMediaIcon(string $mediaID, string $size = 'bigorsmall', array $params = ['width' => 55], ?int &$mtime = null)`
67  Retourne une URL d'icône de média (avec `pi_ts=<filemtime>`) ou `false`.
68  Renseigne aussi `$mtime`.
69
70### URLs De Gestion
71
72- `getUploadIconPage(string $targetPage = '')`
73  Retourne l'URL `?do=pagesicon` d'une page, ou `null` si non autorisé.
74
75- `getUploadMediaIconPage(string $mediaID = '')`
76  Retourne l'URL de gestion d'icône associée à un média.
77
78### Notification
79
80- `notifyIconUpdated(string $targetPage, string $action = 'update', string $mediaID = '')`
81
82Effets :
83- met à jour `purgefile`,
84- déclenche l'événement `PLUGIN_PAGESICON_UPDATED`.
85
86Payload :
87- `target_page`,
88- `action`,
89- `media_id`.
90
91Chaque plugin consommateur est responsable de sa propre invalidation de cache.
92