feat(sprint7): Phase 3 — Forum MVP

- Flyway V15: forum_topics, forum_replies, forum_reactions, forum_reports tables
- Enums: ForumTargetType, ReactionType, ReportStatus
- Extended AuditEventType with FORUM_REPLY_CREATED, FORUM_REPORT_REVIEWED
- Entities: ForumTopic, ForumReply, ForumReaction, ForumReport
- Repositories: ForumTopicRepository, ForumReplyRepository, ForumReactionRepository, ForumReportRepository
- ForumService: full CRUD, moderation (lock/pin/delete), 60-min edit window,
  toggle reactions, content reporting, notifications on new topics/replies
- ForumController: admin + portal endpoints (topics, replies, reactions, reports, moderation)
- Frontend: forum.ts service with React Query hooks (admin + portal)
- Frontend: Admin forum page with topic list, moderation actions (lock/pin/delete)
- Frontend: Portal forum page with topic list, reply thread, reactions, report
- Navigation: added Forum with MessageSquare icon
- i18n: forum.* keys in de.json and en.json
This commit is contained in:
Patrick Plate
2026-06-13 20:31:17 +02:00
parent 05fd679c4d
commit a539ed9eb2
21 changed files with 2059 additions and 14 deletions
+28
View File
@@ -808,5 +808,33 @@
"WORKSHOP": "Workshop",
"OTHER": "Sonstiges"
}
},
"forum": {
"title": "Forum",
"description": "Vereinsinternes Diskussionsforum",
"newTopic": "Neues Thema",
"topicTitlePlaceholder": "Titel des Themas...",
"topicContentPlaceholder": "Beschreibe dein Thema...",
"creating": "Wird erstellt...",
"create": "Erstellen",
"cancel": "Abbrechen",
"loading": "Wird geladen...",
"noTopics": "Noch keine Themen vorhanden. Erstelle das erste!",
"replies": "Antworten",
"lastReply": "Letzte Antwort",
"openReports": "offene Meldungen",
"pin": "Anheften",
"unpin": "Lösen",
"lock": "Sperren",
"unlock": "Entsperren",
"delete": "Löschen",
"deleteReason": "Grund für die Löschung (optional):",
"replyPlaceholder": "Schreibe eine Antwort...",
"sending": "Wird gesendet...",
"reply": "Antworten",
"edited": "bearbeitet",
"topicLocked": "Dieses Thema ist gesperrt. Neue Antworten sind nicht möglich.",
"reportReason": "Grund der Meldung:",
"backToTopics": "Zurück zur Übersicht"
}
}