Benutzer:PerfektesChaos/js/lintHint

aus Wikipedia, der freien Enzyklopädie

JavaScript Gadget – zeige LintErrors-Analyse live.

Zweck

Probleme im Wikitext, die durch Parsoid entdeckt wurden und mittels Spezial:LintErrors für ganze Namensräume verwaltet werden, können für eine bestimmte einzelne Seitenversion abgerufen, und Wikitext-Sequenzen können interaktiv geprüft werden.

Die LintErrors-Erweiterung ist nur nach Problemtypen strukturiert und kann nach Namensraum gefiltert werden.

Wenn eine bestimmte Seite besucht wird, kann dieses Gadget unverzüglich über alle gegenwärtig ermittelbaren Fehlertypen informieren, und Benutzer, die an einer Verbesserung der Syntax interessiert sind, werden ermutigt, dem im selben Arbeitsgang abzuhelfen.

Einbindung

  • Wenn das Projekt dieses Gadget bereits registriert haben sollte, genügt ein Häkchen auf der Seite Einstellungen („Helferlein“).
  • Sonst wären die folgenden Zeilen in die persönliche common.js, global.js etc. einzufügen:
mw.loader.load( "https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/lintHint/r.js&action=raw&maxage=86400&ctype=text/javascript" );

Benutzung

Standardverhalten

Im Hauptnamensraum (etwa Wikipedia-Artikel) bei der normalen Seitenansicht oder während der Quelltextbearbeitung wird ein gelber Knopf lintHint in der rechten oberen Ecke angeboten, der eine Analyse auslöst.

Wenn Probleme detektiert wurden, wird ein großer gelber Kasten zu Beginn des Inhaltsbereichs eingefügt.

Der gelbe Kasten enthält üblicherweise eine Tabelle mit Fehlerhinweisen.

  • Falls kein Fehler berichtet wurde, erscheint ein kleines grünes Feld lintHint an der Stelle des Knopfs, oder bei der Quelltextbearbeitung nimmt der Knopf vorübergehend eine grüne Farbe an, bis der Wikitext erneut angesteuert wird.
  • Der große gelbe Kasten mit der Fehlertabelle kann beliebig oft als gelber Knopf minimiert werden, und wieder expandiert werden.

Wenn Seiten weder zum Darstellen noch Bearbeiten von Wikitext dienen, sondern etwa der Versionsgeschichte oder Seiteninformationen, geschieht nichts. Beachte, dass nur Wikitext Gegenstand einer Analyse sein kann.

Fehlertabelle

Falls es zuzuordnende Fehler gibt, sieht die Tabelle wie folgt aus:

lint +
Kategorietitel DIV
  • Die erste Spalte nennt die Linter-Kategorie.
  • Die Spalte + enthält Zusatzinformationen, sofern mitgeliefert.
  • Die Spalte erscheint nur, wenn es auch ein Bearbeitungsfeld für Quelltext auf der Seite gibt. Jeder verlinkt mit einer markierten Region, wo dieser Fehler auftrat.

Es gibt detektierbare Fehlertypen, zu denen noch keine Linter-Kategorien existieren. Mit der Option later können sie in die Fehlertabelle integriert werden. Gibt es ausschließlich unkategorisierte Probleme, werden sie als „zukünftig“ vermerkt.

Steuerseite

Auf einer virtuellen Seite ist eine Versionsinformation zu sehen, wenn das Gadget aktiv ist.

Zwei interaktive Wege für individuelle Untersuchungen werden angeboten:

  1. Eingabe einer beliebigen Wikitext-Sequenz und deren Analyse.
  2. Gib einen Seitennamen beliebiger Namensräume an und erhalte das Resultat der Analyse, ohne die Seite selbst besuchen zu müssen. Eine geeignete Versionsnummer (oldid) kann nachgestellt werden.

Das Ergebnis erscheint auf derselben Seite, analog zu regulären Seiten. Eingegebene Seitennamen werden als anklickbare Verlinkungen reflektiert und würden in einem neuen Browser-Fenster geöffnet werden.

Interaktive Schnellkonfiguration

Die meisten der unten näher beschriebenen Optionen können nach Installation des Skriptes auf einer Spezialseite interaktiv konfiguriert werden.

Auf Seiten, auf denen eine gelbe Box mit dem Fehlerbericht erscheint, sowie auf der Steuerseite erscheint oben rechts ein Button Nuvola apps kcmsystem.svg – darüber kann die Konfigurationsseite in einem neuen Browser-Tab oder -Fenster geöffnet werden.

  • Wähle die gewünschten Optionen.
  • Benutze abschließend den Button + – darüber werden die Optionen an den Server übertragen.

Wenn anschließend eine Textseite abgerufen wird, wird diese Konfiguration wirksam.

Auch nicht angemeldete Benutzer können davon Gebrauch machen; während die Konfiguration für angemeldete Benutzer beim Benutzerprofil auf dem Wiki-Server gespeichert ist, wird hier das Browserprofil benutzt.

Diese anfänglichen Zuweisungen können später in einer Seite durch Programmierung mittels JavaScript überschrieben werden. Gleichwohl ist es nicht ratsam, während der Initialisierung beide Praktiken zu mischen, da das Ergebnis nicht vorhersagbar ist (race condition).

Konfiguration mittels JavaScript

Individuelle Wünsche können jederzeit an das Gadget übermittelt werden; am besten vor dem Laden des Gadgets, sofern die interaktive Schnellkonfiguration nicht benutzt wird.

Der JavaScript-Code dafür würde folgendermaßen aussehen:

// Erstelle ein benutzerdefiniertes object:
var meineLintHints = { };

// Spezifiziere einige Komponenten für das object.
meineLintHints.rooms = "-";

// Kommuniziere das benutzerdefinierte object:
mw.hook( "lintHint.config" ).fire( meineLintHints );

// Zum Schluss lade das Gadget:
mw.loader.load( "https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/lintHint/r.js&action=raw&maxage=86400&ctype=text/javascript" );

Dies ist an einem der unter Einbindung vorgeschlagenen Orte einzufügen.

Momentan sind die folgenden Optionen verfügbar:

Name Type Vorgabe Bedeutung
rooms Array
string
[ 0 ]
  • Array mit Namensraum-Nummern, wo die Analyse angeboten werden soll.
  • "*" – alle Namensräume
  • "-" – keinen Analysestart auf Seiten anbieten, aber individuelle Anforderungen auf der Steuerseite möglich.
oldid boolean false
  • Analysiere auch frühere Seitenversionen.
  • Andernfalls wird nur bei der aktuellen Seitenversion eine Analyse angeboten.
(later) boolean false Zeige auch zukünftige Fehlertypen, zu denen noch keine Linter-Kategorien existieren. Dies wirkt sich aber normalerweise nur auf die allererste Begegnung aus, da sich das Gadget dann diesen Namen merkt.
launch boolean false Löse die Analyse automatisch beim Seitenbesuch in rooms aus, statt sie manuell über den angebotenen Knopf zu starten.
layer boolean MediaWiki-Vorgabe Wandelte auf der LintErrors-Spezialseite alle Verlinkungen zur Quelltextbearbeitung in das Migrationswerkzeug (2017/18) um. Dies fiel Ende 2018 weg, der Schalter ist damit obsolet.
lazy boolean false Unterdrücke das kleine grüne Feld, falls bei einer Seitendarstellung kein Problem gefunden wurde.

Zukünftige Optionen werden erwogen, wenn das Lint-System ausgebaut werden sollte.

Mehrfache Aufrufe von mw.hook("lintHint.config") beeinflussen keine anderen zuvor gesetzten Komponenten, falls nicht explizit geändert.

Schnittstelle zu Gadgets

Im Modus „Quelltextbearbeitung“ wird bei Fehlern eine Tabelle mit den Einzelproblemen angezeigt. Die Felder der letzten Spalte dieser Tabelle enthalten zusätzlich zum Abwärtspfeil mit dem Sprung-Link die Einzelheiten zum Fehler:

Attribut Bedeutung
data-beg Erste Zeichenposition des Fehlerbereichs (number)
data-end Ende des Fehlerbereichs (number)
data-type Schlüsselwort zum Fehlertyp (string)

Es wird mw.hook( "linthint.table-range" ) bei Erzeugung derartiger Zusatzinformationen ausgelöst. Mitgelieferter Wert ist das jQuery-Objekt der Tabelle.

Ein privates Skript könnte auf diese Nachricht warten, danach eine weitere Tabellenspalte hinzufügen und mit Buttons für automatisierte manuell überwachte Lösungsvorschläge ausrüsten, falls der Zeichenbereich sich dazu eignen sollte.

LintErrors-Spezialseite

In den LintErrors-Kategorieauflistungen werden die Tabellen sortierbar gemacht, bis MediaWiki dieses Feature anbietet.

Wie überall gibt es zurzeit auf Mobilseiten keine Tabellensortierung.

Es kann explizit vorgegeben werden, alle Verlinkungen entweder zur normalen Quelltextbearbeitung oder für das Migrationswerkzeug einzustellen.

Versionen im Sommer 2018

Einige wesentliche Änderungen:

  • Eine Seite kann nur durch Übermittlung des Seitennamens innerhalb des Servers analysiert werden.
    • Seit Frühjahr 2018 ermöglicht die API auch einen schnellen Weg, um ein Analyseergebnis nur durch den Seitennamen zu erhalten.
    • Nur der Name und ggf. eine Versionsnummer werden an den Server übertragen, und nur das Ergebnis wird zurückübertragen.
    • 2017 konnten nur Wikitexte analysiert werden. Dazu war es erforderlich, erst den Wikitext vom Server herunterzuladen, ihn dann zwecks Vorlagenexpansion zurück an den Server zu schicken, und deren Ergebnis dann in einem dritten Durchgang zur Lint-Analyse wiederum an den Server zu übertragen. Das verursacht viel Netzwerkverkehr und konnte nicht für automatische Prozeduren empfohlen werden.
  • Seit April 2018 generiert MediaWiki auf der Spezialseite immer Verlinkungen auf das Migrationswerkzeug.
    • Es kann explizit vorgegeben werden, alle Verlinkungen entweder zur normalen Quelltextbearbeitung oder für das Migrationswerkzeug einzustellen.
  • Eine interaktive Schnellkonfiguration wurde eingerichtet.
  • CodeMirror und wikEd können gleichzeitig benutztt werden.

Codes

Zu technischen Einzelheiten und einer Testseite siehe englischsprachige Dokumentationsseite.