From 87a800ea9b1fd0557b06a330b69b975150038ca1 Mon Sep 17 00:00:00 2001 From: Cedric Date: Thu, 18 Jun 2026 14:18:27 +0200 Subject: [PATCH] Actualiser js/admin.js --- js/admin.js | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/js/admin.js b/js/admin.js index 2ae02c0..4e4bda2 100644 --- a/js/admin.js +++ b/js/admin.js @@ -5,8 +5,8 @@ let currentAdminTab = 'critique'; // ── INITIALISATION ── document.addEventListener('DOMContentLoaded', () => { loadDashboardData(); + initEventListeners(); - // Attacher l'événement pour la modale de suppression const confirmBtn = document.getElementById('confirm-btn'); if(confirmBtn) { confirmBtn.addEventListener('click', () => { @@ -16,6 +16,31 @@ document.addEventListener('DOMContentLoaded', () => { } }); +function initEventListeners() { + // 1. Soumission du formulaire Film + const filmForm = document.getElementById('film-form'); + if (filmForm) filmForm.addEventListener('submit', saveFilmForm); + + // 2. Import CSV + const csvInput = document.getElementById('csv-file'); + if (csvInput) csvInput.addEventListener('change', (e) => handleCsvUpload(e.target)); + + // 3. Sauvegarde du mot de passe (Adapter l'ID si nécessaire selon votre HTML) + const savePwdBtn = document.getElementById('save-password-btn'); + if (savePwdBtn) savePwdBtn.addEventListener('click', saveNewPassword); + + // 4. Fermeture générique des modales (clic sur la croix ou sur le fond sombre) + document.addEventListener('click', (e) => { + if (e.target.classList.contains('modal-close') || e.target.closest('.modal-close')) { + const overlay = e.target.closest('.overlay'); + if (overlay) overlay.classList.remove('open'); + } + if (e.target.classList.contains('overlay')) { + e.target.classList.remove('open'); + } + }); +} + async function loadDashboardData() { try { const res = await fetch(`${API_URL}?action=get_films`); @@ -164,21 +189,27 @@ async function saveFilmForm(e) { } // ── MODALES & UI ── +function toggleFormFields() { + const critFields = document.getElementById('form-critique-fields'); + const vidFields = document.getElementById('form-videotheque-fields'); + if(critFields) critFields.style.display = currentAdminTab === 'critique' ? 'block' : 'none'; + if(vidFields) vidFields.style.display = currentAdminTab === 'videotheque' ? 'block' : 'none'; +} + function switchAdminTab(tabName) { currentAdminTab = tabName; document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active')); const btn = document.getElementById(`btn-tab-${tabName}`); if(btn) btn.classList.add('active'); - document.getElementById('form-critique-fields').style.display = tabName === 'critique' ? 'block' : 'none'; - document.getElementById('form-videotheque-fields').style.display = tabName === 'videotheque' ? 'block' : 'none'; - + toggleFormFields(); renderAdminTable(); } function openAddModal() { document.getElementById('film-form').reset(); document.getElementById('f-id').value = ''; + toggleFormFields(); // Affiche les bons champs selon l'onglet actif document.getElementById('admin-modal').classList.add('open'); } @@ -192,6 +223,8 @@ function openEditModal(id) { document.getElementById('f-director').value = item.director || ''; document.getElementById('f-poster').value = item.poster || ''; + toggleFormFields(); // Affiche les bons champs selon l'onglet actif + if(currentAdminTab === 'critique') { document.getElementById('f-rating').value = item.rating || 3; document.getElementById('f-review').value = item.review || ''; @@ -239,6 +272,7 @@ async function handleCsvUpload(input) { if (!input.files[0]) return; const formData = new FormData(); formData.append('csv_file', input.files[0]); + formData.append('type', currentAdminTab); // BUG CORRIGÉ : On envoie le type de l'onglet actif await fetch(`${API_URL}?action=import_csv`, { method: 'POST', headers: { 'Authorization': localStorage.getItem('token') },