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 24% complete.
Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎français

Willkommen in der Gadget-Küche. This is a tutorial for how you can write and use gadgets and user-scripts in JavaScript.

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.

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

Logged-in users can enable gadgets in the "Gadgets" tab of their user preferences. Gadgets are created and managed by interface administrators.

  • For completeness: There is also 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. Interface administrators can edit that page.

Wenn bei dir eine eigene Version von MediaWiki läuft, muss $wgAllowUserJs aktiviert sein, damit Benutzerskripte funktionieren. Die Extension für [[Special:MyLanguage/Extension: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 CodeEditor extension in deinem Wiki installiert haben.

Write your first user script

In this section, you create an example user script which calculates the estimated reading time of a wiki page.

  1. Ensure you are logged in.
  2. Visit Special:MyPage/common.js. This page holds your personal JavaScript that is loaded on every page view (except for Special:Preferences).
  3. Either create the page or edit the page if it already exists.
  4. Copy the following six lines and paste these lines into the page:
1 var numWords = $("#mw-content-text > div").text().split(" ").length;
2 var headerWords = $("h1").text().split(" ").length;
3 var totalWords = numWords + headerWords;
4 var timeInMinutes = totalWords / 200;
5 var header = $("h1").text();
6 $("h1").text(header + " (it will take you " + timeInMinutes + " minutes to read this page)");
  1. Click "Publish changes".
  2. Go to any page. Look at the title.

This example user script is taken from ChickTech High School Kickoff 2017/Tasks . There are more examples for simple user scripts on that page.

Ein Gadget schreiben

Entwicklung von Gadgets

This section lists resources which are either needed or helpful for non-simple user scripts.

ResourceLoader

Since 2015 (MediaWiki 1.26), gadgets must use ResourceLoader (phab:T107399). 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.

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 — A list of useful practices, like enabling the debug mode and help with debugging.
    • Also see the [[<tvar|RL>ResourceLoader/Migration_guide_(users)#Good_practices</>|ResourceLoader good practices]].

OOUI

OOUI is a javascript library with user interface elements (for example pop-up windows) specifically for use in MediaWiki. The library [[<tvar|oouiusing>Special:MyLanguage/OOUI/Using OOUI in MediaWiki#Gadgets</>|can be used in gadgets]].

MediaWiki Action API

See Special:MyLanguage/API for more information.

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.

VisualEditor

See VisualEditor/Gadgets for a tutorial specifically for VisualEditor gadgets.

Debugging user scripts and gadgets

Privacy and external content

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
Um dieses Prinzip zu prüfen, gibt es einen Jenkins-Job ([Special:MyLanguage/Continuous integration/Jenkins job], [$2 code])

A more complex user script example

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.

Load an existing user script

In the previous section, you copied the content of a user script. In this section, you will load the existing script MediaWiki:Tutorial-QuickRC.js instead.

  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.
  1. Visit Special:MyPage/common.js. This page holds your personal JavaScript that is loaded on every page view (except for Special:Preferences).
  2. Either create the page or edit the page if it already exists.
  3. Copy the following text and paste it into the page:
    mw.loader.load('//www.mediawiki.org/w/index.php?title=MediaWiki:Tutorial-QuickRC.js&action=raw&ctype=text/javascript');
  4. Click "Publish changes". You should now have a link in the "Tools" section called "Quick changelog".
  5. Click "Quick changelog". You get a pop-up window. It shows you a subset of the recent changes on this website.

Use a script on another Wikimedia wiki

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!

This first requires that you do not store the code of your user script in Special:MyPage/common.js itself but instead in a separate sub page of your user page.

This also helps to keep code in one single place, so you have to update code in only one place.

Disadvantages and problems of gadgets

  • ;Review:

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

  • On Wikimedia sites, the process how to "promote" a user script to a gadget in the "Gadgets" tab of the user preferences is not always clear. You will have to find an interface administrator and might have to provide deployment instructions to them.
  • Wikimedia lacks a systematic process for re-using, modifying and contributing to existing user scripts and gadgets.

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 $requests.
  • Außerdem sammeln wir Anfragen hier: Gadget Kitchen/Requests

Deploying or enabling a gadget

If your user script should become a gadget (see the definitions above) on a wiki, the following steps are needed:

  • Steps for the user script author:
    • Recruit an experienced developer to review your gadget code. There is no formal process to do so.
    • Check with community members if there aren't any concerns with enabling the gadget on a wiki. For the website MediaWiki.org itself, this would be Project:Current_issues.
    • Recruit a site administrator with interface rights. See the page Special:ListUsers/interface-admin on your wiki.
  • Steps for the interface administrator:
    • Copy your JS & CSS files in the MediaWiki: namespace on your wiki, and make sure the page names have the prefix Gadget-.
      Example: MediaWiki:Gadget-userfeedback.js
    • Define the gadget on the MediaWiki:Gadgets-definition page of your wiki. That includes the modules used, dependencies, JS, and CSS file names, etc. This will allow users to enable the gadget on the Special:Preferences page of your wiki.
      Example: userfeedback[ResourceLoader|default|dependencies=ext.eventLogging]|userfeedback.js|userfeedback.css
    • Create a page for the gadget in the MediaWiki: namespace with prefix Gadget-. This will generate a label for the gadget on the Special:Preferences page of your wiki.
      Example: MediaWiki:Gadget-userfeedback

Related pages

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