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

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]*
    • gadgetfalse; oder aber aus user.options: Nur dann suchen (externes Gadget, das die Fehlermeldung generiert)
    • find – in HTML, string: class, etwa error oder bkl-link; ggf. auch function
    • show – Anzeige-Name, etwa BKL, FS, RS
    • style – Darstellung im Seitenkopf
    • max – 9 (benutzerkonfigurierbar)
    • later – true/false Weiterverarbeitung mittels eines generierten Objekts
    • link – 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
{ 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

Bearbeiten

Die Quelle der Fundstellen sind Skripte, die teils auch angepasst werden müssten.

class=error

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

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.

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

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

Bearbeiten

spoof wäre anzupassen.

Rechtschreibung

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

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
  }
]