Problème d'affichage dans les log scénario

J’ai un doute, en faite je pense que ce soucis existait déja avant les PR de @Bad.

je peux tester j’ai pas fait la MAJ

Je pense aussi, mais je n’ai plus de vieilles jeedom en service

Ca lèverai le doute :wink: :

copie ceci et envoie sur une commande de type message.

Ce #sjour# #jour# #smois# #annee# le jour se couchera à xxhxx. Il fait x° dehors et les conditions sont xxxxxx, la T° max prévue est de xxxx°
Nous fêtons les xxxxxx

Bien vu @Phpvarious

[2024-01-17 20:24:24][SCENARIO] Start : Scenario lance manuellement.
[2024-01-17 20:24:24][SCENARIO] Exécution du sous-élément de type [action] : action
[2024-01-17 20:24:24][SCENARIO] Exécution de la commande [Téléphones][Iphone 14 key][Notification] avec comme option(s) : {"background":"0","title":"","message":"je suis parti \u00e0 v\u00e9lo"}
[2024-01-17 20:24:25][SCENARIO] Fin correcte du scénario

"message":"je suis parti \u00e0 v\u00e9lo"}

Ce Mercredi 17 Janvier 2024 le jour se couchera \u00e0 xxhxx. Il fait x\u00b0 dehors et les conditions sont xxxxxx, la T\u00b0 max pr\u00e9vue est de xxxx\u00b0
Nous f\u00eatons les xxxxxx"}

Au cas ou 4.3.19 vierge

et en V3 ? :rofl:

dans le log ca fonctionne aussi en 4.3.2x, c’est juste dans une commande message que ca fonctionne pas.

Merci bcp cela refonnctionne pour moi

Déchiffre :slight_smile:

`sont xxxxxx, la T\u00b0 max pr\VI u00e9vuev\u00e9LAIN est de xxxx\u00b0`

Ca marche en 4.3.19 et plus en 4.3.21 il y a une modif faite vers la 4.3.20 qui aurait provoqué cet effet de bord.
L’essentiel étant que le sms que reçoit ma femme chaque matin est bon :slight_smile:
La transcription du message dans le log est finalement peu importante, comme on était dessus les log je m’en suis aperçu mais autrement :see_no_evil:

Bonsoir messieurs

comme demandé par @Loic plus haut

voila le résultat sur la base de mon premier post de déclaration d’incident

Ca fonctionne avec <=


et toujours ok avec >=

:+1: et plus de défaut dans les caractères non plus. Merci a vous

Je ne sais pas si vous avez terminé toutes vos investigations.
Alors dans le doute je vous laisse clôturer ce post.

En tout cas si besoin je me tiens à votre disposition pour d’autres tests.

En tout cas une chose est sûr, vous êtes une équipe de choc les gars. Chapeau bas :tophat:

1 « J'aime »

Bonsoir @Loic ,
J’avais fait la mise à jour 4.3.22 en début d’après-midi et ai toujours ce problème d’affichage des caractères accentués.

Que dois-je faire (je suis qu’utilisateur :wink:) ?

oui. refais une mise à jour ca devrait fonctionner

Merci @Vandoule pour l’astuce :blush:

Je ne savais pas qu’on pouvait faire une ‹ Mise à jour › alors qu’il n’y en a aucune de proposée :wink:

Mais le résultat est bien là !

Un grand MERCI à vous tous pour toutes vos actions :clap: :clap:

Bonjour.
Je viens de réappliquer la mise à jour v4.3.22 : c’est beaucoup mieux, à l’exception de l’interprétation des balises html dans la log concernant les dépendances de homebridge.

Hello,

Désolé, mais ça, c’est parfaitement voulu.

Ce ne sera de toute façon plus possible en 4.4, donc autant que les auteurs des plugins puissent constater le pb en 4.3.

Bad

Ok, très bien. C’est noté. Merci.

Il y avait peut être une autre approche, mais j’arrive surement un peut tard.
Ajouter un paramètre à la fonction setLog pour spécifier qu’on envoie du Html (par défaut à false)

Fonction setLog de Jeedom :

function setLog($log, $isHtml = false) {
  if (!$isHtml ) {
    $log = htmlentities($log); //encode tout en html 
   //on peut évelntuellement faire les replace de couleur ici au lieu du JS
  }
  else {
    //sécurise le html en virant le JS,  et les attributs pouvant en contenir
    // ( <script, onXXX=, href= ...) via un regExp qui filtre les balises html
  }
}

On se retrouve avec un fichier log encodé en html

Dans le JS on a juste à faire :

version brut :

_params.display.text($('<span/>').html(log).text())

version normale :

_params.display.html(log)

pour le download du fichier côté php :

$log = file_get_contents(...
$log = html_entity_decode(strip_tags($log)); //vire tout le html et les encodages
//on lance le download

El là je pense qu’on est pas mal avec une solution plutôt simple :
Elle résout les problèmes d’encodage ou de perte de contenu.
Elle n’ empêche pas de garder ce qui a déjà été ajouté : les nouveaux replaces pour coloré de base le non html.
Elle reste compatible avec tout les plugins.
Elle permet de faire des logs en full html (sécurisé) si l’auteur le souhaite


Après on peut également lancer le download en full JS mais c’est peut être un peu trop récent et pas supporté sur les anciens matos.
href = URL.createObjectURL(new Blob(['log brut'], {type: 'text/plain'})); dans une balise <a> avec l’attribut download="nom de fichier"