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:
@@ -13,7 +13,7 @@
|
||||
fichier front, à mettre en place lors du déploiement.
|
||||
-->
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<link rel="stylesheet" href="/admin/gallery/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<main class="page">
|
||||
@@ -59,7 +59,7 @@
|
||||
script classique (donc synchrone, avant le module) pour garantir que
|
||||
window.__PHOTOBOOTH_CONFIG__ existe avant l'exécution de gallery.js.
|
||||
-->
|
||||
<script src="config.js"></script>
|
||||
<script type="module" src="gallery.js"></script>
|
||||
<script src="/admin/gallery/config.js"></script>
|
||||
<script type="module" src="/admin/gallery/gallery.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+3
-3
@@ -12,7 +12,7 @@
|
||||
lors du déploiement, hors scope de ce fichier front.
|
||||
-->
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<link rel="stylesheet" href="/e/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<main class="page">
|
||||
@@ -132,7 +132,7 @@
|
||||
Chargé en script classique (donc synchrone, avant le module) pour garantir
|
||||
que window.__PHOTOBOOTH_CONFIG__ existe avant l'exécution de upload.js.
|
||||
-->
|
||||
<script src="config.js"></script>
|
||||
<script type="module" src="upload.js"></script>
|
||||
<script src="/e/config.js"></script>
|
||||
<script type="module" src="/e/upload.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user