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

Einbindung

[Bearbeiten | Quelltext bearbeiten]
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");

Wirkung

[Bearbeiten | Quelltext bearbeiten]

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
}

Regeln

[Bearbeiten | Quelltext bearbeiten]

Eine „Regel“ ist entweder

Einzelne Editoren

[Bearbeiten | Quelltext bearbeiten]

CodeEditor

[Bearbeiten | Quelltext bearbeiten]

Vorbedingung über die Nummer des Namensraums:

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 | Quelltext 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

wikEd

[Bearbeiten | Quelltext bearbeiten]

Vorbedingung über den Browser-Typ:

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

wikiEditor

[Bearbeiten | Quelltext bearbeiten]

Keine Maßnahmen an dieser Stelle möglich.

Benutzerkonfiguration

[Bearbeiten | Quelltext 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 | Quelltext 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