We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

Problème lors d'une insertion unifiée d'HTML

Nicolas Billiaud · on 12/3/19 at 12:08 PM

Bonjour,

J'ai un soucis lors d'une insertion unifiée d'HTML.

J'essaie d'insérer une balise custom <note></note>

Lors de l'insertion , elle casse la balise ou je souhaite l'insérer.

 

Avant insertion: 

mceclip0 - 2019-12-03 11h24m18s

 

Après insertion

mceclip0 - 2019-12-03 11h26m37s

 

Le js pour appeller la méthode insertHTML présente dans le fichier js/jalios/ux/jalios-unifiedinsert.js: 

var handleUnifiedInsertHtmlClick = function(event) {
  event.preventDefault();
  event.stopPropagation();
  var $elm = $(event.currentTarget);
  var dataId = $elm.data('jalios-id');
  var html = "<note id=\"" + dataId + "\"></note>";
  $.jalios.UnifiedInsert.insertHTML(html);
};

 

Si j'essaie d'insérer d'autres balises (<a> <img> ou même <code> ) en attribut html, aucun souci, la balise s'intègre bien dans le <p>.

mceclip1 - 2019-12-03 12h08m26s

Le problème vient donc de cette balise custom mais je ne vois pas où.

Merci d'avance.

4 pts
Olivier Jaquemet · on 12/3/19 at 1:34 PM

Bonjour,

Quel est le besoin fonctionnel que vous essayez de proposer aux utilisateurs ?

 

Concernant l'utilisation d'une balise personnalisée, non présent dans le standard HTML, je me permet de reprendre quelques point importants...
La documentation Wysiwyg - JHTML et rendu dynamique précise ceci dans la section 3. Ajouter une balise JHTML:

Ayez donc conscience qu'il s'agit d'un développement complexe et que vous aurez de nombreux aspects à prendre en charge !
Notamment : 

Premier point : nettoyage
Dès qu'une balise n'est pas dans le standard HTML (où dans les balises autorisées explicitement par JPlatform), elle est nettoyée

  1. Coté client : d'abord par l'éditeur wysiwyg lui même (TinyMCE)
  2. Coté serveur : par JPlatform pour assurer la sécurité et la consistance des contenu JHTML

--> Vous devez donc explicitement indiquer aux 2 éléments d'autoriser votre balise personnaliser (en indiquant les attributs qu'elle supporte).
cf https://docs.jalios.com/jplatform10/jcms/fr/front-end/wysiwyg/configuration-et-personnalisation/wysiwyg-configuration-du-nettoyage-html-6314

Secont point : l'affichage 
Un autre aspect important, concerne l'affiche d'une balise non standardisé : Si elle n'est pas dans un standard, le navigateur ne sait pas quoi en faire. Ainsi toutes les balises JHTML personnalisé introduit dans l'éditeur ne serve qu'au stockage, mais ne sont jamais utilisées directement dans le rendu final du navigateur :

  1. A l'édition du contenu : c'est un plugin TinyMCE qui fait systématiquement la conversion entre le JHTML manipulé en arrière plan (dans les textarea), et le HTML affiché par le navigateur dans l'éditeur wysiwyg
  2. A l'affichage du contenu : c'est la mécanique JPlatform des rendu des wysiwyg (server side) qui transforme les balises personnalisés (JHTML) en code HTML utilisable par le navigateur.

--> Vous devez donc impérativement développer ces 2 composants pour utiliser une balise personnalisée.
Nous n'avons pas de document sur ce point, je ne pourrais que vous recommander de consulter le code source des plugins TinyMCE mis à disposition dans JPlatform.

 

En raison de toutes ces complexité, je vous invite à ré-évaluer précisément la nécessité d'utiliser un tag personnalisé. Naturellement si nous l'avons fait, c'est que cela apporte des avantages non négligeable, mais ayez conscience des couts de développement associés, nous ne pourrons pas vous assister sur tous les aspects liés.

0 pts