Rebranding: sitios de voto, nota legal, prefijo uw->ns y repo renombrado
Sitios de voto: los 4 apuntaban a las fichas de UltimoWoW en los rankings con SUS ids (Gtop100 94649, pingUsername 91402, etc.). No era cosmética: cada voto de nuestros jugadores subía a UltimoWoW en el ranking. Se cambian nombre e ids por un 236588 de relleno, así el enlace deja de acreditar a otro servidor. Las fichas reales de NightSpire están por crear; entonces habrá que poner sus ids. Nota legal: decía "Error 404 es la empresa que representa el servicio", heredado de ultimowow. Al renombrar la marca pasaba a afirmar que una empresa ajena representa a NightSpire, lo cual es falso. Se quita la empresa en ES y EN. Prefijo uw- (de UltimoWoW) -> ns-: 100 identificadores en 11 ficheros (clases CSS, ids de formulario, eventos y la cookie de consentimiento, que pasa a ns_cookie_consent; a los usuarios les reaparecerá el aviso una vez). Se comprobó antes que el CSS del tema no define ninguna clase uw-, así que no rompe estilos. btn-ns-form y ns-cookie-btn-customize se usan sin estar definidas, pero ya era así antes del cambio: eran clases muertas. Repo de Gitea renombrado Inna/NovaWoW -> Inna/NightSpire (era la marca vieja más visible de /changelogs, que forma la URL de cada commit). Gitea redirige la URL antigua con 301. Se actualizan el remoto y lib/changelog.ts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -84,7 +84,7 @@ export function ClientDownload() {
|
||||
<hr />
|
||||
<br />
|
||||
<div className="centered">
|
||||
<form name="uw-client-dowload" id="uw-client-download" autoComplete="off" onSubmit={handleSubmit}>
|
||||
<form name="ns-client-dowload" id="ns-client-download" autoComplete="off" onSubmit={handleSubmit}>
|
||||
<p><span>{t('clientDownload.languageLabel')}</span></p>
|
||||
<br />
|
||||
<select
|
||||
|
||||
@@ -36,18 +36,18 @@ export const CONSENT_CATEGORIES: readonly Category[] = [
|
||||
]
|
||||
|
||||
type Consent = Record<string, boolean>
|
||||
const CONSENT_COOKIE = 'uw_cookie_consent'
|
||||
const CONSENT_EVENT = 'uw:consentchange'
|
||||
const SHOW_EVENT = 'uw:showbanner'
|
||||
const CONSENT_COOKIE = 'ns_cookie_consent'
|
||||
const CONSENT_EVENT = 'ns:consentchange'
|
||||
const SHOW_EVENT = 'ns:showbanner'
|
||||
|
||||
function zaraz(): ZarazConsent | undefined {
|
||||
return typeof window !== 'undefined' ? window.zaraz?.consent : undefined
|
||||
}
|
||||
|
||||
/** Lee la preferencia guardada en la cookie uw_cookie_consent. */
|
||||
/** Lee la preferencia guardada en la cookie ns_cookie_consent. */
|
||||
function readConsent(): Consent | null {
|
||||
if (typeof document === 'undefined') return null
|
||||
const m = document.cookie.match(/(?:^|; )uw_cookie_consent=([^;]*)/)
|
||||
const m = document.cookie.match(/(?:^|; )ns_cookie_consent=([^;]*)/)
|
||||
if (!m) return null
|
||||
try {
|
||||
return JSON.parse(decodeURIComponent(m[1])) as Consent
|
||||
@@ -138,45 +138,45 @@ export function CookieBanner() {
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="uw-cookie-content" role="dialog" aria-label={t('cookie.dialogLabel')}>
|
||||
<div className="uw-cookie-text">
|
||||
<div className="ns-cookie-content" role="dialog" aria-label={t('cookie.dialogLabel')}>
|
||||
<div className="ns-cookie-text">
|
||||
<h3>{t('cookie.title')}</h3>
|
||||
<p>{t('cookie.description')}</p>
|
||||
<Link href="/cookies" className="uw-cookie-link">{t('cookie.policyLink')}</Link>
|
||||
<Link href="/cookies" className="ns-cookie-link">{t('cookie.policyLink')}</Link>
|
||||
|
||||
{details && (
|
||||
<div className="uw-cookie-details" style={{ display: 'block' }}>
|
||||
<div className="uw-cookie-category">
|
||||
<div className="ns-cookie-details" style={{ display: 'block' }}>
|
||||
<div className="ns-cookie-category">
|
||||
<label>
|
||||
<input type="checkbox" checked disabled readOnly />
|
||||
<span className="uw-cookie-cat-name">{t('cookie.catNecessary')}</span>
|
||||
<span className="ns-cookie-cat-name">{t('cookie.catNecessary')}</span>
|
||||
</label>
|
||||
<p>{t('cookie.descNecessary')}</p>
|
||||
</div>
|
||||
<div className="uw-cookie-category">
|
||||
<div className="ns-cookie-category">
|
||||
<label>
|
||||
<input type="checkbox" id="uw-cookie-analytics" checked={!!prefs.analytics} onChange={(e) => setPrefs((s) => ({ ...s, analytics: e.target.checked }))} />
|
||||
<span className="uw-cookie-cat-name">{t('cookie.catAnalytics')}</span>
|
||||
<input type="checkbox" id="ns-cookie-analytics" checked={!!prefs.analytics} onChange={(e) => setPrefs((s) => ({ ...s, analytics: e.target.checked }))} />
|
||||
<span className="ns-cookie-cat-name">{t('cookie.catAnalytics')}</span>
|
||||
</label>
|
||||
<p>{t('cookie.descAnalytics')}</p>
|
||||
</div>
|
||||
<div className="uw-cookie-category">
|
||||
<div className="ns-cookie-category">
|
||||
<label>
|
||||
<input type="checkbox" id="uw-cookie-marketing" checked={!!prefs.marketing} onChange={(e) => setPrefs((s) => ({ ...s, marketing: e.target.checked }))} />
|
||||
<span className="uw-cookie-cat-name">{t('cookie.catMarketing')}</span>
|
||||
<input type="checkbox" id="ns-cookie-marketing" checked={!!prefs.marketing} onChange={(e) => setPrefs((s) => ({ ...s, marketing: e.target.checked }))} />
|
||||
<span className="ns-cookie-cat-name">{t('cookie.catMarketing')}</span>
|
||||
</label>
|
||||
<p>{t('cookie.descMarketing')}</p>
|
||||
</div>
|
||||
<div className="uw-cookie-actions-detail">
|
||||
<button type="button" className="uw-cookie-btn uw-cookie-btn-save" data-action="save" onClick={savePrefs}>{t('cookie.savePrefs')}</button>
|
||||
<div className="ns-cookie-actions-detail">
|
||||
<button type="button" className="ns-cookie-btn ns-cookie-btn-save" data-action="save" onClick={savePrefs}>{t('cookie.savePrefs')}</button>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="uw-cookie-actions">
|
||||
<button type="button" className="uw-cookie-btn uw-cookie-btn-reject" data-action="reject" onClick={() => { rejectAll(); setVisible(false) }}>{t('cookie.reject')}</button>
|
||||
<button type="button" className="uw-cookie-btn uw-cookie-btn-customize" data-action="customize" onClick={() => setDetails((v) => !v)}>{t('cookie.customize')}</button>
|
||||
<button type="button" className="uw-cookie-btn uw-cookie-btn-accept" data-action="accept" onClick={() => { acceptAll(); setVisible(false) }}>{t('cookie.acceptAll')}</button>
|
||||
<div className="ns-cookie-actions">
|
||||
<button type="button" className="ns-cookie-btn ns-cookie-btn-reject" data-action="reject" onClick={() => { rejectAll(); setVisible(false) }}>{t('cookie.reject')}</button>
|
||||
<button type="button" className="ns-cookie-btn ns-cookie-btn-customize" data-action="customize" onClick={() => setDetails((v) => !v)}>{t('cookie.customize')}</button>
|
||||
<button type="button" className="ns-cookie-btn ns-cookie-btn-accept" data-action="accept" onClick={() => { acceptAll(); setVisible(false) }}>{t('cookie.acceptAll')}</button>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
@@ -191,11 +191,11 @@ export function CookieConsentButtons() {
|
||||
window.UWCookies = { showBanner, revokeConsent, acceptAll, rejectAll }
|
||||
}, [])
|
||||
return (
|
||||
<div className="uw-consent-buttons">
|
||||
<button type="button" onClick={showBanner} className="btn-uw btn-uw-form">
|
||||
<div className="ns-consent-buttons">
|
||||
<button type="button" onClick={showBanner} className="btn-ns btn-ns-form">
|
||||
{t('cookie.changeConsent')}
|
||||
</button>
|
||||
<button type="button" onClick={revokeConsent} className="btn-uw btn-uw-form btn-uw-secondary">
|
||||
<button type="button" onClick={revokeConsent} className="btn-ns btn-ns-form btn-ns-secondary">
|
||||
{t('cookie.revokeConsent')}
|
||||
</button>
|
||||
</div>
|
||||
@@ -204,7 +204,7 @@ export function CookieConsentButtons() {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Panel «Tu estado de consentimiento»: muestra los datos de la API de Zaraz
|
||||
// (o, si Zaraz no está, la preferencia guardada en la cookie uw_cookie_consent).
|
||||
// (o, si Zaraz no está, la preferencia guardada en la cookie ns_cookie_consent).
|
||||
// ---------------------------------------------------------------------------
|
||||
export function ConsentStatus() {
|
||||
const t = useTranslations('UI')
|
||||
@@ -242,8 +242,8 @@ export function ConsentStatus() {
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="uw-consent-status">
|
||||
<p className="uw-consent-source">
|
||||
<div className="ns-consent-status">
|
||||
<p className="ns-consent-source">
|
||||
{zarazData
|
||||
? t('cookie.statusZaraz')
|
||||
: values
|
||||
@@ -256,19 +256,19 @@ export function ConsentStatus() {
|
||||
Object.entries(values as Consent).map(([purpose, granted]) => (
|
||||
<li key={purpose}>
|
||||
<span>{purpose}</span>
|
||||
<span className={granted ? 'uw-consent-on' : 'uw-consent-off'}>
|
||||
<span className={granted ? 'ns-consent-on' : 'ns-consent-off'}>
|
||||
{granted ? t('cookie.accepted') : t('cookie.rejected')}
|
||||
</span>
|
||||
</li>
|
||||
))
|
||||
) : (
|
||||
// Categorías locales (cookie uw_cookie_consent).
|
||||
// Categorías locales (cookie ns_cookie_consent).
|
||||
CONSENT_CATEGORIES.map((cat) => {
|
||||
const on = cat.always || Boolean(values?.[cat.key])
|
||||
return (
|
||||
<li key={cat.key}>
|
||||
<span>{catLabel[cat.key] ?? cat.label}</span>
|
||||
<span className={cat.always ? 'uw-consent-always' : on ? 'uw-consent-on' : 'uw-consent-off'}>
|
||||
<span className={cat.always ? 'ns-consent-always' : on ? 'ns-consent-on' : 'ns-consent-off'}>
|
||||
{cat.always ? t('cookie.alwaysOn') : values ? (on ? t('cookie.accepted') : t('cookie.rejected')) : '—'}
|
||||
</span>
|
||||
</li>
|
||||
|
||||
@@ -132,7 +132,7 @@ export function QuestTrackerForm({ characters, options }: { characters: QuestCha
|
||||
|
||||
return (
|
||||
<div className="centered">
|
||||
<form noValidate id="uw-quest-form" onSubmit={handleSubmit} acceptCharset="utf-8">
|
||||
<form noValidate id="ns-quest-form" onSubmit={handleSubmit} acceptCharset="utf-8">
|
||||
<CharacterSelect characters={characters} value={character} onChange={onCharacter} placeholder={t('quest.selectPlaceholder')} />
|
||||
<br />
|
||||
<select value={option} onChange={(e) => setOption(e.target.value)} required disabled={!selected}>
|
||||
|
||||
@@ -81,7 +81,7 @@ export function RenameGuildForm({ guilds, price, pdBalance }: { guilds: GmGuild[
|
||||
|
||||
return (
|
||||
<div className="centered">
|
||||
<form noValidate id="uw-rename-guild-form" onSubmit={handleSubmit} acceptCharset="utf-8">
|
||||
<form noValidate id="ns-rename-guild-form" onSubmit={handleSubmit} acceptCharset="utf-8">
|
||||
<table className="middle-center-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
||||
@@ -78,7 +78,7 @@ export function RestoreCharacterForm({ characters }: { characters: DeletedCharac
|
||||
|
||||
return (
|
||||
<div className="centered">
|
||||
<form noValidate id="uw-restore-form" onSubmit={handleSubmit} acceptCharset="utf-8">
|
||||
<form noValidate id="ns-restore-form" onSubmit={handleSubmit} acceptCharset="utf-8">
|
||||
<select className={selectedCss} value={guid} onChange={(e) => setGuid(e.target.value)} required>
|
||||
<option value="" disabled>{t('restoreChar.selectPlaceholder')}</option>
|
||||
{characters.map((c) => (
|
||||
|
||||
@@ -111,7 +111,7 @@ export function RestoreItemsForm({ characters, price, pdBalance }: { characters:
|
||||
<div className="centered">
|
||||
{items === null ? (
|
||||
<div id="char-selection">
|
||||
<form id="uw-search-items-form" onSubmit={search} acceptCharset="utf-8">
|
||||
<form id="ns-search-items-form" onSubmit={search} acceptCharset="utf-8">
|
||||
<CharacterSelect characters={characters} value={character} onChange={setCharacter} placeholder={t('restoreItems.selectPlaceholder')} />
|
||||
<br />
|
||||
<Turnstile key={captchaKey} onVerify={setCaptcha} />
|
||||
|
||||
@@ -91,7 +91,7 @@ export function TransferForm({ characters, price, pdBalance }: { characters: Cha
|
||||
|
||||
return (
|
||||
<div className="centered">
|
||||
<form noValidate id="uw-transfer-character-form" onSubmit={handleSubmit} acceptCharset="utf-8">
|
||||
<form noValidate id="ns-transfer-character-form" onSubmit={handleSubmit} acceptCharset="utf-8">
|
||||
<CharacterSelect characters={characters} value={character} onChange={setCharacter} placeholder={t('transfer.selectPlaceholder')} />
|
||||
<br />
|
||||
<input type="text" maxLength={32} placeholder={t('transfer.destinationPlaceholder')} value={destination} onChange={(e) => setDestination(e.target.value)} required />
|
||||
|
||||
@@ -101,7 +101,7 @@ function ActivateFlow() {
|
||||
|
||||
return (
|
||||
<>
|
||||
<form noValidate onSubmit={activate} id="uw-2fa-form">
|
||||
<form noValidate onSubmit={activate} id="ns-2fa-form">
|
||||
<table className="middle-center-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -182,7 +182,7 @@ function ActivateFlow() {
|
||||
<br />
|
||||
<br />
|
||||
<p>{t('twofa.step3')}</p>
|
||||
<form noValidate onSubmit={verify} id="uw-2fa-verify-form" autoComplete="off">
|
||||
<form noValidate onSubmit={verify} id="ns-2fa-verify-form" autoComplete="off">
|
||||
<table className="middle-center-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -255,7 +255,7 @@ function DisableForm() {
|
||||
<p className="green-info"><i className="fas fa-shield-alt"></i> {t('twofa.enabledNotice')}</p>
|
||||
<p>{t('twofa.disableInstruction')}</p>
|
||||
<br />
|
||||
<form noValidate onSubmit={disable} id="uw-2fa-disable-form">
|
||||
<form noValidate onSubmit={disable} id="ns-2fa-disable-form">
|
||||
<table className="middle-center-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
||||
Reference in New Issue
Block a user