Bonsoir à tous,
La mise en squelette des balises #FORMULAIRE_, et en particulier de la dernière d'entre elles, FORMULAIRE_ADMIN, a entrainé quelques petites conséquences techniques.
Ce message s'adresse aux codeurs de Spip en tout genre, les administrateurs de sites pouvant profiter de cette dernière rationalisation sans se soucier de ce qui se passe en coulisse.
1. officiellement les taches de fond n'étaient pas déclenchées lorsqu'une page devait être recalculée. Les FORMULAIRE_* ayant des délais nul (car ils reposent sur l'identification à chaque requete) leur mise en squelette provoque un petit recalcul, interdisant une tache pour toute visite par qq d'authentifié. Pas trop grave, mais en cherchant comment l'en empecher, il est apparu que de toutes façons ce comportement officiel était faux: $use_cache indique seulement si le dernier include a été recalculé, pas si toute la page a pu être assemblée à partir du cache. Au final, on recourt à présent à un moyen très différent: on sait qu'il y a recalcul si le fichier inc-calcul a été chargé, et on peut même savoir combien de fois cela a été demandé. Au dela de 3, on considère que la tache ne peut etre faite. $use_cache existe toujours, mais ne plus s'y fier pour ça donc.
2. le debuger de squelette opère une rétention sur la compilation des squelettes puis demande la construction des boutons d'administration. Ceux-ci étant maintenant un squelette, une première approche a donné une magnifique boucle infinie à chaque utilisation du debuger. Le pb est à présent résolu et les boutons d'admin disponibles sauf dans un cas
très précis que je laisse chacun s'amuser à trouver. Quant à la feuille de style associée
(admin.css), elle est à présent référencée dans tous squelettes standards, et ceux-ci ont
à nouveau la balise FORMULAIRE_ADMIN incluse explicitement (ça ne change rien graphiquement, mais leur ajout forcé en cas d'absence les met après </html>, c'est pas terrrible). Les squelettes non standards doivent eux aussi référencer cette feuille,
ou une équivalente, s'ils ne veulent pas que leur boutons se baladent n'importe où.
Et si vous voulez écrire une nouvelle version des boutons, lisez soigneusement le code...
3. Pour eviter le bouclage du debuger, j'ai été amené à rationnaliser le nom des variables rajoutées par Spip dans les URL: à présent elles commencent toutes par "var_".
En particulier, forcer le recalcul se fait maintenant par "var_debug=recalcul".
Au passage, le calcul du contexte initial se fait plus efficacement, par un simple strpos.
Bonne expérimentation à tous
Emmanuel