[spip-dev] [Spip-zone-commit] r119082 - in _plugins_/saisies/trunk

oui et non :slight_smile:

Comme d’habitude tout est toujours histoire de compromis…
Et donc les options sont :

- insérer le JS sur toutes les pages du sites : dispendieux, puisque ça veut dire que ce JS sera intégré sur tous les sites de la terre qui utilisent le plugin saisies, sur toutes les pages du sites, alors qu’il n’est utilisé que sur quelques formulaires de quelques sites

- insérer le JS sur les pages concernées -> définitivement ce qu’il faut faire
du coup deux méthodes possibles :
- on gère dans affichage_final pour voir les pages où le JS est requis via un strpos sur affichage_final (ce qui est fait). Ça a certes un petit coup perfo, mais très minime car un strpos sur du texte c’est très rapide. Du coup pour toutes les pages qui n’ont pas besoin de ce JS (99,9%) c’est indolore. Pour les quelques pages qui utilisent ce JS c’est plus couteux, mais ça reste marginal
- on insère du JS dans la saisie, qui sera inséré avec chaque saisie de ce type donc, et un mécanisme de loader qui gère les cas multiples proprement (aka la première saisie de la page doit charger le JS et uniquement elle, et se charger d’initialiser toutes les saisies concernées).
C’est aussi possible, mais plus complexe à mettre en place et à maintenir. Il y a un bon exemple sur gis, dont j’avais refait le JS sur ce modèle là.
Ici l’avantage est que tout est en cache, pas de travail supplémentaire sur le serveur, mais au prix d’une complexité accrue sur le JS et la maintenance et c’est très facile de le péter…

je pensais plus au pipeline fond_formulaire

oui mais que ce soit sur saisies ou fond_formulaire, tu es obligé de mettre en place des dispositifs JS élaborés pour gérer les occurrences multiples (il peut y avoir 2 formulaires avec une saisie de ce type sur la même page), et avec les chargements/rechargements ajax du fond lorsqu’on interragit sur un formulaire ça complique beaucoup de choses (aka, dans le PHP tu n’as aucun moyen de savoir si il y a d’autres occurences sur la même page).

Donc techniquement le plus simple est bien affichage_final, car là tu es certain d’insérer une et une seule fois et seulement si nécessaire le JS dans la page.

Ça peut aussi poser problème, et on l'a présentement sur un site : la saisie peut ne pas exister au chargement d'une page, donc aucun JS inséré, mais exister suite à un rechargement ajax d'un bloc, et paf ya pas le JS nécessaire. :frowning:

Du coup il me semble que c'est quand même plus robuste d'avoir un chargement à la volée demandé par la saisie elle-même en interne pour celles qui en ont besoin. Mais il faudrait une documentation de tuto officielle pour dire comment faire, quelle est la meilleure pratique (une doc de SPIP je veux dire, pas de Saisies, pour tous les plugins qui ont ce besoin de chargement dynamique).

Ah oui, c’est un autre cas ça, et maintenant que tu le dis c’est pour ça que j’avais refait gis je crois :stuck_out_tongue: