Version 2.1: Klicker-Fix für Agenda + Sprechernotizen im Steuerpult

Präsentations-Klicker funktioniert jetzt durchgängig über die gesamte
Agenda-Sequenz, auch wenn der Tastatur-Fokus auf dem Display-Fenster
statt dem Steuerpult liegt (ArrowRight/Leertaste), plus ein dezenter
Klick-Button unten rechts im Display für Klicker mit Mausklick-Signal.

Zusätzlich: manuell gepflegte Sprechernotizen pro Agenda-Punkt, die
ausschließlich im Steuerpult angezeigt werden, nie im Display/Beamer.
This commit is contained in:
Christian Heubaum
2026-08-29 20:20:08 +02:00
parent 580725f2f7
commit 706a91b193
4 changed files with 112 additions and 7 deletions

View File

@@ -341,6 +341,8 @@
<input type="text" id="ai-embed-url" placeholder="https://show.zoho.eu/publish/...">
<p style="font-size:0.78rem;color:var(--muted);margin-top:4px;">In Zoho Show: Datei → Freigeben/Veröffentlichen → Einbetten, Link hier einfügen.</p>
</div>
<label>Notizen — nur im Steuerpult sichtbar, nie auf dem Display</label>
<textarea id="ai-notes" rows="4" placeholder="z.B. Stichpunkte, was hier gesagt werden soll"></textarea>
<div class="modal-footer">
<button class="btn btn-danger btn-sm" id="ai-delete-btn" onclick="deleteAgendaItem()" style="display:none;margin-right:auto;">Löschen</button>
<button class="btn btn-ghost" onclick="closeAdminModal('modal-agenda-item')">Abbrechen</button>
@@ -887,6 +889,7 @@ function openAddAgendaItem() {
document.getElementById('ai-label').value = '';
document.getElementById('ai-type').value = 'image';
document.getElementById('ai-embed-url').value = '';
document.getElementById('ai-notes').value = '';
document.getElementById('ai-delete-btn').style.display = 'none';
_agendaImageDataUrl = null; _agendaImageChanged = false;
document.getElementById('ai-image-thumb').style.display = 'none';
@@ -904,6 +907,7 @@ function editAgendaItem(id) {
document.getElementById('ai-label').value = it.label || '';
document.getElementById('ai-type').value = it.type || 'image';
document.getElementById('ai-embed-url').value = it.embedUrl || '';
document.getElementById('ai-notes').value = it.notes || '';
document.getElementById('ai-delete-btn').style.display = 'inline-flex';
_agendaImageDataUrl = null; _agendaImageChanged = false;
const thumb = document.getElementById('ai-image-thumb');
@@ -992,7 +996,9 @@ async function saveAgendaItem() {
id = candidate;
}
const existing = state.agendaCatalog.find(a => a.id === id) || {};
const notes = document.getElementById('ai-notes').value.trim();
const item = { id, label, type };
if (notes) item.notes = notes;
if (type === 'embed') {
const url = document.getElementById('ai-embed-url').value.trim();