Gadget kitchen/de

Willkommen in der „Gadget-Küche“. Irgendwann sollen hier Entwickler ihre Arbeit an Benutzerskripten und Gadgets koordinieren können, um damit die MediaWiki-Community zu unterstützen. Im Moment ist es noch ein einfaches Tutorial, um schnell loslegen zu können.

Was sind Benutzerskripte und Gadgets?
MediaWiki allows anyone to write public JavaScript code to immediately change the behavior of the software. This code can be shared with other users. This code is located in wiki pages.

Logged-in users can enable gadgets in the "Gadgets" tab of their user preferences. Gadgets are created and managed by interface administrators. Wikipedia has a vetting process for which gadgets are available.
 * A user script belongs to you as a user and is executed for that user. The code is usually hosted on a sub page of your user page.
 * Benutzerskripte sind für alle zugänglich und in JavaScript geschrieben.
 * Gadgets sind ebenfalls Benutzerskripte. Sie werden von einem Wiki-Admin zu MediaWiki:Gadgets-definition hinzugefügt. Dadurch stehen sie im Tab Gadgets allen eingeloggten Usern zur Verfügung.
 * For completeness: Interface administrators can also add and edit the siteJS located at MediaWiki:Common.js. The JavaScript in that file affects everyone and is executed automatically for both logged-out and logged-in users.

Wenn bei dir eine eigene Version von MediaWiki läuft, muss aktiviert sein, damit Benutzerskripte funktionieren. Die Extension für Gadgets muss installiert sein, damit Skripte in den Rang von Gadgets befördert werden können. Um angenehmer arbeiten zu können, solltest du die extension in deinem Wiki installiert haben.

Gleich ausprobieren!

 * 1) Stell sicher, dass du eingeloggt bist und gehe dann auf Special:MyPage/common.js. Diese Datei enthält personalisiertes JavaScript, das bei jeder Seitenansicht geladen wird.
 * 2) Erstelle eine Seite mit diesem Text: mw.loader.load('//www.mediawiki.org/w/index.php?title=MediaWiki:Tutorial-QuickRC.js&action=raw&ctype=text/javascript');
 * 3) Sichern. Du solltest jetzt den Link „Quick changelog“ in deiner Toolbox haben. Der Link öffnet Letzte Änderungen in einem Pop-up.

Mehr damit machen
Kopiere die Inhalte von MediaWiki:Tutorial-QuickRC.js in Deine Special:MyPage/common.js.

Das Ergebnis ist das gleiche wie vorhin. Aber jetzt kannst du das Skript verändern und ausprobieren, was passiert, wenn du andere Inhalte hineinschreibst.

Wenn du im Editor auf „Vorschau“ klickst (oder z.B. den Shortcut  verwendest), wird die aktuelle Version des Skripts ausgeführt. So brauchst du nicht jedesmal die Seite zu sichern. Allerdings darfst Du nicht vergessen, am Ende die Seite zu sichern.

Gibt es noch mehr Tutorials?

 * MediaWiki:Tutorial-QuickRC.js - mw.loader, mw.util, mw.html, API usage, jQuery UI dialog, mw.user, jQuery AJAX, jQuery event binding
 * VisualEditor/Gadgets - Tutorial für VisualEditor-Gadgets
 * OOUI - Eine JavaScript-Library um Pop-ups für MediaWiki-Seiten zu bauen. Sie lässt sich in den meisten Wikis, die von WMF gehostet werden, einsetzen. Die Library kann für Gadgets verwendet werden.

Was hat es mit dem ResourceLoader auf sich?
Der ResourceLoader ist eine Kernfunktion des MediaWiki. Er spielt auf intelligente Art und Weise JavaScript- und CSS-Anwendungen aus. Da Gadgets immer in JavaScript geschrieben sind, musst du, wenn du Gadgets schreibst, immer mit dem ResourceLoader arbeiten. Die Verwendung des ResourceLoader ist seit MediaWiki 1.26 unumgänglich.

Dein Gadget sollte sinnvolle ResourceLoader-Module laden, statt sozusagen jedesmal das Rad neu zu erfinden.


 * Modules — Eine Reihe von im ResourceLoader schon vorhandenen JavaScript-Libraries, jQuery-Plugins and MediaWiki-Utilities. Bedien dich einfach!
 * Developing with ResourceLoader — Eine Reihe von nützlichen Tipps, z.B. wie man den Debug-Modus aktiviert und Hilfe beim Debuggen selber.

Durch den verbesserten ResourceLoader ("Gadgets 2.0") wird das Verwalten von Gadgets noch einfacher werden.

Woran kann ich arbeiten?

 * Wenn du Lust hast, Skripte zu schreiben, die den an der Wikipedia Beteiligten helfen, schaust du am besten auf Seiten, auf denen Anfragen koordiniert werden. Du findest so eine Seite z.B. unter w:Wikipedia:User scripts/Requests.
 * Außerdem sammeln wir Anfragen hier: Gadget Kitchen/Requests

Wie verwende ich mein Skript in anderen Wikis?
Wenn du dein Skript statt auf MediaWiki.org in der englischsprachigen Wikipedia laufen lassen willst, kannst du das  hier nicht verwenden. Aber du kannst deinen Code über den ResourceLoader laden. Geh einfach auf common.js in der englischsprachigen Wikipedia und füge hinzu:

Natürlich kannst du auch das Benutzerskript laden, dass du gerade geschrieben hast, indem du MediaWiki:Tutorial-QuickRC.js in der URI oben in  änderst. Ta-daa! So einfach ist es, sich eine maßgeschneiderte Wikipedia zu basteln!

Wenn dein Gadget die MediaWiki API nutzt: füge den " "-Parameter zur API-URL hinzu, sobald du eine API-Anfrage durchführst, die die Same-Origin-Policy verletzen würde (z.B. eine Anfrage an die Commons-API von Wikipedia aus). Das löst JSONP aus und setzt bestimmte Beschränkungen durch.

Tipps zum Thema JS?

 * Ein Gadget schreiben:
 * Halte dich an die JavaScript-Coding-Konventionen. So schreibst du JavaScript, das zu MediaWiki passt.
 * Schau dir die ResourceLoader good practices an.
 * Learning JavaScript gibt hilfreiche Hinweise, um schneller guten Code zu schreiben.
 * Compatibility - ein Kompatibilitäts-Check


 * Debuggen:
 * Gadgets are usually compacted by the resource loader, minimized and aggregated. use the  url parameter (preceded by ? or &, of course), to ask for the non-compacted version of the page, to facilitate debugging, by loading the "source form" of your gadget, comments and all.
 * Gadgets werden normalerweise vom ResourceLoader komprimiert, minimiert und aggregiert. Um die unkomprimierte Version der Seite aufzurufen, verwendest du den Parameter debug=true (vor den du natürlich ein ? oder ein & setzt). In der unkomprimierten Version kannst du die ursprüngliche Version des Gadgets inklusive Kommentare aufrufen, was fürs Debuggen hilfreich ist.
 * Lies dir die Dokumentation der Chrome Entwickler-Tools oder die von Firefox durch. In diesen Browsern stehen dir ziemlich gute Debugging-Möglichkeiten zur Verfügung.
 * Wenn du Probleme mit gecachten Versionen der Skripte hast, hilft es manchmal, das Caching auszuschalten. Klick dazu auf das Einstellungen-Icon in der Chrome-Entwicklerkonsole und wähle „Cache deaktivieren“. Oder du schaltest den Cache in den erweiterten Firebug-Einstellungen aus.

Gadgets werden von der Community entwickelt. Bis jetzt ist es nicht notwendig, dafür einen offiziellen Code-Review durchzuführen (siehe auch T71445). Trotzdem legen wir dir hier sehr an Herz, dich an die gängigen Best Practices halten!
 * Review:


 * Audit-Resourcen: Du solltest keine externen Skripte laden, die die Privatsphäre der NutzerInnen gefährden. In den WMF-Wikis werden folgende Domains als sicher betrachtet:
 * .wiktionary.org
 * .wikimedia.org,
 * *.wikibooks.org
 * *.wikisource.org
 * *.wikisource.org
 * *.wikiversity.org
 * *.wikinews.org
 * *.wikiquote.org
 * *.wikidata.org
 * *.wikivoyage.org
 * www.mediawiki.org

Wo finde ich mehr dazu?

 * Wikipedia:User scripts in der englischsprachigen Wikipedia und die entsprechenden Übersetzungen sind die erste Wahl, um sich über Skript- und Gadget-Entwicklung in der Wikipedia zu informieren Im Guide findest du jede Menge Wissen für den Anfang.
 * die [$jquery jQuery docs] sind für alle JavaScript-EntwicklerInnen wichtig
 * außerdem wird dir die API-Dokumentation, ein MediaWiki-Webservice, weiterhelfen
 * Gadgets in den Wikimedia-Projekten, geordner nach ihrer Beliebtheit
 * Wikipedia:Gadget: eine Seite in der englischsprachigen Wikipedia
 * Eine schriftliche Hilfestellung für Trainingssituationen


 * Wikipedia:User scripts on the English Wikipedia and its alternatives in other languages are the primary hubs for user script and gadget development in Wikipedia. The guide has tons of useful information to get you started.
 * the jQuery docs are essential for every JavaScript developer
 * the MediaWiki web service API documentation will also be very useful
 * List of gadgets by popularity in Wikimedia projects
 * Wikipedia:Gadget page on English Wikipedia