On — moi parfois, d’autres plus souvent — a souvent pesté quand il faut retrouver où se cachent les réglages des plugins qu’on vient juste d’installer, ou qu’on a pas utilisé assez souvent pour avoir mémorisé l’endroit où ça se passe.
Et ça perdure depuis pas mal d’années, surtout avec des installations qui combinent pas mal de plugins.
JCDenis, en développant ses plugins, puis la gestion intégrée des modules dans Dotclear à l’époque, avait inclus la possibilité d’avoir un lien direct vers la configuration d’iceux, quand un fichier _config.php était présent. Ce lien était (et est toujours d’ailleurs) visible dans la liste affichée sur la page de gestion des plugins.
Excellente idée, mais pas applicable partout, surtout pour des plugins qui ne font qu’ajouter une petite option ici, par exemple sur la page des paramètres du blog, ou là, par exemple sur la page des préférences utilisateur.
Du coup je viens de coder quelque chose de plus souple (sans d’ailleurs remettre en question ce qu’avait fait JCDenis) et qui permet de définir les autres endroits où des réglages peuvent être faits.
Dans le détail ça donne cela :
Définitions
Il faut définir dans le fichier _define.php du plugin une propriété supplémentaire, nommée settings et qui se construit de la façon suivante :
… 'settings' => array( 'self' => '', 'blog' => '#params.id', 'pref' => '#user-options.id' )
La ligne avec ‘self’ permet d’indiquer qu’il y a des réglages sur la page principale du plugin (c’est-à-dire pour les développeurs, dans le fichier index.php).
La ligne avec ‘blog’ permet d’indiquer qu’il y a des réglages dans les paramètres du blog, normalement sur l’onglet « Paramètres » (le #params sert à ça) et que le premier élément concernant le plugin a un identifiant égal à id (on peut par exemple positionner cet id sur l’élément de titre, h4 ou h5, qui précède les options du plugin).
La ligne avec ‘pref’ permet d’indiquer qu’il y a des réglages dans les préférences utilisateur, normalement sur l’onglet « Mes options » (le #user-options sert à ça) et que le premier élément concernant le plugin a un identifiant égal à id.
Vous pouvez, et même devez, ne préciser que les lignes qui sont pertinentes (voir les exemples ci-dessous).
Il n’est pas obligatoire de préciser l’id, dans ce cas il suffit de préciser simplement l’onglet. Il n’est pas non plus obligatoire de préciser l’onglet, dans ce cas laisser simplement une chaine vide (”).
Les liens seront affichés dans l’ordre où ils sont définis dans la propriété ‘settings’.
Nota : À cette liste de lien sera ajoutée en premier, s’il existe, le lien vers le fichier _config.php du plugin.
Affichage
L’affichage des URLs de réglage se font à deux endroits :
- Sur la page de gestion des plugins, en dépliant les infos supplémentaires (il suffit de cliquer sur le nom du plugin pour les obtenir)
- Sur chacune des pages principales des plugins, à condition d’avoir les droits pour y accéder aux différents réglages, sachant que ce qui est définit pour ‘self’ ne sera pas affiché (a priori on y est déjà).
Exemples de définition
Plugin Antispam
'settings' => array( 'self' => '', 'blog' => '#params.antispam_params' )
- self → accès aux réglages principaux du plugin sur sa propre page (index.php)
- blog → accès aux réglages secondaires dans les paramètres du blog
Plugin Mot-clés
'settings' => array( 'pref' => '#user-options.tags_prefs' )
- pref → accès au réglage du format de liste des mot-clés dans les préférences utilisateur
Plugin Maintenance
'settings' => array( 'self' => '#settings' )
- self → accès à l’onglet “Réglages” de la propre page du plugin (index.php)
Conclusion
Ça sera donc dans la prochaine version 2.11 de Dotclear \o/
1 De Cunégonde -
Si tu le dis.
2 De Philippe -
Sympa comme évolution. Toutefois, un ch’tit exemple avec un fichier define.php complet ne serait pas de refus ;)
3 De Franck -
Exemple presque complet du Plugin dcCKEditor :
4 De Philippe -
Ben j’ai fait ça, mais le lien magique dans Gestion des plugins n’est pas apparu…
5 De Franck -
Avec la 2.11-dev ?
6 De Philippe -
Oui, avec la révision 3331. Je viens de mettre à jour à la 3335, et les liens apparaissent maintenant. Mais il y a encore un problème, qui vient peut-être de moi : quand je clique sur “Gérer le plugin” je suis redirigé vers
…/dotclear/admin/plugin.php?p=myGmaps
mais j’obtiens “Aucun contenu pour ce plugin.” Idem avec le second lien.
C’est peut-être parce que le fichier index.php est un peu particulier, en cela qu’il redirige vers d’autres sous-pages (le plugin est un poil compliqué…) selon la requête ? Par exemple pour la configuration, l’adresse est
…/dotclear/admin/plugin.php?p=myGmaps&do=list#settings
7 De Franck -
Ah oui, ce n’est pas un cas prévu, peut-être un peu trop spécifique, non ?
Tu peux toujours, dans ton fichier index.php rediriger vers &do=list#settings en l’absence de paramètres dans l’URL (via le $_GET), non ?
8 De Franck -
Quant à ton second lien, je suppose que c’est celui des Réglages du plugin, remplace #settings par &do=list#settings dans la ligne ‘self’ => …
9 De Philippe -
C’est bon pour le second lien :) je regarde pour le premier.
10 De JcDenis -
Sympa l’idée.
J’ajouterais la gestion d’un petit “self => FALSE”, pour ceux qui ont de plugins tordus et qui bien qu’aillant un index ou autre ne veulent pas le montrer :p
11 De Franck -
JcDenis pas utile, il suffit de ne pas mettre la ligne
self => …
12 De JcDenis -
Tu vois j’ai pas encore reconnecter tous mes (vieux) neurones… :)