Problème d'affichage html ou svg dans un virtuel

Bonjour,

Je suis en 4.0.52 sur une Smart et j’utilise ce script pour créer une valeur de type autre.

<?php
require_once '/var/www/html/core/php/core.inc.php';

$message='<table>';
foreach(plugin::listPlugin(true) as $plugin){
  if($plugin->getHasOwnDeamon() && config::byKey('deamonAutoMode', $plugin->getId(), 1) == 1) {
    $deamon_info = $plugin->deamon_info();
    $message .= '<tr><td style="font-weight:400; padding:2px">' .$plugin->getName().'</td>';
    $message .= '<td style="font-weight:400; padding:2px">'.$plugin->getId().'</td>';
    $message .= '<td style="font-weight:400; padding:2px">';
    if ($deamon_info['state'] != 'ok') $message .= str_replace(' ','','& #127384');
    else $message .= str_replace(' ','','& #127383');
    $message .= '</td></tr>';
  }
}
$message .= '</table>';
echo $message;

Lorsque je sauve le script et teste la commande du script, le résultat est correct. Texte normaux et espace autour des textes dans les cellules de la table:
image

Mis dans un virtuel, le padding a sauté:
image
Et en examinant l’élément dans le virtuel, j’ai ça:
image
Pourquoi le padding est-il sorti du style ?

J’ai le même problème avec du svg embarqué dans une commande affichée dans un virtuel:
image
La liste des points du polygon est explosée.
Le svg s’affiche correctement dans l’équipement du plugin.

Question subsidiaire:
Pourquoi forcer un padding à 0 pour les td ? Les tables sont inutilisables.
image

Bonjour,

En cherchant une réponse à mes questions ci-dessus, j’ai trouvé qu’en modifiant la fonction exécute du fichier plugins/virtual/core/class/virtual.class.php le texte du svg ou le style n’est plus modifié.

 public function execute($_options = null) {
    if ($this->getLogicalId() == 'refresh') {
      $this->getEqLogic()->refresh();
      return;
    }
    switch ($this->getType()) {
    case 'info':
      if ($this->getConfiguration('virtualAction', 0) == '0') {
        try {
          $result = jeedom::evaluateExpression($this->getConfiguration('calcul'));
          if(is_string($result)){
            // $result = str_replace('"', '', $result); LIGNE A COMMENTER
            preg_replace('/^"|"$/', '', $result); // LIGNE A AJOUTER suppression " début et fin de chaine
          }
          return $result;
        } catch (Exception $e) {
          log::add('virtual', 'info', $e->getMessage());
          return $this->formatValue(str_replace('"','',jeedom::evaluateExpression($this->getConfiguration('calcul'))));
        }
      }
      break;

@Loic une idée du pourquoi supprimer tous les " dans une chaine de caractères ?
La suppression du 1er et du dernier caractère si ce sont des " ne suffirait-elle pas ?

preg_replace('/^"|"$/', '', $result);

Le commit qui a modifié date du 12 février:

PR fait https://github.com/jeedom/plugin-virtual/pull/44

Fin du monologue.
Merci à tous

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.