P2: Ungelesen-Badge in der Hauptnavigation
- Plugin-Vertrag: nav_badges(user_id) -> {URL: Anzahl}
- Kern-Middleware sammelt Badges pro Anfrage in request.state.nav_badges
- benachrichtigung-Plugin meldet die ungelesene Anzahl
- Rotes Zähler-Badge am Nav-Eintrag (Desktop + Mobil), nur wenn > 0
This commit is contained in:
@@ -80,6 +80,19 @@ class BenachrichtigungPlugin(BasePlugin):
|
||||
def navigation(self) -> list[NavEntry]:
|
||||
return [NavEntry(label=self.title, url="/benachrichtigung")]
|
||||
|
||||
def nav_badges(self, user_id: int) -> dict[str, int]:
|
||||
"""Nav-Badge: Anzahl ungelesener Benachrichtigungen."""
|
||||
with self.context.session_factory() as db:
|
||||
ungelesen = db.scalar(
|
||||
select(func.count())
|
||||
.select_from(Benachrichtigung)
|
||||
.where(
|
||||
Benachrichtigung.user_id == user_id,
|
||||
Benachrichtigung.gelesen.is_(False),
|
||||
)
|
||||
) or 0
|
||||
return {"/benachrichtigung": ungelesen} if ungelesen else {}
|
||||
|
||||
def dashboard_karten(self, user: User) -> list[DashboardKarte]:
|
||||
"""Dashboard: Anzahl ungelesener In-App-Benachrichtigungen."""
|
||||
with self.context.session_factory() as db:
|
||||
|
||||
Reference in New Issue
Block a user