Foro: edición/borrado de posts, moderación de temas y búsqueda
Portado desde forum/db.py + forum/permissions.py de Django: - lib/forum-perm.ts: forumIsModerator (gmlevel >= FORUM_MOD_GMLEVEL) y canEditPost (autor o moderador). - Edición y borrado lógico de posts (autor o mod), respetando tema bloqueado, con validación de longitud mínima (plainLength). - Moderación de temas (solo mod): bloquear/desbloquear, fijar/no fijar, borrar. - Búsqueda de temas por título/contenido (searchTopics/countSearchTopics) con página /forum/search y buscador en el índice. - API: PATCH/DELETE /api/forum/post, POST /api/forum/moderate (401/403 correctos). - UI: PostActions, TopicModBar, ForumSearchBox; marca "editado" y "[Fijado]". - i18n: 22 claves nuevas en es/en. Verificado: build OK, /forum y /forum/search 200, APIs 401 sin sesión. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -268,7 +268,29 @@
|
||||
"sending": "Sending…",
|
||||
"loginToPost": "Sign in to participate.",
|
||||
"emptyError": "Fill in all fields.",
|
||||
"genericError": "Something went wrong. Please try again later."
|
||||
"genericError": "Something went wrong. Please try again later.",
|
||||
"moderation": "Moderation",
|
||||
"lock": "Lock",
|
||||
"unlock": "Unlock",
|
||||
"pin": "Pin",
|
||||
"unpin": "Unpin",
|
||||
"pinned": "Pinned",
|
||||
"deleteTopic": "Delete topic",
|
||||
"confirmDeleteTopic": "Are you sure you want to delete this topic?",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"confirmDeletePost": "Are you sure you want to delete this post?",
|
||||
"tooShort": "The message is too short (minimum 5 characters).",
|
||||
"topicLocked": "This topic is locked.",
|
||||
"editedMark": "edited",
|
||||
"search": "Search",
|
||||
"searchPlaceholder": "Search the forum…",
|
||||
"searchHint": "Type at least 2 characters to search.",
|
||||
"noResults": "No results for “{query}”.",
|
||||
"resultsCount": "{count} result(s) for “{query}”.",
|
||||
"in": "in"
|
||||
},
|
||||
"Admin": {
|
||||
"title": "Admin panel",
|
||||
|
||||
@@ -268,7 +268,29 @@
|
||||
"sending": "Enviando…",
|
||||
"loginToPost": "Inicia sesión para participar.",
|
||||
"emptyError": "Completa todos los campos.",
|
||||
"genericError": "Algo ha salido mal. Inténtalo más tarde."
|
||||
"genericError": "Algo ha salido mal. Inténtalo más tarde.",
|
||||
"moderation": "Moderación",
|
||||
"lock": "Bloquear",
|
||||
"unlock": "Desbloquear",
|
||||
"pin": "Fijar",
|
||||
"unpin": "No fijar",
|
||||
"pinned": "Fijado",
|
||||
"deleteTopic": "Borrar tema",
|
||||
"confirmDeleteTopic": "¿Seguro que quieres borrar este tema?",
|
||||
"edit": "Editar",
|
||||
"delete": "Borrar",
|
||||
"save": "Guardar",
|
||||
"cancel": "Cancelar",
|
||||
"confirmDeletePost": "¿Seguro que quieres borrar este mensaje?",
|
||||
"tooShort": "El mensaje es demasiado corto (mínimo 5 caracteres).",
|
||||
"topicLocked": "El tema está bloqueado.",
|
||||
"editedMark": "editado",
|
||||
"search": "Buscar",
|
||||
"searchPlaceholder": "Buscar en el foro…",
|
||||
"searchHint": "Escribe al menos 2 caracteres para buscar.",
|
||||
"noResults": "No hay resultados para «{query}».",
|
||||
"resultsCount": "{count} resultado(s) para «{query}».",
|
||||
"in": "en"
|
||||
},
|
||||
"Admin": {
|
||||
"title": "Panel de administración",
|
||||
|
||||
Reference in New Issue
Block a user