toggleFormHelpBlock($key); renderCollapsed($db, $key); exit; } // Save requires CSRF if (!isset($_POST['csrf_token'], $_SESSION['csrf_token']) || !hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) { http_response_code(403); echo 'Token invalide.'; exit; } // save $content = $_POST['content'] ?? ''; $name = trim($_POST['name'] ?? ''); try { $db->setFormHelpBlock($key, $content); if ($name !== '') { $db->setFormHelpBlockName($key, $name); } require_once __DIR__ . '/../../src/AdminLogger.php'; AdminLogger::make()->logFormStructureEdit($key); } catch (Exception $e) { error_log('form-help-inline save error: ' . $e->getMessage()); http_response_code(500); echo 'Erreur lors de la sauvegarde.'; exit; } $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); renderCollapsed($db, $key); exit; } // ── GET ────────────────────────────────────────────────────────────────────── $db = new Database(); $editMode = ($_GET['edit'] ?? '') === '1'; if ($editMode) { renderEditor($db, $key); } else { renderCollapsed($db, $key); } // ═══════════════════════════════════════════════════════════════════════════════ // RENDER HELPERS // ═══════════════════════════════════════════════════════════════════════════════ function renderCollapsed(Database $db, string $key): void { $blocks = $db->getAllFormHelpBlocks(); $b = $blocks[$key] ?? ['content' => '', 'name' => '', 'enabled' => 0]; $name = $b['name'] ?: $key; $content = $b['content'] ?? ''; $enabled = (int)($b['enabled'] ?? 1); $hasContent = trim($content) !== ''; $mdHtml = ''; if ($hasContent) { $converter = new CommonMarkConverter(['html_input' => 'strip']); $mdHtml = $converter->convert($content)->getContent(); } ?>