[spip-dev] r15683

Discussion sur spip-dev plutôt.

passer par une fonction pour pouvoir spécifier la page de configuration me parait aller à l'encontre du but visé qui est de permettre de faire un plugin avec une page de configuration sans devoir (ni savoir) écrire de php.

Je suis aussi insatifait, mais j'étais perplexe devant l'avalanche de tests conditionant la configuration qui au final se résumait à: soit "?exec=cfg&fond=$PLUGIN" soit .... RIEN. Là au moins on a la possibilité d'aiguiller vers autre chose que CFG, ce qui était quand même une étape obligée vu le code complètement vissé à CFG qu'il y avait auparavant.

Il vaudrait mieux que<config></config> spécifie simplement le nom de la page de config (nom de l'exec), en le limitant de facto à un possible.

Bah non parce que ça veut dire écrire du PHP.

Où ?
Sauf cas (très) particuliers, il est recommandé de ne plus écrire ses exec en PHP mais en HTML, comme cela est documenté sur programmer.spip.org. Donc on peut d'ors et déjà n'indiquer qu'une URL de l'espace privé (ou le nom de l'exec comme dit Cédric) et n'avoir à faire que du HTML. Sauf pour la partie traitement du formulaire, qui n'est pas encore fait (enregistrement auto dans une table metas), mais ça va venir.

Je pense que le but final est plutôt d'indiquer le formulaire CVT chargé de remplir les metas du plugin, qu'on pourrait même inclure en Ajax dans la page admin_plugin.

À mon sens on ne devrait vraiment pas se diriger dans cette direction : le bouton de configuration qui se trouve sur cette page est déjà un *raccourci* qui pourrait parfaitement ne pas exister du tout.

Le chemin "logique" pour arriver à une page de configuration, c'est dans les menus du bandeau ou onglet quelque part. C'est-à-dire que c'est à l'auteur du plugin de placer explicitement sa nouvelle page de configuration à un endroit qu'il trouvera le plus logique possible.

Actuellement le plugin CFG fait une page où il liste avec des onglets toutes les pages de config existantes (fonction dont tu parles plus bas je crois) : c'est le même principe que le raccourci sur la page d'admin des plugins. C'est-à-dire que c'est un fourre-tout automatique qui n'aura pas de sens logique, surtout quand on parle de réorganisation du bandeau (qui est déjà un chantier existant). Tel plugin aura sa config plus à sa place en sous-menu de tel gros boutons, d'autre à l'intérieur d'une page existante (par exemple dans la config de "Contenu du site"), etc. Le placement des pages est donc à faire au cas par cas. Bien sûr on peut aussi faire un truc automatique en parallèle, mais alors uniquement pour quelque chose de non-obligatoire, qui vient en plus pour aider, comme les boutons raccourcis.

Au passage je trouve qu'il y a des incohérences dans l'interface de programmation puisque certaines infos sont cherchées dans plugin.xml et d'autres sont écrites en dur dans le code (genre la fonction d'install == $nom_plugin . '_install'). Il faudrait être plus précis dans ce qu'on attend de plugin.xml.

Même si on pourrait accepter plusieurs<config>, ce raccourci ne saurait être qu'un raccourci vers une page accessible par ailleurs par le menu de configuration. Son existence est déjà en soi discutable, il serait de toute façon ergonomiquement aberrant de mettre là une pléthore de boutons de config.

Ben justement la fonction liste_onglet_cfg permet ça. Moi aussi je trouve ça aberrant

Cool on est tous d'accord en fait. :slight_smile:

, mais mon souci était de ne pas casser la compatibilité CFG, et d'offrir une migration facile vers les métas généralisées.

Je suis le premier à dire que CFG est un marteau-pilon pour écraser une mouche et qu'il faut le remplacer par qqch de beaucoup plus léger intégré au noyau, mais je rappelle tout de même qu'il s'agit de sortir la version 2.1.1, la version 2.1.0 étant par ma faute bancale sur ces histoires de MAJ de plugins via maj_while. Si on va plus loin maintenant, alors c'est vraiment une fonctionnalité nouvelle et on sort une 2.2. Là, je pense que c'est juste une échappée permettant à ceux qui savent coder en PHP d'expérimenter de nouveaux outils de configuration, en attendant de dégager des outils communs à mettre dans le noyau.

Si ça t'ennuie qu'il y ait une nouvelle entrée dans plugin.xml dont la signification risque de bouger, on peut la retirer et convenir de chercher la fonction $nom_plugin . '_config' (cf remarque ci-dessus), en attendant que les choses se clarifient.

Effectivement, ça parait un peu bizarre à partir du moment où ce n'est pas juste commité dans la branche 2.2 mais déjà dans la 2.1 utilisable par tous. Personnellement ça ne me dérange pas du tout d'introduire de nouvelles fonctionnalités en 2.1 tant que ce sont de petites choses, surtout que là c'est plus une amélioration, une généralisation, d'un truc existant. Mais ça vaut uniquement si on dit que ça ne bouge plus trop ensuite, car comme la 2.2 ne va pas sortir tout de suite, cette nouvelle chose va déjà commencer à être utilisée par des développeurs de plugins.

En résumé, mon avis c'est :
- soit on enlève <config> pour l'instant
- soit on y met plutôt une simple URL unique comme le dit Cédric
- et pas d'automatisme dans les menus ou onglets à part pour les boutons de raccourcis

Sauf cas (très) particuliers, il est recommandé de ne plus écrire ses exec en PHP mais en HTML, comme cela est documenté sur programmer.spip.org. Donc on peut d'ors et déjà n'indiquer qu'une URL de l'espace privé (ou le nom de l'exec comme dit Cédric) et n'avoir à faire que du HTML. Sauf pour la partie traitement du formulaire, qui n'est pas encore fait (enregistrement auto dans une table metas), mais ça va venir.

Tout est dans le "sauf": je repéte que dans le cadre d'une 2.1.1 il était impératif d'intervenir a minima.

Le chemin "logique" pour arriver à une page de configuration, c'est dans les menus du bandeau ou onglet quelque part. C'est-à-dire que c'est à l'auteur du plugin de placer explicitement sa nouvelle page de configuration à un endroit qu'il trouvera le plus logique possible.

Là-dessus je ne suia pas d'accord. La configuration d'un plugin est une opération rare et faite en début de prise en main du plugin, il est donc souhaitable que l'ergonomie de cette opération obéisse à la logique de SPIP et non à la logique de ce plugin particulier, laquelle n'est forcément pas encore familière à ce stade. C'est pourquoi je pense que le plus rationnel est de donner l'accès à cette page de config directement dans le cartouche du plugin dans "admin_plugin": on installe et dans la foulée on configure, ça tombe sous le clic.

En résumé, mon avis c'est :
- soit on enlève <config> pour l'instant
- soit on y met plutôt une simple URL unique comme le dit Cédric

En l'état il vaut mieux enlever "<config>" et le remplacer par $nom_plugin . "_config" avec un function_exists dessus pour rebasculer sur CFG en cas de réponse négative.

- et pas d'automatisme dans les menus ou onglets à part pour les boutons de raccourcis

Pas sûr de comprendre ce que tu veux dire. Actuellement on est obligé de donner dans <config> un exec qui est une version simplifiée de exec/cfg, par exemple:

cette page de CFG affichant un pseudo-squelette comportant le bandeau habituel de l'espace privé plus le formulaire de configuration. Si on veut éviter toute écriture de PHP sans recourir à CFG, ce qui tombe sous le sens c'est d'indiquer alors un formulaire CVT (c'est d'ailleurs ce que recommande Mathieu dans le changelog de CFG). De nouveau on peut le faire par "<config>" ou par un nom conventionnel (#FORMULAIRE_CONFIGURE_$plugin ou autre), mais c'est un point secondaire. Au passage, ce formulaire peut se réduire à un simple A+Href sur l'URL souhaitée par Cédric et toi.

Committo,Ergo:Sum

Sauf cas (très) particuliers, il est recommandé de ne plus écrire ses exec en PHP mais en HTML, comme cela est documenté sur programmer.spip.org. Donc on peut d'ors et déjà n'indiquer qu'une URL de l'espace privé (ou le nom de l'exec comme dit Cédric) et n'avoir à faire que du HTML. Sauf pour la partie traitement du formulaire, qui n'est pas encore fait (enregistrement auto dans une table metas), mais ça va venir.

Tout est dans le "sauf": je repéte que dans le cadre d'une 2.1.1 il était impératif d'intervenir a minima.

Le chemin "logique" pour arriver à une page de configuration, c'est dans les menus du bandeau ou onglet quelque part. C'est-à-dire que c'est à l'auteur du plugin de placer explicitement sa nouvelle page de configuration à un endroit qu'il trouvera le plus logique possible.

Là-dessus je ne suia pas d'accord. La configuration d'un plugin est une opération rare et faite en début de prise en main du plugin, il est donc souhaitable que l'ergonomie de cette opération obéisse à la logique de SPIP et non à la logique de ce plugin particulier, laquelle n'est forcément pas encore familière à ce stade. C'est pourquoi je pense que le plus rationnel est de donner l'accès à cette page de config directement dans le cartouche du plugin dans "admin_plugin": on installe et dans la foulée on configure, ça tombe sous le clic.

Non, c'est un usage possible, mais pas le cas général. Typiquement le plugin mediabox que j'ai mis en ligne il y a peu a sa page de config utilisable a tout moment.
A partir du moment ou on extrait des fonctions en plugin, en défenant que c'est transparent, l'endroit où trouver la configuration de la fonction ne doit pas dépendre de l'architecture sous jacente.
Dans certains cas cela peut être un bouton d'accès à une page trouvable uniquement dans admin_plugin, comme tu le dis, mais dans la plupart des cas ce sera juste un raccourci, à mon avis.

En résumé, mon avis c'est :
- soit on enlève <config> pour l'instant
- soit on y met plutôt une simple URL unique comme le dit Cédric

En l'état il vaut mieux enlever "<config>" et le remplacer par $nom_plugin . "_config" avec un function_exists dessus pour rebasculer sur CFG en cas de réponse négative.

- et pas d'automatisme dans les menus ou onglets à part pour les boutons de raccourcis

Pas sûr de comprendre ce que tu veux dire. Actuellement on est obligé de donner dans <config> un exec qui est une version simplifiée de exec/cfg, par exemple:

Connexion · GitLab

cette page de CFG affichant un pseudo-squelette comportant le bandeau habituel de l'espace privé plus le formulaire de configuration. Si on veut éviter toute écriture de PHP sans recourir à CFG, ce qui tombe sous le sens c'est d'indiquer alors un formulaire CVT (c'est d'ailleurs ce que recommande Mathieu dans le changelog de CFG).

Non, pas un formulaire, mais une page qui peut contenir plusieurs formulaires et d'autres choses encore. Un formulaire n'est pas une page, c'est une approximation faites par CFG de laquelle il faut sortir si on casse CFG, car c'en est une limitation.

Cédric

CFG n'a pas cette limitation mais propose en fait un autre type de squelette, ce qui est une autre de ses aberrations et c'est pour permette leur réécriture facilement que j'ai étendu tout récemment la balise #PLUGIN. Mais j'ai eu tort de parler de formulaire ici, puisque comme je le disais ça pouvait être aussi un simple A+Href, je voulais donc dire plutôt un squelette. S'il se réduit à
<div class='cfg_lign'><a href='./?exec=...>Configurer</a></div>
on est ramené au exec que tu demandes et qui est ce que fait actuellement plugins/afficher_plugin avec exec=cfg;
mais si on ramène un
<div clas='ajax'>....</div>
on configure sur place.

Donner ce choix au développeur de plugin est justement lui demander le moins possible à savoir sur PHP et l'usage qu'en fait SPIP: la notion de 'exec=..." implique la connaissance de beaucoup de choses, tandis que dans le 2e cas on a à connaitre que la syntaxe des squelettes. Je ne comprends donc pas ce qui te fait dire que ta solution demande à connaître moins de PHP que la mienne, il me semble que c'est l'inverse.

Committo,Ergo:Sum

Hello,

Puisqu'on parle de généraliser le mécanisme de mise en œuvre de la configuration de plugins, serait-il envisageable d'inclure dans la réflexion les mécanismes d'autorisation ?

Par exemple, pouvoir indiquer deux pages de configuration dans plugin.xml, tout en indiquant au passage qui a le droit d'y accéder. Par exemple la config purement technique pour l'administrateur et une config plus fonctionnelle pour un administrateur restreint...

-Nicolas

Non attention ce n'est pas exactement de ça dont on parle aujourd'hui, il y a un effet boule de neige qu'il faut stopper.

Tout est parti d'une commodité de partage de code entre les plugins et le noyau quant à la mise à jour du schéma des tables SQL, qui au final a débouché sur la question de l'endroit où on place l'info "version_base", et il s'est révélé qu'il y avait un manque de souplesse ici puisque CFG était référencé en dur dans le noyau. Dans le cadre de la 2.1.1. il s'agit juste de discuter de l'interface entre le noyau et n'importe quel configurateur.

Committo,Ergo:Sum

Pour la 2.1.1 OK, mais autant préparer le futur en allant tout de suite dans la bonne direction. J'apportais juste un peu d'eau au moulin...

-Nicolas

Effroyable! Ca voudrait dire qu'il n'y aurait plus moyen de faire une généralisation pour les admins pas trop au courant du fonctionnement de SPIP en leur proposant *une* page avec accès aux interfaces de configuration de *tous* les plugins? Grave régression pour les webmestres non-geek amha...

Ben non c'est le contraire de geek puisque le but c'est justement de vouloir proposer un chemin logique aux utilisateurs et non une page fourre-tout qui mélangerait des choses n'ayant rien à voir, tout ça parce que ça serait de la "configuration".

Bizarre en plus de parler de truc de geek alors même qu'actuellement tout est mis dans une page "CFG" qui ne signifie rien pour les gens, ce nom étant typiquement un truc interne de développeur.

Dans la majorité des cas, les pages iraient effectivement dans un endroit simple du type sous-menu de Configuration => Mon truc. On retrouve bien là le regroupement que tu attends : il y a une entrée principale "Configuration", c'est pas fait pour rien.

Mais dans plusieurs cas, ça ne serait pas là. Un nouvel objet éditorial par exemple, ira plutôt dans Configuration => Contenu du site (cf sur Contrib).

Bref c'est à voir au cas par cas.

Mais évidemment je dirais que si on ne met rien, par défaut ça va dans Configuration => Mon truc.

J'ai l'impression qu'on se fait une montagne de ce qui n'est que le chemin d'accès à une autre montagne.

La seule chose en discussion de mon point de vue est de remplacer le minuscule bout de code du noyau qui, depuis la 2.0.0, considère que le seul moyen de configurer un plugin est d'utiliser le plugin CFG, code consistant en une inclusion explicite d'un fichier de CFG et en un appel d'une fonction extraite de ce fichier, sans aucune généralisation genre "charger_fonction" ou autre. J'ai juste mis à part ce bout de code en le nommant "plugin_bouton_cfg", et j'ai rajouté la généraliation qui manquait en allant chercher dans plugin.xml une entrée nommée "config". Si elle n'existe pas, alors on appelle "plugin_bouton_cfg" comme d'habitude, sinon on appelle la fonction indiquée, qui doit retourner un résultat équivalent à "plugin_bouton_cfg".

A partir de là, deux questions assez indépendantes.

1. est-ce raisonnable d'utiliser plugin.xml pour mettre une information dont les spécifications sont assez floues ("retourner un résultat équivalent à plugin_bouton_cfg" c'est pas une spec) ? Une première discussion avec Cédric avait abouti à ça, mais finalement, de même qu'on teste l'existence des fonctions $plugin . '_install', $plugin . '_upgrade' etc, on devrait tester $plugin . '_config' car c'est du même ordre d'idée.

2. qu'elle est la spécification précise des fonctions devant ressembler à plugin_bouton_cfg, et doit-on la définir comme étant ce que fait celle-ci pour CFG, ou bien en profite-t-on pour faire évoluer ça ? Actuellement, cette fonction retourne une balise Div de style float-right, contenant une (voire plusieurs) balises A menant à une page de config gérée, donc, par CFG, lequel gère ici un système de squelettes qui n'est pas celui de SPIP mais une variante.

Dans le cadre de la sortie d'une 2.1.1 il me semble raisonnable d'en faire un minimum, donc d'une de part de statuer sur la question 1, d'autre part de se conformer à la spec implicite qui consiste en gros à demander que ces fonctions retournent en résultat un bout de code HTML contenant un lien vers une page de configuration.

Si on en reste là, on ménage un avenir qui pourrait être, mais pas forcément, un résultat qui serait plus que du HTML, savoir un vrai squelette, et qui pourrait, mais pas forcément, contenir dans sa bailise A un onclick avec du AJAX plutôt que de quitter la page générale. Cet avenir a ma préférence parce qu'il me parait évident que la variante de squelette de CFG doit être remplacée par le système habituel, et en opérant à cet endroit il serait relativement facile de développer un outil de migration des squelettes de CFG vers des squelettes normaux. Mais j'insiste sur le fait que cette deuxième partie n'est ni obligatoire ni urgente.

Effroyable! Ca voudrait dire qu'il n'y aurait plus moyen de faire une
généralisation pour les admins pas trop au courant du fonctionnement de
SPIP en leur proposant *une* page avec accès aux interfaces de
configuration de *tous* les plugins? Grave régression pour les
webmestres non-geek amha...

Ben non c'est le contraire de geek puisque le but c'est justement de
vouloir proposer un chemin logique aux utilisateurs et non une page
fourre-tout qui mélangerait des choses n'ayant rien à voir, tout ça
parce que ça serait de la "configuration".

ça rentre quand même dans la logique de plein de logiciels "classiques" dans lesquels tu as accès à toutes les options de configuration par une seule entrée de menu (classiquement "Outils > Options" ou "Edition > Préférences").
Ceci dit je ne suis pas du tout crispé là dessus mais j'observe juste que lors des nombreuses formations de webmestres de SPIP d'établissement scolaires (donc de gens qui se retrouvent admins sans vraiment l'avoir souhaité...), pouvoir leur donner l'indic que "le sous-menu CFG des batteurs à oeufs" permet d'arriver sur l'interface de configuration de *tous les plugins* était une simplification assez rassurante par son côté systématique...

Bizarre en plus de parler de truc de geek alors même qu'actuellement
tout est mis dans une page "CFG" qui ne signifie rien pour les gens, ce
nom étant typiquement un truc interne de développeur.

en même temps il y a tellement de trucs qui ne sont pas spécialement triviaux à saisir lorsque tu attaque l'admin d'un SPIP sans avoir jamais touché une appli web que celui là n'est pas le plus contre-intuitif...

Mais évidemment je dirais que si on ne met rien, par défaut ça va dans
Configuration => Mon truc.

oui, du point de vue du dev de plugin qui ne veut/sait pas faire une intégration dans un menu précis ça semble le choix le "moins pire"

Je retransmet depuis le forum, au cas où :

Depuis la mise à jour d’un site sous 2.1, les utilisateurs se plaignent d’avoir les champs de saisie du formulaire "Modification Auteur" tronqués (réduits à un mince rectangle vertical) sous IE7.

Après install en local (sous Wamp) de 2 versions vierges 2.0.10 et 2.1.0 (sans plugins additionnels) j’arrive à reproduire le problème sur la version 2.1.0 sous IE7. La version 2.0.10 marche quant à elle.

Je n’ai pas trouvé de bug connu à ce niveau, y a-t-il eu des changements de CSS qui aurait pu casser la compatibilité IE7 dans ce seul cas (la création d’auteur elle, fonctionne toujours) ?

A noter que l'install de Spip Bonux qui reprend je crois les css des formulaires fait disparaitre cet inconvénient.

(évidemment les utilisateurs refusent de migrer au moins sur IE8, ça fait si peu de temps qu'ils ont enfin abandonné IE6 :wink: )

. Pierre .