DSLR auto-recovery USB reset + cadre overlay non-mirroré + lien galerie événement

- surveiller_dslr: reset USB ioctl après 2 échecs, double reset après 3
- deconnecter(): timeout threading 3s pour éviter blocage PTP
- CSS: .preview-live .cadre-overlay sans scaleX(-1)
- Admin événement: lien direct vers galerie en ligne

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-23 08:30:15 +02:00
parent 6bbcf85e52
commit 97e3f6508d
5 changed files with 75 additions and 32 deletions

View File

@@ -321,6 +321,10 @@ html, body {
transform: scaleX(-1); /* miroir selfie : ce que voit l'utilisateur en se posant */
}
.preview-live .cadre-overlay {
transform: translate(-50%, -50%);
}
.preview-live img.preview-chargement {
filter: blur(8px) brightness(0.6);
}

View File

@@ -7,7 +7,7 @@
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta name="google" content="notranslate">
<meta http-equiv="Content-Language" content="fr">
<link rel="stylesheet" href="/css/style.css?v=7">
<link rel="stylesheet" href="/css/style.css?v=8">
<link rel="stylesheet" href="/css/themes.css?v=2">
</head>
<body>
@@ -626,6 +626,11 @@
</div>
<button class="btn-action" onclick="sauvegarderEvenement()">Sauvegarder</button>
<div class="champ" id="lien-galerie-event" style="display:none">
<label>Galerie en ligne</label>
<a id="url-galerie-event" href="#" target="_blank" class="btn-secondaire btn-petit" style="text-decoration:none;display:inline-block">Ouvrir la galerie</a>
</div>
<h3>Formats d'impression</h3>
<p class="aide">Formats papier disponibles pour cet evenement.</p>
<div class="toggle-groupe" id="event-formats-toggles">
@@ -773,6 +778,6 @@
<script src="/js/effects.js?v=4"></script>
<script src="/js/gallery.js?v=3"></script>
<script src="/js/share.js?v=7"></script>
<script src="/js/admin.js?v=7"></script>
<script src="/js/admin.js?v=8"></script>
</body>
</html>

View File

@@ -768,6 +768,20 @@ function afficherDetailEvent(event) {
document.getElementById('tog-event-fmt-15x20').checked = fmts.includes('15x20');
document.getElementById('tog-event-fmt-strip').checked = fmts.includes('strip');
// Lien galerie en ligne
const booth = config.booth || {};
const lienBloc = document.getElementById('lien-galerie-event');
const lienA = document.getElementById('url-galerie-event');
if (booth.actif && booth.url) {
const evtId = booth.event_id || eventEditId || 'default';
const url = booth.url.replace(/\/$/, '') + '/' + evtId;
lienA.href = url;
lienA.textContent = url;
lienBloc.style.display = '';
} else {
lienBloc.style.display = 'none';
}
chargerCadresEvent();
}