// JS spécifique à la page /projects // duplicateMap stub function duplicateMap(mapId) { if (confirm('Voulez-vous créer une copie de cette carte ?')) { // TODO: Implémenter la duplication via AJAX alert('Fonction de duplication à implémenter'); } } // deleteMap : soumet le form de suppression (progressive enhancement) function deleteMap(mapId, mapName) { var deleteModalEl = document.getElementById('deleteModal'); // Si le modal n'existe pas, fallback : confirmation native puis soumission POST if (!deleteModalEl) { var label = mapName || ''; if (!confirm('Êtes-vous sûr de vouloir supprimer "' + label + '" ?')) return; var form = document.getElementById('delete-form-' + mapId); if (form) { form.submit(); return; } // Créer dynamiquement un form POST et le soumettre var tmpForm = document.createElement('form'); tmpForm.method = 'POST'; tmpForm.action = '/projects/delete'; tmpForm.style.display = 'none'; var input = document.createElement('input'); input.type = 'hidden'; input.name = 'id'; input.value = mapId; tmpForm.appendChild(input); document.body.appendChild(tmpForm); tmpForm.submit(); return; } try { document.getElementById('deleteMapName').textContent = mapName; document.getElementById('confirmDeleteBtn').onclick = function() { var form = document.getElementById('delete-form-' + mapId); if (form) { try { deleteModalEl.querySelector('[data-bs-dismiss="modal"]').click(); } catch (e) {} form.submit(); } else { // Fallback : créer dynamiquement un form POST et le soumettre var tmpForm = document.createElement('form'); tmpForm.method = 'POST'; tmpForm.action = '/projects/delete'; tmpForm.style.display = 'none'; var input = document.createElement('input'); input.type = 'hidden'; input.name = 'id'; input.value = mapId; tmpForm.appendChild(input); document.body.appendChild(tmpForm); try { deleteModalEl.querySelector('[data-bs-dismiss="modal"]').click(); } catch (e) {} tmpForm.submit(); } }; var modal = new bootstrap.Modal(deleteModalEl); modal.show(); } catch (err) { // Si une erreur survient (ex: bootstrap non défini), retomber sur la confirmation native console.error('[projects.js] Erreur lors de l\'ouverture du modal de suppression, fallback confirm', err); var label = mapName || ''; if (!confirm('Êtes-vous sûr de vouloir supprimer "' + label + '" ?')) return; var form = document.getElementById('delete-form-' + mapId); if (form) { form.submit(); return; } // Créer dynamiquement un form POST et le soumettre var tmpForm = document.createElement('form'); tmpForm.method = 'POST'; tmpForm.action = '/projects/delete'; tmpForm.style.display = 'none'; var input = document.createElement('input'); input.type = 'hidden'; input.name = 'id'; input.value = mapId; tmpForm.appendChild(input); document.body.appendChild(tmpForm); tmpForm.submit(); } } // Expose functions in window scope (au cas où) window.duplicateMap = window.duplicateMap || duplicateMap; window.deleteMap = window.deleteMap || deleteMap;