JavaScript Gadget – um fortgeschrittene Bearbeitungswerkzeuge (Editoren) situationsabhängig zu benutzen.

Einbindung

Bearbeiten
  • 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 oder Skin-abhängig wie vector.js einzufügen:
mw.loader.load("//en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/editorContent/r.js&action=raw&maxage=604800&ctype=text/javascript",
               "text/javascript");

Das Gadget wählt unter verschiedenen Werkzeugen genau das aus, das für die aktuelle Situation („Content Model“) wünschenswert ist, und sorgt dafür, dass es nicht zum Konflikt mit einem anderen Werkzeug kommt. Momentan kommen in Betracht:

Ein weiterer Vorteil ist dabei, dass der bald 600 kB große Code von wikEd nicht bei jeder Seite geladen wird; nur, damit dieser feststellt, dass auf dieser Seite nicht editiert wird. Oder zurzeit ein dafür ungeeigneter Browser benutzt würde. Entsprechendes würde auch für künftige andere Werkzeuge gelten.

Die Vorgaben auf einen Blick:

{ CodeEditor:   { css:        "\\.css$",
                  javascript: "\\.js$",
                  lua:        [ "/Spielwiese[^/]*/Modul:", 2 ]
                },
  VisualEditor: false,
  WikEd:        true
}

Eine „Regel“ ist entweder

  • true (jeweilige Vorgabe)
  • false (explizit abschalten; unabhängig von der Vorgabe)
  • string (Regulärer Ausdruck, der vom Seitennamen erfüllt werden muss; auch leere Zeichenkette)
  • Array aus einem String wie vor und beliebig vielen Nummern von Namensräumen, von denen eine zutreffen muss

Einzelne Editoren

Bearbeiten

CodeEditor

Bearbeiten

Vorbedingung über die Nummer des Namensraums:

  • > 0
  • gerade
  • ungleich 828

Wenn die Vorbedingung nicht erfüllt ist, greift keine weitere Regel.

Für jeden einzelnen mode (Programmiersprache) kann und muss ein Schlüsselwort mit einer Regel vereinbart werden.

Die folgenden mode sind zurzeit Basisausstattung des CodeEditor:

css
Vorgabe: true
Bedeutung: Seitenname endet auf .css (Kleinbuchstaben)
javascript
Vorgabe: true
Bedeutung: Seitenname endet auf .js (Kleinbuchstaben)
json
Zurzeit keine allgemeine Regel bekannt.
lua
Vorgabe: true
Bedeutung: Regel (BNR, Spielwiesen-Unterseite)
[ "/Spielwiese[^/]*/Modul:", 2 ]

Jedes andere Schlüsselwort bewirkt automatisch, dass das Modul mit zusätzlicher mode-Unterstützung noch hinzugeladen wird. Beispiel (nach Benutzerkonfiguration des opt-Objekts):

mw.libs.editorContent.opt.CodeEditor = { c_cpp: "\\.cpp$" };

Genauso wird verfahren, wenn die Konfigurationsvariable wgCodeEditorCurrentLanguage vorgefunden wird; unabhängig von den Regeln wird dann der CodeEditor geeignet geladen.

Sollten mehrere Regeln für den Seitennamen greifen, ist nicht vorherzusagen, welcher mode resultiert.

Die pauschale Angabe .opt.CodeEditor = false; schließt den CodeEditor grundsätzlich aus (ausgenommen im Modul-Namensraum 828).

VisualEditor

Bearbeiten

Wenn der VisualEditor vom Benutzer aktiviert wurde und eine Seite mit einem anderen Code als Wikitext bearbeitet wird, wird trotzdem ein irritierendes Link auf „Edit“ angezeigt, das den ungeeigneten VisualEditor startet.

Grundsätzlich wird dieses Link entfernt, wenn

  • der Seitentitel auf .css oder .js endet oder
  • die zukünftige Variable wgPageContentModel nicht den Inhalt wikitext hat.

Vorbedingung über den Browser-Typ:

wikEd darf nicht über Einstellungen von vornherein für jede betrachtete Seite geladen werden.

  • Die Vorgabe true lädt wikEd, sofern nicht der CodeEditor automatisch oder auf Nicht-Dokumentationsseiten im Modul-Namensraum 828 benutzt wird (Seitenname endet weder auf /doc noch auf /Doku).
  • Die Angabe false schaltet die Benutzung von wikEd ab.

wikiEditor

Bearbeiten

Keine Maßnahmen an dieser Stelle möglich.

Benutzerkonfiguration

Bearbeiten

Die individuelle Anpassung ist möglich: In die common.js etc. die folgenden Zeilen einfügen (möglichst vor mw.loader.load, so vorhanden):

if ( typeof mw.libs.editorContent !== "object" ) {
   mw.libs.editorContent  =  {};
}
mw.libs.editorContent.opt = { editor1: rule1,
                              editor2: rule2
                            };

Format wie bei den Standard-Vorgaben.

Code und Stammseite

Bearbeiten

Die Stammseite ist en:User:PerfektesChaos/js/editorContent mit:

Quellcode
ResourceLoader
  • ext.gadget.editorContent für mw:Extension:Gadgets
  • Dependencies: user, mediawiki.util, und mehr (dynamisch)
Namensräume ≥ 0
mw.libs editorContent