diff --git a/web-next/app/forum.css b/web-next/app/forum.css index 74da45d..82793c8 100644 --- a/web-next/app/forum.css +++ b/web-next/app/forum.css @@ -197,7 +197,10 @@ h3.post_field dd { margin: 0; } text-shadow: 0 1px 1px rgba(0, 0, 0, .6); } .topic_post .right_side .post_container img { display: block; max-width: 100%; height: auto; } -.topic_post .right_side .post_container a { color: var(--forum-gold-soft); text-decoration: underline; } +/* Enlaces normales del post en dorado; los de wowhead (data-wowhead) se dejan con + SU color de calidad e icono, sin subrayado, para que se vean como en el tooltip. */ +.topic_post .right_side .post_container a:not([data-wowhead]) { color: var(--forum-gold-soft); text-decoration: underline; } +.topic_post .right_side .post_container a[data-wowhead] { text-decoration: none; } .post_deleted { opacity: .5; } ul.post_controls { display: flex; justify-content: flex-end; align-items: center; gap: 8px; list-style: none; padding: 15px; margin: auto 0 0; } diff --git a/web-next/components/ForumEditor.tsx b/web-next/components/ForumEditor.tsx index 7dc86a4..e12a8f2 100644 --- a/web-next/components/ForumEditor.tsx +++ b/web-next/components/ForumEditor.tsx @@ -75,6 +75,38 @@ export function ForumEditor({ 'bold italic strikethrough forecolor backcolor emoticons | link wowhead image media | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat', image_advtab: true, setup: (editor) => { + // Vista previa: carga el script de tooltips de wowhead DENTRO del iframe + // del editor para que el enlace insertado se vea con icono, nombre y color + // de calidad, igual que al postear. No afecta a lo que se guarda: los + // formularios envían el HTML del estado de React (lo insertado, limpio), + // no la mutación visual que wowhead hace en el iframe. + const refreshEditorWowhead = () => { + try { + const wp = (editor.getWin() as unknown as { $WowheadPower?: { refreshLinks?: () => void } }) + .$WowheadPower + wp?.refreshLinks?.() + } catch { + /* preview no crítico */ + } + } + editor.on('init', () => { + try { + const doc = editor.getDoc() + const win = editor.getWin() as unknown as { whTooltips?: unknown } + win.whTooltips = { colorLinks: true, iconizeLinks: true, renameLinks: true } + if (!doc.getElementById('wh-tooltips-editor')) { + const s = doc.createElement('script') + s.id = 'wh-tooltips-editor' + s.src = 'https://wow.zamimg.com/js/tooltips.js' + doc.head.appendChild(s) + } + // procesa el contenido inicial (posts en edición) cuando el script cargue + setTimeout(refreshEditorWowhead, 400) + setTimeout(refreshEditorWowhead, 1200) + } catch { + /* preview no crítico */ + } + }) editor.ui.registry.addButton('wowhead', { text: 'Wowhead', tooltip: L.tooltip, @@ -119,6 +151,8 @@ export function ForumEditor({ `${label} `, ) api.close() + // pinta el ítem recién insertado en el editor (icono/nombre/calidad) + setTimeout(refreshEditorWowhead, 60) }, }) },