1 Commits
Author SHA1 Message Date
zemion 4bdc3ab60c fix(webui): bind consequential postbox controls to help
Module Package Release / publish-packages (push) Successful in 12s
2026-08-24 11:36:42 +02:00
6 changed files with 16 additions and 8 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "govoplan-postbox" name = "govoplan-postbox"
version = "0.1.20" version = "0.1.21"
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 -1
View File
@@ -1,3 +1,3 @@
"""GovOPlaN Postbox module.""" """GovOPlaN Postbox module."""
__version__ = "0.1.20" __version__ = "0.1.21"
+1 -1
View File
@@ -75,7 +75,7 @@ from govoplan_postbox.backend.permissions import (
MODULE_ID = "postbox" MODULE_ID = "postbox"
MODULE_NAME = "Postbox" MODULE_NAME = "Postbox"
MODULE_VERSION = "0.1.20" MODULE_VERSION = "0.1.21"
def _permission(scope: str, label: str, description: str) -> PermissionDefinition: def _permission(scope: str, label: str, description: str) -> PermissionDefinition:
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@govoplan/postbox-webui", "name": "@govoplan/postbox-webui",
"version": "0.1.20", "version": "0.1.21",
"private": true, "private": true,
"type": "module", "type": "module",
"main": "src/index.ts", "main": "src/index.ts",
@@ -1038,6 +1038,8 @@ function TemplateWorkspace({
</Button> </Button>
<Button <Button
onClick={onPublish} onClick={onPublish}
helpContextId="postbox.admin.templates"
helpModuleId="postbox"
disabled={busy || selected.status === "retired" || Boolean(revision.published_at)} disabled={busy || selected.status === "retired" || Boolean(revision.published_at)}
disabledReason={postboxBusyReason(false, busy) ?? (selected.status === "retired" ? POSTBOX_INTERFACE_I18N.retiredTemplate : revision.published_at ? POSTBOX_INTERFACE_I18N.publishedRevision : undefined)} disabledReason={postboxBusyReason(false, busy) ?? (selected.status === "retired" ? POSTBOX_INTERFACE_I18N.retiredTemplate : revision.published_at ? POSTBOX_INTERFACE_I18N.publishedRevision : undefined)}
> >
@@ -1678,7 +1680,7 @@ function TemplateDialog({
onChange={(require_expiry) => updateLinkedCopy({ require_expiry })} onChange={(require_expiry) => updateLinkedCopy({ require_expiry })}
/> />
</div> </div>
<FormField label="Maximum retention days" documentation={POSTBOX_FIELD_DOCUMENTATION}> <FormField label="Maximum retention days" documentation={POSTBOX_FIELD_DOCUMENTATION} helpContextId="postbox.field.retention" helpModuleId="postbox">
<input <input
type="number" type="number"
min={1} min={1}
@@ -1970,7 +1972,7 @@ function ProtectionConfigurationFields({
<small>{selected?.description}</small> <small>{selected?.description}</small>
</FormField> </FormField>
{profile === "server_envelope_v1" ? ( {profile === "server_envelope_v1" ? (
<FormField label="Encryption vault" documentation={POSTBOX_FIELD_DOCUMENTATION}> <FormField label="Encryption vault" documentation={POSTBOX_FIELD_DOCUMENTATION} helpContextId="postbox.field.protection-profile" helpModuleId="postbox">
<input <input
value={vaultId} value={vaultId}
disabled={profileLocked} disabled={profileLocked}
@@ -2410,7 +2412,7 @@ function ProtectionTransitionDialog({
<small>{selected?.description}</small> <small>{selected?.description}</small>
</FormField> </FormField>
{draft.target_profile === "server_envelope_v1" ? ( {draft.target_profile === "server_envelope_v1" ? (
<FormField label="Target encryption vault" documentation={POSTBOX_FIELD_DOCUMENTATION}> <FormField label="Target encryption vault" documentation={POSTBOX_FIELD_DOCUMENTATION} helpContextId="postbox.action.protection-transition" helpModuleId="postbox">
<input <input
value={draft.target_vault_id} value={draft.target_vault_id}
onChange={(event) => onChange({ ...draft, target_vault_id: event.target.value })} onChange={(event) => onChange({ ...draft, target_vault_id: event.target.value })}
@@ -2482,6 +2484,8 @@ function ProtectionTransitionDialog({
<div className="postbox-toggle-field"> <div className="postbox-toggle-field">
<ToggleSwitch <ToggleSwitch
label="Acknowledge residual disclosure" label="Acknowledge residual disclosure"
helpContextId="postbox.action.protection-transition"
helpModuleId="postbox"
help="Previously decrypted, copied, or exported content cannot be recalled by changing the storage profile." help="Previously decrypted, copied, or exported content cannot be recalled by changing the storage profile."
checked={draft.acknowledge_irreversibility} checked={draft.acknowledge_irreversibility}
onChange={(acknowledge_irreversibility) => onChange({ onChange={(acknowledge_irreversibility) => onChange({
@@ -997,6 +997,8 @@ export default function PostboxPage({
{groupingDraft.id ? ( {groupingDraft.id ? (
<Button <Button
variant="danger" variant="danger"
helpContextId="postbox.action.delete-grouping"
helpModuleId="postbox"
onClick={() => setDeleteGroupingTarget(groupingDraft)} onClick={() => setDeleteGroupingTarget(groupingDraft)}
disabled={busy} disabled={busy}
disabledReason={postboxBusyReason(false, busy)} disabledReason={postboxBusyReason(false, busy)}
@@ -1104,6 +1106,8 @@ export default function PostboxPage({
</Button> </Button>
<Button <Button
variant="primary" variant="primary"
helpContextId="postbox.inbox.messages"
helpModuleId="postbox"
onClick={() => void submitMessage()} onClick={() => void submitMessage()}
disabled={ disabled={
busy || busy ||