Refactor: 1167 _esc() → UI.escape() in 36 Dateien, SW by-v1113
Bündel 1 aus dem Duplikat-Audit: existierende zentrale Helper nutzen
statt lokale Duplikate.
Pure Migration ohne neuen Code:
- 1167 _esc()-Aufrufe in 36 Page-Modulen migriert auf UI.escape()
- 24 lokale _esc/_escape-Definitionen entfernt
- lost.js hatte _escape() (Variante) — 17 Aufrufe ebenfalls migriert
- jobs.js + breeder.js: tote Alias-Wrapper entfernt
UI.escape() existierte schon — wurde nur überall lokal nochmal
implementiert. Funktional identisch (gleiche 4-replace-chain für
& < > ").
Tests 19/19 grün. Frontend-LOC um ~120 Zeilen reduziert.
Hinweis: _emptyState (7 Stellen) und _icon (8 Stellen) wurden NICHT
migriert — sie haben abweichende Signaturen von UI.emptyState({...})
bzw. UI.icon(name). Eigener Sprint nötig.
This commit is contained in:
parent
e7939ce98e
commit
c517c9281d
42 changed files with 1115 additions and 1341 deletions
|
|
@ -103,7 +103,7 @@ window.Page_hilfe = (() => {
|
|||
</p>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-muted);margin:0">
|
||||
${_search
|
||||
? `Zu "${_esc(_search)}" wurde nichts gefunden.`
|
||||
? `Zu "${UI.escape(_search)}" wurde nichts gefunden.`
|
||||
: 'Noch keine FAQ-Artikel vorhanden.'}
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -136,7 +136,7 @@ window.Page_hilfe = (() => {
|
|||
color:var(--c-text-secondary);text-transform:uppercase;
|
||||
letter-spacing:0.08em;padding:var(--space-1) 0 var(--space-2);
|
||||
margin-bottom:var(--space-1)">
|
||||
${_esc(label)}
|
||||
${UI.escape(label)}
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:var(--space-1)">
|
||||
`;
|
||||
|
|
@ -148,12 +148,12 @@ window.Page_hilfe = (() => {
|
|||
// Highlight Suchtreffer in der Frage
|
||||
const frageHtml = _search
|
||||
? _highlight(a.frage, _search)
|
||||
: _esc(a.frage);
|
||||
: UI.escape(a.frage);
|
||||
|
||||
// Antwort: Zeilenumbrüche in <br> wandeln
|
||||
const antwortHtml = _search
|
||||
? _highlight(a.antwort, _search).replace(/\n/g, '<br>')
|
||||
: _esc(a.antwort).replace(/\n/g, '<br>');
|
||||
: UI.escape(a.antwort).replace(/\n/g, '<br>');
|
||||
|
||||
// Bei aktiver Suche: Antwort gleich aufgeklappt
|
||||
const openByDefault = !!_search;
|
||||
|
|
@ -222,20 +222,12 @@ window.Page_hilfe = (() => {
|
|||
}
|
||||
|
||||
// ----------------------------------------------------------
|
||||
function _esc(s) {
|
||||
if (s == null) return '';
|
||||
return String(s)
|
||||
.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"');
|
||||
}
|
||||
|
||||
function _highlight(text, term) {
|
||||
if (!term) return text;
|
||||
const safe = term.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||
const re = new RegExp(`(${safe})`, 'gi');
|
||||
return _esc(text).replace(re,
|
||||
return UI.escape(text).replace(re,
|
||||
'<mark style="background:var(--c-warning-bg,#fef3c7);color:inherit;border-radius:2px">$1</mark>'
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue