Actualiser js/admin.js
This commit is contained in:
+38
-4
@@ -5,8 +5,8 @@ let currentAdminTab = 'critique';
|
|||||||
// ── INITIALISATION ──
|
// ── INITIALISATION ──
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
loadDashboardData();
|
loadDashboardData();
|
||||||
|
initEventListeners();
|
||||||
|
|
||||||
// Attacher l'événement pour la modale de suppression
|
|
||||||
const confirmBtn = document.getElementById('confirm-btn');
|
const confirmBtn = document.getElementById('confirm-btn');
|
||||||
if(confirmBtn) {
|
if(confirmBtn) {
|
||||||
confirmBtn.addEventListener('click', () => {
|
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() {
|
async function loadDashboardData() {
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`${API_URL}?action=get_films`);
|
const res = await fetch(`${API_URL}?action=get_films`);
|
||||||
@@ -164,21 +189,27 @@ async function saveFilmForm(e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ── MODALES & UI ──
|
// ── 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) {
|
function switchAdminTab(tabName) {
|
||||||
currentAdminTab = tabName;
|
currentAdminTab = tabName;
|
||||||
document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
|
document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
|
||||||
const btn = document.getElementById(`btn-tab-${tabName}`);
|
const btn = document.getElementById(`btn-tab-${tabName}`);
|
||||||
if(btn) btn.classList.add('active');
|
if(btn) btn.classList.add('active');
|
||||||
|
|
||||||
document.getElementById('form-critique-fields').style.display = tabName === 'critique' ? 'block' : 'none';
|
toggleFormFields();
|
||||||
document.getElementById('form-videotheque-fields').style.display = tabName === 'videotheque' ? 'block' : 'none';
|
|
||||||
|
|
||||||
renderAdminTable();
|
renderAdminTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
function openAddModal() {
|
function openAddModal() {
|
||||||
document.getElementById('film-form').reset();
|
document.getElementById('film-form').reset();
|
||||||
document.getElementById('f-id').value = '';
|
document.getElementById('f-id').value = '';
|
||||||
|
toggleFormFields(); // Affiche les bons champs selon l'onglet actif
|
||||||
document.getElementById('admin-modal').classList.add('open');
|
document.getElementById('admin-modal').classList.add('open');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,6 +223,8 @@ function openEditModal(id) {
|
|||||||
document.getElementById('f-director').value = item.director || '';
|
document.getElementById('f-director').value = item.director || '';
|
||||||
document.getElementById('f-poster').value = item.poster || '';
|
document.getElementById('f-poster').value = item.poster || '';
|
||||||
|
|
||||||
|
toggleFormFields(); // Affiche les bons champs selon l'onglet actif
|
||||||
|
|
||||||
if(currentAdminTab === 'critique') {
|
if(currentAdminTab === 'critique') {
|
||||||
document.getElementById('f-rating').value = item.rating || 3;
|
document.getElementById('f-rating').value = item.rating || 3;
|
||||||
document.getElementById('f-review').value = item.review || '';
|
document.getElementById('f-review').value = item.review || '';
|
||||||
@@ -239,6 +272,7 @@ async function handleCsvUpload(input) {
|
|||||||
if (!input.files[0]) return;
|
if (!input.files[0]) return;
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append('csv_file', input.files[0]);
|
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`, {
|
await fetch(`${API_URL}?action=import_csv`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: { 'Authorization': localStorage.getItem('token') },
|
headers: { 'Authorization': localStorage.getItem('token') },
|
||||||
|
|||||||
Reference in New Issue
Block a user