186 lines
8.8 KiB
HTML
186 lines
8.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Administration — Mon Cinéma</title>
|
|
<link rel="stylesheet" href="..\css\admin.css">
|
|
<link rel="stylesheet" href="..\css\public.css">
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/tabler-icons.min.css">
|
|
</head>
|
|
<body>
|
|
<div class="admin-wrap">
|
|
<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>
|
|
|
|
<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 outline" onclick="openConfigModal()">
|
|
<i class="ti ti-settings"></i> Configuration
|
|
</button>
|
|
|
|
<button class="btn-action outline" onclick="openPasswordModal()">
|
|
<i class="ti ti-lock"></i> Sécurité
|
|
</button>
|
|
|
|
<button class="btn-action outline" onclick="logout()">
|
|
<i class="ti ti-logout"></i> Quitter
|
|
</button>
|
|
</div>
|
|
</header>
|
|
|
|
<div class="pub-tabs-container">
|
|
<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>
|
|
|
|
<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="physical-filter-admin">
|
|
<label class="physical-filter-label">
|
|
<input type="checkbox" id="admin-physical-checkbox">
|
|
<span class="checkmark"></span>
|
|
<span class="filter-text">Uniquement support physique / Cinéma</span>
|
|
</label>
|
|
</div>
|
|
|
|
<button class="btn-action primary" onclick="openAddModal()">
|
|
<i class="ti ti-plus"></i> Ajouter une œuvre
|
|
</button>
|
|
|
|
<div class="count">
|
|
<span id="admin-count-label">0 élément(s)</span>
|
|
</div>
|
|
</div>
|
|
|
|
<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>
|
|
|
|
<div class="table-container">
|
|
<table class="admin-table">
|
|
<thead>
|
|
<tr>
|
|
<th style="width: 40px; text-align: center;"><input type="checkbox" id="select-all-checkbox"></th>
|
|
<th style="width: 70px; text-align: center;">Affiche</th>
|
|
<th>Titre</th>
|
|
<th style="width: 80px;">Année</th>
|
|
<th style="width: 20%;">Réalisateur</th>
|
|
<th style="width: 15%;">Informations</th>
|
|
<th style="width: 100px; text-align: right;">Actions</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="admin-table-body"></tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="pagination-container" class="pagination"></div>
|
|
</div>
|
|
|
|
<!-- MODALE CONFIGURATION -->
|
|
<div class="overlay" id="config-modal">
|
|
<div class="modal">
|
|
<button class="modal-close" onclick="closeConfigModal()">
|
|
<i class="ti ti-x"></i>
|
|
</button>
|
|
|
|
<h2 class="modal-h">
|
|
<i class="ti ti-settings"></i>
|
|
Configuration
|
|
</h2>
|
|
|
|
<!-- Clés API -->
|
|
<div class="form-grid">
|
|
<div class="form-group" style="grid-column: span 2;">
|
|
<label>Clé API TMDB</label>
|
|
<input type="text" id="tmdb-key-input" placeholder="Pour les critiques (réalisateur, streaming)">
|
|
</div>
|
|
<div class="form-group" style="grid-column: span 2;">
|
|
<label>Clé API EAN-Search</label>
|
|
<input type="text" id="ean-search-key-input" placeholder="Recherche par code-barres (Vidéothèque)">
|
|
</div>
|
|
<div class="form-group" style="grid-column: span 2;">
|
|
<label>Clé API Barcode Lookup</label>
|
|
<input type="text" id="barcode-lookup-key-input" placeholder="Recherche par code-barres (Vidéothèque)">
|
|
</div>
|
|
</div>
|
|
|
|
<div style="margin-top: 1.5rem; display: flex; gap: 1rem; justify-content: flex-end;">
|
|
<button class="btn-action outline" onclick="closeConfigModal()">Annuler</button>
|
|
<button class="btn-action primary" onclick="saveConfigKeys()">Sauvegarder</button>
|
|
</div>
|
|
|
|
<!-- Zone d'import CSV -->
|
|
<hr class="divider">
|
|
<h3 style="font-size: 1rem; margin: 1.5rem 0 1rem; color: var(--text);">
|
|
<i class="ti ti-file-upload" style="color: var(--gold); margin-right: 0.5rem;"></i>
|
|
Importer un CSV
|
|
</h3>
|
|
|
|
<label class="import-box" for="csv-file">
|
|
<i class="ti ti-file-upload"></i>
|
|
<p><strong>Cliquez ou déposez votre CSV</strong></p>
|
|
<p style="color: var(--muted); font-size: 0.85rem;">
|
|
Les jaquettes seront recherchées via EAN/UPC
|
|
</p>
|
|
</label>
|
|
<input type="file" id="csv-file" accept=".csv" style="display: none;">
|
|
</div>
|
|
</div>
|
|
<div class="overlay" id="password-modal">
|
|
<div class="modal" style="max-width:450px;">
|
|
<button class="modal-close" onclick="closePasswordModal()"><i class="ti ti-x"></i></button>
|
|
<h2 class="modal-h"><i class="ti ti-lock"></i> Sécurité</h2>
|
|
<div class="form-group" style="margin-bottom: 1rem;"><label>Nouveau mot de passe</label><input type="password" id="new-password-input"></div>
|
|
<div class="form-group" style="margin-bottom: 1.5rem;"><label>Confirmer</label><input type="password" id="new-password-confirm"></div>
|
|
<div id="pwd-error" style="color: #ff4757; font-size: 0.85rem; margin-bottom: 1rem; display: none;"></div>
|
|
<button class="btn-action primary" style="width: 100%; justify-content: center;" 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="font-weight:bold;">0 / 0</p>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="../js/admin.js"></script>
|
|
</body>
|
|
</html> |