feat: contribute Messages product surface

This commit is contained in:
2026-08-24 12:53:44 +02:00
parent 4bdc3ab60c
commit 3565302ea2
5 changed files with 51 additions and 7 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.21" version = "0.1.22"
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.21" __version__ = "0.1.22"
+45 -2
View File
@@ -34,7 +34,9 @@ from govoplan_core.core.modules import (
ModuleManifest, ModuleManifest,
NavItem, NavItem,
PermissionDefinition, PermissionDefinition,
ProductAvailabilityExplanation,
ProductAreaContribution, ProductAreaContribution,
ProductSurfaceContribution,
QuickAccessTool, QuickAccessTool,
RoleTemplate, RoleTemplate,
) )
@@ -75,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.21" MODULE_VERSION = "0.1.22"
def _permission(scope: str, label: str, description: str) -> PermissionDefinition: def _permission(scope: str, label: str, description: str) -> PermissionDefinition:
@@ -404,6 +406,40 @@ manifest = ModuleManifest(
order=40, order=40,
), ),
), ),
product_surfaces=(
ProductSurfaceContribution(
id="communication.messages",
module_id=MODULE_ID,
label="i18n:govoplan-core.product_surface.messages",
description="i18n:govoplan-core.product_surface.messages_description",
icon="mail",
entry_path="/messages",
route_path="/postbox",
surface_ids=("postbox.nav.postbox", "postbox.route.postbox"),
presentations=("task", "reader"),
capability_ids=(CAPABILITY_POSTBOX_MESSAGES,),
search_source_ids=("postbox.messages",),
help_context_ids=("postbox.quick_access.messages",),
documentation_topic_ids=("postbox.quick-access-and-product-area",),
required_any=(READ_SCOPE,),
aliases=("/inbox",),
order=20,
unavailable=ProductAvailabilityExplanation(
reason="authorization",
title="i18n:govoplan-core.product_surface.messages_unavailable",
description="i18n:govoplan-core.product_surface.messages_unavailable_description",
resolution="i18n:govoplan-core.product_surface.messages_unavailable_resolution",
responsible_role="i18n:govoplan-core.access_administrator",
),
degraded=ProductAvailabilityExplanation(
reason="provider_degraded",
title="i18n:govoplan-core.product_surface.messages_degraded",
description="i18n:govoplan-core.product_surface.messages_degraded_description",
resolution="i18n:govoplan-core.product_surface.messages_degraded_resolution",
responsible_role="i18n:govoplan-core.integration_operator",
),
),
),
quick_access_tools=( quick_access_tools=(
QuickAccessTool( QuickAccessTool(
id="postbox.messages", id="postbox.messages",
@@ -623,7 +659,11 @@ manifest = ModuleManifest(
summary="Use function-bound Postboxes in Communication and the shared Messages Quick Access drawer.", summary="Use function-bound Postboxes in Communication and the shared Messages Quick Access drawer.",
body=( body=(
"Postbox contributes its inbox to Communication. With Quick Access enabled, its owner-rendered surface lists at most " "Postbox contributes its inbox to Communication. With Quick Access enabled, its owner-rendered surface lists at most "
"seven currently readable unread messages beside independent Mail and future chat providers. Selecting or opening a " "seven currently readable unread messages beside independent Mail and future chat providers. "
"The stable `/messages` product entry and `/inbox` migration alias select Postbox only when its route is "
"currently authorized and visible in the effective View; otherwise another Messages owner is selected or the shell "
"explains how access can be restored. "
"Selecting or opening a "
"message returns a typed Postbox reference; accounts with message-write permission can launch the full owner-rendered " "message returns a typed Postbox reference; accounts with message-write permission can launch the full owner-rendered "
"composer for a currently accessible function Postbox. Directory, message, and submission calls recheck the active " "composer for a currently accessible function Postbox. Directory, message, and submission calls recheck the active "
"assignment or acting context. Function assignment, classification, read-receipt, retention, encryption, and evidence " "assignment or acting context. Function assignment, classification, read-receipt, retention, encryption, and evidence "
@@ -640,6 +680,9 @@ manifest = ModuleManifest(
"body": ( "body": (
"Postbox ordnet seinen Eingang Kommunikation zu. Ist der Schnellzugriff aktiviert, erscheint die vom Modul gerenderte " "Postbox ordnet seinen Eingang Kommunikation zu. Ist der Schnellzugriff aktiviert, erscheint die vom Modul gerenderte "
"Oberfläche mit höchstens sieben aktuell lesbaren ungelesenen Nachrichten neben unabhängigen Beiträgen aus Mail. " "Oberfläche mit höchstens sieben aktuell lesbaren ungelesenen Nachrichten neben unabhängigen Beiträgen aus Mail. "
"Der stabile Produkteinstieg `/messages` und der Migrationsalias `/inbox` wählen Postbox nur, wenn seine Route "
"aktuell berechtigt und in der wirksamen View sichtbar ist. Andernfalls wird ein anderer Nachrichten-Eigentümer "
"gewählt oder die Shell erklärt die Wiederherstellung des Zugriffs. "
"Auswahl oder Öffnen liefert eine typisierte Postbox-Referenz; mit Schreibberechtigung lässt sich der vollständige " "Auswahl oder Öffnen liefert eine typisierte Postbox-Referenz; mit Schreibberechtigung lässt sich der vollständige "
"Editor für ein aktuell zugängliches Funktionspostfach öffnen. Verzeichnis, Nachricht und Versand prüfen die aktive " "Editor für ein aktuell zugängliches Funktionspostfach öffnen. Verzeichnis, Nachricht und Versand prüfen die aktive "
"Zuweisung beziehungsweise den Handlungskontext erneut. Klassifikation, Lesestatus, Aufbewahrung, Verschlüsselung " "Zuweisung beziehungsweise den Handlungskontext erneut. Klassifikation, Lesestatus, Aufbewahrung, Verschlüsselung "
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@govoplan/postbox-webui", "name": "@govoplan/postbox-webui",
"version": "0.1.21", "version": "0.1.22",
"private": true, "private": true,
"type": "module", "type": "module",
"main": "src/index.ts", "main": "src/index.ts",
+3 -2
View File
@@ -1,6 +1,7 @@
import { createElement, lazy } from "react"; import { createElement, lazy } from "react";
import { import {
hasScope, hasScope,
messagesProductSurfaceTranslations,
type AdminSectionsUiCapability, type AdminSectionsUiCapability,
type DashboardWidgetsUiCapability, type DashboardWidgetsUiCapability,
type PlatformWebModule, type PlatformWebModule,
@@ -18,8 +19,8 @@ const PostboxAdminPanel = lazy(
); );
const translations = { const translations = {
en: generatedTranslations.en, en: { ...generatedTranslations.en, ...messagesProductSurfaceTranslations.en },
de: generatedTranslations.de de: { ...generatedTranslations.de, ...messagesProductSurfaceTranslations.de }
}; };
const readScope = ["postbox:postbox:read"]; const readScope = ["postbox:postbox:read"];