[spip-dev] Probleme avec boucle Condition et boucle recursive

Bonjour
J'ai envoyé ce mail hier sur spip-zone. Sans reponse. Comme je ne sais pas si c'est un bug Bonux ou Spip, je me permet de le renvoyer ici... La resolution de ce probleme simplifierait le code dans le plugin Menu (Bref ce n'est pas perso)

Désolé pour ce mail un peu long, mais le test est simple a realiser... Et comme ca fait un bout de temps que je bloque, j'aimerais bien qu'on me... decoince. Merci d'avance.

Voici quelques lignes simples qui affichent une arborescence de rubriques et d'articles... Ca fonctionne tres bien sans la boucle Condition que j'ai rajoutée (avec un test bidon)...

Mais avec la boucle condition, Spip a l'air de se perdre et affiche un peu n'importe quoi...

Si on rajoute une 2 boucle de test autour de la boucle recursive sous_sous, c'est moins pire, mais on perd les #ID_RUBRIQUE dans les parties optionnelles et alternatives

Je viens de tester sur un spip tout neuf avec un seul plugin, bonux a jour aussi de svn.
Contenu du site : une rubrique contenant une sous-rubrique avec un seul article

<ul>
[(#SET{cond, 1000})]
<BOUCLE_rubriques(RUBRIQUES){racine}>
<li>
             rubrique #ID_RUBRIQUE
<BOUCLE_test_niveau(CONDITION){si #GET{cond}}>
<B_sous_rubriques>
<ul>
<BOUCLE_sous_rubriques(RUBRIQUES){id_parent}>
<li>
                     rubrique #ID_RUBRIQUE
<BOUCLE_sous_sous(BOUCLE_sous_rubriques)></BOUCLE_sous_sous>
</li>
</BOUCLE_sous_rubriques>
<li>articles de #ID_RUBRIQUE</li>
</ul>
</B_sous_rubriques>
<ul><li>articles de #ID_RUBRIQUE</li></ul>
<//B_sous_rubriques>
</BOUCLE_test_niveau>
</li>
</BOUCLE_rubriques>
</ul>

Bonjour,

La boucle CONDITION a plus ou moins toujours posé un problème au niveau de la transmission de contexte de la boucle parente, si je ne me trompe pas…
Dans le même registre, plusieurs fois j’ai dû utiliser dans certains cas où il n’est pas optimal, uniquement parce que la balise #INCLURE ne fonctionne pas toujours correctement au sein d’une boucle CONDITION.

Jusqu’à maintenant, je n’ai pas eu connaissance d’une évolution de la situation.

Médéric.

C’est lié à la construction même de la boucle dans spip-bonux qui repose sur un hack.
Mais il y a une alternative beaucoup plus saine dans la version dev de SPIP, qui a également été portée dans le plugin « itérateurs » pour SPIP 2.1.

Cédric

Le 15/04/2011 08:20, a écrit : Avec le critere “si” directement dans la boucle ? Oui ca ca fonctionne tres bien… Le probleme est qu’on ne veut pas rajouter de necessite iterateur au plugin Menus… Donc je sens que c’est parti pour la duplication de code… A moins que Rastapopoulos ou Joseph , n’aient une idee geniale ?

Le probleme est qu’on ne veut pas rajouter de necessite iterateur au plugin Menus…

pourquoi ? (car de toutes façons c’est transitoire, les itérateurs étant dans le core en version 3).

Yo,

Moi je suis d’accord… C’est Rastapopoulos qui est reticent…

Parce que Menus nécessite déjà Bonux de toute façon. Donc c'est bête d'ajouter une dépendance de plus. Ça aurait intérêt si on la remplaçait oui. Mais Bonux est toujours nécessaire. Quand il ne le sera plus, là...