2 Commits
Author SHA1 Message Date
zemion 0ad2ef96b4 fix(webui): bind ticket deletion to help
Module Package Release / publish-packages (push) Successful in 11s
2026-08-24 11:47:24 +02:00
zemion 38e038b3a0 docs: complete German structured documentation
Module Package Release / publish-packages (push) Successful in 10s
2026-08-24 01:23:36 +02:00
7 changed files with 35 additions and 6 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@govoplan/tickets-webui",
"version": "0.1.20",
"version": "0.1.22",
"private": true,
"description": "Canonical GovOPlaN operational ticket lifecycle module.",
"type": "module",
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "govoplan-tickets"
version = "0.1.20"
version = "0.1.22"
description = "Canonical GovOPlaN operational ticket lifecycle module."
readme = "README.md"
requires-python = ">=3.12"
@@ -0,0 +1,21 @@
"""German translations for public structured documentation metadata."""
from __future__ import annotations
from typing import Any
GERMAN_STRUCTURED_TRANSLATIONS: dict[str, dict[str, Any]] = {'tickets.module-boundary': {'consequence_classes': {'canonical_store': 'Tickets ist der einzige '
'betriebsbereite '
'Ticketshop; Helpdesk '
'liefert Richtlinien und '
'Warteschlangensemantik.',
'case_boundary': 'Fall Eskalation schafft '
'eine stabile auditierbare '
'Verbindung und konvertiert '
'oder kopiert nie '
'Ticket-Historie.',
'soft_delete': 'Die Löschung verbirgt die '
'aktuelle Arbeit, bewahrt aber '
'unveränderliche Nachweise der '
'Rechenschaftspflicht.'}}}
+9 -1
View File
@@ -1,5 +1,8 @@
from __future__ import annotations
from govoplan_core.core.modules import with_documentation_structured_translations
from govoplan_tickets.backend.german_structured_documentation import GERMAN_STRUCTURED_TRANSLATIONS
from pathlib import Path
from sqlalchemy import func
@@ -61,7 +64,7 @@ from govoplan_tickets.backend.service import (
MODULE_ID = "tickets"
MODULE_NAME = "Tickets"
MODULE_VERSION = "0.1.20"
MODULE_VERSION = "0.1.22"
WRITE_SCOPE = LEGACY_WRITE_SCOPE
OPTIONAL_DEPENDENCIES = (
"cases",
@@ -382,5 +385,10 @@ manifest = ModuleManifest(
)
manifest = with_documentation_structured_translations(
manifest, locale="de", translations=GERMAN_STRUCTURED_TRANSLATIONS
)
def get_manifest() -> ModuleManifest:
return manifest
+1 -1
View File
@@ -25,7 +25,7 @@ class ManifestTests(unittest.TestCase):
manifest = get_manifest()
self.assertEqual("tickets", manifest.id)
self.assertEqual("0.1.20", manifest.version)
self.assertEqual("0.1.22", manifest.version)
self.assertEqual(("access",), manifest.dependencies)
self.assertEqual(
{
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@govoplan/tickets-webui",
"version": "0.1.20",
"version": "0.1.22",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -514,7 +514,7 @@ function TicketDetail({ record, availability, history, canTriage, canAssign, can
<Button type="submit" disabled={saving || !comment.trim()}>Add comment</Button>
</form>
</section>}
{canAdmin && <section className="ticket-destructive-actions" aria-label="Destructive ticket actions"><h2>Administrative removal</h2><p>Deletion removes the ticket from active queues and Search while retaining immutable evidence.</p><Button type="button" variant="danger" onClick={onDelete}><Trash2 size={16} /> Delete ticket</Button></section>}
{canAdmin && <section className="ticket-destructive-actions" aria-label="Destructive ticket actions"><h2>Administrative removal</h2><p>Deletion removes the ticket from active queues and Search while retaining immutable evidence.</p><Button type="button" variant="danger" helpContextId="tickets.action.delete" helpModuleId="tickets" onClick={onDelete}><Trash2 size={16} /> Delete ticket</Button></section>}
</article>
);
}