Le filtre post_autobr permet d’ajouter en début de ligne des _ lorsqu’un texte comporte des retours simples à la ligne.
Mais, si un texte comporte un appel de modèle comportant des retours à la ligne, par exemple :
<modele123|param1=truc
param2=machin
param3=chose>
alors post_autobr ajoute des _ non désirés dans l’appel du modèle.
Les appels de modèles sur plusieurs lignes sont fort pratiques pour les modèles ayant un grand nombre de paramètres et permet d’avoir une meilleure lisibilité quand on rédige un texte.
La question qui se pose est la suivante :
soit la syntaxe d’appel d’un modèle sur plusieurs lignes est considérée comme correcte, dès lors le code de post_autobr devrait également échapper les modèles (pour le moment seul echappe_html est appelé, cette dernière fonction n’échappant pas les modèles) ;
soit la syntaxe d’appel à un modèle sur plusieurs lignes est considérée comme invalide. Auquel cas il faudrait faire évoluer la documentation de SPIP () cette dernière présentant des exemples avec une syntaxe sur plusieurs lignes.
soit la syntaxe d'appel d'un modèle sur plusieurs lignes est considérée
comme correcte,
oui, elle est correcte
dès lors le code de post_autobr devrait également échapper
les modèles (pour le moment seul echappe_html est appelé, cette dernière
fonction n'échappant pas les modèles) ;
peux-tu envoyer des tests unitaires et un patch ?
Il faut que cette fonction soit parfaite et qu'on trouve enfin une
manière de l'activer par défaut sans tout casser dans les sites
existants. La situation actuelle est vraiment malpratique.
J'ai cherché mais pas trouvé. Existe-t-il déjà une fonction echapper_modeles ou équivalente ?
Cette dernière permettrait d'échapper les modèles sans les traiter (puisqu'ils seraient traités ensuite).
Avec une telle fonction, il suffirait d'ajouter $texte = echappe_html($texte, '', true); au filtre post_autobr.