Actualiser admin/dashboard.html
This commit is contained in:
+146
-71
@@ -3,96 +3,171 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Dashboard - Cinémathèque</title>
|
||||
<link rel="stylesheet" href="../admin.css">
|
||||
<title>Administration — Mon Cinéma</title>
|
||||
<link rel="stylesheet" href="../public.css">
|
||||
<link rel="stylesheet" href="../admin.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/tabler-icons.min.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="dashboard-header">
|
||||
<div class="header-titles">
|
||||
<h1>Gestion <span>Cinémathèque</span></h1>
|
||||
<p>Administrez vos critiques et votre vidéothèque</p>
|
||||
<div class="admin-wrap">
|
||||
<!-- BANNIÈRE SÉCURITÉ -->
|
||||
<div class="security-banner" id="security-banner" style="display: none;">
|
||||
<div class="sec-text"><i class="ti ti-alert-triangle"></i> Attention : Aucun mot de passe défini. Sécuriser le compte.</div>
|
||||
<button class="btn-action btn-small" onclick="openPasswordModal()">Sécuriser</button>
|
||||
</div>
|
||||
<div class="header-actions">
|
||||
<button class="btn-action" onclick="openAddModal()"><i class="ti ti-plus"></i> Ajouter</button>
|
||||
<button class="btn-action" onclick="executeBulkDelete()"><i class="ti ti-trash"></i> Supprimer</button>
|
||||
<button class="btn-action secondary" onclick="openConfigModal()"><i class="ti ti-settings"></i> Config</button>
|
||||
<button class="btn-action outline" onclick="logout()"><i class="ti ti-logout"></i></button>
|
||||
|
||||
<!-- EN-TÊTE -->
|
||||
<header class="admin-header">
|
||||
<div class="header-titles">
|
||||
<h1>Espace <span>Admin</span></h1>
|
||||
<p>Gestion centralisée de votre cinémathèque</p>
|
||||
</div>
|
||||
<div class="header-actions">
|
||||
<a href="../index.html" class="btn-action outline"><i class="ti ti-external-link"></i> Voir le site</a>
|
||||
<button class="btn-action" onclick="openConfigModal()"><i class="ti ti-settings"></i> Configuration</button>
|
||||
<button class="btn-action outline" onclick="logout()"><i class="ti ti-logout"></i> Quitter</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- ONGLETS (Centrés) -->
|
||||
<div class="pub-tabs-container" style="justify-content: center;">
|
||||
<div class="pub-tabs">
|
||||
<button class="tab-btn active" id="btn-tab-critique" onclick="switchAdminTab('critique')">
|
||||
<i class="ti ti-star"></i> Mes Critiques
|
||||
</button>
|
||||
<button class="tab-btn" id="btn-tab-videotheque" onclick="switchAdminTab('videotheque')">
|
||||
<i class="ti ti-video"></i> Ma Vidéothèque
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- BARRE D'OUTILS -->
|
||||
<div class="admin-toolbar">
|
||||
<div class="search-box">
|
||||
<i class="ti ti-search"></i>
|
||||
<input type="text" id="search-input" placeholder="Rechercher un titre, un réalisateur...">
|
||||
</div>
|
||||
<div class="count">
|
||||
<span id="admin-count-label">0 élément(s)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- BARRE ACTIONS GROUPÉES -->
|
||||
<div class="bulk-actions-bar" id="bulk-actions-bar" style="display: none;">
|
||||
<span><i class="ti ti-check"></i> <span id="bulk-count">0</span> élément(s) sélectionné(s)</span>
|
||||
<button class="btn-action danger-solid btn-small" onclick="executeBulkDelete()"><i class="ti ti-trash"></i> Supprimer la sélection</button>
|
||||
</div>
|
||||
|
||||
<!-- TABLEAU (Sans colonne Affiche) -->
|
||||
<div class="table-container">
|
||||
<table class="admin-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center;"><input type="checkbox" id="select-all-checkbox"></th>
|
||||
<th>Titre</th>
|
||||
<th>Année</th>
|
||||
<th>Réalisateur</th>
|
||||
<th>Informations</th>
|
||||
<th style="text-align:right;">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="admin-table-body">
|
||||
<!-- Généré par JS -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- PAGINATION -->
|
||||
<div id="pagination-container" class="pagination"></div>
|
||||
</div>
|
||||
|
||||
<!-- ONGLETS CENTRÉS -->
|
||||
<div class="tabs-container">
|
||||
<div class="tab-btns">
|
||||
<button class="tab-btn active" id="btn-tab-critique" onclick="switchAdminTab('critique')">
|
||||
<i class="ti ti-star"></i> Critiques
|
||||
</button>
|
||||
<button class="tab-btn" id="btn-tab-videotheque" onclick="switchAdminTab('videotheque')">
|
||||
<i class="ti ti-video"></i> Vidéothèque
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- BARRE D'OUTILS -->
|
||||
<div class="admin-toolbar">
|
||||
<div class="search-box">
|
||||
<i class="ti ti-search"></i>
|
||||
<input type="text" id="search-input" placeholder="Rechercher un titre, un réalisateur...">
|
||||
</div>
|
||||
<div class="admin-count">
|
||||
<span id="admin-count-label">0 élément(s)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- TABLEAU SANS AFFICHE (Évite le scroll horizontal) -->
|
||||
<div class="table-container">
|
||||
<table class="admin-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><input type="checkbox" id="select-all-checkbox"></th>
|
||||
<th>Titre</th>
|
||||
<th>Année</th>
|
||||
<th>Réalisateur</th>
|
||||
<th>Informations</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="admin-table-body"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- PAGINATION -->
|
||||
<div id="pagination-container" class="pagination"></div>
|
||||
|
||||
<!-- MODALES (Structure simplifiée) -->
|
||||
<!-- MODALES (Structure conservée) -->
|
||||
<div class="overlay" id="admin-modal">
|
||||
<div class="modal">
|
||||
<button class="modal-close"><i class="ti ti-x"></i></button>
|
||||
<h2>Formulaire</h2>
|
||||
<button class="modal-close" onclick="closeAdminModal()"><i class="ti ti-x"></i></button>
|
||||
<h2 class="modal-h"><i class="ti ti-edit"></i> Éditer l'œuvre</h2>
|
||||
<form id="film-form">
|
||||
<input type="hidden" id="f-id">
|
||||
<div class="form-grid">
|
||||
<input type="hidden" id="f-id">
|
||||
<input type="text" id="f-title" placeholder="Titre" required>
|
||||
<input type="number" id="f-year" placeholder="Année">
|
||||
<input type="text" id="f-director" placeholder="Réalisateur">
|
||||
<input type="text" id="f-poster" placeholder="URL Affiche">
|
||||
<div id="form-critique-fields">
|
||||
<input type="number" id="f-rating" placeholder="Note (1-5)" step="0.1">
|
||||
<textarea id="f-review" placeholder="Avis..."></textarea>
|
||||
<div class="form-group"><label>Titre *</label><input type="text" id="f-title" required></div>
|
||||
<div class="form-group"><label>Année</label><input type="number" id="f-year"></div>
|
||||
<div class="form-group" style="grid-column: span 2;"><label>Réalisateur</label><input type="text" id="f-director"></div>
|
||||
<div class="form-group" style="grid-column: span 2;"><label>URL de l'affiche</label><input type="text" id="f-poster"></div>
|
||||
</div>
|
||||
<div id="form-critique-fields">
|
||||
<div class="divider">Spécifique aux critiques</div>
|
||||
<div class="form-grid">
|
||||
<div class="form-group"><label>Note (sur 5)</label><input type="number" id="f-rating" min="0" max="5" step="0.5"></div>
|
||||
<div class="form-group"><label>Lien Streaming / VOD</label><input type="text" id="f-streaming"></div>
|
||||
<div class="form-group" style="grid-column: span 2;"><label>Critique / Avis</label><textarea id="f-review" rows="4"></textarea></div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn-action secondary" style="width:100%; margin-top:1rem;">Sauvegarder</button>
|
||||
<div id="form-videotheque-fields" style="display:none;">
|
||||
<div class="divider">Spécifique à la vidéothèque</div>
|
||||
<div class="form-grid">
|
||||
<div class="form-group"><label>Format</label>
|
||||
<select id="f-format"><option value="Blu-ray 4K">Blu-ray 4K</option><option value="Blu-ray">Blu-ray</option><option value="DVD">DVD</option><option value="VHS">VHS</option></select>
|
||||
</div>
|
||||
<div class="form-group"><label>Éditeur</label><input type="text" id="f-publisher"></div>
|
||||
<div class="form-group"><label>Durée (min)</label><input type="number" id="f-length"></div>
|
||||
<div class="form-group"><label>Format Image</label><input type="text" id="f-aspect"></div>
|
||||
<div class="form-group"><label>Code Barre (EAN)</label><input type="text" id="f-ean"></div>
|
||||
<div class="form-group"><label>Nombre de disques</label><input type="number" id="f-discs" value="1"></div>
|
||||
<div class="form-group" style="grid-column: span 2;"><label>Description / Synopsis</label><textarea id="f-description" rows="4"></textarea></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:flex; gap:1rem; margin-top:2rem; justify-content:flex-end;">
|
||||
<button type="button" class="btn-action outline" onclick="closeAdminModal()">Annuler</button>
|
||||
<button type="submit" class="btn-action primary">Enregistrer</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="overlay" id="confirm-modal">
|
||||
<div class="overlay" id="config-modal">
|
||||
<div class="modal">
|
||||
<button class="modal-close"><i class="ti ti-x"></i></button>
|
||||
<h3>Confirmation</h3>
|
||||
<p>Êtes-vous sûr de vouloir supprimer cet élément ?</p>
|
||||
<button id="confirm-btn" class="btn-action secondary">Confirmer</button>
|
||||
<button class="modal-close" onclick="closeConfigModal()"><i class="ti ti-x"></i></button>
|
||||
<h2 class="modal-h"><i class="ti ti-settings"></i> Configuration globale</h2>
|
||||
<div class="form-group"><label>Clé API TMDB</label><input type="text" id="tmdb-key-input" placeholder="Votre clé API..."><button type="button" class="btn-action primary" style="margin-top:1rem;" onclick="saveTmdbKey()">Sauvegarder</button></div>
|
||||
<div class="divider">Importation de données</div>
|
||||
<div class="import-box">
|
||||
<i class="ti ti-file-upload"></i>
|
||||
<p>Importer un fichier CSV</p>
|
||||
<input type="file" id="csv-file" accept=".csv">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="overlay" id="password-modal">
|
||||
<div class="modal">
|
||||
<button class="modal-close" onclick="closePasswordModal()"><i class="ti ti-x"></i></button>
|
||||
<h2 class="modal-h"><i class="ti ti-shield-lock"></i> Sécurité du compte</h2>
|
||||
<div class="form-group"><label>Nouveau mot de passe</label><input type="password" id="new-password-input"></div>
|
||||
<div class="form-group"><label>Confirmation</label><input type="password" id="new-password-confirm"></div>
|
||||
<p id="pwd-error" style="color:#ff4757; display:none; margin-top:1rem;"></p>
|
||||
<button class="btn-action primary" style="margin-top:1.5rem; width:100%;" onclick="saveNewPassword()">Mettre à jour</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="overlay" id="confirm-modal">
|
||||
<div class="modal" style="max-width:450px; text-align:center;">
|
||||
<h2 class="modal-h" style="justify-content:center;"><i class="ti ti-alert-triangle" style="color:#ff4757;"></i> Suppression définitive</h2>
|
||||
<p>Êtes-vous sûr de vouloir supprimer ces éléments ? Cette action est irréversible.</p>
|
||||
<div style="display:flex; gap:1rem; margin-top:2rem; justify-content:center;">
|
||||
<button class="btn-action outline" onclick="closeConfirmModal()">Annuler</button>
|
||||
<button class="btn-action danger-solid" id="confirm-btn">Oui, supprimer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="overlay" id="progress-overlay">
|
||||
<div class="modal" style="max-width:450px; text-align:center;">
|
||||
<h2 class="modal-h" style="justify-content:center;"><i class="ti ti-loader"></i> Import en cours...</h2>
|
||||
<p id="progress-text">Préparation et récupération TMDB...</p>
|
||||
<div style="background:var(--border); border-radius:6px; overflow:hidden; margin:1.5rem 0; height:12px;">
|
||||
<div id="progress-bar" style="height:100%; background:var(--gold); width:0%; transition:width 0.3s;"></div>
|
||||
</div>
|
||||
<p id="progress-count" style="color:var(--muted);">0 / 0</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user