OpenEdition / checklist-lodel

GNU General Public License v3.0
3 stars 0 forks source link

Balises fermantes supprimées par Lodel #1

Closed brrd closed 4 years ago

brrd commented 5 years ago

Dans le contexte des publications, checklist a besoin de générer une représentation de la table des matières dans un objet javascript. Le template utilise actuellement cette approche : https://github.com/OpenEdition/checklist-lodel/blob/8dc93ae8bbc61983c7a0056f4428c149668aeeb3/tpl/macros_checklist_publication.html#L61-L80

Le résultat est inclus dans une balise script de la page HTML du template.

Le souci, c'est que quand toutes les balises fermantes contenues dans l'objet généré sont supprimées par Lodel.

Exemple :

{
  title: "<span class='authors'>Jean-Michel Bu&eacute;e                   <span class='title'><span xml:lang=&quot;fr&quot; lang=&quot;fr&quot;>La vraie d&eacute;mocratie et la question de la critique du lib&eacute;ralisme politique dans le <em>Manuscrit de Kreuznach de Marx",
  href: "./?do=_checklist_view&document=318",
  docId: "318",
  type: "Article",
  context: {
    "textes": true,
    "article": true
  }
}

dans http://checklist.labocleo.org/test/?do=_checklist_view&document=310

On voit ici que les balises fermantes des éléments <span> et <em> ont été supprimées, ce qui pose des problèmes lors du rendu.

Je précise que wapper le tout dans des CDATA ne change rien au résultat.

D'où vient ce problème (HTMLPurifier ?) ? Comment le résoudre ?

brrd commented 5 years ago

J'ai fait quelques tests supplémentaires (suggérés par @nahuelange et @arnaudcordier) et voici plusieurs précisions.

1. Remplacer la variable par une string codée directement dans la source confirme que le souci ne vient pas du template mais d'un traitement effectué après.

Ceci codé dans la source :

title: "<span>hello world <em>ital ici</em> mais pas la</span>",

donne l'affichage suivant :

title: "<span>hello world <em>ital ici mais pas la;",

Il s'agit donc à coup sûr d'un problème de post-traitement.

2. Nous ne reproduisons pas le problème sur les sites edinum.

En prenant par exemple un article dont le titre renseigné est <span>hello world <em>ital ici</em> mais pas la</span>

Cléo :

title: "<span class='authors'>Jean-Michel Bu&eacute;e <span class='title'><span>hello world <em>ital ici mais pas la",

Edinum :

title: "<span class='authors'>Marcus Valerius Martialis</span> <span class='title'><span>hello world <em>ital ici</em> mais pas la</span></span>",

En conclusion il semble donc que le problème ne vient pas de Checklist ni même de Lodel mais d'un traitement effectué spécifiquement sur vos sites @lnprieto

brrd commented 5 years ago

@lnprieto :

J'ai installér checklist sur différentes vms, avec le même résultat. Je voudrais l'installer maintenant sur une version publique de lodel, mais il a besoin de lodel-common. Sur tes essais edinum, tu as installé lodel-common ?

Non. Nous avons notre propre lodel-common pour Edinum.

si non comment as-tu géré les fonction Media ?

Ce filtre a été réécrit. Je ne pense pas que cela vienne du filtre media car il n'est pas appelé dans le template où l'on rencontre le bug. Tous les filtres utilisés sur ce template sont dans https://github.com/OpenEdition/checklist-lodel/blob/master/tpl/macros_checklist_publication.html

lnprieto commented 5 years ago

Non je ne pense pas non plus que cela vienne du filtre, mais je voulais être sûre que vous n'aviez pas installé notre lodel-common. Merci

brrd commented 5 years ago

Pour info Arnaud vient de publier le lodel-common d'edinum sur Github : https://github.com/edinum/lodel-textfunc

lnprieto commented 5 years ago

OK merci Sur ma vm, réduite au minimum, sans lodel-common, les balises fermantes sont toujours absentes, et on a un serveur de dev, avec lodel-common, sur lequel cela fonctionne correctement. Donc clairement, ça ne vient pas lodel-common Le problème est reproduit en insérant un bloc script dans le template. A suivre

3th0 commented 5 years ago

Si l'on supprime les balises Githubissues.

  • Githubissues is a development platform for aggregating issues.