From 309babf8493eee06949d2d4bfb7aa8e2392fe681 Mon Sep 17 00:00:00 2001 From: Git Manager GUI Date: Sun, 24 May 2026 22:33:16 +0200 Subject: [PATCH] Upload folder via GUI - renderer --- renderer/renderer.js | 96 ++++++++++++++++++++++---------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/renderer/renderer.js b/renderer/renderer.js index 978b84b..4c808f8 100644 --- a/renderer/renderer.js +++ b/renderer/renderer.js @@ -944,7 +944,7 @@ async function toggleRepoVisibility(owner, repoName, currentPrivate) { } const targetPrivate = !currentPrivate; - const actionText = targetPrivate ? 'privat' : 'oeffentlich'; + const actionText = targetPrivate ? 'privat' : 'öffentlich'; showProgress(35, `Repository wird ${actionText} gesetzt...`); const result = await window.electronAPI.updateGiteaRepoVisibility({ token: creds.giteaToken, @@ -1048,7 +1048,7 @@ function showTagsEditorModal(owner, repoName, seed, knownTopics) { const hint = document.createElement('div'); hint.className = 'settings-inline-hint'; - hint.textContent = 'Vorschlaege kommen live von deiner Gitea-Seite. Neue Tags sind ebenfalls erlaubt.'; + hint.textContent = 'Vorschläge kommen live von deiner Gitea-Seite. Neue Tags sind ebenfalls erlaubt.'; group.appendChild(repoLabel); group.appendChild(selectedHostEl); @@ -1130,7 +1130,7 @@ function showTagsEditorModal(owner, repoName, seed, knownTopics) { } list = list.filter(t => !selected.some(s => s.toLowerCase() === t.toLowerCase())).slice(0, 50); if (list.length === 0) { - suggestionsHost.innerHTML = '
Keine Vorschlaege
'; + suggestionsHost.innerHTML = '
Keine Vorschläge
'; return; } suggestionsHost.innerHTML = ''; @@ -1521,7 +1521,7 @@ async function buildGithubHeatmapFromRepoCommits(monthsBack) { dayMap.set(key, (dayMap.get(key) || 0) + 1); } } catch (_) { - // einzelne Repos koennen fehlschlagen ohne den Gesamtprozess zu blockieren + // einzelne Repos können fehlschlagen, ohne den Gesamtprozess zu blockieren } } }; @@ -2742,9 +2742,9 @@ function renderTabs() { e.stopPropagation(); if (tab.dirty) { const ok = await showActionConfirmModal({ - title: 'Ungespeicherte Aenderungen', - message: `${tab.name} hat ungespeicherte Aenderungen. Wirklich schliessen?`, - confirmText: 'Schliessen', + title: 'Ungespeicherte Änderungen', + message: `${tab.name} hat ungespeicherte Änderungen. Wirklich schließen?`, + confirmText: 'Schließen', danger: true }); if (!ok) return; @@ -3009,9 +3009,9 @@ async function closeFileEditor() { if (unsaved.length > 0) { const ok = await showActionConfirmModal({ - title: 'Ungespeicherte Aenderungen', - message: `${unsaved.length} Datei(en) haben ungespeicherte Aenderungen. Wirklich schliessen?`, - confirmText: 'Schliessen', + title: 'Ungespeicherte Änderungen', + message: `${unsaved.length} Datei(en) haben ungespeicherte Änderungen. Wirklich schließen?`, + confirmText: 'Schließen', danger: true }); if (!ok) return; @@ -3049,7 +3049,7 @@ async function openFileEditor(filePath, fileName) { if (response.ok) { addTab(filePath, fileName, response.content); } else { - await showInfoModal('Datei konnte nicht geoeffnet werden', `Fehler: ${response.error || 'Unbekannter Fehler'}`, true); + await showInfoModal('Datei konnte nicht geöffnet werden', `Fehler: ${response.error || 'Unbekannter Fehler'}`, true); return; } } @@ -3065,7 +3065,7 @@ async function openFileEditor(filePath, fileName) { console.log('✅ File opened'); } catch (error) { console.error('Error opening file:', error); - await showInfoModal('Datei konnte nicht geoeffnet werden', 'Fehler beim Oeffnen der Datei.', true); + await showInfoModal('Datei konnte nicht geöffnet werden', 'Fehler beim Öffnen der Datei.', true); } } @@ -3110,7 +3110,7 @@ async function openGiteaFileInEditor(owner, repo, filePath, fileName) { } } catch (error) { console.error('Error opening Gitea file:', error); - await showInfoModal('Datei konnte nicht geoeffnet werden', 'Fehler beim Oeffnen der Datei.', true); + await showInfoModal('Datei konnte nicht geöffnet werden', 'Fehler beim Öffnen der Datei.', true); showError('Fehler'); } } @@ -3277,7 +3277,7 @@ async function saveCurrentFile(isAutoSave = false) { // Prüfe ob es eine Bilddatei ist if (/\.(png|jpg|jpeg|gif|webp|svg)$/i.test(currentActiveTab)) { - await showInfoModal('Nicht bearbeitbar', 'Bilder koennen nicht bearbeitet werden.'); + await showInfoModal('Nicht bearbeitbar', 'Bilder können nicht bearbeitet werden.'); return; } @@ -4374,7 +4374,7 @@ function showSyncConfirmModal({ title = 'Bestaetigen', message = '', confirmText const detailTitle = document.createElement('div'); detailTitle.style.cssText = 'font-size:12px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:#b9c9e8;margin-bottom:4px;'; - detailTitle.textContent = 'Was wird uebernommen'; + detailTitle.textContent = 'Was wird übernommen'; detailBlock.appendChild(detailTitle); rows.forEach((d) => { @@ -4600,7 +4600,7 @@ function showRepoContextMenu(ev, owner, repoName, cloneUrl, element, isPrivate = details: [ { label: 'Richtung', value: 'Gitea -> GitHub' }, { label: 'Repository', value: `${owner}/${repoName}` }, - { label: 'Sichtbarkeit', value: isPrivate ? 'Privat' : 'Oeffentlich' }, + { label: 'Sichtbarkeit', value: isPrivate ? 'Privat' : 'Öffentlich' }, { label: 'Beschreibung', value: (repoMeta?.description || '-').slice(0, 160) }, { label: 'Topics', value: (Array.isArray(repoMeta?.topics) && repoMeta.topics.length > 0) ? repoMeta.topics.join(', ') : '-' } ] @@ -4633,7 +4633,7 @@ function showRepoContextMenu(ev, owner, repoName, cloneUrl, element, isPrivate = details: [ { label: 'Richtung', value: 'GitHub -> Gitea' }, { label: 'Repository', value: `${owner}/${repoName}` }, - { label: 'Sichtbarkeit', value: isPrivate ? 'Privat' : 'Oeffentlich' }, + { label: 'Sichtbarkeit', value: isPrivate ? 'Privat' : 'Öffentlich' }, { label: 'Beschreibung', value: (repoMeta?.description || '-').slice(0, 160) }, { label: 'Topics', value: (Array.isArray(repoMeta?.topics) && repoMeta.topics.length > 0) ? repoMeta.topics.join(', ') : '-' } ] @@ -4757,9 +4757,9 @@ function showRepoContextMenu(ev, owner, repoName, cloneUrl, element, isPrivate = const deleteItem = createMenuItem('🗑️', 'Repo löschen', async () => { menu.remove(); const ok = await showActionConfirmModal({ - title: 'Repository loeschen', - message: `Delete ${repoName}?`, - confirmText: 'Loeschen', + title: 'Repository löschen', + message: `Repository ${repoName} wirklich löschen?`, + confirmText: 'Löschen', danger: true }); if (ok) { @@ -4767,13 +4767,13 @@ function showRepoContextMenu(ev, owner, repoName, cloneUrl, element, isPrivate = const res = await window.electronAPI.deleteGiteaRepo({ owner, repo: repoName, platform: currentState.platform }); if (res.ok) { element.remove(); - showSuccess('Repository deleted'); + showSuccess('Repository gelöscht'); } else { - showError('Delete failed: ' + res.error); + showError('Löschen fehlgeschlagen: ' + res.error); } } catch (error) { console.error('Delete error:', error); - showError('Delete failed'); + showError('Löschen fehlgeschlagen'); } } }, '#ef4444'); @@ -4832,9 +4832,9 @@ function showGiteaItemContextMenu(ev, item, owner, repo) { addItem('🗑️', `Alle ${selectedItems.size} löschen`, async () => { const ok = await showActionConfirmModal({ - title: 'Mehrfach-Loeschen', - message: `${selectedItems.size} Elemente wirklich loeschen?`, - confirmText: 'Loeschen', + title: 'Mehrfach-Löschen', + message: `${selectedItems.size} Elemente wirklich löschen?`, + confirmText: 'Löschen', danger: true }); if (!ok) return; @@ -4911,10 +4911,10 @@ function showGiteaItemContextMenu(ev, item, owner, repo) { // --- LÖSCHEN --- addItem('🗑️', 'Löschen', async () => { - const ok = await showActionConfirmModal({ - title: 'Element loeschen', - message: `"${item.name}" wirklich loeschen?`, - confirmText: 'Loeschen', + const ok = await showActionConfirmModal({ + title: 'Element löschen', + message: `"${item.name}" wirklich löschen?`, + confirmText: 'Löschen', danger: true }); if (!ok) return; @@ -4927,7 +4927,7 @@ function showGiteaItemContextMenu(ev, item, owner, repo) { loadRepoContents(owner, repo, currentState.path); } else { showError('Löschen fehlgeschlagen: ' + (res?.error || '')); - await showInfoModal('Loeschen fehlgeschlagen', 'Loeschen fehlgeschlagen:\n' + (res?.error || 'Unbekannter Fehler'), true); + await showInfoModal('Löschen fehlgeschlagen', 'Löschen fehlgeschlagen:\n' + (res?.error || 'Unbekannter Fehler'), true); } }, '#ef4444'); @@ -4980,9 +4980,9 @@ function showLocalItemContextMenu(ev, node) { addItem('🗑️', `Alle ${selectedItems.size} löschen`, async () => { const ok = await showActionConfirmModal({ - title: 'Mehrfach-Loeschen', - message: `${selectedItems.size} Elemente wirklich loeschen?`, - confirmText: 'Loeschen', + title: 'Mehrfach-Löschen', + message: `${selectedItems.size} Elemente wirklich löschen?`, + confirmText: 'Löschen', danger: true }); if (!ok) return; @@ -5041,10 +5041,10 @@ function showLocalItemContextMenu(ev, node) { // --- LÖSCHEN --- addItem('🗑️', 'Löschen', async () => { - const ok = await showActionConfirmModal({ - title: 'Element loeschen', - message: `"${node.name}" wirklich loeschen?`, - confirmText: 'Loeschen', + const ok = await showActionConfirmModal({ + title: 'Element löschen', + message: `"${node.name}" wirklich löschen?`, + confirmText: 'Löschen', danger: true }); if (!ok) return; @@ -6807,9 +6807,9 @@ function createReleaseCard(release, isLatest) { `; deleteAssetBtn.onclick = async () => { const ok = await showActionConfirmModal({ - title: 'Asset loeschen', - message: `Delete asset "${asset.name}"?`, - confirmText: 'Loeschen', + title: 'Asset löschen', + message: `Asset "${asset.name}" wirklich löschen?`, + confirmText: 'Löschen', danger: true }); if (ok) { @@ -6820,7 +6820,7 @@ function createReleaseCard(release, isLatest) { }); if (res.ok) { assetItem.remove(); - setStatus('Asset deleted'); + setStatus('Asset gelöscht'); } } }; @@ -6910,7 +6910,7 @@ function createReleaseCard(release, isLatest) { addAssetBtn.onclick = () => showUploadAssetDialog(release); const deleteBtn = document.createElement('button'); - deleteBtn.textContent = '🗑️ Delete'; + deleteBtn.textContent = '🗑️ Löschen'; deleteBtn.style.cssText = ` background: transparent; color: var(--danger); @@ -6923,9 +6923,9 @@ function createReleaseCard(release, isLatest) { `; deleteBtn.onclick = async () => { const ok = await showActionConfirmModal({ - title: 'Release loeschen', - message: `Delete release "${release.name || release.tag_name}"?`, - confirmText: 'Loeschen', + title: 'Release löschen', + message: `Release "${release.name || release.tag_name}" wirklich löschen?`, + confirmText: 'Löschen', danger: true }); if (ok) { @@ -7093,7 +7093,7 @@ function showCreateReleaseModal(owner, repo) { } } catch (error) { console.error('Fehler beim Auswählen der Datei:', error); - await showInfoModal('Dateidialog', 'Konnte Dateidialog nicht oeffnen.', true); + await showInfoModal('Dateidialog', 'Konnte Dateidialog nicht öffnen.', true); } }; @@ -8103,7 +8103,7 @@ async function initUpdater() { $('btnImportSettingsBundle').onclick = async () => { const ok = await showActionConfirmModal({ title: 'Backup importieren', - message: 'Vorhandene Einstellungen koennen ueberschrieben werden. Fortfahren?', + message: 'Vorhandene Einstellungen können überschrieben werden. Fortfahren?', confirmText: 'Import starten', danger: false });