Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f67eb25d7 | ||
|
|
3274d30665 |
@@ -158,3 +158,21 @@ Run focused checks with:
|
|||||||
/mnt/DATA/git/govoplan/.venv/bin/python -m unittest discover -s tests
|
/mnt/DATA/git/govoplan/.venv/bin/python -m unittest discover -s tests
|
||||||
cd webui && npm run test:ui-structure
|
cd webui && npm run test:ui-structure
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Git-source WebUI package
|
||||||
|
|
||||||
|
The repository root exposes `@govoplan/postbox-webui` for Git-tagged release
|
||||||
|
dependencies. It mirrors the owning `webui/package.json` version, public
|
||||||
|
TypeScript/CSS exports and peer requirements, with entry paths under
|
||||||
|
`webui/src`. Consumers provide the shared Core/React peers; the facade runs no
|
||||||
|
development or install scripts. The source archive contains `webui/src`, this
|
||||||
|
README and any repository license file. Run module development checks from `webui/`; Python
|
||||||
|
installation remains governed by `pyproject.toml`.
|
||||||
|
|
||||||
|
Das Repository stellt `@govoplan/postbox-webui` am Wurzelpfad für versionierte
|
||||||
|
Git-Abhängigkeiten bereit. Version, öffentliche TypeScript-/CSS-Exporte und
|
||||||
|
Peer-Anforderungen entsprechen `webui/package.json`; die Einstiegspfade liegen
|
||||||
|
unter `webui/src`. Gemeinsame Core-/React-Peers stellt die einbindende Anwendung
|
||||||
|
bereit. Die Fassade führt keine Entwicklungs- oder Installationsskripte aus.
|
||||||
|
Entwicklungsprüfungen bleiben in `webui/`, die Python-Installation weiterhin in
|
||||||
|
`pyproject.toml` definiert.
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"name": "@govoplan/postbox-webui",
|
||||||
|
"version": "0.1.23",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"main": "webui/src/index.ts",
|
||||||
|
"module": "webui/src/index.ts",
|
||||||
|
"types": "webui/src/index.ts",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"types": "./webui/src/index.ts",
|
||||||
|
"import": "./webui/src/index.ts"
|
||||||
|
},
|
||||||
|
"./styles/postbox.css": "./webui/src/styles/postbox.css"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
|
"lucide-react": "^1.23.0",
|
||||||
|
"react": ">=19.2.7 <20",
|
||||||
|
"react-dom": ">=19.2.7 <20",
|
||||||
|
"react-router": ">=8.3.0 <9"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@govoplan/core-webui": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"webui/src",
|
||||||
|
"README.md",
|
||||||
|
"LICENSE"
|
||||||
|
]
|
||||||
|
}
|
||||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "govoplan-postbox"
|
name = "govoplan-postbox"
|
||||||
version = "0.1.22"
|
version = "0.1.23"
|
||||||
description = "Function-bound institutional postboxes for GovOPlaN."
|
description = "Function-bound institutional postboxes for GovOPlaN."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
"""GovOPlaN Postbox module."""
|
"""GovOPlaN Postbox module."""
|
||||||
|
|
||||||
__version__ = "0.1.22"
|
__version__ = "0.1.23"
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ from govoplan_postbox.backend.permissions import (
|
|||||||
|
|
||||||
MODULE_ID = "postbox"
|
MODULE_ID = "postbox"
|
||||||
MODULE_NAME = "Postbox"
|
MODULE_NAME = "Postbox"
|
||||||
MODULE_VERSION = "0.1.22"
|
MODULE_VERSION = "0.1.23"
|
||||||
|
|
||||||
|
|
||||||
def _permission(scope: str, label: str, description: str) -> PermissionDefinition:
|
def _permission(scope: str, label: str, description: str) -> PermissionDefinition:
|
||||||
@@ -898,6 +898,9 @@ manifest = ModuleManifest(
|
|||||||
"effective organization-function assignments."
|
"effective organization-function assignments."
|
||||||
),
|
),
|
||||||
body=(
|
body=(
|
||||||
|
"Documentation books sit immediately beside the visible heading or contextual label for "
|
||||||
|
"Postboxes and the relevant protection, hierarchy or inbox setting, not among operational "
|
||||||
|
"action buttons. Field help remains beside its label. "
|
||||||
"Postboxes belong to responsibilities, not individual accounts. "
|
"Postboxes belong to responsibilities, not individual accounts. "
|
||||||
"A stable postbox remains addressable during vacancy and "
|
"A stable postbox remains addressable during vacancy and "
|
||||||
"reassignment. Current access combines a generic Postbox "
|
"reassignment. Current access combines a generic Postbox "
|
||||||
@@ -940,6 +943,10 @@ manifest = ModuleManifest(
|
|||||||
"title": "Funktionsgebundene Postfächer",
|
"title": "Funktionsgebundene Postfächer",
|
||||||
"summary": "Dauerhafte institutionelle Nachrichtencontainer, deren Zugriff den wirksamen Zuweisungen zu Organisationsfunktionen folgt.",
|
"summary": "Dauerhafte institutionelle Nachrichtencontainer, deren Zugriff den wirksamen Zuweisungen zu Organisationsfunktionen folgt.",
|
||||||
"body": (
|
"body": (
|
||||||
|
"Dokumentationsbücher stehen unmittelbar neben der sichtbaren Überschrift oder "
|
||||||
|
"Kontextbezeichnung für Postfächer und die jeweilige Schutz-, Hierarchie- oder "
|
||||||
|
"Posteingangseinstellung, nicht zwischen ausführbaren Aktionsschaltflächen. Feldhilfe bleibt "
|
||||||
|
"neben der Feldbezeichnung. "
|
||||||
"Postfächer gehören zu Verantwortlichkeiten und nicht zu einzelnen Konten. Ein stabiles Postfach bleibt während "
|
"Postfächer gehören zu Verantwortlichkeiten und nicht zu einzelnen Konten. Ein stabiles Postfach bleibt während "
|
||||||
"einer Vakanz und Neubesetzung adressierbar. Der aktuelle Zugriff verbindet eine allgemeine Postfachberechtigung "
|
"einer Vakanz und Neubesetzung adressierbar. Der aktuelle Zugriff verbindet eine allgemeine Postfachberechtigung "
|
||||||
"mit dem wirksamen IDM-Zuweisungskontext. Vorlagen können einheitsspezifische Adressen bei Bedarf erzeugen; exakte "
|
"mit dem wirksamen IDM-Zuweisungskontext. Vorlagen können einheitsspezifische Adressen bei Bedarf erzeugen; exakte "
|
||||||
@@ -977,6 +984,9 @@ manifest = ModuleManifest(
|
|||||||
"classification, retention, and lifecycle fields."
|
"classification, retention, and lifecycle fields."
|
||||||
),
|
),
|
||||||
body=(
|
body=(
|
||||||
|
"Documentation books sit immediately beside the visible heading or contextual label for "
|
||||||
|
"Postboxes and the relevant protection, hierarchy or inbox setting, not among operational "
|
||||||
|
"action buttons. Field help remains beside its label. "
|
||||||
"A Postbox address is durable and bound to an organization function. "
|
"A Postbox address is durable and bound to an organization function. "
|
||||||
"Template revisions are immutable after publication; retiring a template "
|
"Template revisions are immutable after publication; retiring a template "
|
||||||
"does not remove materialized addresses. Archiving an address stops new "
|
"does not remove materialized addresses. Archiving an address stops new "
|
||||||
@@ -1020,6 +1030,10 @@ manifest = ModuleManifest(
|
|||||||
"title": "Postfachfelder und ihre Auswirkungen",
|
"title": "Postfachfelder und ihre Auswirkungen",
|
||||||
"summary": "Referenz für Adresse, Vorlage, Routing, Nachricht, Gruppierung, Klassifikation, Aufbewahrung und Lebenszyklus.",
|
"summary": "Referenz für Adresse, Vorlage, Routing, Nachricht, Gruppierung, Klassifikation, Aufbewahrung und Lebenszyklus.",
|
||||||
"body": (
|
"body": (
|
||||||
|
"Dokumentationsbücher stehen unmittelbar neben der sichtbaren Überschrift oder "
|
||||||
|
"Kontextbezeichnung für Postfächer und die jeweilige Schutz-, Hierarchie- oder "
|
||||||
|
"Posteingangseinstellung, nicht zwischen ausführbaren Aktionsschaltflächen. Feldhilfe bleibt "
|
||||||
|
"neben der Feldbezeichnung. "
|
||||||
"Eine Postfachadresse ist dauerhaft und an eine Organisationsfunktion gebunden. Vorlagenrevisionen sind nach der "
|
"Eine Postfachadresse ist dauerhaft und an eine Organisationsfunktion gebunden. Vorlagenrevisionen sind nach der "
|
||||||
"Veröffentlichung unveränderlich; die Stilllegung einer Vorlage entfernt keine bereits erzeugten Adressen. Die "
|
"Veröffentlichung unveränderlich; die Stilllegung einer Vorlage entfernt keine bereits erzeugten Adressen. Die "
|
||||||
"Archivierung einer Adresse stoppt neue Zustellungen und bewahrt Nachrichten und Nachweise. Zusammengefasste "
|
"Archivierung einer Adresse stoppt neue Zustellungen und bewahrt Nachrichten und Nachweise. Zusammengefasste "
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@govoplan/postbox-webui",
|
"name": "@govoplan/postbox-webui",
|
||||||
"version": "0.1.22",
|
"version": "0.1.23",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import { FormGrid,
|
|||||||
ConfirmDialog,
|
ConfirmDialog,
|
||||||
Dialog,
|
Dialog,
|
||||||
DocumentationHelpLink,
|
DocumentationHelpLink,
|
||||||
|
TextWithHelp,
|
||||||
FormField,
|
FormField,
|
||||||
IconButton,
|
IconButton,
|
||||||
MetricCard,
|
MetricCard,
|
||||||
@@ -794,7 +795,7 @@ export default function PostboxAdminPanel({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<AdminPageLayout
|
<AdminPageLayout
|
||||||
title="Postboxes"
|
title="Postboxes" titleHelp={<DocumentationHelpLink reference={POSTBOX_ADMIN_DOCUMENTATION} />}
|
||||||
description="Manage durable organization-function addresses and reusable templates."
|
description="Manage durable organization-function addresses and reusable templates."
|
||||||
loading={loading}
|
loading={loading}
|
||||||
error={error}
|
error={error}
|
||||||
@@ -809,7 +810,7 @@ export default function PostboxAdminPanel({
|
|||||||
disabled={loading || busy}
|
disabled={loading || busy}
|
||||||
disabledReason={postboxBusyReason(loading, busy)}
|
disabledReason={postboxBusyReason(loading, busy)}
|
||||||
/>
|
/>
|
||||||
<DocumentationHelpLink reference={POSTBOX_ADMIN_DOCUMENTATION} />
|
|
||||||
{mode === "templates" && canManageTemplates ? (
|
{mode === "templates" && canManageTemplates ? (
|
||||||
<Button variant="primary" onClick={openNewTemplate} disabled={busy} disabledReason={postboxBusyReason(false, busy)}>
|
<Button variant="primary" onClick={openNewTemplate} disabled={busy} disabledReason={postboxBusyReason(false, busy)}>
|
||||||
<Plus size={16} /> New template
|
<Plus size={16} /> New template
|
||||||
@@ -1525,9 +1526,10 @@ function TemplateDialog({
|
|||||||
<div className="postbox-routing-section">
|
<div className="postbox-routing-section">
|
||||||
<div className="postbox-routing-heading">
|
<div className="postbox-routing-heading">
|
||||||
<div>
|
<div>
|
||||||
|
<TextWithHelp as="div" help={<DocumentationHelpLink reference={POSTBOX_FIELD_DOCUMENTATION} />}>
|
||||||
<strong>Hierarchy linked copies</strong>
|
<strong>Hierarchy linked copies</strong>
|
||||||
|
</TextWithHelp>
|
||||||
<span>Copy to explicitly bounded function Postboxes in one selected structure.</span>
|
<span>Copy to explicitly bounded function Postboxes in one selected structure.</span>
|
||||||
<DocumentationHelpLink reference={POSTBOX_FIELD_DOCUMENTATION} />
|
|
||||||
</div>
|
</div>
|
||||||
<ToggleSwitch
|
<ToggleSwitch
|
||||||
label="Enable hierarchy linked copies"
|
label="Enable hierarchy linked copies"
|
||||||
@@ -1948,11 +1950,12 @@ function ProtectionConfigurationFields({
|
|||||||
<div className="postbox-routing-section">
|
<div className="postbox-routing-section">
|
||||||
<div className="postbox-routing-heading">
|
<div className="postbox-routing-heading">
|
||||||
<div>
|
<div>
|
||||||
|
<TextWithHelp as="div" help={<DocumentationHelpLink reference={POSTBOX_FIELD_DOCUMENTATION} />}>
|
||||||
<strong>Content protection and hand-over policy</strong>
|
<strong>Content protection and hand-over policy</strong>
|
||||||
|
</TextWithHelp>
|
||||||
<span>
|
<span>
|
||||||
The institution chooses the protection boundary. Managed envelope encryption is the recommended standard.
|
The institution chooses the protection boundary. Managed envelope encryption is the recommended standard.
|
||||||
</span>
|
</span>
|
||||||
<DocumentationHelpLink reference={POSTBOX_FIELD_DOCUMENTATION} />
|
|
||||||
</div>
|
</div>
|
||||||
{selected?.standard ? <StatusBadge status="recommended" label="Standard" /> : null}
|
{selected?.standard ? <StatusBadge status="recommended" label="Standard" /> : null}
|
||||||
</div>
|
</div>
|
||||||
@@ -2156,9 +2159,10 @@ function GroupingPolicyFields({
|
|||||||
<div className="postbox-protection-section">
|
<div className="postbox-protection-section">
|
||||||
<div className="postbox-routing-heading">
|
<div className="postbox-routing-heading">
|
||||||
<div>
|
<div>
|
||||||
|
<TextWithHelp as="div" help={<DocumentationHelpLink reference={POSTBOX_FIELD_DOCUMENTATION} />}>
|
||||||
<strong>Unified-inbox separation</strong>
|
<strong>Unified-inbox separation</strong>
|
||||||
|
</TextWithHelp>
|
||||||
<span>Keep source containers and institutional responsibilities visibly separated where required.</span>
|
<span>Keep source containers and institutional responsibilities visibly separated where required.</span>
|
||||||
<DocumentationHelpLink reference={POSTBOX_FIELD_DOCUMENTATION} />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<FormGrid>
|
<FormGrid>
|
||||||
|
|||||||
@@ -680,11 +680,11 @@ export default function PostboxPage({
|
|||||||
refreshable
|
refreshable
|
||||||
reloadAction={{ onReload: () => void loadDirectory(), loading: loadingDirectory || busy }}
|
reloadAction={{ onReload: () => void loadDirectory(), loading: loadingDirectory || busy }}
|
||||||
className="postbox-bar"
|
className="postbox-bar"
|
||||||
contextActions={<div className="postbox-bar-title">
|
title={<span className="postbox-bar-title">
|
||||||
<Inbox size={17} aria-hidden="true" />
|
<Inbox size={17} aria-hidden="true" />
|
||||||
<strong>Postbox</strong>
|
<strong>Postbox</strong>
|
||||||
</div>}
|
</span>}
|
||||||
helpAction={<DocumentationHelpLink reference={POSTBOX_DOCUMENTATION} />}
|
titleHelp={<DocumentationHelpLink reference={POSTBOX_DOCUMENTATION} />}
|
||||||
createAction={<IconButton
|
createAction={<IconButton
|
||||||
label="New unified view"
|
label="New unified view"
|
||||||
icon={<Plus size={16} />}
|
icon={<Plus size={16} />}
|
||||||
|
|||||||
Reference in New Issue
Block a user