feat(260929-dzu): Einstellungen > Eigene Module fuer jeden Benutzer, Verwaltung nur gemeinsam

- gemeinsame Oberflaeche (CustomModuleManager, Formular, Loeschdialog) fuer Verwaltung und Einstellungen
- Einstellungen: persoenliche Eintraege, Verwaltung sendet shared: true und zeigt nur gemeinsame
- Navigation, Texte de/en, Komponententests

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-29 10:17:22 +02:00
parent bc4c0119de
commit ee97b4ed9f
11 changed files with 636 additions and 222 deletions
+35 -21
View File
@@ -165,6 +165,7 @@
"categoryGeneral": "Allgemein",
"categoryAccount": "Konto",
"categoryDesktopApp": "Desktop-App",
"categoryCustomModules": "Eigene Module",
"categorySmtp": "SMTP",
"account": {
"title": "Konto",
@@ -228,6 +229,13 @@
"testFailed": "Verbindung fehlgeschlagen",
"bugReportRecipient": "Fehlermeldungen an",
"bugReportRecipientHelp": "Optional – Postfach, an das Anwender über den Knopf „Fehler melden\" ihre Meldungen mit Bildschirmfoto schicken. Leer lassen, wenn der Knopf keine E-Mails senden soll."
},
"customModules": {
"title": "Eigene Module",
"description": "Nehmen Sie Webseiten, die Sie oft brauchen, als eigene Einträge in Ihre Seitenleiste auf. Diese Einträge sehen nur Sie. Ein Klick zeigt die Seite direkt in Tessera.",
"create": "Eigenes Modul anlegen",
"noModules": "Noch keine eigenen Module",
"noModulesBody": "Legen Sie Ihr erstes Modul an, um eine Webseite in Ihrer Seitenleiste zu zeigen."
}
},
"widgets": {
@@ -672,26 +680,10 @@
},
"customModules": {
"title": "Eigene Module",
"description": "Nehmen Sie andere Webseiten als Einträge in die Seitenleiste auf. Alle Benutzer sehen diese Einträge unter der gewählten Kategorie, ein Klick zeigt die Seite direkt in Tessera.",
"create": "Eigenes Modul anlegen",
"edit": "Eigenes Modul bearbeiten",
"name": "Name",
"url": "Adresse",
"urlHint": "Die Adresse muss mit https:// beginnen.",
"category": "Kategorie",
"actions": "Aktionen",
"noModules": "Noch keine eigenen Module",
"noModulesBody": "Legen Sie Ihr erstes Modul an, um eine Webseite in der Seitenleiste zu zeigen.",
"nameRequired": "Bitte geben Sie einen Namen ein.",
"urlNotHttps": "Bitte geben Sie eine Adresse ein, die mit https:// beginnt.",
"urlCredentials": "Die Adresse darf keinen Benutzernamen und kein Kennwort enthalten.",
"saveError": "Das Modul konnte nicht gespeichert werden. Bitte versuchen Sie es erneut.",
"deleteError": "Das Modul konnte nicht gelöscht werden. Bitte versuchen Sie es erneut.",
"loadError": "Die eigenen Module konnten nicht geladen werden.",
"deleteConfirm": {
"title": "Eigenes Modul löschen",
"body": "Möchten Sie „{name}“ wirklich löschen? Der Eintrag verschwindet für alle Benutzer aus der Seitenleiste."
}
"description": "Nehmen Sie andere Webseiten als Einträge in die Seitenleiste auf. Diese gemeinsamen Einträge sehen alle Benutzer unter der gewählten Kategorie, ein Klick zeigt die Seite direkt in Tessera. Persönliche Einträge nur für Sie legen Sie unter „Einstellungen → Eigene Module“ an.",
"create": "Gemeinsamen Eintrag anlegen",
"noModules": "Noch keine gemeinsamen Einträge",
"noModulesBody": "Legen Sie Ihren ersten gemeinsamen Eintrag an, um eine Webseite für alle Benutzer in der Seitenleiste zu zeigen."
}
},
"adminModules": {
@@ -1375,7 +1367,29 @@
"embedHint": "Manche Seiten lassen sich nicht einbetten. Öffnen Sie die Seite dann in einem neuen Tab.",
"notFound": "Dieses Modul gibt es nicht mehr.",
"invalidUrl": "Die Adresse dieses Moduls ist keine gültige https-Adresse und wird deshalb nicht angezeigt.",
"loading": "Wird geladen …"
"loading": "Wird geladen …",
"form": {
"create": "Eigenes Modul anlegen",
"edit": "Eigenes Modul bearbeiten",
"name": "Name",
"url": "Adresse",
"urlHint": "Die Adresse muss mit https:// beginnen.",
"category": "Kategorie",
"nameRequired": "Bitte geben Sie einen Namen ein.",
"urlNotHttps": "Bitte geben Sie eine Adresse ein, die mit https:// beginnt.",
"urlCredentials": "Die Adresse darf keinen Benutzernamen und kein Kennwort enthalten.",
"saveError": "Das Modul konnte nicht gespeichert werden. Bitte versuchen Sie es erneut.",
"deleteError": "Das Modul konnte nicht gelöscht werden. Bitte versuchen Sie es erneut.",
"deleteConfirm": {
"title": "Eigenes Modul löschen",
"bodyShared": "Möchten Sie „{name}“ wirklich löschen? Der Eintrag verschwindet für alle Benutzer aus der Seitenleiste.",
"bodyPersonal": "Möchten Sie „{name}“ wirklich löschen? Der Eintrag verschwindet aus Ihrer Seitenleiste."
}
},
"manage": {
"actions": "Aktionen",
"loadError": "Die eigenen Module konnten nicht geladen werden."
}
},
"moduleCategories": {
"domain-tools": "Domains",
+35 -21
View File
@@ -165,6 +165,7 @@
"categoryGeneral": "General",
"categoryAccount": "Account",
"categoryDesktopApp": "Desktop App",
"categoryCustomModules": "Custom modules",
"categorySmtp": "SMTP",
"account": {
"title": "Account",
@@ -228,6 +229,13 @@
"testFailed": "Connection failed",
"bugReportRecipient": "Bug reports to",
"bugReportRecipientHelp": "Optional – mailbox that receives the reports users send via the \"Report a problem\" button, including the screenshot. Leave empty if the button should not send e-mails."
},
"customModules": {
"title": "Custom modules",
"description": "Add websites you use often as your own entries in your sidebar. Only you can see these entries. A click shows the page right inside Tessera.",
"create": "Add custom module",
"noModules": "No custom modules yet",
"noModulesBody": "Add your first module to show a website in your sidebar."
}
},
"widgets": {
@@ -672,26 +680,10 @@
},
"customModules": {
"title": "Custom modules",
"description": "Add other websites as entries in the sidebar. All users see these entries under the chosen category, and a click shows the page right inside Tessera.",
"create": "Add custom module",
"edit": "Edit custom module",
"name": "Name",
"url": "Address",
"urlHint": "The address must start with https://.",
"category": "Category",
"actions": "Actions",
"noModules": "No custom modules yet",
"noModulesBody": "Add your first module to show a website in the sidebar.",
"nameRequired": "Please enter a name.",
"urlNotHttps": "Please enter an address that starts with https://.",
"urlCredentials": "The address must not contain a user name or a password.",
"saveError": "The module could not be saved. Please try again.",
"deleteError": "The module could not be deleted. Please try again.",
"loadError": "The custom modules could not be loaded.",
"deleteConfirm": {
"title": "Delete custom module",
"body": "Do you really want to delete “{name}”? The entry disappears from the sidebar for all users."
}
"description": "Add other websites as entries in the sidebar. All users see these shared entries under the chosen category, and a click shows the page right inside Tessera. Personal entries only you can see are added under “Settings → Custom modules”.",
"create": "Add shared entry",
"noModules": "No shared entries yet",
"noModulesBody": "Add your first shared entry to show a website in the sidebar for all users."
}
},
"adminModules": {
@@ -1375,7 +1367,29 @@
"embedHint": "Some pages cannot be embedded. If this one stays blank, open it in a new tab.",
"notFound": "This module no longer exists.",
"invalidUrl": "This module's address is not a valid https address and is therefore not shown.",
"loading": "Loading …"
"loading": "Loading …",
"form": {
"create": "Add custom module",
"edit": "Edit custom module",
"name": "Name",
"url": "Address",
"urlHint": "The address must start with https://.",
"category": "Category",
"nameRequired": "Please enter a name.",
"urlNotHttps": "Please enter an address that starts with https://.",
"urlCredentials": "The address must not contain a user name or a password.",
"saveError": "The module could not be saved. Please try again.",
"deleteError": "The module could not be deleted. Please try again.",
"deleteConfirm": {
"title": "Delete custom module",
"bodyShared": "Do you really want to delete “{name}”? The entry disappears from the sidebar for all users.",
"bodyPersonal": "Do you really want to delete “{name}”? The entry disappears from your sidebar."
}
},
"manage": {
"actions": "Actions",
"loadError": "The custom modules could not be loaded."
}
},
"moduleCategories": {
"domain-tools": "Domains",