Refactor admin settings to use tabs instead of accordion

Co-authored-by: mathieumoran1 <[email protected]>
This commit is contained in:
Cursor Agent
2025-12-22 23:01:48 +00:00
co-authored by mathieumoran1
parent 2968ca7c80
commit b0408f87c2
+82 -80
View File
@@ -101,96 +101,98 @@
<div class="tab-content pt-3"> <div class="tab-content pt-3">
<div class="tab-pane fade show active" id="admin-settings" role="tabpanel" aria-labelledby="admin-settings-tab"> <div class="tab-pane fade show active" id="admin-settings" role="tabpanel" aria-labelledby="admin-settings-tab">
<div class="row g-3"> <div class="card p-3">
<div class="col-12 col-xxl-8"> <div class="d-flex flex-wrap align-items-end justify-content-between gap-2">
<div class="accordion" id="adminSettingsAccordion"> <div>
<!-- Active year --> <h4 class="mb-1">Réglages</h4>
<div class="accordion-item"> <div class="text-muted">Paramètres globaux du site (année, dates, options du lecteur).</div>
<h2 class="accordion-header" id="adminSettingsHeadingYear"> </div>
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#adminSettingsCollapseYear" aria-expanded="true" aria-controls="adminSettingsCollapseYear"> </div>
Année active
</button> <ul class="nav nav-pills admin-subtabs mt-3" id="adminSettingsSubTabs" role="tablist">
</h2> <li class="nav-item" role="presentation">
<div id="adminSettingsCollapseYear" class="accordion-collapse collapse show" aria-labelledby="adminSettingsHeadingYear" data-bs-parent="#adminSettingsAccordion"> <button class="nav-link active" id="admin-settings-subtab-year" data-bs-toggle="tab" data-bs-target="#admin-settings-pane-year" type="button" role="tab" aria-controls="admin-settings-pane-year" aria-selected="true">
<div class="accordion-body"> Année active
<div class="text-muted small mb-2"> </button>
Pilote tout le site (films, checklist, statistiques). </li>
</div> <li class="nav-item" role="presentation">
<div class="d-flex flex-wrap gap-2 align-items-end justify-content-between"> <button class="nav-link" id="admin-settings-subtab-player" data-bs-toggle="tab" data-bs-target="#admin-settings-pane-player" type="button" role="tab" aria-controls="admin-settings-pane-player" aria-selected="false">
<div class="flex-grow-1" style="min-width: 220px;"> Lecteur
<label for="active_oscar_year" class="form-label mb-1">Année active</label> </button>
<select class="form-select" id="active_oscar_year"></select> </li>
<div class="form-text">Basé sur les années présentes dans les films.</div> <li class="nav-item" role="presentation">
</div> <button class="nav-link" id="admin-settings-subtab-oscar-date" data-bs-toggle="tab" data-bs-target="#admin-settings-pane-oscar-date" type="button" role="tab" aria-controls="admin-settings-pane-oscar-date" aria-selected="false">
<div class="d-flex justify-content-end"> Date Oscars
<button type="button" id="save-active-year" class="btn btn-warning">Appliquer</button> </button>
</div> </li>
</div> </ul>
<div class="tab-content pt-3">
<!-- Active year -->
<div class="tab-pane fade show active" id="admin-settings-pane-year" role="tabpanel" aria-labelledby="admin-settings-subtab-year" tabindex="0">
<div class="border rounded p-3 bg-light">
<div class="text-muted small mb-3">
Pilote tout le site (films, checklist, statistiques).
</div>
<div class="row g-2 align-items-end">
<div class="col-12 col-lg-8">
<label for="active_oscar_year" class="form-label">Année active</label>
<select class="form-select" id="active_oscar_year"></select>
<div class="form-text">Basé sur les années présentes dans les films.</div>
</div>
<div class="col-12 col-lg-4 d-flex gap-2 justify-content-end">
<button type="button" id="save-active-year" class="btn btn-warning w-100">Appliquer</button>
</div> </div>
</div> </div>
</div> </div>
</div>
<!-- Player --> <!-- Player -->
<div class="accordion-item"> <div class="tab-pane fade" id="admin-settings-pane-player" role="tabpanel" aria-labelledby="admin-settings-subtab-player" tabindex="0">
<h2 class="accordion-header" id="adminSettingsHeadingPlayer"> <div class="border rounded p-3 bg-light">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#adminSettingsCollapsePlayer" aria-expanded="false" aria-controls="adminSettingsCollapsePlayer"> <div class="d-flex flex-wrap gap-2 align-items-center justify-content-between">
Lecteur (player) <div class="form-check">
</button> <input class="form-check-input" type="checkbox" id="player_ui_show_status">
</h2> <label class="form-check-label" for="player_ui_show_status">Afficher “Source” + “Progress” (admins)</label>
<div id="adminSettingsCollapsePlayer" class="accordion-collapse collapse" aria-labelledby="adminSettingsHeadingPlayer" data-bs-parent="#adminSettingsAccordion"> </div>
<div class="accordion-body"> <div class="d-flex gap-2">
<div class="d-flex flex-wrap gap-2 align-items-center justify-content-between"> <button type="button" id="player_ui_reload" class="btn btn-outline-secondary">Recharger</button>
<div class="form-check"> <button type="button" id="player_ui_save" class="btn btn-warning">Enregistrer</button>
<input class="form-check-input" type="checkbox" id="player_ui_show_status">
<label class="form-check-label" for="player_ui_show_status">Afficher “Source” + “Progress” (admins)</label>
</div>
<div class="d-flex gap-2">
<button type="button" id="player_ui_reload" class="btn btn-outline-secondary btn-sm">Recharger</button>
<button type="button" id="player_ui_save" class="btn btn-warning btn-sm">Enregistrer</button>
</div>
</div>
<div class="form-text mt-2">
Contrôle l’affichage du bloc debug dans <code>player.html</code> (admins uniquement).
</div>
</div> </div>
</div> </div>
<div class="form-text mt-2">
Contrôle l’affichage du bloc debug dans <code>player.html</code> (admins uniquement).
</div>
</div> </div>
</div>
<!-- Oscar date --> <!-- Oscar date -->
<div class="accordion-item"> <div class="tab-pane fade" id="admin-settings-pane-oscar-date" role="tabpanel" aria-labelledby="admin-settings-subtab-oscar-date" tabindex="0">
<h2 class="accordion-header" id="adminSettingsHeadingOscarDate"> <div class="border rounded p-3 bg-light">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#adminSettingsCollapseOscarDate" aria-expanded="false" aria-controls="adminSettingsCollapseOscarDate"> <div class="text-muted small mb-3">
Date des Oscars (par année) Configure la date de cérémonie pour le compte à rebours (Films &amp; Checklist). Défaut: <code>15 mars</code>.
</button> </div>
</h2>
<div id="adminSettingsCollapseOscarDate" class="accordion-collapse collapse" aria-labelledby="adminSettingsHeadingOscarDate" data-bs-parent="#adminSettingsAccordion">
<div class="accordion-body">
<div class="text-muted small mb-2">
Configure la date de cérémonie pour le compte à rebours (Films &amp; Checklist). Défaut: <code>15 mars</code>.
</div>
<div class="row g-2"> <div class="row g-3 align-items-end">
<div class="col-12 col-md-4"> <div class="col-12 col-md-4">
<label for="oscar_date_year" class="form-label mb-1">Année</label> <label for="oscar_date_year" class="form-label">Année</label>
<select class="form-select" id="oscar_date_year"></select> <select class="form-select" id="oscar_date_year"></select>
<div class="form-text">Basé sur les années présentes dans les films.</div> <div class="form-text">Basé sur les années présentes dans les films.</div>
</div>
<div class="col-12 col-md-4">
<label for="oscar_date_value" class="form-label mb-1">Date</label>
<input type="date" class="form-control" id="oscar_date_value">
<div class="form-text">Format: YYYY-MM-DD.</div>
</div>
<div class="col-12 col-md-4 d-flex align-items-end justify-content-end gap-2">
<button type="button" id="clear-oscar-date" class="btn btn-outline-danger btn-sm">Effacer</button>
<button type="button" id="save-oscar-date" class="btn btn-warning btn-sm">Enregistrer</button>
</div>
</div>
<div class="mt-3">
<div class="text-muted small mb-1">Dates configurées</div>
<div id="oscar-date-current" class="border rounded p-2 bg-light">—</div>
</div>
</div> </div>
<div class="col-12 col-md-4">
<label for="oscar_date_value" class="form-label">Date</label>
<input type="date" class="form-control" id="oscar_date_value">
<div class="form-text">Format: YYYY-MM-DD.</div>
</div>
<div class="col-12 col-md-4 d-flex gap-2 justify-content-end">
<button type="button" id="clear-oscar-date" class="btn btn-outline-danger w-100">Effacer</button>
<button type="button" id="save-oscar-date" class="btn btn-warning w-100">Enregistrer</button>
</div>
</div>
<div class="mt-3">
<div class="text-muted small mb-1">Dates configurées</div>
<div id="oscar-date-current" class="border rounded p-2 bg-white">—</div>
</div> </div>
</div> </div>
</div> </div>