Foro: ítems de wowhead sin parpadeo y con color de calidad correcto
Dos problemas restantes con los enlaces de wowhead: 1) Texto blanco en vez del color de calidad. theme.css solo define q3..q6, así que un ítem de calidad 0/1/2 (p.ej. verde=q2) se quedaba sin color y salía blanco. Se completan .q0/.q1/.q2/.q7 en forum.css (colores estándar de WoW) con !important para ganar al color del enlace. Además el saneador deja los enlaces de wowhead SIN nofollow (el script de wowhead ignora los nofollow al colorear). 2) Parpadeo de «item=xxx» al recargar. Salía porque el texto del enlace era un marcador que wowhead renombraba de forma asíncrona. Ahora el botón resuelve el NOMBRE y la CALIDAD en el servidor (nuevo /api/forum/wowhead, que consulta el endpoint de tooltip de wowhead en la rama WotLK y el idioma de la web) e inserta el enlace ya con su nombre real y su clase qN: sin parpadeo y ya coloreado. Si la API falla, se cae al modo anterior (data-wh-rename-link). El editor añade los colores de calidad a su content_style para que el preview salga igual. El icono lo sigue poniendo wowhead (iconizeLinks) tanto en el editor como al postear. Verificado en producción: el endpoint devuelve nombre (es), calidad e icono; el CSS sirve q2; un post con nombre real + q2 se guarda sin nofollow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -48,11 +48,14 @@ export function cleanPostHtml(html: string): string {
|
||||
allowedSchemes: ['http', 'https', 'mailto'],
|
||||
transformTags: {
|
||||
a: (tagName, attribs) => {
|
||||
const out: Record<string, string> = { ...attribs, rel: 'noopener noreferrer nofollow' }
|
||||
if (out.href && /\.wowhead\.com\//i.test(out.href)) {
|
||||
const out: Record<string, string> = { ...attribs }
|
||||
const isWowhead = Boolean(out.href && /\.wowhead\.com\//i.test(out.href))
|
||||
// Los enlaces de wowhead SIN nofollow: el script de wowhead ignora los
|
||||
// nofollow al colorear/iconizar, y así se comportan como en la tienda.
|
||||
out.rel = isWowhead ? 'noopener noreferrer' : 'noopener noreferrer nofollow'
|
||||
if (isWowhead) {
|
||||
out.href = normalizeWowheadHref(out.href)
|
||||
// abrir en pestaña nueva, como los enlaces de wowhead del resto del sitio
|
||||
out.target = '_blank'
|
||||
out.target = '_blank' // pestaña nueva, como el resto del sitio
|
||||
}
|
||||
return { tagName, attribs: out }
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user