Teams-Einstellungen im Admin-Bereich überarbeitet
- Breites, mehrzeiliges Adressfeld mit Prüfung und Hinweis - Statuszeile, Schalter für die Benachrichtigungen, „Adresse ändern“ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e7243f6f26
commit
51dfbe8cd8
4 files changed
+121
-13
No files matched your search
+55
-11
@@ -1113,22 +1113,66 @@ async function loadAdminTeams(){
|
||||
try { d = await fetch(baseUrl() + '/admin/teams').then(r => r.json()); }
|
||||
catch(e){ el.innerHTML = '<span class="settings-warn">Konnte nicht geladen werden.</span>'; return; }
|
||||
if(!d || !d.ok){ el.innerHTML = '<span class="settings-warn">Keine Berechtigung.</span>'; return; }
|
||||
// Ist schon eine Adresse hinterlegt, bleibt das Eingabefeld zu, bis man
|
||||
// „Ändern“ wählt — die Adresse selbst kommt ohnehin nie zurück.
|
||||
const feldOffen = !d.konfiguriert;
|
||||
el.innerHTML = `
|
||||
<div class="settings-kv-row"><span class="settings-kv-key">Status</span>
|
||||
<span>${d.konfiguriert ? '<span class="sitzung-chip ist-geoeffnet">Eingerichtet</span> <span class="hint" style="margin:0">' + esc(d.host) + '</span>'
|
||||
: '<span class="sitzung-chip ist-gesperrt">Nicht eingerichtet</span>'}</span></div>
|
||||
<label class="settings-field"><span>${d.konfiguriert ? 'Neue Adresse (ersetzt die bisherige)' : 'Adresse aus dem Teams-Workflow'}</span>
|
||||
<input type="password" id="teamsWebhook" placeholder="https://…" autocomplete="off"></label>
|
||||
<label class="settings-glas-schalter"><input type="checkbox" id="teamsNeueAufgaben" ${d.neueAufgaben ? 'checked' : ''}
|
||||
onchange="teamsSpeichern({ neueAufgaben: this.checked })"> Zuständige über neue Aufgaben benachrichtigen</label>
|
||||
<div class="kalender-aktionen" style="margin-top:10px">
|
||||
<button type="button" onclick="teamsSpeichern({ webhook: document.getElementById('teamsWebhook').value })">Adresse speichern</button>
|
||||
<button type="button" class="secondary" id="teamsTestKnopf" onclick="teamsTesten()" ${d.konfiguriert ? '' : 'disabled'}>Testnachricht senden</button>
|
||||
${d.konfiguriert ? '<button type="button" class="secondary" onclick="teamsEntfernen()">Entfernen</button>' : ''}
|
||||
<div class="teams-status${d.konfiguriert ? ' ist-an' : ''}">
|
||||
<span class="teams-punkt" aria-hidden="true"></span>
|
||||
<span class="teams-status-text">${d.konfiguriert
|
||||
? '<b>Eingerichtet</b><span>Workflow bei ' + esc(d.host) + '</span>'
|
||||
: '<b>Noch nicht eingerichtet</b><span>Adresse aus dem Teams-Workflow unten einfügen</span>'}</span>
|
||||
${d.konfiguriert ? '<button type="button" class="teams-text-knopf" onclick="teamsFeldZeigen()">Adresse ändern</button>' : ''}
|
||||
</div>
|
||||
|
||||
<div class="teams-feld" id="teamsFeld"${feldOffen ? '' : ' hidden'}>
|
||||
<label for="teamsWebhook">${d.konfiguriert ? 'Neue Workflow-Adresse' : 'Workflow-Adresse'}</label>
|
||||
<textarea id="teamsWebhook" rows="3" spellcheck="false" autocomplete="off"
|
||||
placeholder="https://… (beim Auslöser des Teams-Workflows kopieren und hier einfügen)"
|
||||
oninput="teamsFeldPruefen()"></textarea>
|
||||
<div class="teams-feld-fuss">
|
||||
<span class="teams-feld-hinweis" id="teamsFeldHinweis">Bleibt geheim: Nach dem Speichern wird die Adresse nicht mehr angezeigt.</span>
|
||||
${d.konfiguriert ? '<button type="button" class="secondary small" onclick="loadAdminTeams()">Abbrechen</button>' : ''}
|
||||
<button type="button" class="small" id="teamsSpeichernKnopf" disabled onclick="teamsSpeichern({ webhook: document.getElementById('teamsWebhook').value })">Speichern</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label class="teams-schalter">
|
||||
<input type="checkbox" id="teamsNeueAufgaben" ${d.neueAufgaben ? 'checked' : ''} ${d.konfiguriert ? '' : 'disabled'}
|
||||
onchange="teamsSpeichern({ neueAufgaben: this.checked })">
|
||||
<span class="teams-schalter-bahn" aria-hidden="true"></span>
|
||||
<span class="teams-schalter-text"><b>Zuständige über neue Aufgaben benachrichtigen</b>
|
||||
<span>Persönliche Nachricht mit Link zur Aufgabe</span></span>
|
||||
</label>
|
||||
|
||||
<div class="teams-aktionen">
|
||||
<button type="button" class="secondary small" id="teamsTestKnopf" onclick="teamsTesten()" ${d.konfiguriert ? '' : 'disabled'}>Testnachricht an mich senden</button>
|
||||
${d.konfiguriert ? '<button type="button" class="teams-text-knopf ist-gefahr" onclick="teamsEntfernen()">Anbindung entfernen</button>' : ''}
|
||||
</div>
|
||||
<p class="field-error" id="teamsFehler" hidden></p>`;
|
||||
}
|
||||
|
||||
// teamsFeldZeigen: blendet das Eingabefeld für eine neue Adresse ein.
|
||||
function teamsFeldZeigen(){
|
||||
const f = document.getElementById('teamsFeld');
|
||||
if(f){ f.hidden = false; document.getElementById('teamsWebhook').focus(); }
|
||||
}
|
||||
|
||||
// teamsFeldPruefen: Speichern erst bei einer https-Adresse; Hinweis passt sich an.
|
||||
function teamsFeldPruefen(){
|
||||
const wert = (document.getElementById('teamsWebhook').value || '').trim();
|
||||
const ok = /^https:\/\/\S+$/.test(wert);
|
||||
const knopf = document.getElementById('teamsSpeichernKnopf');
|
||||
const hinweis = document.getElementById('teamsFeldHinweis');
|
||||
if(knopf) knopf.disabled = !ok;
|
||||
if(hinweis){
|
||||
hinweis.classList.toggle('ist-fehler', !!wert && !ok);
|
||||
hinweis.textContent = !wert ? 'Bleibt geheim: Nach dem Speichern wird die Adresse nicht mehr angezeigt.'
|
||||
: ok ? 'Sieht gut aus — jetzt speichern und danach eine Testnachricht senden.'
|
||||
: 'Die Adresse muss mit https:// beginnen und darf keine Leerzeichen enthalten.';
|
||||
}
|
||||
}
|
||||
|
||||
async function teamsSpeichern(patch){
|
||||
if('webhook' in patch && !String(patch.webhook || '').trim()){ alert('Bitte die Adresse aus dem Teams-Workflow einfügen.'); return; }
|
||||
const r = await fetch(baseUrl() + '/admin/teams', {
|
||||
|
||||
Reference in new issue
Block a user