Manuel:Accroches/GetPreferences

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Hooks/GetPreferences and the translation is 78% complete.
Other languages:
English • ‎español • ‎français • ‎polski • ‎português do Brasil • ‎中文 • ‎日本語
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 un rappel (hook) :

In extension.json:

{
	"Hooks": {
		"GetPreferences": "MyExtensionHooks::onGetPreferences"
	}
}

For MediaWiki ≤1.25:

$wgHooks['GetPreferences'][] = 'MyExtensionHooks::onGetPreferences';
Appelé de :Fichier(s) : preferences/DefaultPreferencesFactory.php

Pour plus d'information sur l'ajout des accroches (hooks), voir Manuel: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). If no such tab or section exists, it is created automatically.

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.

Préférences d'API

API preferences use type 'api'. They are not displayed in Special: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.

Alternatively, if you're writing an extension, you can add to the DefaultUserOptions section of the file extensions.json.