Gilles Vincent a écrit :
oups, je suis vraiment à la masse pour les plugins 
Gilles Vincent wrote:
> Hop,
>
> Personnellement j'avoue ne pas trop comprendre à quoi sert cette
balise.
>
> J'ajoute effectivement jquery à la main pour les pages qui
> l'utilisent. Un
> plugin peut toujours ajouter jquery si celui-ci n'est pas défini (ça
> se fait
> par un test javascript), non ?
Ben oui, mais on est chez le client là , c'est trop tard...
Non je ne pense pas. Si l'élément manquant est appelé dans ready(), il faut simplement ajouter les éléments manquants avant que le DOM ne soit complète (comme le fait la librairie http://blog.vyvojar.cz/tom/archive/0001/01/01/7669.aspx). Pour les autres dépendances, on peut utiliser des appels Ajax pour charger a posteriori des éléments manquants (dans le cas de Crayon, form.js n'est utilisé que lors de la validation du textarea : on peut très bien imaginer que celui-ci ne soit pas actif tant qu'un appel Ajax à form.js ne se soit terminé)
non, si tu as pas #INSERT_HEAD, ta page html n'a a priori aucun js embarqué, tu ne peux rien faire, y compris dire que tu ne peux rien faire
Par ailleurs, rajouté à la main t'oblige à suivre les modifications ,
comme les corrections de bugs dans jQuery 1.0.4 , à la main aussi.
Cela ne pose pas de problème. Imaginons que j'utilise lightbox depuis longtemps dans mes templates et que je veuille alors rajouter le plugin. Si celui-ci me force à une version trop récente de jQuery, mes anciens squelettes ne fonctionnent plus. Je préfère que ce soit le plugin qui me dise "désolé, je ne peux pas m'installer car je ne suis pas compatible avec votre configuration"
heu il faut un test de version sur jquery c'est ca ?
> Si je prends le cas de Crayon, celui-ci
> ajoute pas mal de choses en entete et vérifie l'existence de
jquery et sa
> version.
Rhhooo... on n'ajoute presque rien.
Bin y'a quand même pas mal de presque rien 
non pas tant que ca, ca depend des plugins que tu utilise...
Mais comme on ne sait pas a priori quelle page va utiliser quoi, bien obligé d'inserer tout ce qui peut etre necessaire a chaque fois, en comptant sur le cache du navigateur pour ne pas recharger a chaque hit
Pour note, Crayons n'utilise pas #INSERT_HEAD mais le pipeline
affichage_final
Alors il y a un dilemne à résoudre là : lorsque je clique sur le détail du plugin (dans le panneau d'admin), effectivement ce n'est pas indiqué qu'il faille utiliser #INSERT_HEAD
La doc sur spip-contrib (et l'avant-dernier commit de toggg) indique le contraire.
pas de dilemne, un oubli peut etre dans le descriptif, mais c'est la doc qui est la plus complete, forcement
...
> Mais à part jQuery, que
> rajoute #INSERT_HEAD ?
C'est vrai que j'oubliais que c'est un point d'entrée général pour
tout
plugin voulant du js ou css spécifique (cf. la réponse de Cédric)
oki, mais on en revient un peu à la question initiale :
cette balise est-elle la solution optimale pour des manips js ou css ? Comme tu l'indiquais, Crayon utilise aussi le pipeline affichage_final. Est-ce qu'il ne faudrait pas que ce soit soit l'un, soit l'autre ? Avec un tel pipeline, est-ce que #INSERT_HEAD est justifé ?
Oui pour des raisons de performances exclusivement
#INSERT_HEAD est evalué lors du calcul de la page et son produit mis en cache avec le reste. De plus elle retourne juste du code qui est insere dans la page a la place de la balise
alors que affichage_final est appelé a chaque hit, et qu'il faudra faire au moins une regexp sur la page complete pour attraper le <head>..</head> et y glisser le code necessaire.
Cela dit ces questions de performances n'ont de sens que 'quand ca marche', donc je pense que je vais faire un truc a tiroir : #INSERT_HEAD restera préconisé pour la performance, mais si pas utilisé, affichage_final viendra glisser son contenu au moment de l'envoi de la page.
Ce comportement sera desactivable pour les bidouilleurs comme toi qui veulent faire ca a la mano 
> Dernière remarque : quelquesoit l'utilisation de
> cette balise (ou son obligation), il faudrait que ce soit clairement
> indiqué
> dans la doc, ce qui n'est pas le cas de Crayon par exemple..
Tu rigoles ? Dans admin plugins, clickes sur le lien de documentation,
si il est là , c'est que c'est l'officiel.
Je n'avais tout simplement pas vu ce lien car il n'est pas visible immédiatement : j'ai mis à jour une "vieille" version de spip1.9 dans laquelle il n'y avait pas d'information lorsqu'on cliquait sur le nom du plugin.
Ah si si, je proteste fermement, les informations sur les plugins ont toujours ete la ! Avant c'etait avec le triangle qu'on les depliait.
Donc il ne m'est pas du tout apparu évident qu'il faille cliquer sur ce lien pour afficher les infos du plugin pour trouver le lien de la doc.
A mon avis c'est un problème d'utilisabilité, là..
Tu verras que c'est précisé et que ça a été évoqué plusieurs fois dans
le forum.
Je lis très peu le forum spip-zone en ce moment.. Je me suis comporté comme un utilisateur lambda : télécharger le zip, décompresser, tester, râler ;)=
Bon ben ca regle le probleme, on va patcher pour que l'utilisateur lambda se pose pas de questions, meme avec un squelette pas optimisé qui contienne pas #INSERT_HEAD
Et les bricoleurs se debrouilleront 
Cedric