Changelogs

Foro: nombres de categorías y foros según el locale (ES/EN)

16 de julio de 2026 a las 12:42

adevopg · 3a0b9dd

Los nombres de categorías, foros, descripciones, clases e idiomas venían del seed solo en inglés. Ahora se muestran en el idioma de la página. Como es un conjunto fijo y conocido, se resuelve con un mapa de traducción en código (lib/forum-i18n.ts, inglés→español) que se aplica al vuelo, sin tocar el esquema (el inglés sigue siendo el valor guardado). Un texto no mapeado (p. ej. un foro nuevo creado desde el admin) se muestra tal cual. getForumIndex/getForum/getForumPath/getTopicPath aceptan el locale y localizan name/description/category (nunca el título de un tema, que es contenido de usuario). Las páginas pasan su locale. Verificado en producción: /es/forum en español (Noticias, Caballero de la Muerte, Foros por idioma) y /en/forum en inglés.




Foro: avatares por clase del personaje principal

16 de julio de 2026 a las 12:38

adevopg · 18648c6

Los avatares salían vacíos (el original usaba getAvatar, que no teníamos). Ahora cada post muestra el avatar de FusionCMS correspondiente a la CLASE del personaje de más nivel de la cuenta que postea, usando datos reales de acore_characters. - Se descargan 10 avatares (uno por clase jugable en WotLK 3.4.3: 1..9 y 11) a public/forum/avatars/class-<id>.gif. - resolvePosters() consulta la clase del personaje top de cada cuenta y mapea a su avatar; sin personaje (o acore_characters vacía) cae a guerrero por defecto. - La página de tema pinta el avatar en el recuadro lateral. Nota: la tabla characters de AzerothCore usa `guid` como clave (no `id`); ordenar por `id` lanzaba error y devolvía siempre el avatar por defecto. Corregido. Verificado en producción: una cuenta con Paladín de nivel máximo muestra class-2.gif.




Foro: botones con el estilo del tema y sin descuadres

16 de julio de 2026 a las 12:31

adevopg · 9b44af9

Los botones del foro usaban un dorado propio; ahora comparten el lenguaje del <button> del tema (fondo translúcido, texto crema en mayúsculas, aclara al hover), el mismo que sale como «Editar» en el resto de la web. Arreglos de maquetación: - Altura fija (42px) con inline-flex en .nice_button: los <button> heredaban height:50px del tema y los <a> no, y en la misma fila quedaban a distinta altura (se notaba sobre todo en «Borrar», que es un <button>). - Se quita el height:20px del <li> de post_controls, que aplastaba los botones. - Texto de los enlaces-botón forzado a crema: el a:link/:visited del tema (más específico) pintaba de azul el texto de «Crear tema». - «Editar», «Borrar» y «Desbloquear» pasan a .nice_button para que toda la fila de acciones sea homogénea.




Foro: reemplazar el foro anterior por el port del foro estilo FusionCMS

16 de julio de 2026 a las 12:22

adevopg · af707ad

Se sustituye por completo el foro anterior de Next (que estaba vacío: 0 temas, 0 posts) por una adaptación del foro PHP de FusionCMS que tenía el usuario, con su estructura, sus imágenes y su estética, llevadas a Next. BASE DE DATOS (acore_web), esquema idéntico al original (sql/forum_fusion.sql): forum_categories(id, order, name) forum_forums(id, category, order, name, description, icon, colortitle, type) forum_topics(id, forum, name, sticky, locked, deleted, created) forum_posts(id, topic, poster, text, time, deleted) Se hizo DROP de las tablas antiguas (forums, forum_categories, forum_topics, forum_posts) y CREATE de estas, con el seed original (News/Reports/General, foros con icono, clases con color, subforos por idioma con bandera). Única diferencia con el dump: forum_topics.created, que faltaba y usan las vistas, y el recorte del salto de línea final en los nombres de clase. Los temas no guardan autor ni última actividad: se derivan del primer/último post, como en el original. `poster` es el AccountID de acore_auth; el nombre se resuelve al render (username sin el sufijo #N de Battle.net). El texto se guarda como HTML saneado con nh3 (no BBCode) para encajar con el editor. EDITOR: TinyMCE community self-hosted (licenseKey gpl), servido desde /tinymce (scripts/copy-tinymce.mjs en postinstall; public/tinymce en .gitignore por ser artefacto). El HTML se sanea SIEMPRE en el servidor. PÁGINAS (app/[locale]/forum): índice con los 3 tipos de foro (fila normal, tarjeta de clase tipo 1, tarjeta de idioma tipo 2), subforo, tema, crear y editar. La lógica de forum.js (crear/responder/editar/moderar) se portó a fetch + los avisos del sitio, sin jQuery/SweetAlert, y la moderación pasa por POST (no GET). CSS: forum.css adaptado al tema (app/forum.css), rutas de imagen a /forum, dorado alineado al acento del sitio (#d79602), y se aportan .nice_button/.main-wide/ .pagination que no estaban en theme.css. ADMIN: lib/admin-forum.ts, sus rutas y AdminForumManager reescritos al esquema nuevo (categoría, icono, color, tipo, orden; sin _en/visibility). Se eliminan /forum/search y /forum/user (no existen en el foro nuevo) y los componentes que quedaban huérfanos (ForumSearchBox, PostActions, TopicModBar, NewTopicForm). i18n ES/EN completado (next-intl). Verificado en producción: el índice renderiza en es/en con categorías, clases, banderas e iconos; los assets y TinyMCE sirven 200; crear tema y responder guardan las filas con el esquema correcto y las páginas las muestran (autor resuelto, HTML saneado). Datos de prueba borrados: el foro arranca vacío.




Añadir ads.txt con el ID de editor de AdSense

16 de julio de 2026 a las 11:17

adevopg · 0f98b75

AdSense avisaba de que no encontraba ads.txt («No se ha encontrado»), y sin él no puede mostrar anuncios. Se añade en public/, que Next sirve tal cual en la raíz del dominio (https://www.nightspire.gg/ads.txt), autorizando a Google a vender el inventario del editor pub-3719103750106396. `f08c47fec0942fa0` es el ID de certificación de Google (fijo, igual para todos). Verificado en producción: apex y www devuelven el fichero con http 200 y content-type text/plain. Nota: cuando se active Monetag habrá que añadir aquí también sus líneas de ads.txt (las da su panel), o no podrá vender su parte del inventario.





SÍGUENOS EN