Benutzer:PerfektesChaos/js/editorContent
JavaScript Gadget – um fortgeschrittene Bearbeitungswerkzeuge (Editoren) situationsabhängig zu benutzen.
Einbindung
[Bearbeiten | Quelltext 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");
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:
- wikEd
- CodeEditor (Ace)
- VisualEditor
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
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 | Quelltext bearbeiten]CodeEditor
[Bearbeiten | Quelltext 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 | 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
- der Seitentitel auf
.css
oder.js
endet oder - die zukünftige Variable
wgPageContentModel
nicht den Inhaltwikitext
hat.
wikEd
[Bearbeiten | Quelltext bearbeiten]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-Namensraum828
benutzt wird (Seitenname endet weder auf/doc
noch auf/Doku
). - Die Angabe
false
schaltet die Benutzung von wikEd ab.
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 |
|
Namensräume | ≥ 0 |
mw.libs
|
editorContent
|