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 .= "";
+ }
+ }
+
+ // 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();