<?php
/**
 * Paramètres du site + thème couleurs (Tabler).
 * @var array<string,string> $v
 * @var ?string $flash
 */

use App\Core\Csrf;

$colorGroups = [
    'Général' => [
        'theme_color_bg'         => 'Fond de page',
        'theme_color_text'       => 'Texte secondaire (titres, fil d\'Ariane)',
        'theme_color_gallery_title' => 'Titre de galerie',
        'theme_color_link'       => 'Liens',
        'theme_color_link_hover' => 'Liens (survol)',
    ],
    'Fil d\'Ariane' => [
        'theme_color_breadcrumb_link'    => 'Lien (ex. « Accueil »)',
        'theme_color_breadcrumb_current' => 'Page courante',
    ],
    'En-tête' => [
        'theme_color_header_bg'     => 'Fond',
        'theme_color_header_border' => 'Filet (bas)',
    ],
    'Menu' => [
        'theme_color_menu_text'        => 'Texte',
        'theme_color_accent'           => 'Texte (survol)',
        'theme_color_submenu_bg'       => 'Fond du sous-menu',
        'theme_color_submenu_hover_bg' => 'Fond au survol',
    ],
    'Pied de page' => [
        'theme_color_footer_bg' => 'Fond',
    ],
    'Boutons / étiquettes' => [
        'theme_color_hover' => 'Survol',
    ],
];
?>
<h2 class="h2 mb-3">Paramètres</h2>


<form method="post" action="<?= e(base_url('admin/settings')) ?>">
    <?= Csrf::field() ?>
    <div class="row row-cards">
        <div class="col-lg-6">
            <div class="card mb-3"><div class="card-header"><h3 class="card-title">Général</h3></div><div class="card-body">
                <div class="mb-3"><label class="form-label">Titre du site</label><input type="text" name="site_title" class="form-control" value="<?= e($v['site_title']) ?>"></div>
                <div class="mb-3"><label class="form-label">Accroche</label><input type="text" name="tagline" class="form-control" value="<?= e($v['tagline']) ?>"></div>
                <?php /* Langue par défaut masquée : on ne gère que le français pour l'instant. Remettre if(true) pour réactiver. */ ?>
                <?php if (false): ?>
                <div class="mb-3"><label class="form-label">Langue par défaut</label><select name="default_lang" class="form-select"><option value="fr" <?= $v['default_lang'] === 'fr' ? 'selected' : '' ?>>Français</option><option value="en" <?= $v['default_lang'] === 'en' ? 'selected' : '' ?>>English</option></select></div>
                <?php endif; ?>
                <div class="mb-0"><label class="form-label">Auteur des images (métadonnée)</label><input type="text" name="image_author" class="form-control" value="<?= e($v['image_author']) ?>"></div>
            </div></div>
            <div class="card"><div class="card-header"><h3 class="card-title">Couleurs du thème</h3></div><div class="card-body">
                <?php $first = true; foreach ($colorGroups as $groupName => $cols): ?>
                    <div class="fw-bold text-secondary text-uppercase small mb-2<?= $first ? '' : ' mt-3 pt-3 border-top' ?>"><?= e($groupName) ?></div>
                    <?php foreach ($cols as $key => $label): ?>
                        <div class="row align-items-center mb-2">
                            <label class="col-7 col-form-label py-1" for="<?= e($key) ?>"><?= e($label) ?></label>
                            <div class="col-5 color-field">
                                <input type="color" id="<?= e($key) ?>" name="<?= e($key) ?>" class="form-control form-control-color color-swatch" value="<?= e($v[$key]) ?>">
                                <input type="text" class="form-control color-hex" data-for="<?= e($key) ?>" value="<?= e($v[$key]) ?>" maxlength="7" spellcheck="false" autocomplete="off" aria-label="Code hexadécimal">
                            </div>
                        </div>
                    <?php endforeach; ?>
                <?php $first = false; endforeach; ?>
            </div></div>
        </div>
        <div class="col-lg-6">
            <div class="card mb-3"><div class="card-header"><h3 class="card-title">Menu</h3></div><div class="card-body">
                <div class="mb-3"><label class="form-label">Type de menu mobile</label><select name="menu_mode" class="form-select"><option value="offcanvas" <?= $v['menu_mode'] === 'offcanvas' ? 'selected' : '' ?>>Panneau latéral (off-canvas)</option><option value="collapse" <?= $v['menu_mode'] === 'collapse' ? 'selected' : '' ?>>Déroulant (collapse)</option></select></div>
                <div class="mb-0"><label class="form-label">Menu hamburger en dessous de (px)</label><input type="number" name="nav_breakpoint" min="320" class="form-control" value="<?= e($v['nav_breakpoint']) ?>"><div class="form-hint mt-1">Au-dessus : navigation horizontale ; en dessous : menu hamburger.</div></div>
            </div></div>
            <div class="card mb-3"><div class="card-header"><h3 class="card-title">Galeries</h3></div><div class="card-body">
                <div class="mb-3"><label class="form-label">Libellé « Galeries » (menu + accueil)</label><input type="text" name="galleries_label" class="form-control" value="<?= e($v['galleries_label']) ?>"></div>
                <label class="form-check form-switch mb-3"><input class="form-check-input" type="checkbox" name="gallery_lazyload_enabled" value="1" <?= $v['gallery_lazyload_enabled'] === '1' ? 'checked' : '' ?>><span class="form-check-label">Chargement progressif des images (lazy-load)</span></label>
                <div class="mb-0" data-show-if="gallery_lazyload_enabled"><label class="form-label">Nombre d'images par lot</label><input type="number" name="gallery_batch_size" min="1" class="form-control" value="<?= e($v['gallery_batch_size']) ?>"></div>
            </div></div>
            <div class="card mb-3"><div class="card-header"><h3 class="card-title">Images des galeries</h3></div><div class="card-body">
                <p class="text-secondary small mb-3">Taille minimale acceptée à l'upload (par défaut, la taille du plus grand rendu « plein écran »). Les images plus petites sont refusées.</p>
                <div class="row g-2">
                    <div class="col-12"><label class="form-label small mb-1">Paysage — largeur &times; hauteur (px)</label></div>
                    <div class="col-6"><input type="number" name="upload_min_landscape_w" min="1000" class="form-control" value="<?= e($v['upload_min_landscape_w']) ?>"></div>
                    <div class="col-6"><input type="number" name="upload_min_landscape_h" min="667" class="form-control" value="<?= e($v['upload_min_landscape_h']) ?>"></div>
                    <div class="col-12 mt-2"><label class="form-label small mb-1">Portrait — largeur &times; hauteur (px)</label></div>
                    <div class="col-6"><input type="number" name="upload_min_portrait_w" min="667" class="form-control" value="<?= e($v['upload_min_portrait_w']) ?>"></div>
                    <div class="col-6"><input type="number" name="upload_min_portrait_h" min="1000" class="form-control" value="<?= e($v['upload_min_portrait_h']) ?>"></div>
                </div>
            </div></div>
            <div class="card"><div class="card-header"><h3 class="card-title">Contact</h3></div><div class="card-body">
                <label class="form-check form-switch mb-2"><input class="form-check-input" type="checkbox" name="contact_enabled" value="1" <?= $v['contact_enabled'] === '1' ? 'checked' : '' ?>><span class="form-check-label">Activer le formulaire de contact</span></label>

                <div data-show-if="contact_enabled">
                <label class="form-check form-switch mb-3"><input class="form-check-input" type="checkbox" name="menu_show_contact" value="1" <?= $v['menu_show_contact'] === '1' ? 'checked' : '' ?>><span class="form-check-label">Afficher « Contact » dans le menu</span></label>

                <div class="mb-3"><label class="form-label small mb-1">Email de réception</label><input type="email" name="contact_email" class="form-control" value="<?= e($v['contact_email']) ?>" placeholder="daniel.tiziani@exemple.com" spellcheck="false" autocomplete="off"><div class="form-hint mt-1">Adresse qui reçoit les messages du formulaire.</div></div>

                <div class="d-flex align-items-center justify-content-between mb-1">
                    <label class="form-label mb-0">Envoi des e-mails (SMTP)</label>
                    <button type="button" class="btn btn-sm" data-bs-toggle="collapse" data-bs-target="#smtpHelp" aria-expanded="false" aria-controls="smtpHelp"><i class="ti ti-help-circle me-1"></i>Aide</button>
                </div>
                <div class="collapse mb-2" id="smtpHelp">
                    <div class="alert alert-info mb-0 small">
                        Renseignez le serveur d'envoi fourni par votre hébergeur ou votre boîte mail. Sans SMTP, l'envoi tente la fonction <code>mail()</code> de PHP (souvent bloquée ou classée en spam). Le port et le chiffrement usuels&nbsp;: <strong>587 / TLS</strong> ou <strong>465 / SSL</strong>.
                    </div>
                </div>
                <div class="row g-2 mb-3">
                    <div class="col-8"><label class="form-label small mb-1">Serveur SMTP</label><input type="text" name="mail_smtp_host" class="form-control" value="<?= e($v['mail_smtp_host']) ?>" placeholder="smtp.exemple.com" spellcheck="false" autocomplete="off"></div>
                    <div class="col-4"><label class="form-label small mb-1">Port</label><input type="number" name="mail_smtp_port" class="form-control" value="<?= e($v['mail_smtp_port']) ?>" placeholder="587" min="1"></div>
                    <div class="col-6"><label class="form-label small mb-1">Chiffrement</label><select name="mail_smtp_secure" class="form-select"><option value="tls" <?= $v['mail_smtp_secure'] === 'tls' ? 'selected' : '' ?>>TLS (587)</option><option value="ssl" <?= $v['mail_smtp_secure'] === 'ssl' ? 'selected' : '' ?>>SSL (465)</option><option value="none" <?= $v['mail_smtp_secure'] === 'none' ? 'selected' : '' ?>>Aucun</option></select></div>
                    <div class="col-6"><label class="form-label small mb-1">Nom d'expéditeur</label><input type="text" name="mail_from_name" class="form-control" value="<?= e($v['mail_from_name']) ?>" placeholder="Daniel Tiziani"></div>
                    <div class="col-12"><label class="form-label small mb-1">Email expéditeur (From)</label><input type="email" name="mail_from_email" class="form-control" value="<?= e($v['mail_from_email']) ?>" placeholder="no-reply@exemple.com" spellcheck="false" autocomplete="off"><div class="form-hint mt-1">Idéalement une adresse de votre domaine (améliore la délivrabilité).</div></div>
                    <div class="col-6"><label class="form-label small mb-1">Utilisateur SMTP</label><input type="text" name="mail_smtp_user" class="form-control" value="<?= e($v['mail_smtp_user']) ?>" spellcheck="false" autocomplete="off"></div>
                    <div class="col-6"><label class="form-label small mb-1">Mot de passe SMTP</label><input type="password" name="mail_smtp_pass" class="form-control" value="<?= e($v['mail_smtp_pass']) ?>" autocomplete="new-password"></div>
                </div>
                <div class="d-flex align-items-center gap-2 mb-3">
                    <button type="button" id="testEmailBtn" class="btn btn-sm" data-url="<?= e(base_url('admin/settings/test-email')) ?>"><i class="ti ti-send me-1"></i>Envoyer un email de test</button>
                    <span class="form-hint m-0">Enregistrez avant de tester.</span>
                </div>

                <div class="d-flex align-items-center justify-content-between mb-3">
                    <label class="form-check form-switch m-0"><input class="form-check-input" type="checkbox" name="contact_recaptcha_enabled" value="1" <?= $v['contact_recaptcha_enabled'] === '1' ? 'checked' : '' ?>><span class="form-check-label">Activer Google reCAPTCHA v3 (invisible)</span></label>
                    <button type="button" class="btn btn-sm" data-bs-toggle="collapse" data-bs-target="#recaptchaHelp" aria-expanded="false" aria-controls="recaptchaHelp"><i class="ti ti-help-circle me-1"></i>Aide</button>
                </div>
                <div class="collapse mb-3" id="recaptchaHelp">
                    <div class="alert alert-info mb-0">
                        <div class="fw-bold mb-1">Qu'est-ce que reCAPTCHA&nbsp;?</div>
                        <p class="mb-3">Un service gratuit de Google qui protège le formulaire de contact des robots et du spam. La version&nbsp;v3 est <strong>invisible</strong>&nbsp;: elle analyse le comportement en arrière-plan, le visiteur n'a aucune case à cocher (un petit badge Google apparaît en bas à droite du site).</p>
                        <div class="fw-bold mb-2">Obtenir des clés reCAPTCHA v3</div>
                        <ol class="mb-0 ps-3">
                            <li>Ouvrez la <a href="https://www.google.com/recaptcha/admin/create" target="_blank" rel="noopener">console d'administration reCAPTCHA</a> (connexion avec un compte Google).</li>
                            <li>Donnez un <strong>libellé</strong> (ex.&nbsp;: Daniel Tiziani).</li>
                            <li>Type&nbsp;: choisissez <strong>reCAPTCHA v3</strong>.</li>
                            <li>Ajoutez vos <strong>domaines</strong>&nbsp;: <code><?= e($_SERVER['HTTP_HOST'] ?? 'daniel-tiziani.com') ?></code> (et <code>daniel.test</code> pour les tests locaux).</li>
                            <li>Acceptez les conditions puis validez.</li>
                            <li>Copiez la <strong>Clé du site</strong> et la <strong>Clé secrète</strong> dans les champs ci-dessous, puis <strong>Enregistrer</strong>.</li>
                        </ol>
                    </div>
                </div>

                <div class="settings-nested" data-show-if="contact_recaptcha_enabled">
                <div class="form-label mb-2">Clés reCAPTCHA v3</div>
                <div class="mb-2"><label class="form-label small mb-1">Clé du site (site key)</label><input type="text" name="recaptcha_site_key" class="form-control" value="<?= e($v['recaptcha_site_key']) ?>" spellcheck="false" autocomplete="off"><div class="invalid-feedback">Requise pour activer reCAPTCHA.</div></div>
                <div class="mb-0"><label class="form-label small mb-1">Clé secrète (secret key)</label><input type="password" name="recaptcha_secret_key" class="form-control" value="<?= e($v['recaptcha_secret_key']) ?>" spellcheck="false" autocomplete="off"><div class="invalid-feedback">Requise pour activer reCAPTCHA.</div></div>
                </div><!-- /data-show-if contact_recaptcha_enabled -->
                </div><!-- /data-show-if contact_enabled -->
            </div></div>
            <div class="card mt-3"><div class="card-header"><h3 class="card-title">SEO</h3></div><div class="card-body">
                <label class="form-check form-switch mb-2"><input class="form-check-input" type="checkbox" name="seo_noindex" value="1" <?= $v['seo_noindex'] === '1' ? 'checked' : '' ?>><span class="form-check-label">Empêcher l'indexation du site</span></label>
                <div class="form-hint mb-0">Ajoute une balise <code>noindex, nofollow</code> sur toutes les pages publiques et bloque les robots via <code>robots.txt</code>. À utiliser pendant le développement ou pour un site privé.</div>
                <div class="alert alert-warning mt-3 mb-0" data-show-if="seo_noindex">
                    <i class="ti ti-alert-triangle me-1"></i><strong>Attention&nbsp;:</strong> le site ne sera plus référencé par Google ni les autres moteurs de recherche. N'activez cette option que si c'est voulu.
                </div>
            </div></div>
        </div>
    </div>
    <div class="mt-3 d-flex gap-2 justify-content-end">
        <a class="btn" href="<?= e(base_url('admin')) ?>">Annuler</a>
        <button type="submit" class="btn btn-primary"><i class="ti ti-device-floppy me-1"></i>Enregistrer</button>
    </div>
</form>
