Gadget kitchen/de

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Gadget kitchen and the translation is 79% complete.

Other languages:
Deutsch • ‎English
Einfach und schnell eigene Erweiterungen zusammenköcheln

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?

Eine der schönsten Eigenschaften von MediaWiki ist, dass im Prinzip jede und jeder sofort Software-Erweiterungen schreiben und mit anderen Usern teilen kann.

  • 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.

Wenn bei dir eine eigene Version von MediaWiki läuft, muss $wgAllowUserJs 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. Beides ist bei fast allen Seiten der Wikimedia Foundation (z.B. Wikipedia), der Fall.

Um angenehmer arbeiten zu können, solltest du die CodeEditor 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.
Tutorial zum Thema Gadgets und Benutzerskripte von Brion Vibber, gehalten beim San Francisco Hackathon im Januar 2012

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.

Hinweis Hinweis: Wenn du im Editor auf „Vorschau“ klickst (oder z.B. den Shortcut Shift+Alt+P 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?

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.

Hinweis Hinweis: 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 importScript() 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:

mw.loader.load("//www.mediawiki.org/w/index.php?title=MediaWiki:Tutorial-QuickRC.js&action=raw&ctype=text/javascript");

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

Wenn dein Gadget die MediaWiki API nutzt: füge den "?callback=?"-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.


Entwicklung von Gadgets

Tipps zum Thema JS?

Ein Gadget schreiben
Debuggen
  • Lies dir die Google Chrome developer tools documentation oder die Firebug documentation durch, um die in deinen Browsern zur Verfügung stehenden Debugging-Tools optimal nutzen zu können.
  • Wenn du Probleme mit zwischengespeicherten Versionen deiner Skripte hast, hilft es manchmal, das Caching ganz auszuschalten. Wähle dazu in den Einstellungen der Chrome Entwicklerkonsole „Cache deaktivieren“ aus. Oder klicke auf „Browser-Cache deaktivieren“ in Firebug.
  • Du kannst die ExternalArticles-Extension verwenden, um in einer externen IDE zu arbeiten. Jedesmal, wenn du deine Datei sicherst, werden so die damit zusammenhängenden Wiki-Seiten aktualisiert.
Review
Gadgets are developed by community and as of today there is no formal code review required for them (see discussion phab:T71445). However, it is strongly recommended to follow best practices!
audit-resources
You should not load external resources that may harm users privacy. For example in WMF wikis, the following domains are considered safe:
  • .wiktionary.org
  • .wikimedia.org,
  • *.wikibooks.org
  • *.wikisource.org
  • *.wikisource.org
  • *.wikiversity.org
  • *.wikinews.org
  • *.wikiquote.org
  • *.wikidata.org
  • *.wikivoyage.org
  • www.mediawiki.org
There is a Jenkins job (job, code) for automatic check of this principle

Where can I find more docs?

These are key resources:

Live chat