Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3f1ff79e87 | ||
|
|
5cdf0ae9ff |
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@govoplan/addresses-webui",
|
||||
"version": "0.1.19",
|
||||
"version": "0.1.21",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "webui/src/index.ts",
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "govoplan-addresses"
|
||||
version = "0.1.19"
|
||||
version = "0.1.21"
|
||||
description = "GovOPlaN reusable address and recipient-source module."
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
"""German translations for public structured documentation metadata."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
|
||||
GERMAN_STRUCTURED_TRANSLATIONS: dict[str, dict[str, Any]] = {'addresses.reference.fields-and-consequences': {'consequence_classes': {'archive': 'Entfernt das '
|
||||
'Objekt aus '
|
||||
'der '
|
||||
'gewöhnlichen '
|
||||
'Auswahl, '
|
||||
'während die '
|
||||
'verwaltete '
|
||||
'Geschichte '
|
||||
'und '
|
||||
'Referenzen '
|
||||
'beibehalten '
|
||||
'werden.',
|
||||
'governance_fact': 'Hinzufügen '
|
||||
'oder '
|
||||
'Beenden '
|
||||
'einer '
|
||||
'effektiv '
|
||||
'datierten '
|
||||
'Kommunikationsentscheidung '
|
||||
'ohne '
|
||||
'vorherige '
|
||||
'Fakten '
|
||||
'zu '
|
||||
'löschen.',
|
||||
'import_or_sync': 'Wendet '
|
||||
'nur '
|
||||
'einen '
|
||||
'überprüften '
|
||||
'Bounded '
|
||||
'Plan '
|
||||
'an und '
|
||||
'behält '
|
||||
'die '
|
||||
'Quellenrevision, '
|
||||
'Diagnose '
|
||||
'und '
|
||||
'Herkunft '
|
||||
'bei.',
|
||||
'merge': 'Repoints '
|
||||
'verwaltet '
|
||||
'Verweise auf '
|
||||
'einen '
|
||||
'Überlebenden '
|
||||
'und behält '
|
||||
'reversible '
|
||||
'Redirect und '
|
||||
'Provenienz '
|
||||
'Nachweise.'}}}
|
||||
@@ -1,5 +1,8 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from govoplan_core.core.modules import with_documentation_structured_translations
|
||||
from govoplan_addresses.backend.german_structured_documentation import GERMAN_STRUCTURED_TRANSLATIONS
|
||||
|
||||
from dataclasses import replace
|
||||
from pathlib import Path
|
||||
|
||||
@@ -435,7 +438,7 @@ LDAP_PROVIDER = ExternalProviderDeclaration(
|
||||
manifest = ModuleManifest(
|
||||
id="addresses",
|
||||
name="Addresses",
|
||||
version="0.1.19",
|
||||
version="0.1.21",
|
||||
required_capabilities=(
|
||||
CAPABILITY_AUTH_PRINCIPAL_RESOLVER,
|
||||
CAPABILITY_AUTH_PERMISSION_EVALUATOR,
|
||||
@@ -1079,5 +1082,10 @@ manifest = ModuleManifest(
|
||||
)
|
||||
|
||||
|
||||
manifest = with_documentation_structured_translations(
|
||||
manifest, locale="de", translations=GERMAN_STRUCTURED_TRANSLATIONS
|
||||
)
|
||||
|
||||
|
||||
def get_manifest() -> ModuleManifest:
|
||||
return manifest
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@govoplan/addresses-webui",
|
||||
"version": "0.1.19",
|
||||
"version": "0.1.21",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -2975,13 +2975,13 @@ export default function AddressBookPage({ settings, auth, onAuthChange }: Props)
|
||||
<Button type="button" title="Restore address list" aria-label="Restore address list" disabledReason={restoreListReason(selectedList)} onClick={() => void restoreDeletedList(selectedList)}><RotateCcw size={15} /></Button> :
|
||||
<>
|
||||
<Button type="button" title="Edit address list" aria-label="Edit address list" disabledReason={editListReason(selectedList)} onClick={() => openEditListDialog(selectedList)}><Edit3 size={15} /></Button>
|
||||
<Button type="button" variant="danger" title="Delete address list" aria-label="Delete address list" disabledReason={deleteListReason(selectedList)} onClick={() => setConfirmState({ kind: "list", list: selectedList })}><Trash2 size={15} /></Button>
|
||||
<Button type="button" variant="danger" title="Delete address list" aria-label="Delete address list" helpContextId="addresses.action.archive" helpModuleId="addresses" disabledReason={deleteListReason(selectedList)} onClick={() => setConfirmState({ kind: "list", list: selectedList })}><Trash2 size={15} /></Button>
|
||||
</> :
|
||||
selectedBook?.deleted_at ?
|
||||
<Button type="button" title="Restore address book" aria-label="Restore address book" disabledReason={restoreBookReason(selectedBook)} onClick={() => void restoreBook(selectedBook)}><RotateCcw size={15} /></Button> :
|
||||
<>
|
||||
<Button type="button" title="Edit address book" aria-label="Edit address book" disabledReason={selectedBook ? editBookReason(selectedBook) : "Select an address book before editing."} onClick={() => selectedBook && openEditBookDialog(selectedBook)}><Edit3 size={15} /></Button>
|
||||
<Button type="button" variant="danger" title="Delete address book" aria-label="Delete address book" disabledReason={selectedBook ? deleteBookReason(selectedBook) : "Select an address book before deleting."} onClick={() => selectedBook && setConfirmState({ kind: "book", book: selectedBook })}><Trash2 size={15} /></Button>
|
||||
<Button type="button" variant="danger" title="Delete address book" aria-label="Delete address book" helpContextId="addresses.action.archive" helpModuleId="addresses" disabledReason={selectedBook ? deleteBookReason(selectedBook) : "Select an address book before deleting."} onClick={() => selectedBook && setConfirmState({ kind: "book", book: selectedBook })}><Trash2 size={15} /></Button>
|
||||
</>
|
||||
}
|
||||
</>
|
||||
@@ -3050,7 +3050,7 @@ export default function AddressBookPage({ settings, auth, onAuthChange }: Props)
|
||||
</Button>
|
||||
<Button type="button" title="Export contact vCard" aria-label="Export contact vCard" disabledReason={exportContactReason()} onClick={() => void exportOneContact(selectedContact)}><Download size={15} /> vCard</Button>
|
||||
<Button type="button" title="Edit contact" aria-label="Edit contact" disabledReason={editContactReason()} onClick={() => openEditContactDialog(selectedContact)}><Edit3 size={15} /> Edit</Button>
|
||||
<Button type="button" variant="danger" title="Delete contact" aria-label="Delete contact" disabledReason={deleteContactReason()} onClick={() => setConfirmState({ kind: "contact", contact: selectedContact })}><Trash2 size={15} /> Delete</Button>
|
||||
<Button type="button" variant="danger" title="Delete contact" aria-label="Delete contact" helpContextId="addresses.action.archive" helpModuleId="addresses" disabledReason={deleteContactReason()} onClick={() => setConfirmState({ kind: "contact", contact: selectedContact })}><Trash2 size={15} /> Delete</Button>
|
||||
</>
|
||||
}
|
||||
</div>
|
||||
@@ -4196,7 +4196,7 @@ export default function AddressBookPage({ settings, auth, onAuthChange }: Props)
|
||||
</FormField>
|
||||
</FormGrid>
|
||||
{cardDavForm.auth_type !== "none" &&
|
||||
<FormField label="Reusable credential">
|
||||
<FormField label="Reusable credential" helpContextId="addresses.sources" helpModuleId="addresses">
|
||||
<select
|
||||
value={cardDavForm.credential_envelope_id}
|
||||
onChange={(event) => {
|
||||
@@ -4227,15 +4227,15 @@ export default function AddressBookPage({ settings, auth, onAuthChange }: Props)
|
||||
<input value={cardDavForm.username} onChange={(event) => setCardDavForm((current) => ({ ...current, username: event.target.value }))} disabled={Boolean(cardDavForm.credential_envelope_id)} />
|
||||
</FormField>
|
||||
{!cardDavForm.credential_envelope_id &&
|
||||
<FormField label="Password">
|
||||
<PasswordField value={cardDavForm.password} onValueChange={(value) => setCardDavForm((current) => ({ ...current, password: value }))} autoComplete="new-password" />
|
||||
<FormField label="Password" helpContextId="addresses.sources" helpModuleId="addresses">
|
||||
<PasswordField helpContextId="addresses.sources" helpModuleId="addresses" value={cardDavForm.password} onValueChange={(value) => setCardDavForm((current) => ({ ...current, password: value }))} autoComplete="new-password" />
|
||||
</FormField>
|
||||
}
|
||||
</FormGrid>
|
||||
}
|
||||
{cardDavForm.auth_type === "bearer" && !cardDavForm.credential_envelope_id &&
|
||||
<FormField label="Bearer token">
|
||||
<PasswordField value={cardDavForm.bearer_token} onValueChange={(value) => setCardDavForm((current) => ({ ...current, bearer_token: value }))} autoComplete="new-password" />
|
||||
<FormField label="Bearer token" helpContextId="addresses.sources" helpModuleId="addresses">
|
||||
<PasswordField helpContextId="addresses.sources" helpModuleId="addresses" value={cardDavForm.bearer_token} onValueChange={(value) => setCardDavForm((current) => ({ ...current, bearer_token: value }))} autoComplete="new-password" />
|
||||
</FormField>
|
||||
}
|
||||
{cardDavDiscovery.length > 0 &&
|
||||
@@ -4277,7 +4277,7 @@ export default function AddressBookPage({ settings, auth, onAuthChange }: Props)
|
||||
<FormField label="Display name">
|
||||
<input value={ldapForm.display_name} onChange={(event) => setLdapForm((current) => ({ ...current, display_name: event.target.value }))} placeholder="Corporate directory" />
|
||||
</FormField>
|
||||
<FormField label="Reusable credential">
|
||||
<FormField label="Reusable credential" helpContextId="addresses.sources" helpModuleId="addresses">
|
||||
<select
|
||||
value={ldapForm.credential_envelope_id}
|
||||
onChange={(event) => {
|
||||
|
||||
Reference in New Issue
Block a user