Extension:Gadgets

This page is a translated version of the page Extension:Gadgets and the translation is 100% complete.
Cette extension est fournie avec MediaWiki 1.18 et supérieur. Ainsi vous n'avez pas besoin de télécharger à nouveau. Néanmoins, vous devez encore suivre les autres instructions fournies.
Manuel des extensions MediaWiki
Gadgets
État de la version : stable
Implémentation MyWiki , Page spéciale , API
Description Permet aux utilisateurs d'activer des gadgets basés sur JavaScript et fournis aux utilisateurs à partir de leur page de préférences.
Auteur(s) Daniel Kinzler (Duesentriebdiscussion)
Politique de compatibilité Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière.
MediaWiki 1.19+
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
README
Exemple Wikimedia Commons : Présentation des gadgets, Préférences de l'utilisateur (cliquez sur Gadgets, en étant connecté bien sûr)
  • $wgGadgetsRepo
  • $wgSpecialGadgetUsageActiveUsers
Téléchargements trimestriels 116 (Ranked 50th)
Utilisé par les wikis publics 4,529 (Ranked 177th)
Traduire l’extension Gadgets sur translatewiki.net si elle y est disponible
Problèmes Tâches ouvertes · Signaler un bogue

L'extension Gadgets apporte un moyen pour les utilisateurs d'utiliser des "gadgets" écrits en JavaScript ou en CSS que d'autres utilisateurs du wiki ont fournis.

Les gadgets sont constitués de Snippets de JavaScript et / ou CSS situés sur les pages de l'espace de noms MediaWiki. Chaque gadget est défini par une ligne dans MediaWiki:Gadgets-definition, fournissant un nom et une description pour le gadget, et une liste du code JavaScript et CSS qu'il utilise (voir la section Utilisation ci-dessous).

Comme les gadgets sont définis dans l'espace de noms MediaWiki: (la liste décrivant les gadgets comme le code lui-même), seuls les sysops (administrateurs d'interface depuis 1.32) peuvent modifier le code. Et c'est une bonne chose : seuls les utilisateurs particulièrement fiables au sein de la communauté du wiki sont supposés aptes à modifier le code JavaScript utilisé par d'autres utilisateurs, dans la mesure où le JavaScript peut être facilement utilisé pour hacker des comptes ou espionner des gens.

Installation

  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé Gadgets dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'Gadgets' );
    
  •   Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

Utilisation

 
Sélection de certains gadgets selon les préférences de l'utilisateur dans de.wikipedia

Une fois que MediaWiki:Gadgets-definition est créé avec au moins un gadget valide, une nouvelle section Gadgets s'affiche dans Special:Preferences pour tous les utilisateurs. Ceux-ci peuvent activer les gadgets qu'ils souhaitent utiliser. Un aperçu des gadgets définis actuellement par MediaWiki:Gadgets-definition est également affiché sur Special:Gadgets avec les liens d'aide vers les emplacements associés et les pages des scripts ou des styles pour faciliter la création ou la modification. Les statistiques concernant les gadgets préférés sont visibles sur Special:GadgetUsage.

Format de définition

Chaque ligne de la page MediaWiki:Gadgets-definition doit commencer par un caractère astérisque "*" qui définit un gadget. La ligne a le format suivant :

* mygadget [Options] | Noms de page

Le premier champ ("mygadget" dans l'exemple) est le nom interne du gadget. Le titre de la page des préférences vient d'une page de message d'interface, où le vrai nom et une courte description peuvent être fournis et le balisage du wikicode est autorisé.

Le nom interne doit commencer par une lettre de l'alphabet latin de base ([A-Za-z]) et peut être suivie de n'importe quel nombre de lettres, de chiffres ([0-9]), de tirets (-), de traits de soulignement (_) ou de points (.). La raison de cette limitation est que le nom interne doit être aussi valide qu'un nom de formulaire HTML, qu'une clé de message d'interface MediaWiki, et qu'un nom de module ResourceLoader.

Format des options :

[ResourceLoader | option1 | option2 | ... optionN]

La marque du ResourceLoader est nécessaire sauf si le gadget ne contient que des styles. Les options qui ont le rôle de drapeau, n'ont besoin que d'avoir leur nom présent pour indiquer qu'elles sont positionnées. Les options qui nécessitent une valeur sont suivies d'un signe égal et une liste de valeurs séparées par une virgule. Tous les espaces sont facultatifs et peuvent être omis.

[ResourceLoader | myflag | mykey = value1, value2, value3 ]

Exemples :

* mygadget[ResourceLoader]|mygadget.js|mygadget.css

ou

* mygadget[ResourceLoader|package]| mygadget.js | mygadget-Foo.js | mygadget-data.json | mygadget.css

ou

* mygadget[ ResourceLoader | rights=foo, bar ] | mygadget.js | mygadget.css

Utiliser l'espace de noms de définition de Gadget

Version de MediaWiki :
1.41

Il y a deux façons de définir les gadgets en fonction de $wgGadgetsRepoClass. S'il vaut 'MediaWikiGadgetsDefinitionRepo' (valeur par défaut), la liste des gadgets disponibles est définie sur MediaWiki:Gadgets-definition. De manière alternative, les définitions de gadget sont définies sur les pages de l'espace de noms Définition de gadget lorsque $wgGadgetsRepoClass vaut 'GadgetDefinitionNamespaceRepo'. (Avec MediaWiki 1.39+, la valeur à utiliser à la place est '\\MediaWiki\\Extension\\Gadgets\\GadgetDefinitionNamespaceRepo').

La migration des définitions de gadget existantes n'est pas encore prise en charge. Vous perdrez donc les gadgets précédemment définis après avoir modifié cette option.

La création de la page Gadget definition:mygadget et l'insertion du code JSON ci-dessous ont le même effet que mygadget[ ResourceLoader | rights=foo, bar ] | mygadget.js | mygadget.css.

{
	"settings": {
		"rights": [ "foo", "bar" ],
		"default": false,
		"package": false,
		"hidden": false,
		"skins": [],
		"actions": [],
		"category": ""
	},
	"module": {
		"scripts": [ "mygadget.js" ],
		"styles": [ "mygadget.css" ],
		"datas": [],
		"peers": [],
		"dependencies": [],
		"messages": [],
		"type": ""
	}
}

Dans l'exemple ci-dessus, Gadget:Mygadget.js et Gadget:mygadget.css sont utilisés.

Options

Options
Nom Paramètres Description Depuis
ResourceLoader Aucun Marque les scripts du gadget comme compatibles avec ResourceLoader . 1.17 (r76527)
dependencies Noms de modules séparés par des virgules Ces modules seront chargés avant que ne soient exécutés les scripts de ce gadget. Voir la liste des modules par défaut. 1.17 (r76639)
rights Noms des droits séparés par des virgules Rend le gadget disponible (et visible dans les préférences) uniquement pour les utilisateurs qui possèdent les droits spécifiés. 1.18 (r85268)
hidden Aucun Masquer le gadget sur la page des Préférences. Cela peut être utilisé de deux manières :
  • Activer un gadget par défaut sans possibilité de le désactiver (comme alternative modulaire à Common.js). Notez que vous devez ajouter les deux : hidden | default pour charger un module pour tous les utilisateurs.
  • Gadgets qui ne sont pas destinés aux utilisateurs finaux, mais qui sont plutôt destinés à être chargés par d'autres gadgets. Par exemple, pour permettre à deux gadgets de réutiliser le même code interne, ou pour enregistrer la partie « centrale » d'un gadget qui ne se charge que sur certaines pages.
1.28
skins Noms d'habillages séparés par des virgules Rend le gadget disponible (et visible dans les préférences) uniquement pour les utilisateurs qui utilisent les habillages spécifiés. Avant MediaWiki 1.32, il prenait en compte l'habillage défini dans les préférences de l'utilisateur, et non celui qui est actuellement affiché (comme lorsqu'on ajoute ?useskin=monobook dans l'URL, tâche T199478). Depuis la version 1.39, le module ResourceLoader n'est pas enregistré sur les habillages sur lesquels le gadget n'est plus disponible, de sorte que le gadget ne peut pas être chargé sur ces habillages en tant que dépendance ou en utilisant mw.loader.load() ou (tâche T236603).
L'utilisation de skins doit être le dernier recours et elle est restreinte à du code spécialisé. Par exemple le code qui s'appuie sur l'utilisation du DOM en l'absence d'APIs standardisées et qui ne peut pas être implémenté en utilisant les Modules noyau.
1.19 (r100509)
actions Noms d'actions séparés par des virgules Rend le gadget disponible uniquement avec les actions spécifiées. Par exemple, actions = edit, history pour charger un gadget uniquement pendant l'édition et sur les pages d'historique.
Spécifier l'action edit le chargera également avec action=submit. Les actions invalides désactivent concrètement le gadget puisqu'il ne peut être exécuté nulle part.
1.38 (gerrit:747112)
categories Noms de catégories séparés par des virgules Rend le gadget disponible seulement pour les catégories spécifiées. Par exemple categories = Archived, Maintenance pour charger un gadget uniquement sur les pages de Category:Archived ou Category:Maintenance. Voir aussi : Template gadgets . 1.42 (gerrit:1005092)
namespaces Numéros d'espaces de noms séparés par des virgules Rend le gadget disponible uniquement dans les espaces de noms spécifiés. Par exemple, namespaces = 0, 2 pour charger un gadget uniquement dans l'espace principal et dans l'espace de noms utilisateur. 1.41 (gerrit:624517)
contentModels Modèles de contenu séparés par des virgules Rend le gadget disponible sur les pages qui utilisent les modèles de contenu donnés. Par exemple contentModels = wikitext pour charger un gadget uniquement sur les pages wikicode. 1.41 (gerrit:922062)
default Aucun Active le gadget par défaut pour chacun (y compris les adresses IP). Les utilisateurs enregistrés peuvent toujours le désactiver dans leurs préférences. 1.18 (r85902)
package Aucun Marque ce gadget comme étant un package. Dans ce mode, seule la première page JavaScript sera exécutée. D'autres pages peuvent être importées en utilisant la fonction require(). Ce mode permet également d'utiliser des pages JSON, qui ne peuvent être incluses autrement. 1.38
type styles (par défaut pour les gadgets CSS seulement) ou general (par défaut dans les autres cas) Utiliser styles pour les modules qui ne modifient que le style des éléments déjà présents sur la page (par exemple, lors de la personnalisation de l'habillage, de la mise en page ou du contenu de l'article). Il fera en sorte que les fichiers CSS du module soient inclus dans la page HTML au lieu d'être chargés via JavaScript. Pour plus de détails, voir le Type de gadget dans le Guide de migration.
Utiliser styles ne chargera aucun des fichiers JavaScript spécifiés. Pour les gadgets qui modifient le style des éléments à l'aide de JavaScript et de CSS, deux définitions de gadget individuelles sont nécessaires.
1.28
peers Noms de gadgets séparés par des virgules Ces gadgets uniquement en CSS seront chargés ensemble avec ce gadget. Ces gadgets seront chargés plus tôt que par les dependencies, et seront chargés même si JavaScript est désactivé. Pour plus de détails, voir ResourceLoader/Migration guide (users)#Gadget peers. 1.29
supportsUrlLoad Aucun | true | false Rend le gadget disponible pour être chargé avec le paramètre de requête URL ?withgadget. 1.38
Removed options
Name Parameters Description Since Removed
top Aucun Permet au gadget d'être chargé par les composants de MediaWiki. Ceci doit être utilisé avec parcimonie, mais peut être nécessaire pour certaines initialisations comme l'enregistrement de greffons avec VisualEditor. 1.22 (gerrit:75506) 1.29
requiresES6 Aucun Permet l'utilisation de la syntaxe ES6 (ES2015) dans le gadget. S'il est activé, la validation de la syntaxe côté serveur est ignorée pour le gadget. Tous gadget nécessitant ES6 est chargé avec ses semblables par une seule requête Web, ce qui isole les défaillances dues à une syntaxe invalide ou non prise en charge uniquement par ces gadgets, sans affecter les autres gadgets ni les fonctionnalités du logiciel MediaWiki. Nous vous recommandons d'utiliser un outil comme ESLint pour vous assurer que seule la syntaxe ES6 valide est utilisée. Conflits avec default. 1.40 (gerrit:758086) 1.42
targets desktop, mobile ou desktop, mobile (par défaut) Définit la ou les cibles ResourceLoader pour le gadget.
N'utilisez pas targets mais remplacez-le par skins si c'est absolument nécessaire.
1.21 (gerrit:60954) 1.42

Vous pouvez spécifier des dépendances supplémentaires pour vos gadgets, par exemple :

* mygadget[ResourceLoader|dependencies=jquery.ui, jquery.effects.clip]|mygadget.js|mygadget.css

Ici, nous demandons au ResourceLoader de charger les modules jquery.ui et jquery.effects.clip avec mygadget. Notez que les gadgets ne peuvent pas dépendre des scripts des pages, des fichiers statiques ou d'URL externes, mais uniquement des modules déjà enregistrés dans ResourceLoader. Pour qu'un script de page dépende d'un autre script de page, chaque script doit être un gadget qui s'enregistre en tant que module dans le ResourceLoader, puis on peut leur faire avoir des dépendances en utilisant la syntaxe suivante :

* childgadget[ResourceLoader|dependencies=ext.gadget.parentgadget]|childgadget.js

Pour activer un gadget par défaut, utilisez "default" :

* mygadget[ResourceLoader|default|dependencies=mediawiki.util]|mygadget.js|mygadget.css

Pour que le gadget ne soit accessible qu'aux utilisateurs disposant des droits appropriés, définissez l'option rights, par exemple :

* ImprovedDeletion [rights=delete] | ImprovedDeletion.js

Rend le gadget disponible uniquement pour les utilisateurs qui peuvent supprimer des pages.

Notez que les restrictions sont basées sur les droits, et non sur des groupes d'utilisateurs comme les administrateurs ou les bureaucrates. Voici quelques exemples réels :

* modrollback [ResourceLoader |rights=rollback] |modrollback.js
* geonotice [ResourceLoader |default |rights=viewmywatchlist] |geonotice.js
* Ajax_sysop [ResourceLoader |rights=patrol, rollback, markbotedits, delete]|Ajax_sysop.js


Droits utilisateurs

Cette extension ajoute deux nouveaux droits utilisateur gadgets-edit et gadgets-definition-edit, qui par défaut ne sont attribués à aucun groupe.

Vous pouvez ajouter les éléments suivants dans votre LocalSettings.php pour fournir les autorisations appropriées aux utilisateurs qui font partie du groupe des administrateurs d'interface. La modification des pages dans l'espace de noms Gadget nécessite le droit gadgets-edit et la modification des pages dans l'espace de noms de définition Gadget nécessite le droit gadgets-definition-edit.

$wgGroupPermissions['interface-admin']['gadgets-edit'] = true;
$wgGroupPermissions['interface-admin']['gadgets-definition-edit'] = true;

Pages

Les autres champs de la ligne de définition font référence aux pages de code source JavaScript, CSS ou JSON qui composent le module du gadget. Ils sont stockés dans l'espace de noms MediaWiki en tant que messages d'interface (MediaWiki:Gadget-mygadget.js et MediaWiki:Gadget-mygadget.css dans l'exemple). Le nom des pages doit se terminer par ".css", ".js" ou ".json", respectivement.

Un gadget peut utiliser un nombre quelconque de pages source, par exemple :

 * frobinator[ResourceLoader]|frob.js|frob.css|pretty.css
 * l33t[ResourceLoader]|l33t.js
 * foobar[ResourceLoader|package]|foo.js|bar.js|foobar-data.json

Veuillez noter que si votre code contient des chaînes qui pourraient être interprétées comme de la syntaxe wiki (par exemple, le code de signature ~~~~), vous voudrez peut-être enfermer votre code dans ‎<nowiki>...‎</nowiki> et placer ces balises dans des commentaires JavaScript ou CSS afin qu'elles ne soient pas interprétées jusqu'à ce qu'elles soient effectivement utilisées.

Voir la première et la dernière ligne de MediaWiki:Gadget-externalsearch-bar.js pour un exemple.

Sections

La liste des gadgets dans MediaWiki:Gadgets-definition peut être divisée en sections à l'aide de lignes qui commencent et finissent par deux ou plusieurs caractères "=" (égaux), entourant le nom d'un message système qui définit le nom de la section, par exemple :

 == interface-gadgets ==
 ...
 == editing-gadgets ==
 ...

Cela déclarerait deux nouvelles sections, avec les titres définis sur les pages MediaWiki:Gadget-section-interface-gadgets et MediaWiki:Gadget-section-editing-gadgets.

Gadgets populaires

Voir meta:Gadgets pour les gadgets populaires dans les communautés Wikimedia.

Voir aussi