From be5dbbdbf2a1c1e342ed57b174aa4dcd987fd023 Mon Sep 17 00:00:00 2001 From: Esenjin Date: Sun, 16 Feb 2025 00:36:40 +0100 Subject: [PATCH] la mise en forme du texte est correct pour la description des romans --- roman.php | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/roman.php b/roman.php index 85e1948..1e9f934 100644 --- a/roman.php +++ b/roman.php @@ -16,6 +16,80 @@ if (!$story) { exit; } +// Fonction pour convertir le contenu Delta en HTML +function deltaToHtml($content) { + if (empty($content)) return ''; + + // Si le contenu est déjà en HTML (ancien format) + if (is_string($content) && !isJson($content)) { + return $content; + } + + // Convertir la chaîne JSON en tableau si nécessaire + if (is_string($content)) { + $delta = json_decode($content, true); + } else { + $delta = $content; + } + + if (!isset($delta['ops'])) return ''; + + $html = ''; + foreach ($delta['ops'] as $op) { + if (is_string($op['insert'])) { + $text = htmlspecialchars($op['insert']); + + // Gérer les styles de texte + if (isset($op['attributes'])) { + if (!empty($op['attributes']['bold'])) { + $text = "{$text}"; + } + if (!empty($op['attributes']['italic'])) { + $text = "{$text}"; + } + if (!empty($op['attributes']['underline'])) { + $text = "{$text}"; + } + // Ajouter d'autres styles si nécessaire + } + + // Convertir les retours à la ligne en paragraphes + if ($text === "\n") { + $html .= "
"; + } else { + $html .= $text; + } + } + // Gérer les images + elseif (is_array($op['insert']) && isset($op['insert']['image'])) { + $imageUrl = $op['insert']['image']; + error_log('URL originale: ' . $imageUrl); + // Retirer tous les "../" au début de l'URL + $imageUrl = preg_replace('/^(?:\.\.\/)+/', '', $imageUrl); + error_log('URL nettoyée: ' . $imageUrl); + $html .= "\"Image"; + } + } + + // Envelopper le contenu dans des balises p si nécessaire + if (!empty($html)) { + $paragraphs = explode("\n\n", $html); + $html = ''; + foreach ($paragraphs as $p) { + if (trim($p) !== '') { + $html .= "

{$p}

"; + } + } + } + + return $html; +} + +function isJson($string) { + json_decode($string); + return json_last_error() === JSON_ERROR_NONE; +} + $config = Config::load(); ?> @@ -45,7 +119,7 @@ $config = Config::load();
- +