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 | Wikimédia Commons : Présentation des gadgets, Préférences de l'utilisateur (cliquez sur "Gadgets" ; vous devez bien sûr être connecté) |
|
|
Quarterly downloads | 200 (Ranked 50th) |
Public wikis using | 6,111 (Ranked 13th) |
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 créés avec au moins un gadget valide, les gadgets définis s'affichent dans la section "Gadgets" de Special:Preferences, afin que les utilisateurs puissent choisir les gadgets qu'ils souhaitent utiliser. Un aperçu des gadgets définis par MediaWiki:Gadgets-definition est également affiché sur Special:Gadgets, ainsi que des liens vers les messages système respectifs, pour faciliter l'édition. Les statistiques d'utilisation des gadgets autres que par défaut sont visibles à Special:GadgetUsage.
Format
Chaque ligne de MediaWiki:Gadgets-definition qui commence par un ou plusieurs caractères "*" (astérisques) définit un gadget ; il doit avoir la forme suivante :
* mygadget [== Options (peut être omis) ==] | Noms de page
Le premier champ ("mygadget" dans l'exemple) est le nom interne du gadget et fait référence à un message système (MediaWiki:Gadget-mygadget dans l'exemple) qui contient une courte description du gadget, en utilisant la syntaxe wiki.
[A-Za-z]
) et peut être suivi de n'importe quel nombre de lettres, de chiffres ([0-9]
), de tirets (-
), de traits de soulignement (_
), de deux-points ($5) et de points (.
). Le 'nom interne' est utilisé comme partie intégrante du nom d'un champ de formulaire et doit suivre les rules defined for NAME attribute values.Format des options:
[ResourceLoader | option1 | option2 | ... optionN]
The ResourceLoader flag is required unless the gadget contains only styles. Options that are "flags" only need to have their name written to be turned on. Une option unique peut être constituée d'un nom d'option unique (dans ce cas, il s'agit d'une option d'indicateur) ou contenir une liste de valeurs séparées par des virgules: les espaces 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 est '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
est défini sur '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 et 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 de la page 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). |
? |
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-wmf.16 |
default
|
Aucun | Active le gadget par défaut pour tout le monde (y compris les 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-wmf.16 |
targets
|
desktop (par défaut), mobile ou desktop,mobile
|
Définit la ou les cibles ResourceLoader pour le gadget. | gerrit:60954 |
type
|
styles ou general
|
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 ResourceLoader/Migration guide (users)#Gadget type.
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-wmf.11 (préversion) |
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 |
|
Aucun | (supprimé en 1.29) Permet au gadget d'être chargé par les composants de MediaWiki. Ceci devrait être utilisé avec parcimonie, mais peut être nécessaire pour certaines initialisations comme l'enregistrement de plugins avec VisualEditor. | 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 à 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 d'une page dépende d'un autre script d'une page, chaque script doit être un gadget qui s'enregistre en tant que module dans 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 interface-admin.
La modification de pages dans l'espace de noms Gadget nécessite le droit gadgets-edit
et la modification de 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 éléments de la ligne font référence au code JavaScript, CSS ou JSON qui compose le gadget, contenu dans des messages système (MediaWiki:Gadget-mygadget.js et MediaWiki:Gadget-mygadget.css dans l'exemple) ; les noms de ces messages doivent se terminer par ".js" ou ".css", respectivement.
Un gadget peut utiliser un nombre quelconque de messages système contenant de code. Plus précisément, un code commun peut être inséré dans un message système contenant du code utilisé par plusieurs gadgets, en plus de leur propre code spécifique, par exemple :
* frobinator[ResourceLoader]|commonStuff.js|frob.js|frob.css|pretty.css * l33t[ResourceLoader]|commonStuff.js|tools.js|l33t.js * foobar[ResourceLoader|package]|foo.js|bar.js|foobar.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
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 paquets et / ou les fermes de wikis suivants : Cette liste ne fait pas autorité. Certaine fermes de wikis ou d'hébergeurs peuvent contenir ce extension même s'ils ne figurent pas ici. Vérifiez toujours cela dans votre environement avant de confirmer. |