[Résolu] Codage automatique des emails dans CKEditor
Francis
Member
Bonjour,
Pour coder les adresses mail, j'utilisais du Javascript, mais ces adresses devenaient invisibles dans CKEditor : pas très ergonomique pour l'utilisateur !
Je voulais que ce soit automatique, comme dans Joomla, et j'ai imaginé des solutions compliquées, jusqu'à ce que je m'aperçoive que CKEditor pouvait le faire tout seul ! Au moins en partie, car dans une adresse :
Il suffit d'écrire, dans ckeditor/ckeditor/config.js :
La doc se trouve à cette adresse : http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html
---
Parenthèse : J'y ai trouvé deux autres paramètres intéressants, que j'ai placés dans ce fichier config.js
Fin de la parenthèse
---
Pour revenir à notre adresse courriel, il restait à coder la partie affichée.
J'ai opté pour un codage basique : le remplacement de l'arobase @ par du Javascript. J'ai prévu aussi que l'on ne veuille pas coder le signe @ pour indiquer qu'il s'agit d'une seule arobase @, mais qui ne doit pas être codée en Javascript.
Dans le fichier ckeditor/ckeditor.php, il faut ajouter :
- à la fonction plxAdminEditArticle (codage pour l'enregistrement des articles) :
- et à la fonction AdminArticleTop (décodage des @, pour permettre leur affichage dans la fenêtre de l'éditeur) :
Voilà pour la méthode, il faut faire la même chose pour les pages statiques.
Ce sera bientôt dans le paquet CKEditor + gestionnaire de fichiers libre KCFinder (à ne pas confondre avec CKFinder payant : voir http://forum.pluxml.org/search.php?search_id=988853269.
Pour coder les adresses mail, j'utilisais du Javascript, mais ces adresses devenaient invisibles dans CKEditor : pas très ergonomique pour l'utilisateur !
Je voulais que ce soit automatique, comme dans Joomla, et j'ai imaginé des solutions compliquées, jusqu'à ce que je m'aperçoive que CKEditor pouvait le faire tout seul ! Au moins en partie, car dans une adresse :
<a href="mailto:titi@toto.fr">titi@toto.fr</a>
CKEditor ne code que la partie qui suit "mailto:", ce qui est déjà un bon début.Il suffit d'écrire, dans ckeditor/ckeditor/config.js :
config.emailProtection = 'encode';
La doc se trouve à cette adresse : http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html
---
Parenthèse : J'y ai trouvé deux autres paramètres intéressants, que j'ai placés dans ce fichier config.js
config.height = '350px';
config.entities = false;
Le premier pour agrandir la hauteur de la fenêtre d'édition (200px par défaut, un peu petit à mon goût), le deuxième pour écrire les lettres accentuées, ç et € tels quels, au lieu d'utiliser des entités comme é pour le é par exemple (puisque le codage est déclaré dans l'en-tête, ça ne sert à rien et c'est plus simple pour éditer le code source - à condition d'enregistrer dans le bon format de codage, normalement utf-8).Fin de la parenthèse
---
Pour revenir à notre adresse courriel, il restait à coder la partie affichée.
J'ai opté pour un codage basique : le remplacement de l'arobase @ par du Javascript. J'ai prévu aussi que l'on ne veuille pas coder le signe @ pour indiquer qu'il s'agit d'une seule arobase @, mais qui ne doit pas être codée en Javascript.
Dans le fichier ckeditor/ckeditor.php, il faut ajouter :
- à la fonction plxAdminEditArticle (codage pour l'enregistrement des articles) :
// Codage de l'arobase @ en JavaScript, sauf les @ qui ne doivent être codées (à écrire @@ dans l'éditeur) :
// les @@ sont transformés temporairement en texte ('plx_arobase_nocode'), puis en @ après le codage des autres arobases.
echo "<?php \$chapo = str_replace('@@', 'plx_arobase_nocode', \$chapo); ?>";
echo "<?php \$content = str_replace('@@', 'plx_arobase_nocode', \$content); ?>";
echo "<?php \$chapo = str_replace('@', '<script type=\"text/javascript\">document.write(\"@\");</script>', \$chapo); ?>";
echo "<?php \$content = str_replace('@', '<script type=\"text/javascript\">document.write(\"@\");</script>', \$content); ?>";
echo "<?php \$chapo = str_replace('plx_arobase_nocode', '@', \$chapo); ?>";
echo "<?php \$content = str_replace('plx_arobase_nocode', '@', \$content); ?>";
- et à la fonction AdminArticleTop (décodage des @, pour permettre leur affichage dans la fenêtre de l'éditeur) :
// Décodage des arobases codées en JavaScript, et transformation des arobases @ écrites telles quelles en @@
// (les @@ repèrent les arobases simples @ à ne pas coder à l'enregistrement)
echo "<?php \$chapo = str_replace('@', '@@', \$chapo); ?>";
echo "<?php \$content = str_replace('@', '@@', \$content); ?>";
echo "<?php \$chapo = str_replace('<script type=\"text/javascript\">document.write(\"@\");</script>', '@', \$chapo); ?>";
echo "<?php \$content = str_replace('<script type=\"text/javascript\">document.write(\"@\");</script>', '@', \$content); ?>";
Voilà pour la méthode, il faut faire la même chose pour les pages statiques.
Ce sera bientôt dans le paquet CKEditor + gestionnaire de fichiers libre KCFinder (à ne pas confondre avec CKFinder payant : voir http://forum.pluxml.org/search.php?search_id=988853269.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)