User:PerfektesChaos/js/editToolStrIns/User Customization/Example/de

From mediawiki.org

Auf dieser Seite werden einige Beispiele fĂŒr fortgeschrittene Konfigurationen dargestellt.

mw.hook Registrierung der Konfiguration[edit]

Der nachstehende Code registriert eine benutzerdefinierte Konfigurationsfunktion meinETSI. Die Bibliothek mw.libs wird nicht mehr benötigt. Die Registrierung sollte möglichst noch erfolgen, bevor das Gadget geladen wird.

mw.hook( "editToolStrIns.ready" ).add( meinETSI );

Die benutzerdefinierte Konfigurationsfunktion meinETSI erhĂ€lt ein Anwendungsobjekt app ĂŒbermittelt und könnte wie folgt aussehen:

function meinETSI( app ) {
   app.set( "this", "that" );
   app.user = { custom: [ "0",    true,
                          "[[]]", true,
                          "TeX",  "TeX" ] };
   app.update();
}

Ersatz fĂŒr Toolbar[edit]

Die nachstehende Spezifikation generiert sieben Links, wie sie in der Toolbar aus den ersten Jahren der Wikipedia verwendet wurden:

app.user = { defs: { "@Toolbar": [ [ [ "''", "''", "", "Kursivschrift",
                                       "<span class='toolbar-button' style='font-style:italic'>K</span>" ],
                                     [ "'''", "'''", "", "Fettschrift",
                                       "<span class='toolbar-button' style='font-weight:bold'>F</span>" ],
                                     [ "[[", "]]", "", "Wikilink",
                                       "<span class='toolbar-button' style='color:#0000FF'>[[XY]]</span>" ],
                                     [ "[", "]", "", "Weblink",
                                       "<span class='toolbar-button'>[www]</span>" ],
                                     [ "[[Datei:", "|mini]]", "", "Dateieinbindung",
                                       "<span class='toolbar-button'>Datei:mini</span>" ],
                                     [ "<nowiki>", "</nowiki>", "", "Syntaxfrei",
                                       "<span class='toolbar-button'>&lt;nowiki&gt;</span>" ],
                                     [ "--~~~~", "", "", "Signatur",
                                       "<span class='toolbar-button'>--~~~~</span>"  ]
                                   ]
                    } };

Das letzte Element in jeder AufzÀhlung spezifiziert die visuelle Erscheinung; das davor einen Tooltip.

Falls ein Button-artiges Erscheinungsbild bevorzugt wird, können die optischen Elemente mit einer CSS-class toolbar-button oder anders ausgerĂŒstet werden, beispielsweise:

app.user = { defs: { "@Toolbar": [ [ [ "''", "''", "", "Kursivschrift",
                                       "<span class='toolbar-button' style='font-style:italic'>K</span>" ],
                                     [ "'''", "'''", "", "Fettschrift",
                                       "<span class='toolbar-button' style='font-weight:bold'>F</span>" ],
                                     [ "[", "]", "", "Weblink",
                                       "<span class='toolbar-button'>[www]</span>" ]
                                 ] ]
                   } };

Eine Klassendefinition fĂŒr Buttons kann verschiedenen MediaWiki-Ressourcen entnommen werden oder einer benutzerdefinierte CSS-Spezifikation wie

.toolbar-button {
   background: #D0D0D0;
   border-color: #E0E0E0 #E0E0E0 #707070 #707070;
   border-style:solid;
   border-width: 2px;
   display: inline-block;
   min-width: 1.5em;
   text-align: center;
}

Das ergibt: K F [[XY]] [www] Datei:mini <nowiki> --~~~~

Sprachauswahl[edit]

Ein Orientalist möchte „seine“ Sprachen an den Anfang stellen (true). Offenbar stören einige andere Sprachen im oberen Bereich der Liste und werden entfernt (false). FĂŒr solche Sprachen, deren Name nicht mittels true von der projektweiten Liste ĂŒbernommen werden kann, wird er explizit angegeben.

Definitionen werden betreffend Style-Eigenschaften (font-family) vorgegeben. Die eigentlichen Inhalte fĂŒr Xsux und Phli werden dem globalen Vorrat entnommen, wie auch alle anderen Inhalte.

if ( /^(edit|submit)$/.test( mw.config.get("wgAction") ) ) {
   function meinETSIanpasser( app ) {
      app.user = {
          "custom": [ "0",        true,
                      "[[]]",     true,
                      "ar",       true,
                      "iw",       true,
                      "Xsux",     "Keilschrift",
                      "Phli",     "Pahlavi",
                      "DMG",      true,
                      "tr",       true,
                      "IPA",      true,
                      "AHD",      true,
                      "eo",       false,
                      "et",       false,
                      "fr",       false,
                      "gl",       false,
                      "haw",      false,
                      "is",       false,
                      "it",       false
                    ],
          "defs":   { "Xsux": [ { "font-family": "Akkadian, CuneiformComposite, Free Idg Serif" } ],
                      "Phli": [ { "font-family": "ZH Mono" } ]
                    }
      };
      app.update();
   }   // meinETSIanpasser()
   mw.hook( "editToolStrIns.ready" ).add( meinETSIanpasser );
}

Container fĂŒr das Gadget[edit]

Der nachstehende Code entfernt alle Werkzeugfelder und generiert ein neues Werkzeugfeld grad oberhalb des Bearbeitungsfeldes. Das Werkzeugfeld kann mitttels CSS-Deklarationen weiter dekoriert und abgegrenzt werden; #textarea-before ist dessen selbst zugewiesener Selektor.

app.user = { config: { container: { "#textarea-before": { start: "#editform",
                                                          fiat:  "before"
                                                        }
                                  }
                     }
           };