| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- // 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;
|