Extension:Gadgets
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 | 105 (Ranked 52nd) |
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 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/
.
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
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é.
[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 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 . | 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) |
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 |
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
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
- Special:Gadgets – liste tous les gadgets avec une brève description de chacun d'eux
- 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
- GetPreferences extensions/fr
- PageDeleteComplete extensions/fr
- PageSaveComplete extensions/fr
- PreferencesGetIcon extensions/fr
- PreferencesGetLegend extensions/fr
- ResourceLoaderRegisterModules extensions/fr
- UserGetDefaultOptions extensions/fr
- GetUserPermissionsErrors 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
- Gadgets/fr
- JavaScript/fr