Extension: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) |
|
|
Téléchargements trimestriels | 155 (Ranked 55th) |
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 CSS que d'autres utilisateurs du wiki ont fournis.
Les gadgets sont constitués de Fragments de code 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 dossierextensions/
. - 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

Une fois que MediaWiki:Gadgets-definition est créé avec au moins un gadget valide, une nouvelle section Gadgetss'affichent dans Special:Preferences pour tous les utilisateurs. Les utilisateurs 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é.
[A-Za-z]
) et peut être suivi de n'importe quel nombre de lettres, de chiffres ([0-9]
), de tirets (-
), de traits de soulignement (_
) et 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
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'
.
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
Nom | Paramètres | Description | Depuis |
---|---|---|---|
ResourceLoader |
Aucun | Marque les scripts du gadget comme compatibles avec ResourceLoader . | ? |
dependencies |
Noms de modules séparés par des virgules | Voir la liste des modules par défaut. Notez que cette option n'a aucun effet si le gadget actuel n'a pas de ressources compatibles avec ResourceLoader (c'est-à-dire pas de styles ni de scripts non marqués comme compatibles). | ? |
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. | ? |
hidden
|
Aucun | Masquer le gadget sur la page des Préférences. Cela peut être utilisé de deux manières :
|
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). Use of
skins should be a last resort, and should be restricted to specialized code which relies on DOM manipulated which is used in the absence of non-standardized APIs that are not served by the methods listed on ResourceLoader/Core modules. |
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 |
namespaces |
Comma-separated namespace numbers | Make the gadget available only on the specified namespaces. E.g. namespaces = 0, 2 to load a gadget only in mainspace and user namespace. |
1.41 (gerrit:624517) |
contentModels |
Comma-separated content models | Make the gadget available on pages with the given content models. E.g. contentModels = wikitext to load a gadget only on wikitext pages. |
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 |
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 |
targets
|
desktop , mobile ou desktop,mobile (par défaut)
|
Définit la ou les cibles ResourceLoader pour le gadget.
Do not use
targets , instead use skins where absolutely necessary. |
1.21 (gerrit:60954) |
type
|
styles (default for CSS-only gadgets) or general (default otherwise)
|
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 modules séparés par des virgules | Requiert des gadgets uniquement en CSS (qui sont généralement cachés). 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.0 |
supportsUrlLoad
|
Aucun | true | false | Rend le gadget disponible pour être chargé avec le paramètre de requête URL ?withgadget .
|
1.38 |
requiresES6
|
None | Allow use of ES6 syntax (ES2015) in the gadget. Enabling this means server-side syntax validation is skipped for the gadget. Any ES6-requiring gadgets are loaded together in a single web request, which isolates failures due to invalid or unsupported syntax to those gadgets only, without affecting other gadgets and MediaWiki software features. It is recommended to use a tool like ESLint to ensure only valid ES6 syntax is used. | 1.40.0-wmf.7 (gerrit:758086) |
|
Aucun | (supprimé en 1.29) 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) |
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 * UTCLiveClock[ResourceLoader|rights=purge]|UTCLiveClock.js * Ajax_sysop[ResourceLoader|rights=patrol,rollback,markbotedits,delete]|Ajax_sysop.js
User rights
gadgets-edit
and gadgets-definition-edit
, which by default aren't given to any group.
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 ==
Cela définirait une nouvelle section, avec le titre défini sur la page MediaWiki:Gadget-section-interface-gadgets.
Popular gadgets
See meta:Gadgets for gadgets which are popular in Wikimedia communities.
Voir aussi
- Special:Gadgets – lists all the gadgets and a brief description of each
- Extension:Gadgets/Roadmap
- Gestionnaire de gadgets
- Extension:Widgets
- Fragments de code
![]() | Cette extension est utilisée par au moins un des projets Wikimédia. Cela signifie probablement que l’extension est assez stable et fonctionnelle pour être utilisée sur des sites à fort trafic. Recherchez le nom de cette extension dans le CommonSettings.php de Wikimédia et dans le fichier de configuration InitialiseSettings.php pour situer les endroits où elle est installée. Une liste complète des extensions installées sur un Wiki donné peut être visualisée sur la page Special:Version de ce wiki. |
![]() | Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : Cette liste ne fait pas autorité. Certaines fermes de wikis ou hôtes et / ou paquets peuvent contenir cette extension même s'ils ne sont pas listés ici. Vérifiez toujours cela avec votre ferme de wikis ou votre hôte ou votre paquet avant de confirmer. |
- Extensions bundled with MediaWiki 1.18/fr
- Stable extensions/fr
- Personalization extensions/fr
- Special page extensions/fr
- API extensions/fr
- GPL licensed extensions/fr
- Extensions in Wikimedia version control/fr
- BeforePageDisplay extensions/fr
- CodeEditorGetPageLanguage extensions/fr
- ContentHandlerDefaultModelFor extensions/fr
- DeleteUnknownPreferences extensions/fr
- EditFilterMergedContent extensions/fr
- GetPreferences extensions/fr
- PageDeleteComplete extensions/fr
- PageSaveComplete extensions/fr
- PreferencesGetIcon extensions/fr
- PreferencesGetLegend extensions/fr
- ResourceLoaderRegisterModules extensions/fr
- UserGetDefaultOptions extensions/fr
- WgQueryPages extensions/fr
- All extensions/fr
- Extensions used on Wikimedia/fr
- Extensions included in BlueSpice/fr
- Extensions included in Canasta/fr
- Extensions available as Debian packages/fr
- Extensions included in Fandom/fr
- Extensions included in Miraheze/fr
- Extensions included in MyWikis/fr
- Extensions included in ProWiki/fr
- Extensions included in semantic::core/fr
- Extensions included in ShoutWiki/fr
- Extensions included in Telepedia/fr
- Extensions included in wiki.gg/fr
- Extensions included in WikiForge/fr
- Extensions included in WikiTide/fr
- Gadgets/fr
- JavaScript/fr