Corrige un deuxième bug bloquant : chemins relatifs cassés sur /e/<slug> et /admin/<slug>

nginx réécrit /admin/<slug> et /e/<slug> vers le vrai index.html (try_files),
mais l'URL affichée au navigateur reste /admin/<slug> — les chemins relatifs
(style.css, config.js, gallery.js/upload.js) se résolvaient donc contre cette
URL "virtuelle" au lieu du vrai dossier, tombaient sur le fallback nginx et
recevaient du HTML au lieu du CSS/JS attendu. La galerie admin restait
bloquée sur "Chargement..." avec un style complètement cassé. Passage en
chemins absolus (/e/..., /admin/gallery/...) partout.

Signalé par Kévin après test réel sur /admin/demo-kevin.

Au passage : durcit la protection anti-double-soumission du formulaire
upload (garde-fou supplémentaire au niveau de l'event listener) et
remet à zéro photo/nom/message immédiatement après un envoi réussi.
This commit is contained in:
2026-09-16 15:18:30 +02:00
parent 7c5a2d87b9
commit 73143f0ec2
3 changed files with 31 additions and 6 deletions
+25
View File
@@ -206,11 +206,30 @@ function showError(rawErr, retryAction) {
}
}
function resetPhotoFields() {
state.selectedFile = null;
state.compressedBlob = null;
fileChosenLabel.textContent = "Aucun fichier choisi";
previewImg.hidden = true;
if (previewObjectUrl) {
URL.revokeObjectURL(previewObjectUrl);
previewObjectUrl = null;
}
photoInput.value = "";
photoInputGallery.value = "";
nomInput.value = "";
messageInput.value = "";
}
function showSuccess() {
loadingBlock.hidden = true;
errorBlock.hidden = true;
form.hidden = true;
successBlock.hidden = false;
// Remise à zéro immédiate (pas seulement au clic sur "Ajouter une autre
// photo") : si l'invité revient sur le formulaire par un autre biais, il
// ne doit jamais retrouver la photo/le message déjà envoyés pré-remplis.
resetPhotoFields();
}
function setProgress(text) {
@@ -495,6 +514,12 @@ async function submitPhoto() {
form.addEventListener("submit", (evt) => {
evt.preventDefault();
// Garde-fou en plus de state.isSubmitting (qui protège déjà submitPhoto
// elle-même) : si jamais l'événement "submit" se déclenche plusieurs fois
// très rapidement (double tap mobile), on ignore tout appel supplémentaire
// tant qu'un envoi est en cours, sans dépendre uniquement de l'état du
// bouton désactivé.
if (state.isSubmitting) return;
submitPhoto();
});