Depuis que "0 n'est pas vide" cela ne marche plus : le code ci-dessus
affiche "Signatures : 0".
A mon sens il faudrait donc que #TOTAL_BOUCLE donne '' et non pas 0 quand le
total-boucle vaut zéro.
-- Fil
On pourrait vouloir afficher qu'il n'y a pas de signatures, non?
si on veut vraiment afficher la phrase s'il y a plus d'une signature, alors on écrit:
<BOUCLE_decompte(SIGNATURES){id_article}></BOUCLE_decompte>
[ truc (#TOTAL_BOUCLE) ]
</B_decompte>
Non, ça ne marche pas, et en plus ça casse la compatibilté ascendate s'il
fdaut reprogrammer les squelettes !
On pourrait vouloir afficher qu'il n'y a pas de signatures, non?
si on veut vraiment afficher la phrase s'il y a plus d'une signature,
alors on écrit:
<BOUCLE_decompte(SIGNATURES){id_article}></BOUCLE_decompte>
[ truc (#TOTAL_BOUCLE) ]
</B_decompte>
<BOUCLE_decompte(SIGNATURES){id_article}></BOUCLE_decompte>
[ truc (#TOTAL_BOUCLE) ]
<//BOUCLE_decompte>
Depuis que "0 n'est pas vide" cela ne marche plus : le code ci-dessus
affiche "Signatures : 0".
a priori, comme ça, ça marche :
[ truc (#TOTAL_BOUCLE|sinon) ]
Peut être que comme le fait remarqué Fil, la solution, c'est le contraire, pour s'assurer qu'on soit compatible avec notre derrière, il vaudrait mieux que l'on fasse:
[ truc (#TOTAL_BOUCLE|sinon{0}) ]
si on veut afficher 0
et
[ truc (#TOTAL_BOUCLE) ]
si on ne veut rien afficher quand il n'y a pas de résultats.
Mais dans ce cas, on ne sait pas différencier une valeur nulle d'une
valeur 0, et c'est ça le problème initial qui avait amené à proposer
ce patch.
Or avec le patch, si on veut ne rien afficher quand c'est null ET
quand c'est 0, on peut, et si on veut différencier les 2, on peut aussi.
Par contre, sans le patch, on ne sait plus les différencier.
Donc, oui il y a une incompatibilité avec la version précédent, mais
c'est carrément pas la première fois. J'ai passé 2 jours à faire des
coups de sed et de perl (beurk) pour passer un site de 1.8pre2 à 1.8.2
parce qu'on ne pouvait plus écrire {colonne="#BALISE"} et pour d'autre
joyeusetés qui traînaient dans les 346 squelettes du site.
C'était pire si on avait défini ses propre boucles (le coup du
"return" à ajouter dans le code généré, fallait le trouver ...)
Bref, ce patch apporte quelque chose, mais si ça vous botte pas, on
l'enlève du core et c'est marre. Ça me fera un truc de plus à patcher
quand j'upgrade, mais je commence à maîtriser la lecture rapide de
diff
Peut être que comme le fait remarqué Fil, la solution, c'est le
contraire, pour s'assurer qu'on soit compatible avec notre derrière, il
vaudrait mieux que l'on fasse:
[ truc (#TOTAL_BOUCLE|sinon{0}) ]
si on veut afficher 0
et
[ truc (#TOTAL_BOUCLE) ]
si on ne veut rien afficher quand il n'y a pas de résultats.
Mais dans ce cas, on ne sait pas différencier une valeur nulle d'une
valeur 0, et c'est ça le problème initial qui avait amené à proposer
ce patch.
Or avec le patch, si on veut ne rien afficher quand c'est null ET
quand c'est 0, on peut, et si on veut différencier les 2, on peut aussi.
Par contre, sans le patch, on ne sait plus les différencier.
Dans un cas général, je suis d'accord avec toi. Mais dans le cas de cette balise TOTAL_BOUCLE, qui est un peu spéciale, on sait qu'elle devrait tout le temps exister dans une boucle, donc si elle n'a pas de valeur, c'est qu'elle vaut 0, non?
Remarque, j'aime pas trop l'insertion de cas spéciaux tous les 2 lignes, mais là, pourquoi pas.
Donc, oui il y a une incompatibilité avec la version précédent, mais
c'est carrément pas la première fois. J'ai passé 2 jours à faire des
coups de sed et de perl (beurk) pour passer un site de 1.8pre2 à 1.8.2
parce qu'on ne pouvait plus écrire {colonne="#BALISE"} et pour d'autre
joyeusetés qui traînaient dans les 346 squelettes du site.
C'était pire si on avait défini ses propre boucles (le coup du
"return" à ajouter dans le code généré, fallait le trouver ...)
J'imagine que là c'est parce que tu parles d'une fonctionnalité "experimentale" entre une beta/pre et une version "officielle"
Mais dans un sens, c'est pas comme si c'était documenté quelque part que TOTAL_BOUCLE devrait retourner vide s'il n'y a pas de résultat, donc ça pourrait passer pour la correction d'un bug que tout le monde utilisait... un peu comme les hacks de IE
Dans un cas général, je suis d'accord avec toi. Mais dans le cas de
cette balise TOTAL_BOUCLE, qui est un peu spéciale, on sait qu'elle
devrait tout le temps exister dans une boucle, donc si elle n'a pas
de valeur, c'est qu'elle vaut 0, non?
Oui, et on peut forcer la valeur 0 en faisant |intval
> Donc, oui il y a une incompatibilité avec la version précédent, mais
> c'est carrément pas la première fois.
Non, mais là c'est les squelettes de base qui morflent, et dans une partie
déjà pas très limpide à comprendre.
> J'ai passé 2 jours à faire des
> coups de sed et de perl (beurk) pour passer un site de 1.8pre2 à 1.8.2
> parce qu'on ne pouvait plus écrire {colonne="#BALISE"} et pour d'autre
> joyeusetés qui traînaient dans les 346 squelettes du site.
> C'était pire si on avait défini ses propre boucles (le coup du
> "return" à ajouter dans le code généré, fallait le trouver ...)
Mais tu es un power-user ! Là on parle d'un changement de comportement qui
va affecter les débutants, c'est pas vraiment pareil
Dans ce cas, appliquons le patch pour corriger le bug, et
modifions balise_TOTAL_BOUCLE_dist pour qu'elle renvoie '' quand le
résultat est zéro, par compatibilité ascendante.
C'est méga crado, mais ça évite la régression tout en apportant une
fonctionnalité (la possibilité de différencier '' et 0 par ailleurs).
Dans ce cas, appliquons le patch pour corriger le bug, et
modifions balise_TOTAL_BOUCLE_dist pour qu'elle renvoie '' quand le
résultat est zéro, par compatibilité ascendante.