<?php

declare(strict_types=1);
require_once __DIR__ . '/../app/config/bootstrap.php';
require_once __DIR__ . '/../app/core/Auth.php';
require_once __DIR__ . '/../app/core/Csrf.php';
require_once __DIR__ . '/../app/core/AdminLayout.php';
require_once __DIR__ . '/../app/models/SiteSetting.php';
Auth::requireAdmin();

$settingModel = new SiteSetting();
$defaults = [
    'interactive_title' => 'راهنمای تعاملی زایلون',
    'interactive_subtitle' => 'برای آشنایی سریع با دستگاه‌ها، نشانگر را روی این متن حرکت دهید.',
    'interactive_text_color' => '#ffffff',
    'interactive_bg_color' => 'rgba(34,34,34,0.45)',
    'interactive_border_color' => '#ef4056',
    'perf_public_cache_enabled' => '1',
    'perf_public_cache_ttl' => '45',
    'perf_client_cache_seconds' => '120',
    'perf_html_compress_enabled' => '1',
];
$message = null;

if ($_SERVER['REQUEST_METHOD'] === 'POST' && Csrf::validate($_POST['_csrf'] ?? null)) {
    $settingModel->setMany([
        'interactive_title' => trim((string)($_POST['interactive_title'] ?? '')),
        'interactive_subtitle' => trim((string)($_POST['interactive_subtitle'] ?? '')),
        'interactive_text_color' => trim((string)($_POST['interactive_text_color'] ?? '#ffffff')),
        'interactive_bg_color' => trim((string)($_POST['interactive_bg_color'] ?? 'rgba(34,34,34,0.45)')),
        'interactive_border_color' => trim((string)($_POST['interactive_border_color'] ?? '#ef4056')),
        'perf_public_cache_enabled' => isset($_POST['perf_public_cache_enabled']) ? '1' : '0',
        'perf_public_cache_ttl' => (string)max(5, (int)($_POST['perf_public_cache_ttl'] ?? 45)),
        'perf_client_cache_seconds' => (string)max(0, (int)($_POST['perf_client_cache_seconds'] ?? 120)),
        'perf_html_compress_enabled' => isset($_POST['perf_html_compress_enabled']) ? '1' : '0',
    ]);
    $message = 'تنظیمات با موفقیت ذخیره شد.';
}

$settings = array_merge($defaults, $settingModel->getMany(array_keys($defaults)));
?>
<!doctype html>
<html lang="fa" dir="rtl">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="<?= htmlspecialchars(assetPath('/assets/css/admin.css')) ?>">
    <title>تنظیمات</title>
</head>

<body>
    <div class="admin-wrap">
        <?php renderAdminSidebar('settings'); ?>
        <main class="content">
            <h1>تنظیمات سیستم</h1>
            <?php if ($message): ?><p><?= htmlspecialchars($message) ?></p><?php endif; ?>
            <form method="post">
                <input type="hidden" name="_csrf" value="<?= htmlspecialchars(Csrf::token()) ?>">
                <h3>تنظیم متن تعاملی صفحه اصلی</h3>
                <input name="interactive_title" value="<?= htmlspecialchars((string)$settings['interactive_title']) ?>" placeholder="عنوان">
                <textarea name="interactive_subtitle" rows="4" placeholder="متن زیرنویس"><?= htmlspecialchars((string)$settings['interactive_subtitle']) ?></textarea>
                <div class="color-grid">
                    <div>
                        <label>رنگ متن</label>
                        <input type="color" value="<?= htmlspecialchars((string)$settings['interactive_text_color']) ?>" data-bind-color="#interactive_text_color">
                        <input id="interactive_text_color" name="interactive_text_color" value="<?= htmlspecialchars((string)$settings['interactive_text_color']) ?>" placeholder="#ffffff">
                    </div>
                    <div>
                        <label>رنگ کادر</label>
                        <input type="color" value="<?= htmlspecialchars((string)$settings['interactive_border_color']) ?>" data-bind-color="#interactive_border_color">
                        <input id="interactive_border_color" name="interactive_border_color" value="<?= htmlspecialchars((string)$settings['interactive_border_color']) ?>" placeholder="#ef4056">
                    </div>
                </div>
                <label>رنگ پس‌زمینه (می‌تواند rgba باشد)</label>
                <input name="interactive_bg_color" value="<?= htmlspecialchars((string)$settings['interactive_bg_color']) ?>" placeholder="rgba(34,34,34,0.45)">
                <div
                    class="interactive-preview"
                    style="color:<?= htmlspecialchars((string)$settings['interactive_text_color']) ?>;background:<?= htmlspecialchars((string)$settings['interactive_bg_color']) ?>;border-color:<?= htmlspecialchars((string)$settings['interactive_border_color']) ?>"
                >
                    <strong><?= htmlspecialchars((string)$settings['interactive_title']) ?></strong>
                    <p><?= htmlspecialchars((string)$settings['interactive_subtitle']) ?></p>
                </div>
                <button type="submit">ذخیره تنظیمات</button>

                <h3>تنظیمات سرعت و کش همه صفحات</h3>
                <label>
                    <input type="checkbox" name="perf_public_cache_enabled" value="1" <?= ((string)$settings['perf_public_cache_enabled'] === '1') ? 'checked' : '' ?>>
                    فعال‌سازی کش صفحات عمومی (افزایشی روی ماژول فعلی)
                </label>
                <label>مدت کش سمت سرور (ثانیه)</label>
                <input name="perf_public_cache_ttl" type="number" min="5" value="<?= (int)$settings['perf_public_cache_ttl'] ?>">

                <label>مدت کش مرورگر (ثانیه)</label>
                <input name="perf_client_cache_seconds" type="number" min="0" value="<?= (int)$settings['perf_client_cache_seconds'] ?>">

                <label>
                    <input type="checkbox" name="perf_html_compress_enabled" value="1" <?= ((string)$settings['perf_html_compress_enabled'] === '1') ? 'checked' : '' ?>>
                    فشرده‌سازی HTML صفحات عمومی
                </label>

                <p>این کنترل‌ها روی همه صفحات عمومی اعمال می‌شوند و صفحات حساس (مثل سبد، تسویه، پروفایل و ادمین) امن و بدون کش باقی می‌مانند.</p>
            </form>
            <p>این فرم برای موبایل بهینه شده و از طریق گوشی هم به‌راحتی قابل مدیریت است.</p>
        </main>
    </div>
    <script>
        document.querySelectorAll('[data-bind-color]').forEach((picker) => {
            picker.addEventListener('input', () => {
                const selector = picker.getAttribute('data-bind-color');
                const target = selector ? document.querySelector(selector) : null;
                if (target) target.value = picker.value;
            });
        });
    </script>
</body>

</html>
<?php Performance::finish('admin.settings'); ?>