Foro: autor con personaje aleatorio de la cuenta
- El nombre del autor muestra un personaje ALEATORIO de la cuenta (no la id). - Nombre con <Hermandad> en dorado (oculto si el personaje no tiene guild). - Avatar = imagen de raza del personaje (raza+género). - Cajas nuevas: puntos de logros, nivel y clase (con su color de clase). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@ import {
|
||||
import { formatForumDate } from '@/lib/forum-format'
|
||||
import { localizeWowheadLinks } from '@/lib/forum-wowhead'
|
||||
import { getSession } from '@/lib/session'
|
||||
import { className, classColor } from '@/lib/wow-data'
|
||||
import { forumIsModerator, canEditPost } from '@/lib/forum-perm'
|
||||
import { PageShell } from '@/components/PageShell'
|
||||
import { ForumBreadcrumb } from '@/components/ForumBreadcrumb'
|
||||
@@ -105,7 +106,10 @@ export default async function TopicPage({
|
||||
<div key={post.id} className={`topic_post${isStaff ? ' isStaff' : ''}${post.deleted ? ' post_deleted' : ''}`}>
|
||||
<div className="left_side">
|
||||
<div className="username_container">
|
||||
<span className="username">{author?.name ?? `#${post.poster}`}</span>
|
||||
<span className="username">
|
||||
{author?.charName ?? author?.name ?? `#${post.poster}`}
|
||||
{author?.guildName ? <span className="username_guild"> <{author.guildName}></span> : null}
|
||||
</span>
|
||||
</div>
|
||||
<div className={`user_avatar${isStaff ? ' isStaff' : ''}`}>
|
||||
<span
|
||||
@@ -128,6 +132,30 @@ export default async function TopicPage({
|
||||
</dt>
|
||||
<dd>{formatForumDate(author?.joindate ?? null, locale) || '—'}</dd>
|
||||
</h3>
|
||||
{author?.charName ? (
|
||||
<>
|
||||
<h3 className="post_field">
|
||||
<dt>
|
||||
<i className="fa-solid fa-medal fa-fw" />
|
||||
</dt>
|
||||
<dd>{(author.achPoints ?? 0).toLocaleString(locale)}</dd>
|
||||
</h3>
|
||||
<h3 className="post_field">
|
||||
<dt>
|
||||
<i className="fa-solid fa-star fa-fw" />
|
||||
</dt>
|
||||
<dd>
|
||||
{t('level')} {author.level}
|
||||
</dd>
|
||||
</h3>
|
||||
<h3 className="post_field">
|
||||
<dt>
|
||||
<i className="fa-solid fa-khanda fa-fw" />
|
||||
</dt>
|
||||
<dd style={{ color: classColor(author.classId) }}>{className(author.classId, locale)}</dd>
|
||||
</h3>
|
||||
</>
|
||||
) : null}
|
||||
<h3 className="post_field">
|
||||
<dt>
|
||||
<i className="fa-solid fa-comments fa-fw" />
|
||||
|
||||
@@ -54,8 +54,9 @@ export default async function LocaleLayout({
|
||||
return (
|
||||
<html lang={locale}>
|
||||
<head>
|
||||
{/* Verificación de la cuenta de Google AdSense: solo si hay ADSENSE_CLIENT_ID
|
||||
y el visitante no es admin. Ver components/AdSense.tsx. */}
|
||||
{/* Google AdSense (meta de verificación + adsbygoogle.js): solo si hay
|
||||
ADSENSE_CLIENT_ID, el visitante no es admin ni ha pagado, y —para el
|
||||
script— ha aceptado «Marketing». Ver components/AdSense.tsx. */}
|
||||
<AdSense />
|
||||
{/* Iconos del sitio (idénticos a la web Django) */}
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||
|
||||
@@ -295,3 +295,6 @@ a.nice_button:focus {
|
||||
.topic_post .left_side { flex-basis: 100%; }
|
||||
.topic_post .left_side .user_avatar { width: 56px; height: 56px; }
|
||||
}
|
||||
|
||||
/* Nombre de hermandad junto al personaje en el foro */
|
||||
.username_guild { color: #c8a24c; font-weight: 400; font-size: .8em; }
|
||||
|
||||
Reference in New Issue
Block a user