[spip-dev] Problèmes avec <multi> dans les squelettes

Salut,

J'utilise régulièrement les <multi> dans mes squelettes, cependant c'est souvent très problématique dans l'imbrication avec le système.

Par exemple:

[(#SESSION{id_auteur}|?{" ",""})
  Oui
]

Retourne parfaitement «Oui» quand on a une session.

En revanche:

[(#SESSION{id_auteur}|?{" ",""})
  <multi>Oui[en]Yes</multi>
]

Déconne complètement. Ca produit le code suivant:
[(1|?{" ",""})
  Oui
]

Bref, dès que j'ai des <multi> dans un squelette, ça tourne à la prise de tête rapidement.

ARNO*

Martin Arnaud a écrit :

Salut,

J'utilise régulièrement les <multi> dans mes squelettes, cependant c'est souvent très problématique dans l'imbrication avec le système.

Par exemple:

[(#SESSION{id_auteur}|?{" ",""})
    Oui
]

Retourne parfaitement «Oui» quand on a une session.

En revanche:

[(#SESSION{id_auteur}|?{" ",""})
    <multi>Oui[en]Yes</multi>
]

Je crois que le filtre |? à un problème avec les crochets. J'avais à faire un test avec ce filtre : sioui , il fallait que j'affiche une url contenant des crochets, le filtre ne fonctionnait pas, mais il allait bien dès que j'enlevai les crochets dans l'url.

Phil

Ce n'est pas ce filtre particulièrement, c'est le fait qu'il y a 2 utilisations des crochets dans les squelettes: comme délimiteur de champ étendu et comme délimiteur de langues dans une balise multi. En théorie ce serait possible d'analyser cette syntaxe correctement mais ça ralentirait l'analyseur alors qu'elle n'en vaut pas la peine. On ferait bien mieux de décider une syntaxe à la XML:

<multi>Oui<en />Yes</multi>

ca résoudrait le pb. Prévoir un upgrade de toutes les bases pour cette transformation serait facile, de même qu'une rEGEXP pour transformer les squelettes.

Committo,Ergo:Sum