diff --git a/src/static/js/app.js b/src/static/js/app.js
index b0ec1fa..644b1af 100644
--- a/src/static/js/app.js
+++ b/src/static/js/app.js
@@ -54,10 +54,10 @@ function logout() {
// --- Navigation ---
function setupNavTabs() {
- document.querySelectorAll(".nav-tabs:not(#orgDetailTabs) .nav-tab").forEach(tab => {
+ document.querySelectorAll(".nav-tabs:not(#orgDetailTabs):not(#sourceSubTabs) .nav-tab").forEach(tab => {
tab.addEventListener("click", () => {
const section = tab.dataset.section;
- document.querySelectorAll(".nav-tabs:not(#orgDetailTabs) .nav-tab").forEach(t => t.classList.remove("active"));
+ document.querySelectorAll(".nav-tabs:not(#orgDetailTabs):not(#sourceSubTabs) .nav-tab").forEach(t => t.classList.remove("active"));
tab.classList.add("active");
document.querySelectorAll(".app-content > .section").forEach(s => s.classList.remove("active"));
document.getElementById(`sec-${section}`).classList.add("active");
@@ -106,7 +106,7 @@ async function loadDashboard() {
${stats.licenses.active}
-
Vorfaelle
+
Vorfälle
${stats.incidents.total}
${stats.incidents.active} aktiv
@@ -128,7 +128,7 @@ async function loadDashboard() {
// Recent activity
const actEl = document.getElementById("recentActivity");
if (stats.recent_activity.length === 0) {
- actEl.innerHTML = 'Keine Aktivitaet
';
+ actEl.innerHTML = 'Keine Aktivität
';
} else {
actEl.innerHTML = stats.recent_activity.map(a => `
@@ -250,7 +250,7 @@ async function loadOrgUsers(orgId) {
? `Deaktivieren `
: `Aktivieren `
}
- Loeschen
+ Löschen
`).join("");
@@ -279,8 +279,8 @@ async function toggleUser(userId, activate) {
function confirmDeleteUser(userId, email) {
showConfirm(
- "Nutzer loeschen",
- `Soll der Nutzer "${email}" endgueltig geloescht werden?`,
+ "Nutzer löschen",
+ `Soll der Nutzer "${email}" endgültig gelöscht werden?`,
async () => {
try {
await API.del(`/api/users/${userId}`);
@@ -310,7 +310,7 @@ async function loadOrgLicenses(orgId) {
${l.status}
${l.status === "active" ? `
- Verlaengern
+ Verlängern
Widerrufen
` : ""}
@@ -322,7 +322,7 @@ async function loadOrgLicenses(orgId) {
}
async function extendLicense(licId) {
- const days = prompt("Um wie viele Tage verlaengern?", "365");
+ const days = prompt("Um wie viele Tage verlängern?", "365");
if (!days) return;
try {
await API.put(`/api/licenses/${licId}/extend?days=${parseInt(days)}`);
@@ -335,7 +335,7 @@ async function extendLicense(licId) {
function confirmRevokeLicense(licId) {
showConfirm(
"Lizenz widerrufen",
- "Soll die Lizenz wirklich widerrufen werden? Nutzer koennen dann nur noch lesen.",
+ "Soll die Lizenz wirklich widerrufen werden? Nutzer können dann nur noch lesen.",
async () => {
try {
await API.put(`/api/licenses/${licId}/revoke`);
@@ -354,7 +354,7 @@ async function loadExpiringLicenses() {
const licenses = await API.get(`/api/licenses/expiring?days=${days}`);
const tbody = document.getElementById("expiringTable");
if (licenses.length === 0) {
- tbody.innerHTML = `Keine ablaufenden Lizenzen in den naechsten ${days} Tagen `;
+ tbody.innerHTML = `Keine ablaufenden Lizenzen in den nächsten ${days} Tagen `;
return;
}
tbody.innerHTML = licenses.map(l => `
@@ -364,7 +364,7 @@ async function loadExpiringLicenses() {
${l.max_users}
${formatDate(l.valid_until)}
- Verlaengern
+ Verlängern
`).join("");
@@ -380,7 +380,7 @@ document.addEventListener("DOMContentLoaded", () => {
function switchToOrg(orgId) {
// Switch to orgs tab and open detail
- document.querySelectorAll(".nav-tabs:not(#orgDetailTabs) .nav-tab").forEach(t => t.classList.remove("active"));
+ document.querySelectorAll(".nav-tabs:not(#orgDetailTabs):not(#sourceSubTabs) .nav-tab").forEach(t => t.classList.remove("active"));
document.querySelector('.nav-tab[data-section="orgs"]').classList.add("active");
document.querySelectorAll(".app-content > .section").forEach(s => s.classList.remove("active"));
document.getElementById("sec-orgs").classList.add("active");
@@ -495,8 +495,8 @@ function setupForms() {
// Delete Org
document.getElementById("deleteOrgBtn").addEventListener("click", () => {
showConfirm(
- "Organisation loeschen",
- "Soll die Organisation mit allen Nutzern und Lizenzen endgueltig geloescht werden? Diese Aktion kann nicht rueckgaengig gemacht werden.",
+ "Organisation löschen",
+ "Soll die Organisation mit allen Nutzern und Lizenzen endgültig gelöscht werden? Diese Aktion kann nicht rückgängig gemacht werden.",
async () => {
try {
await API.del(`/api/orgs/${currentOrgId}`);