[spip-dev] Saquelette Spip_BB et 2 bugs du compilo

Coucou,

Je reviens à la charge avec mon squelette de forum, qui présente l'avantage certain de permettre de tester à fond le nouveau compilo ;o).

Descriptions de deux bugs subséquents au passage de spip_contrib en cvs :

*Pas d'affichage de $titre=['(#TITRE|texte_script)'] dans la partie alternative d'une boucle forum recursive, dans certains cas*

L'affichage des messages du forum spip_BB qui ne fonctionne plus. :frowning:
Les titres des nouveaux messages ne s'affichent pas (je recois bien les textes dans le mail d'alerte), de même que les titres de certains messages plus vieux.
http://www.spip-contrib.net/article392.html?recalcul=oui&submit=Seite+aus+Cache+l�schen

Le squelette est brouillon mais je crois sans faute de boucle. Ceci étant, c'est vrai que la boucle de forum recursive qui est en oeuvre ici n'est pas commode, mais l'ancien compilo comprenait bien :slight_smile:
http://www.spip-contrib.net/article-43.html

*Double affichage là où il n'y en avait qu'un*

Les boucle suivantes permettent de choper l'id_secteur depuis un squelette inclus dans l'entete (<INCLURE(entete.php3){id_article}{id_rubrique}>), et ce, qu'on soit dans un article ou une rubrique.

Dans un meme squelette, ces deux boucles ne produisent qu'un seul affichage avec l'ancien compilo.

Soit c'est id_article qui est défini et la boucle article est affichée soit c'est id_rubrique et dans ce cas c'est l'autre boucle qui affiche un resultat (ca varie selon qu'on est sur un page article ou rubrique).

Avec le nouveaux compilo id_article ET id_rubrique sont définis en meme temps, du coup l'affichage dans l'entete est double.
http://www.spip-contrib.net/rubrique44.html

Dans le fichier inclus :
// cas d'un article
<BOUCLE_article(ARTICLES){id_article}>
     <BOUCLE_secteur(HIERARCHIE){id_article}{0,1}>
    <a href="#URL_RUBRIQUE">
<img src="spip_bb/logo_spipbb.jpg" border="0" alt="[(#TITRE|supprimer_numero|textebrut|entites_html)]" vspace="1" /></a>

       <?php $ze_sect='[(#ID_RUBRIQUE|texte_script)]' ; ?>
       </BOUCLE_secteur>
</BOUCLE_article>

// cas d'une rubrique (secteur ou pas)
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
    <BOUCLE_secteur2(HIERARCHIE){id_rubrique}{0,1}>
     <a href="#URL_RUBRIQUE"><img src="spip_bb/logo_spipbb.jpg" border="0" alt="[(#TITRE|supprimer_numero|textebrut|entites_html)]" vspace="1" /></a>
    <?php $ze_sect='[(#ID_RUBRIQUE|texte_script)]' ; ?> </BOUCLE_secteur2>
</B_secteur2>
<a href="#URL_RUBRIQUE"><img src="spip_bb/logo_spipbb.jpg" border="0" alt="[(#TITRE|supprimer_numero|textebrut|entites_html)]" vspace="1" /></a>
     <a href="#URL_SITE_SPIP"><span class="maintitle">#NOM_SITE_SPIP</span></a><br />
       <span class="gen">[(#DESCRIPTIF|sinon{"&nbsp;"})]<br />
       &nbsp; </span>

<?php $ze_sect='[(#ID_RUBRIQUE|texte_script)]' ; ?>
<//B_secteur2>
</BOUCLE_rubrique>

Ca n'a peut etre pas l'air urgent comme bug à fixer, mais pendant ce temps le forum de spip_contrib est inutilisable, et les visiteurs nous prennent pour des charlots :frowning:

@+
BoOz

C'est peut-etre un pb de transmission (il y en a déjà eu)
mais ce squelette me semble composé de 2 fois la même table,
ce qui suffirait peut-etre à expliquer qu'il affiche deux fois la meme chose....

esj

Déesse A. a écrit :

Le squelette est brouillon mais je crois sans faute de boucle. Ceci étant, c'est vrai que la boucle de forum recursive qui est en oeuvre ici n'est pas commode, mais l'ancien compilo comprenait bien :slight_smile:
http://www.spip-contrib.net/article-43.html

C'est peut-etre un pb de transmission (il y en a déjà eu)
mais ce squelette me semble composé de 2 fois la même table,
ce qui suffirait peut-etre à expliquer qu'il affiche deux fois la meme chose....

non, non : c'est dans l'entete que ca affiche en double
http://www.spip-contrib.net/article341.html
http://www.spip-contrib.net/entete_BB.html

C'est peut etre parce qu'il y a une boucle hierarchie dont la partie alternative permet de chopper l'id_secteur selon qu'il est déjà défini ou pas dans la hierarchie. Mais bon, il ne devrait quand meme n'y en avoir qu'un a la fois.

dans le squelette
http://www.spip-contrib.net/article-43.html
http://www.spip-contrib.net/article392.html?recalcul=oui&submit=Seite+aus+Cache+l�schen

Ce n'est pas un probleme de double affichage mais de *non* affichage de valeur dans la partie alternative d'une boucle forum recursive.

Il n'y a pas deux fois la meme table, l'une est pour les annonces, l'autre pour les messages normaux.

J'espere que ca aide ;o)

BoOz a écrit :
L'affichage des sujets refonctionne ;o))

reste cette suite de boucles qui fonctionne en squelette inclu si id_rubrique est un secteur <INCLURE(entete.php3){id_rubrique}> -> afficage du titre du secteur

mais pas quand id_rubrique n'est pas defini <INCLURE(entete.php3){id_article}> -> double affichage (le secteur et la rubrique)

ni quand id_rubrique n'est pas un secteur
<INCLURE(entete.php3){id_rubrique}> -> double affichage (le secteur et la rubrique)

<BOUCLE_article(ARTICLES){id_article}>
     <BOUCLE_secteur(HIERARCHIE){id_article}{0,1}>
     #TITRE
     </BOUCLE_secteur>
</BOUCLE_article>
  
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
    <BOUCLE_secteur2(HIERARCHIE){id_rubrique}{0,1}>
    #TITRE
    </BOUCLE_secteur2>
  </B_secteur2>
    #TITRE
  <//B_secteur2>
</BOUCLE_rubrique>

Mais en fait, je crois que c'est parce que le nouveau compilo marche mieux que l'ancien, et c'est carrement l'utilisation de cette boucle pour chopper le secteur qui est caduque, mais ca n'empeche que le traitement actuel de la boucle est bizarre ;o)

Je viens de corriger sur le CVS un bug sur la gestion des hiérarchie qui pourrait expliquer ce problème.

Amélioration au passage: en m'occupant soigneusement de TOTAL_BOUCLE hier,
j'ai remarqué que beaucoup de squelette sont rédigés ainsi:

<BOUCLE1>
</BOUCLE1>#TOTAL_BOUCLE<//B1>

Le simple saut de ligne provoquait #TOTAL_BOUCLE fois un appel au serveur Mysql
pour ne rien lui demander. J'ai donc généralisé l'optimisation que j'avais déjà faite
il y a un an consistant à ne pas l'appeler quand la boucle est parfaitement vide,
en remplaçant le while(fetch) par un
for(i=numrows;$i>0;i--) $result .= "\n";

HTML étant ce qu'il est, cette boucle est encore superflue dans bien des cas,
mais ça dépend du contexte et je ne peux donc rien faire de plus:
si on a <BOUCLE1>*</BOUCLE1> l'intention est bien d'envoyer plusieurs étoiles,
le compilateur agit en conséquence.
Donc, si vous voulez seulement consulter #TOTAL_BOUCLE écrivez:

<BOUCLE1></BOUCLE1>#TOTAL_BOUCLE<//B1>

      Emmanuel

Déesse A. a écrit :

Donc, si vous voulez seulement consulter #TOTAL_BOUCLE écrivez:

<BOUCLE1></BOUCLE1>#TOTAL_BOUCLE<//B1>

Et ca c'est toujours bon ?

<BOUCLE1></BOUCLE1>#TOTAL_BOUCLE</B1>

@+

Oui bien sûr.
Je crois utile de préciser d'une manière générale
que j'essaye de proposer un compilateur qui soit bien une extension du précédent:
tout doit marcher comme avant, sauf bug incontestable soit dans le compilateur précédent,
soit dans le squelette. Mais évidement ça ne se fait pas du premier coup, surtout que les
spécifications de Spip sont assez informelles.

esj