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
[Quelltext bearbeiten]Die 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
[Quelltext 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
[Quelltext 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
[Quelltext bearbeiten]Die Quelle der Fundstellen sind Skripte, die teils auch angepasst werden müssten.
class=error
[Quelltext bearbeiten]Ursprü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
[Quelltext bearbeiten]find
: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
[Quelltext bearbeiten]Zurzeit 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
[Quelltext bearbeiten]Weiterer 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.
Im 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
[Quelltext bearbeiten]spoof wäre anzupassen.
Rechtschreibung
[Quelltext bearbeiten]Zurzeit 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
[Quelltext 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
}
]