settings correction
Deploy HouseHub / deploy (push) Successful in 1s

This commit is contained in:
Cedric
2026-05-12 17:23:24 +02:00
parent fd53b33e9f
commit b3f320975b
2 changed files with 316 additions and 53 deletions
+50 -53
View File
@@ -136,24 +136,24 @@ $activePage = "settings";
require __DIR__ . '/header.php';
?>
<div class="pf-container" style="max-width:680px;margin:32px auto;padding:0 16px">
<div class="pf-container pf-settings-page">
<h1 style="font-size:1.4rem;font-weight:700;margin-bottom:32px">⚙️ Paramètres</h1>
<h1 class="pf-settings-title">⚙️ Paramètres</h1>
<?php if ($success): ?>
<div style="background:#dcfce7;border:1px solid #86efac;border-radius:8px;padding:12px 16px;margin-bottom:24px;color:#166534">✓ <?= htmlspecialchars($success) ?></div>
<div class="pf-alert pf-alert--success">✓ <?= htmlspecialchars($success) ?></div>
<?php endif; ?>
<?php if ($error): ?>
<div style="background:#fee2e2;border:1px solid #fca5a5;border-radius:8px;padding:12px 16px;margin-bottom:24px;color:#991b1b">✗ <?= htmlspecialchars($error) ?></div>
<div class="pf-alert pf-alert--error">✗ <?= htmlspecialchars($error) ?></div>
<?php endif; ?>
<!-- ── Langue ─────────────────────────────────────────────────────────── -->
<section class="pf-panel-card">
<h2 style="font-size:1rem;font-weight:700;margin-bottom:20px">🌐 Langue / Language</h2>
<form method="post" style="display:flex;gap:10px;flex-wrap:wrap">
<h2 class="pf-card-h2">🌐 Langue / Language</h2>
<form method="post" class="pf-lang-form">
<input type="hidden" name="action" value="set_lang">
<?php
$s = 'style="vertical-align:middle;border-radius:2px;margin-right:5px"';
$s = 'class="pf-flag-inline"';
$fr_flag = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 12" width="20" height="13" '.$s.'><rect width="6" height="12" fill="#002395"/><rect x="6" width="6" height="12" fill="#fff"/><rect x="12" width="6" height="12" fill="#ED2939"/></svg>';
$en_flag = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 30" width="20" height="13" '.$s.'><rect width="60" height="30" fill="#012169"/><path d="M0,0 L60,30 M60,0 L0,30" stroke="#fff" stroke-width="6"/><path d="M0,0 L60,30 M60,0 L0,30" stroke="#C8102E" stroke-width="4"/><path d="M30,0 V30 M0,15 H60" stroke="#fff" stroke-width="10"/><path d="M30,0 V30 M0,15 H60" stroke="#C8102E" stroke-width="6"/></svg>';
$senyera = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 12" width="20" height="13" '.$s.'><rect width="18" height="12" fill="#FCDD09"/><rect y="1.33" width="18" height="1.33" fill="#DA121A"/><rect y="4" width="18" height="1.33" fill="#DA121A"/><rect y="6.67" width="18" height="1.33" fill="#DA121A"/><rect y="9.33" width="18" height="1.33" fill="#DA121A"/></svg>';
@@ -166,8 +166,7 @@ require __DIR__ . '/header.php';
foreach ($langs as $code => $lang):
?>
<button type="submit" name="lang" value="<?= $code ?>"
class="pf-btn <?= $currentLang === $code ? '' : 'btn-secondary' ?>"
style="<?= $currentLang === $code ? 'pointer-events:none' : '' ?>">
class="pf-btn <?= $currentLang === $code ? 'pf-btn--current-lang' : 'btn-secondary' ?>">
<?= $lang['flag'] ?> <?= $lang['label'] ?>
</button>
<?php endforeach; ?>
@@ -177,8 +176,8 @@ require __DIR__ . '/header.php';
<!-- ── Modules ────────────────────────────────────────────────────────── -->
<?php if ($family_id): ?>
<section class="pf-panel-card">
<h2 style="font-size:1rem;font-weight:700;margin-bottom:6px">🧩 Modules actifs</h2>
<p style="color:#64748b;font-size:0.85rem;margin-bottom:20px">Choisissez les modules visibles dans la navigation (partagé avec tous les membres de l'espace).</p>
<h2 class="pf-card-h2 pf-card-h2--tight">🧩 Modules actifs</h2>
<p class="pf-muted-note">Choisissez les modules visibles dans la navigation (partagé avec tous les membres de l'espace).</p>
<?php
$enabledMods = $_SESSION['enabled_modules'] ?? ['calendar','budget','holidays','gifts'];
$allModules = [
@@ -193,14 +192,12 @@ require __DIR__ . '/header.php';
?>
<form method="post">
<input type="hidden" name="action" value="set_modules">
<div style="display:flex;flex-direction:column;gap:12px;margin-bottom:20px">
<div class="pf-stack-md">
<?php foreach ($allModules as $key => $mod): $active = in_array($key, $enabledMods); ?>
<label style="display:flex;align-items:center;gap:14px;padding:14px 16px;border:2px solid <?= $active ? '#2563eb' : '#e2e8f0' ?>;border-radius:10px;cursor:pointer;background:<?= $active ? '#eff6ff' : '#f8fafc' ?>;transition:all .15s">
<input type="checkbox" name="mod_<?= $key ?>" <?= $active ? 'checked' : '' ?>
style="width:18px;height:18px;accent-color:#2563eb;cursor:pointer"
onchange="this.closest('label').style.borderColor=this.checked?'#2563eb':'#e2e8f0';this.closest('label').style.background=this.checked?'#eff6ff':'#f8fafc'">
<span style="font-size:1.3rem"><?= $mod['icon'] ?></span>
<span style="font-weight:600;font-size:0.95rem"><?= $mod['label'] ?></span>
<label class="pf-module-tile">
<input type="checkbox" name="mod_<?= $key ?>" <?= $active ? 'checked' : '' ?> class="pf-checkbox-lg">
<span class="pf-tile-icon"><?= $mod['icon'] ?></span>
<span class="pf-tile-label"><?= $mod['label'] ?></span>
</label>
<?php endforeach; ?>
</div>
@@ -216,29 +213,29 @@ require __DIR__ . '/header.php';
$has_custom_bg = $bg_file !== null;
?>
<section class="pf-panel-card">
<h2 style="font-size:1rem;font-weight:700;margin-bottom:6px">🖼️ Image d'accueil</h2>
<p style="color:#64748b;font-size:0.85rem;margin-bottom:20px">Photo de fond affichée sur la page d'accueil (partagée avec tous les membres).</p>
<h2 class="pf-card-h2 pf-card-h2--tight">🖼️ Image d'accueil</h2>
<p class="pf-muted-note">Photo de fond affichée sur la page d'accueil (partagée avec tous les membres).</p>
<?php if ($has_custom_bg): ?>
<div style="margin-bottom:16px;border-radius:10px;overflow:hidden;max-height:160px;position:relative">
<img src="/home-bg.php" alt="Fond actuel" style="width:100%;height:160px;object-fit:cover">
<span style="position:absolute;top:8px;right:8px;background:rgba(0,0,0,.55);color:#fff;font-size:.75rem;padding:3px 8px;border-radius:6px">Image personnalisée</span>
<div class="pf-home-bg-preview">
<img src="/home-bg.php" alt="Fond actuel">
<span class="pf-badge-overlay">Image personnalisée</span>
</div>
<?php endif; ?>
<form method="post" enctype="multipart/form-data" style="display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap">
<form method="post" enctype="multipart/form-data" class="pf-inline-form-end">
<input type="hidden" name="action" value="upload_home_bg">
<div class="pf-form-group" style="flex:1;min-width:200px">
<div class="pf-form-group">
<label class="pf-label">Nouvelle image (jpg, png, webp — max 10 Mo)</label>
<input type="file" name="home_bg" class="pf-input" accept="image/jpeg,image/png,image/webp" required>
</div>
<button type="submit" class="pf-btn" style="flex-shrink:0">Enregistrer</button>
<button type="submit" class="pf-btn pf-shrink-0">Enregistrer</button>
</form>
<?php if ($has_custom_bg): ?>
<form method="post" style="margin-top:10px">
<form method="post" class="pf-mt-sm">
<input type="hidden" name="action" value="reset_home_bg">
<button type="submit" class="pf-btn btn-secondary" style="font-size:.85rem"
<button type="submit" class="pf-btn btn-secondary pf-btn-sm-text"
onclick="return confirm('Revenir à l\'image par défaut ?')">🔄 Remettre l'image par défaut</button>
</form>
<?php endif; ?>
@@ -247,12 +244,12 @@ require __DIR__ . '/header.php';
<!-- ── Profil ──────────────────────────────────────────────────────────── -->
<section class="pf-panel-card">
<h2 style="font-size:1rem;font-weight:700;margin-bottom:20px">👤 Mon profil</h2>
<h2 class="pf-card-h2">👤 Mon profil</h2>
<form method="post">
<input type="hidden" name="action" value="update_profile">
<div class="pf-form-group">
<label class="pf-label">Nom d'utilisateur</label>
<input type="text" class="pf-input" value="<?= htmlspecialchars($user['username']) ?>" disabled style="background:#f8fafc;color:#94a3b8">
<input type="text" class="pf-input pf-input--disabled-muted" value="<?= htmlspecialchars($user['username']) ?>" disabled>
</div>
<div class="pf-form-group">
<label class="pf-label">Prénom / Pseudo affiché</label>
@@ -264,7 +261,7 @@ require __DIR__ . '/header.php';
<!-- ── Mot de passe ────────────────────────────────────────────────────── -->
<section class="pf-panel-card">
<h2 style="font-size:1rem;font-weight:700;margin-bottom:20px">🔒 Changer le mot de passe</h2>
<h2 class="pf-card-h2">🔒 Changer le mot de passe</h2>
<form method="post">
<input type="hidden" name="action" value="change_password">
<div class="pf-form-group">
@@ -286,54 +283,54 @@ require __DIR__ . '/header.php';
<?php if ($family): ?>
<!-- ── Espace familial ─────────────────────────────────────────────────── -->
<section class="pf-panel-card">
<h2 style="font-size:1rem;font-weight:700;margin-bottom:20px">🏠 Mon espace familial</h2>
<h2 class="pf-card-h2">🏠 Mon espace familial</h2>
<form method="post" style="margin-bottom:20px">
<form method="post" class="pf-mb-section">
<input type="hidden" name="action" value="update_family_name">
<div class="pf-form-group">
<label class="pf-label">Nom de l'espace</label>
<div style="display:flex;gap:8px">
<div class="pf-flex-gap-8">
<input type="text" name="family_name" class="pf-input" value="<?= htmlspecialchars($family['name']) ?>" required>
<button type="submit" class="pf-btn" style="flex-shrink:0">Enregistrer</button>
<button type="submit" class="pf-btn pf-shrink-0">Enregistrer</button>
</div>
</div>
</form>
<!-- Code d'invitation -->
<div style="background:#f8fafc;border:2px dashed #cbd5e1;border-radius:10px;padding:20px">
<p style="font-size:0.85rem;color:#64748b;margin-bottom:8px">Code d'invitation — partagez-le pour inviter quelqu'un</p>
<div style="display:flex;align-items:center;gap:12px;flex-wrap:wrap">
<code id="invite-code" style="font-size:1.3rem;font-weight:700;letter-spacing:3px;color:#1e40af;cursor:pointer"
<div class="pf-dashed-panel">
<p class="pf-muted-note pf-muted-note--tight">Code d'invitation — partagez-le pour inviter quelqu'un</p>
<div class="pf-invite-row">
<code id="invite-code" class="pf-invite-code"
onclick="copyCode()" title="Cliquer pour copier">
<?= htmlspecialchars($family['invite_code']) ?>
</code>
<span id="copy-msg" style="color:#16a34a;font-size:0.85rem;opacity:0;transition:opacity .3s">✓ Copié !</span>
<form method="post" style="margin-left:auto">
<span id="copy-msg" class="pf-copy-msg">✓ Copié !</span>
<form method="post" class="pf-ml-auto">
<input type="hidden" name="action" value="regen_invite">
<button type="submit" class="pf-btn btn-secondary" style="font-size:0.85rem"
<button type="submit" class="pf-btn btn-secondary pf-btn-sm-text"
onclick="return confirm('Regénérer le code ? L\'ancien sera invalidé.')">
🔄 Nouveau code
</button>
</form>
</div>
<p style="margin-top:12px;font-size:0.8rem;color:#94a3b8">
<p class="pf-invite-footnote">
Lien d'inscription : <strong><?= $_SERVER['HTTP_HOST'] ?>/register.php</strong>
</p>
</div>
<!-- Membres -->
<h3 style="font-size:0.95rem;font-weight:600;margin:20px 0 12px">Membres (<?= count($members) ?>)</h3>
<div style="display:flex;flex-direction:column;gap:8px">
<h3 class="pf-members-heading">Membres (<?= count($members) ?>)</h3>
<div class="pf-stack-sm">
<?php foreach ($members as $m): ?>
<div style="display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:#f8fafc;border-radius:8px">
<div class="pf-member-card">
<div>
<strong><?= htmlspecialchars($m['display_name']) ?></strong>
<span style="color:#94a3b8;font-size:0.85rem;margin-left:6px">@<?= htmlspecialchars($m['username']) ?></span>
<span class="pf-muted-inline">@<?= htmlspecialchars($m['username']) ?></span>
<?php if ($m['is_admin']): ?>
<span style="background:#dbeafe;color:#1d4ed8;padding:1px 7px;border-radius:8px;font-size:0.75rem;font-weight:600;margin-left:6px">Admin</span>
<span class="pf-admin-badge">Admin</span>
<?php endif; ?>
</div>
<span style="font-size:0.8rem;color:#94a3b8"><?= date('d/m/Y', strtotime($m['created_at'])) ?></span>
<span class="pf-muted-tiny"><?= date('d/m/Y', strtotime($m['created_at'])) ?></span>
</div>
<?php endforeach; ?>
</div>
@@ -341,8 +338,8 @@ require __DIR__ . '/header.php';
<?php endif; ?>
<?php if ($_SESSION['user']['is_admin']): ?>
<div style="text-align:center;margin-top:8px">
<a href="/admin/" style="color:#2563eb;font-size:0.9rem">→ Panneau d'administration</a>
<div class="pf-settings-admin-link">
<a href="/admin/">→ Panneau d'administration</a>
</div>
<?php endif; ?>
@@ -353,8 +350,8 @@ function copyCode() {
const code = document.getElementById('invite-code').textContent.trim();
navigator.clipboard.writeText(code).then(() => {
const msg = document.getElementById('copy-msg');
msg.style.opacity = '1';
setTimeout(() => msg.style.opacity = '0', 2000);
msg.classList.add('is-visible');
setTimeout(() => msg.classList.remove('is-visible'), 2000);
});
}
</script>