CodeLoad est un chargeur personnalisable de code d'une page. Il permet aux communautés d'instaurer pour leurs utilisateurs un système pour activer le code donné (en JavaScript ou en CSS), d'une manière similaire à l'extension Gadgets. Sur un Wiki utilisant le script, les préférences utilisateur peuvent être configurées sur la page Special:BlankPage?blankspecial=CodeLoadPrefs. Un lien vers la page est ajoutée à la boîte de dialogue des raccourcis et au menu "Mes outils" dans la barre d'outils en bas de l'écran.
Installation[]
Configuration des définitions[]
Les définitions sont chargées depuis la page MediaWiki:CodeLoad-definitions.js. Voici quelques examples de définitions, pouvant être copiées/collées pour servir de base vers la page des définitions de votre Wiki.
Elles sont configurées sous la variable JavaScript codeLoad.definitions, qui doit être un objet avec un identifiant uniquement (cela peut être le nom du script tout simplement) pour chaque clé, et un objet (définition) comme valeur. Chaque définition peut contenir les clés suivantes :
| Clé | Requis ? | Description |
|---|---|---|
title
|
Non | Un nom simple pour la définition (en gras dans la page de préférences). Il est possible d'insérer des liens Wikitexte. |
description
|
Oui | Une description de ce que fait la définition (suit le titre de la définition dans la page de préférences). Il est possible d'insérer des liens Wikitexte. |
group
|
Non | Ajouter cette définition à un groupe particulier de la page de préférences (voir ci-dessous pour plus de détails). |
articles
|
Oui | Un tableau de nom de pages devant être importées quand cette définition est activée (voir below pour plus de détails). |
preferences
|
Non | Si une définition a des préférences configurables par l'utilisateur, elles peuvent être instaurées ou sauvées avec CodeLoad (voir ci-dessous pour plus de détails). |
requirements
|
Non | Instaure les pré-requis avant que cette définition soit utilisée ou montrée (voir ci-dessous pour plus de détails). |
Voici un example pour AjaxRC:
"ajaxrc": {
"title": "AjaxRC",
"description": "Auto-rafraîchissement des listes de suivi et de l'activité récente ([[w:c:dev:AjaxRC|plus d'info ici]])",
"group": "tools",
"articles": [
"dev:AjaxRC/code.js"
],
"preferences": {
"requiresGlobalPrefs": true,
"AjaxRCRefreshText": "Auto-rafraîchir",",
"ajaxRefresh": 30000
}
}
Groupes[]
Les définitions peuvent être, en option, triées par groupes sur la page des préférences. Elles sont configurées par la variable JavaScript codeLoad.groups, qui doit être un objet avec un identifiant unique par clé, et une chaîne de caractères (le nom du groupe, montré comme un en-tête sur la page de préférences) comme valeur de cet objet. Les liens Wikitexte peuvent être utilisés avec les noms des groupes.
Lorsqu'une définition d'un groupe est mise dans un identifiant existant déjà dans codeLoad.groups, il y sera alors ajouté. Toute définition sans groupe, ou avec un identifiant de groupe absent de codeLoad.groups, sera ajouté au groupe 'Autre'.
Articles[]
Le tableau des articles doit contenir les noms de pages d'un ou plusieurs page(s) CSS (finissant par .css) et/ou JavaScript (finissant par .js). Ces pages peuvent être locales (stockées dans l'espace de nom MediaWiki) ou provenir de Dev Wiki. Les importations en dehors de ces deux provenances ne sont pas supportées. Les noms de pages ne doivent contenir aucune préfixe MediaWiki. Pour les importations provenant de Dev Wiki, il faut y ajouter le préfixe dev:.
Préférences[]
Les préférences (si instaurées) doivent être un objet, et peut contenir les clés suivantes (toutes optionnelles):
| Clé | Description |
|---|---|
enabled
|
Si vraie (true), la définition sera activée par défaut. Notez qu'elle le sera aussi pour les utilisateurs non authentifiés. |
requiresGlobalPrefs
|
Si vraie (true), les préférences utilisateur pour cette définition sera exposées comme propriétés sur l'objet global window. Cela permet à CodeLoad de gérer les préférences pour des scripts n'ayant pas été spécifiquement conçus pour être utilisés avec lui.
|
globalPrefNamespace
|
Si preferences.requiresGlobalPrefs est vrai (true) et que cette variable est sous la forme d'une chaîne de caractères, les préférences utilisateur pour cette définition seront ajoutées dans un seul objet (espace de nom (namespace)), et seul cet objet sera exposé comme propriété sur l'objet global window, utilisant le nom qui lui a été donné. Peut être nécessaire pour certains scripts.
|
L'objet des préférences peut aussi contenir des clés personnalisés pour les préférences de cette définition. Un identifiant de préférence devra être utilisé pour chaque clé, et un booléen, un nombre, ou une chaîne de caractère (valeur par défaut) comme valeur.
Les noms des préférences peuvent être configurées par la variable JavaScript codeLoad.prefDescriptions, qui doit être un objet avec un identifiant de préférence pour chaque clé, et une chaîne de caractères (le nom instauré pour la préférence) comme valeur. Il est possible d'utiliser les liens Wikitexte dans les noms des préférences. Ils sont partagés à travers toutes les définitions, et si un nom est disponible, il sera utilisé sur la page des préférences au lieu de son identifiant.
Requis[]
Les requis (si instaurés) doivent être un objet, et contenir les clés suivantes (toutes optionnelles) :
| Clé | Description |
|---|---|
skins
|
Skins (e.g. oasis, monobook) pour laquelle cette définition peut être utilisée/montrée, chacune séparée par un |.
|
usergroups
|
Groupes utilisateurs (e.g. sysop (administrateurs), content-moderator (modérateurs de contenu), user (utilisateur)) pour laquelle cette définition peut être utilisée/montrée, chacune séparée par un |.
|
Message d'introduction[]
Un message optionnel peut être configuré par la variable JavaScript codeLoad.introMessage, et sera montré sous le texte d'introduction par défaut. Il peut être utilisé par exemple pour donner plus d'informations sur les définitions disponibles, ou donner un lien vers une page contenant plus de détails à ce propos. Les liens Wikitexte peuvent aussi être utilisés dans ce message.
Utiliser les préférences gardées par CodeLoad-kept[]
Les préférences instaurées ou sauvées avec CodeLoad peuvent être accessibles en appelant la fonction codeLoad.getScriptPrefs() avec comme argument un identifiant de définition. C'est une méthode recommandée pour configurer les préférences de script globales. En prenant la défintion d'AjaxRC comme exemple, le code suivant instaurera la variable prefs avec les préférences utilisateur pour la définition. Les préférences utilisateur peuvent être accessibles par les propriétés de la variable prefs.
var prefs = codeLoad.getScriptPrefs('ajaxrc');
prefs.AjaxRCRefreshText; // retournera 'Auto-rafraîchissement'
prefs.ajaxRefresh; // retournera 30000
requiresGlobalPrefs[]
Si preferences.requiresGlobalPrefs a la valeur true pour une défintion, les préférences de cette dernière seront exposées comme propriétés de l'objet global window. Ceci est disponible pour permettre la configuration facile de scripts provenant de Dev Wiki à l'aide de CodeLoad. En prenant la définition d'AjaxRC ci-dessus comme exemple, le code suivant accède aux préférences utilisateur de la définition.
window.AjaxRCRefreshText; // retournera 'Auto-rafraîchissement'
window.ajaxRefresh; // retournera 30000
globalPrefNamespace[]
Si preferences.requiresGlobalPrefs a la valeur true pour une défintion et que preferences.globalPrefNamespace est une chaîne de caractères (cf AjaxRCConfig), les préférences de cette définition seront ajoutées en un seul objet (espace de nom (namespace)) avec le nom AjaxRCConfig, et seul cet objet sera exposé comme propriété de l'objet global window. Cela peut être nécessaire pour certains scripts particuliers, selon la configuration de leurs préférences dans le script. En prenant la définition d'AjaxRC ci-dessus comme exemple, le code suivant accède aux préférences utilisateur de la définition.
window.AjaxRCConfig.AjaxRCRefreshText; // retournera 'Auto-rafraîchissement'
window.AjaxRCConfig.ajaxRefresh; // retournera 30000