Wikipedia:Technik/Baustellen/Hinweis auf Fehler im HTML-Text
Wunsch für ein neues Gadget. Wenn auf einer Seite (HTML: Ansicht oder Preview) Fehler markiert sind, soll darauf aufmerksam gemacht werden.
Auf irgendwo innerhalb einer langen Seite vorhandene Fehler soll deutlich hingewiesen werden
- im Seitenkopf (Regelfall)
- im Bearbeitungsfeld (optional).
Dazu ist Screen Scraping des HTML der Seitenansicht oder Preview erforderlich.
Oft kommt es vor, dass EN- oder Vorlagenfehler markiert sind, die man beim Springen an das Seitenende übersieht; desgleichen von verschiedenen Werkzeugen gemeldete Benachrichtigungen untergehen.
Fehlertypen
BearbeitenDie Fehlertypen sollen nach Art einer Registrierung separat definiert werden. Klassen usw. können sich ändern, Internationalisierung soll möglich sein, fremde Projekte sollen es einsetzen können.
- Jeder Fehlertyp ist durch einen gleichartigen Satz an Infos beschreibbar:
id
– Eindeutiger Identifizierer, etwa disambuig, word, error, h1,[a-z][a-zA-Z0-9]*
gadget
–false
; oder aber aususer.options
: Nur dann suchen (externes Gadget, das die Fehlermeldung generiert)find
– in HTML,string
: class, etwa error oder bkl-link; ggf. auchfunction
show
– Anzeige-Name, etwa BKL, FS, RSstyle
– Darstellung im Seitenkopfmax
– 9 (benutzerkonfigurierbar)later
– true/false Weiterverarbeitung mittels eines generierten Objektslink
– true/false; nur.later
: Elementinhalt gehört zu Wikilink
- Die Durchsuchungsprozedur ist dann für alle Fehlerarten identisch und kann leicht in Schleifen abgearbeitet werden, ohne den eigentlichen Programmcode anpassen zu müssen.
- Die Beschreibungen sollen in einem Array abgelegt werden, dessen Reihenfolge die Schwere der Fehler abbildet;
description[0] = {id:"error", gadget:false, find:"error", show:"ERROR", style:"color:#FF0000;font-weight:bold"}
- wäre der schwerste Fehler; danach H1 FS obsolet BKL RS
Optische Darstellung am Seitenbeginn
Bearbeiten- Schwere Fälle (error, FS, obsolet, H1) in Rot und größerer Kasten; leichte und möglicherweise korrekte Fälle im BKL-lachs und Normalschrift.
- BKL ist auf gewissen Seiten (BKS) kein Fehler; manche BKL sind unumgänglich; BKH
- Rechtschreibfehler sind im Kontext (Zitat, althochdeutsch) nicht zwangsläufig Fehler.
- H1 ist im ANR immer unerwünscht; in allen anderen NR zu ignorieren
- Anzeige auf der HTML-Seite
- Regelfall; vielleicht benutzerkonfigurierbar abschaltbar
<div>
zu Beginn (prepend) der#mw-content-text
; also meist nahe der Seitenüberschrift.- Verlinkung aller aufgefundenen Fehler: Jedes Markup einer der Klassen hat bereits sein Element. Die Elemente haben zurzeit typischerweise keine ID. Sie bekommen eine fortlaufende ID zugeordnet, toolname
.
nn mit toolname als charakteristischer Zeichenkette dieses Gadgets und nn fortlaufende Nummer 1,..., ggf. auch toolname.
id.
nn wären eindeutig. - Im Seitenkopf werden dann Direktlinks angeboten:
- ERROR: 1 2 FS: 1 BKL: 1 2 3 RS: 1 2
- Die Anzahl angebotener Direktlinks sollte sinnvoll und benutzerkonfigurierbar beschränkt sein, etwa auf 9, und ist durch desc.max bereits eingegrenzt.
- Auf Seiten des BKL-Projekts gibt es teilweise über 100 BKL; nach Erreichen des Limits wird aber die Suche nach diesem Fehlertyp eingestellt. Genauso bei einer Auflistung von typischen RS-Fehlern oder der Kat FS.
Ergebnis-Objekt
Bearbeiten- Wenn ein bestimmter Aufruf erfolgt, wird (namentlich beim Preview) zusätzlich / alternativ zur Anzeige auf der HTML-Seite ein Ergebnis-Objekt gebildet.
- Das Ergebnis-Objekt kann bei der fortgeschrittenen Bearbeitung für das Markup ausgewertet werden.
- Es hat etwa folgende Struktur:
{ words: [ ],
disambuigs: [ ],
missplinks: [ ],
obsoletes: [ ],
h1: [ ],
charcodes: [ ]
}
- Wenn
- für den Fehlertyp descriptions[i].later definiert ist und
- ein solcher Fehler gefunden wird
- und Ergebnis-Objekt gefordert wird,
- dann wird der wesentliche Inhalt des Fehler-Elements an das entsprechende Array der Komponente des Ergebnis-Objekts angehängt.
- Bei desc.link wäre dies das Linkziel als Wiki-Seitenname, sonst .text().
- Mehrfachnennungen sind möglich; leere Arrays brauchen keine Komponentne zu sein.
Fehlerdetektoren
BearbeitenDie Quelle der Fundstellen sind Skripte, die teils auch angepasst werden müssten.
class=error
BearbeitenUrsprünge sind Einzelnachweisfehler und Fehler in der Vorlageneinbindung; sie können nicht oder nur schwer im Quelltext direkt aufgesucht werden und erhalten deshalb keinen Eintrag im Ergebnis-Objekt/Bearbeitungsfeld.
Sie sind sofort vorhanden und können von diesem Gadget selbst gesucht werden.
disambuig = BKL
Bearbeitenfind
:class=bkl-link
- Keine Falschschreibung oder Obsolete Schreibung (
<sup>BKL</sup>
); Klassen schärfen.
Die Ergebnisse treffen per API erst später auf der Seite ein; MediaWiki:Gadget-bkl-check.js sollte eine Callback-Funktion registrieren, enthält ohnehin noch addOnloadHook, besteht aber schon nur noch aus einer einzigen globalen Variable. Ggf. Umstellung auf Anwendungsobjekt.
missplinks = Falschschreibungslink
BearbeitenZurzeit verwendet das Gadget die gleiche class wie BKL. Erkennbar nur mittelbar an title="... (Falschschreibung)"
oder dem <sup>FS</sup>
. Das lässt sich aber in bklCheck.cat
leicht ergänzen.
Falschschreibungslinks haben aber für die Wartung einen höheren Stellenwert als BKL; BKL können sinnvoll verwendet sein, Falschschreibungen sind regelmäßig zu berichtigen und zu entfernen.
Identisch mit dem Gadget-bkl-check.js, auch hinsichtlich Callback.
Kategorie:Wikipedia:Obsolete Schreibung
BearbeitenWeiterer Kandidat, id=obsoletes
, neue class per bklCheck.cat
erforderlich. Ansonsten genau wie Falschschreibungslink; wenn Link im Zielartikel angetroffen, dann in der Regel zu ersetzen.
Identisch mit dem Gadget-bkl-check.js, auch hinsichtlich Callback.
h1
BearbeitenIm ANR kann das Gadget auch sofort die HTML-Seite durchsuchen, ob es <H1>
ohne class="firstHeading"
gibt; diese wären an Ort und Stelle einzufärben und im Seitenkopf hervorzuheben. Auf Dateibeschreibungsseiten auch gaga; im WPNR möglich und auf bestimmten Funktionsseiten (LD, FzW) üblich.
Zeichencodes
Bearbeitenspoof wäre anzupassen.
Rechtschreibung
BearbeitenZurzeit fügt das Gadget nur unmittelbaren Farbstil ein:
.style.backgroundColor = "#FF9191"
Hier müsste noch eine class=spellcheck
hinzugefügt werden.
- Die Ergebnisse treffen per API erst später auf der Seite ein; MediaWiki:Gadget-Rechtschreibpruefung.js sollte eine Callback-Funktion registrieren.
- Code enthält auch noch addOnloadHook; da ist ohnehin eine leichte Anpassung sinnvoll. Auch Umstellung auf Anwendungsobjekt, zusätzlich zeitgemäße Benutzerkonfiguration ohne globale Variable und Entfernung der Funktionen aus dem globalen Namensraum wären allmählich fällig.
Muster einer Fehlertypen-Registrierung
Bearbeiten[ { id: "error",
gadget: false,
find: "error",
show: "ERROR",
style: "color:#FF0000;font-weight:bold",
max: 5,
later: false,
link: false
},
{ id: "h1",
gadget: false,
find: .findH1,
show: "H1",
style: "color:#FF0000;font-weight:bold",
max: 3,
later: true,
link: false
},
{ id: "missplinks",
gadget: "gadget-bkl-check",
find: "???????",
show: "FS",
style: "color:#FF0000",
max: 5,
later: true,
link: true
},
{ id: "obsoletes",
gadget: "gadget-bkl-check",
find: "????????",
show: "OS",
style: "color:#FF0000",
max: 15,
later: true,
link: true
},
{ id: "disambuigs",
gadget: "gadget-bkl-check",
find: "????????",
show: "BKL",
style: "color:#FF9191",
max: 9,
later: true,
link: true
},
{ id: "charcodes",
gadget: "??????????",
find: "??????????",
show: "char",
style: "color:#FF9191",
max: 20,
later: true,
link: false
},
{ id: "words",
gadget: "gadget-Rechtschreibpruefung",
find: "?????",
show: "RS",
style: "color:#FF9191",
max: 15,
later: true,
link: false
}
]