Manuel:Accroches/GetPreferences

This page is a translated version of the page Manual:Hooks/GetPreferences and the translation is 81% complete.
GetPreferences
Disponible depuis version 1.16.0
Modification des préférences utilisateur.
Fonction à définir :
public static function onGetPreferences( User $user, array &$preferences ) { ... }
Attacher l'accroche : Dans extension.json :
{
	"Hooks": {
		"GetPreferences": "MediaWiki\\Extension\\MyExtension\\Hooks::onGetPreferences"
	}
}
Appelé de : Fichier(s) : preferences/DefaultPreferencesFactory.php
Interface : GetPreferencesHook.php

Pour plus d'information sur l'ajout des accroches (hooks), voir Accroches .
Pour des exemples d'extensions utilisant cette accroche, voir Category:GetPreferences extensions/fr .

Utilisation

Paramètres

Paramètre/Option Description
$user Utilisateur dont les préférences vont être modifiées.
&$preferences Tableau de description des préférences, à transmettre à un objet HTMLForm

Exemple

In extension.json:

"Hooks": {
  "GetPreferences": [ "MediaWiki\\Extension\\ExampleExtension\\Hooks::onGetPreferences" ]
}

In includes/Hooks.php:

namespace MediaWiki\Extension\ExampleExtension;

class Hooks {
	/**
	 * @param User $user
	 * @param array $preferences
	 */
	public static function onGetPreferences( $user, &$preferences ) {
		// A checkbox
		$preferences['mypref'] = [
			'type' => 'toggle',
			'label-message' => 'tog-mypref', // a system message
			'section' => 'personal/info',
		];

		// A set of radio buttons. Notice that in the 'options' array,
		// the keys are the text (not system messages), and the values are the HTML values.
		// They keys/values might be the opposite of what you expect. PHP's array_flip()
		// can be helpful here.
		$preferences['mypref2'] = [
			'type' => 'radio',
			'label-message' => 'tog-mypref2', // a system message
			'section' => 'personal/info',
			// Array of options. Key = text to display. Value = HTML <option> value.
			'options' => [
				'Pick me please' => 'choice1',
				'No, pick me!' => 'choice2',
				'Seriously, pick me right now' => 'choice3',
			],
			'default' => 'choice1',  // A 'default' key is required!
			'help-message' => 'tog-help-mypref2', // a system message (optional)
		];
	}
}

Onglets et sections

The section array key specifies which tab and section of Preferences contains your preferences. If your section value is foo/bar, this means your preference will appear on the foo tab (named by system message prefs-foo) within the bar section (named by system message prefs-bar). Si l'onglet ou la section correspondante n'existent pas, ils sont créés automatiquement.

Liste des onglets par défaut

Indicatif Présenter comme
personal Informations personnelles
rendering Apparence
editing Modification
rc Modifications récentes
watchlist Liste de suivi
misc Préférences diverses

Types supportés

Types apparents

Le type peut prendre diverses valeurs trouvées dans le tableau HTMLForm::$typeMappings du fichier includes/htmlform/HTMLForm.php, incluant info, multiselect, radio, etc.

Most preferences are stored in the same format as is used by the HTMLFormField, but in the case of 'type' => 'usersmultiselect' a transformation should be carried out from a newline-separated list of usernames (which is what the form widget works with) and a newline-separated list of user IDs (which is what gets stored in the database). See the treatment of email-blacklist (in core) or echo-notifications-blacklist (in Echo ) for examples of this.

Floats

For float types, you can set min and max, which will be validated on save.

Préférences d'API

Les préférences API utilisent le type api. Elles ne sont pas affichées dans Special:Preferences. They are usually set via custom front-end interfaces that call the API.

Note that you should not use 'type' => 'hidden' for API preferences (that type exists for HTML forms, not preferences).

Préférences par défaut

To set the default value for a preference (i.e. the value that is set for a new user that hasn't customized their preferences yet), add the setting to the $wgDefaultUserOptions global variable. Use the same key name as you use for $preferences in the hook.

Par ailleurs, si vous écrivez une extension, vous pouvez ajouter à la section DefaultUserOptions du fichier extensions.json.