Foro (lectura): índice, temas y mensajes en Next.js

- lib/forum.ts: getForumIndex (categorías + foros visibles con contadores y último
  tema, port de forum/db.py), getForum/getTopics, getTopic/getPosts (acore_web).
- Páginas app/[locale]/forum (índice), /forum/[forumId] (temas), /forum/topic/[topicId]
  (mensajes; render del HTML ya saneado por Django). Enlace "Foros" en la cabecera.
- Catálogo Forum + Nav.forum.

Verificado: /forum 200, foros/temas inexistentes 404, enlace en la cabecera.
Solo lectura; pendiente escribir (crear tema/responder + saneado nh3->TS) y moderación.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 23:45:39 +00:00
parent cceab26999
commit e743d98777
7 changed files with 336 additions and 2 deletions
+19 -1
View File
@@ -9,7 +9,8 @@
"register": "Create account",
"account": "My account",
"logout": "Log out",
"language": "Language"
"language": "Language",
"forum": "Forums"
},
"Home": {
"brand": "Nova WoW",
@@ -237,5 +238,22 @@
"success": "Email changed successfully! You can now sign in with the new email.",
"error": "The link is invalid, expired or the account was not found.",
"goLogin": "Go to sign in"
},
"Forum": {
"title": "Forums",
"noForums": "No forums available yet.",
"topics": "Topics",
"posts": "Posts",
"lastTopic": "Latest topic",
"by": "by",
"views": "Views",
"noTopics": "No topics in this forum yet.",
"locked": "Locked",
"sticky": "Pinned",
"backToForum": "Back to forums",
"backToTopics": "Back to forum",
"notFound": "Not found",
"newTopic": "New topic",
"reply": "Reply"
}
}