diff --git a/index.html b/index.html
index d9c4287..a5743d2 100644
--- a/index.html
+++ b/index.html
@@ -1713,7 +1713,7 @@
// ============================================================
// CONSTANTS & CHAPTER CONFIG
// ============================================================
-const APP_VERSION = '1.2.3';
+const APP_VERSION = '1.2.4';
const GITEA_RAW = 'http://72.60.134.73:3000/api/v1/repos/cheubaum/BNI-Vorstellungsrunde/raw';
const GITEA_API = 'http://72.60.134.73:3000/api/v1/repos/cheubaum/BNI-Vorstellungsrunde';
function giteaUrl(path) { return `${GITEA_RAW}/${path}?ref=main`; }
@@ -4356,29 +4356,27 @@ async function downloadUpdate(version) {
adminHtml = await r2.text();
} catch(e) { alert('Download fehlgeschlagen: ' + e.message); return; }
+ // admin.html immer als klassischen Download starten (läuft parallel, kein zweiter Dialog nötig)
+ const adminBlob = new Blob([adminHtml], { type: 'text/html' });
+ const adminA = document.createElement('a');
+ adminA.href = URL.createObjectURL(adminBlob);
+ adminA.download = 'admin.html';
+ adminA.click();
+ URL.revokeObjectURL(adminA.href);
+
if ('showSaveFilePicker' in window) {
try {
- const fh1 = await window.showSaveFilePicker({
+ const fh = await window.showSaveFilePicker({
suggestedName: 'index.html',
types: [{ description: 'HTML-Datei', accept: { 'text/html': ['.html'] } }],
id: 'bni-update',
startIn: 'documents',
});
- const w1 = await fh1.createWritable();
- await w1.write(html);
- await w1.close();
-
- const fh2 = await window.showSaveFilePicker({
- suggestedName: 'admin.html',
- types: [{ description: 'HTML-Datei', accept: { 'text/html': ['.html'] } }],
- id: 'bni-update',
- startIn: 'documents',
- });
- const w2 = await fh2.createWritable();
- await w2.write(adminHtml);
- await w2.close();
-
- if (confirm('Update erfolgreich eingespielt!\n\nSeite jetzt neu laden?')) location.reload();
+ const w = await fh.createWritable();
+ await w.write(html);
+ await w.close();
+ alert('index.html wurde gespeichert.\n\nadmin.html liegt im Download-Ordner – bitte in denselben Ordner verschieben und die alte ersetzen.\n\nDanach Seite neu laden.');
+ location.reload();
return;
} catch(e) {
if (e.name === 'AbortError') return;
@@ -4387,15 +4385,13 @@ async function downloadUpdate(version) {
}
// Fallback für Browser ohne File System Access API
- for (const [name, content] of [['index.html', html], ['admin.html', adminHtml]]) {
- const blob = new Blob([content], { type: 'text/html' });
- const a = document.createElement('a');
- a.href = URL.createObjectURL(blob);
- a.download = name;
- a.click();
- URL.revokeObjectURL(a.href);
- }
- alert('Dateien wurden heruntergeladen.\nBitte index.html und admin.html ersetzen und die Seite neu laden.');
+ const blob = new Blob([html], { type: 'text/html' });
+ const a = document.createElement('a');
+ a.href = URL.createObjectURL(blob);
+ a.download = 'index.html';
+ a.click();
+ URL.revokeObjectURL(a.href);
+ alert('index.html und admin.html wurden heruntergeladen.\nBitte beide Dateien in den BNI-Ordner verschieben und die alten ersetzen, dann Seite neu laden.');
}
async function fetchChapterMembersFromGitea() {
diff --git a/version.json b/version.json
index 5497837..b5de736 100644
--- a/version.json
+++ b/version.json
@@ -1,4 +1,4 @@
{
- "version": "1.2.3",
+ "version": "1.2.4",
"notes": "Timer-Schalter im Admin-Menü"
}