Manual:Benutzereinstellungen

This page is a translated version of the page Manual:User preferences and the translation is 52% complete.

Abrufen von Benutzereinstellungen

Um alle Einstellungen eines Benutzers abzurufen, ist UserOptionsLookup::getOptions() mit einem Benutzeridentitätsobjekt als Parameter zu verwenden.

Eine bestimmte Benutzereinstellung wird über UserOptionsLookup::getOption() mit einer Benutzeridentität und dem Namen der Einstellung als Parameter abgerufen, beispielsweise:

$emailFrequency = MediaWikiServices::getInstance()->getUserOptionsLookup()->getOption( $this->getUser(), 'echo-email-frequency' );

Wenn die Einstellung vom Typ Multiselect oder Checkmatrix ist, wird der Parameter <preference-name><option-value> sein. For example, if the preference name is 'searchNs' and the option value is '2', the parameter for getOption will be 'searchNs2'. There is an exception to this, however: If the preference specifies an explicit option prefix, that prefix will be used instead of the preference name (<prefix-name><option-name>). See the Gadgets extension for an example.

Der Parameter kann in JavaScript mit dem Modul user.options abgerufen werden.

Standardeinstellungen festlegen

Informationen darüber, wie die Standardeinstellungen für alle Benutzer festzulegen sind, finden sich im Handbuch:$wgDefaultUserOptions .

Voreinstellung ändern

Die Voreinstellungen können durch die Aktion Einstellungen API geändert werden.

Erstellen einer Voreinstellungsschnittstelle

Informationen zum Erstellen einer Einstellungsschnittstelle für eigene Funktionen finden sich im Manual:Hooks/GetPreferences .

Gadget and user script preferences

Any gadget or user script can define a preference, the name of which must start with "userjs-". Such a preference will not appear in Special:Preferences or in API:Benutzerinfo responses, and it will not be validated. Es kann von user.options gelesen und durch API:Einstellungen gesetzt werden.

Ausgeblendete API-Einstellungen

API preferences are also defined through the GetPreferences hook, with the type set to 'api'. They are validated and readable the normal ways, but are not part of the Special:Preferences form.

Benutzereinstellungen deaktivieren

Nach Benutzereinstellungen

MediaWiki Version:
1.16

To disable individual preferences for all users, add preference names to the $wgHiddenPrefs configuration variable. For example, to prevent everyone from being able to mark their edits minor by default, set the following in your LocalSettings.php:

$wgHiddenPrefs[] = 'minordefault';

Nach Benutzergruppen

MediaWiki Version:
1.22

Zum Verhindern der Bearbeitung ihrer Einstellungen durch einzelne Benutzergruppen kann das Benutzerrecht 'editmyoptions' verwendet werden. With this line in your LocalSettings.php, users in the group 'user' (which contains all logged in users) can't edit their user preferences:

$wgGroupPermissions['user']['editmyoptions'] = false;

Nach Benutzern

Es ist nicht möglich, nur bestimmte individuelle Benutzereinstellungen zu deaktivieren.

Benutzereinstellungen in Erweiterungen hinzufügen

In extension.json

	"Hooks": {
		"GetPreferences": "main"
	},
	"HookHandlers": {
		"main": {
			"class": "MediaWiki\\Extension\\ExampleExtension\\Hooks",
			"services": [
				"MainConfig",
				"UserOptionsLookup"
			]
		}
	},
	"config": {
		"PersonalSettingsEnabledPageId": {
			"type": "boolean",
			"value": false
		},
		"PersonalSettingsNumberOfMostViewedPages": {
			"type": "int",
			"value": 50
		},
		"PersonalSettingsNumberOfMostViewedPages": {
			"type": "string",
			"value": "year"
		}

In includes/Hooks.php

namespace MediaWiki\Extension\ExampleExtension;

class Hooks implements GetPreferencesHook {
	private UserOptionsLookup $userOptionsLookup;
	private bool $enabledPageId;
	private int $numberOfMostViewedPages;
	private string $periodForLastViewedPages;

	public function __construct(
		GlobalVarConfig $config,
		UserOptionsLookup $userOptionsLookup
	) {
		$this->userOptionsLookup = $userOptionsLookup;
		$this->enabledPageId = $config->get( 'PersonalSettingsEnabledPageId' );
		$this->numberOfMostViewedPages = $config->get( 'PersonalSettingsNumberOfMostViewedPages' );
		$this->periodForLastViewedPages = $config->get( 'PersonalSettingsPeriodForLastViewedPages' );
	}

	public function onGetPreferences( $user, &$preferences ) {

		$your_new_extensions_section = 'hitcounters';

		// A checkbox
		$preferences_key = 'hitcounters-pageid';
		$preferences_default = $this->userOptionsLookup->getOption( $user, $preferences_key, $this->enabledPageId );
		$preferences[$preferences_key] = [
			'type' => 'toggle',
			'label-message' => 'hitcounters-pageid-label',
			'default' => $preferences_default,
			'section' => $your_new_extensions_section
		];

		// An int input box
		$preferences_key = 'hitcounters-numberofmostviewedpages';
		$preferences_default = $this->userOptionsLookup->getOption( $user, $preferences_key, $this->numberOfMostViewedPages );
		$preferences[$preferences_key] = [
			'type' => 'int',
			'help-message' => 'hitcounters-numberofmostviewedpages-help',
			'label-message' => 'hitcounters-numberofmostviewedpages-label',
			'maxLength' => 4,
			'default' => $preferences_default,
			'section' => $your_new_extensions_section
		];

		// A select box
		$ctx = RequestContext::getMain();
		$preferences_key = 'hitcounters-periodforlastviewedpages';
		$key_base = 'hitcounters-statistics-mostpopular';

		// Ensure that 'default' is always the 1st array item
		$preferences_default = $period = $this->periodForLastViewedPages;
		$itemDisplayName = $ctx->msg( "$key_base-$period" )->text();
		$itemArray = [ $itemDisplayName => $period ];

		$period = 'week';
		$itemDisplayName = $ctx->msg( "$key_base-$period" )->text();
		$itemArray[$itemDisplayName] = $period;

		$period = 'month';
		$itemDisplayName = $ctx->msg( "$key_base-$period" )->text();
		$itemArray[$itemDisplayName] = $period;

		$period = 'year';
		$itemDisplayName = $ctx->msg( "$key_base-$period" )->text();
		$itemArray[$itemDisplayName] = $period;

		$usersItem = $this->userOptionsLookup->getOption( $user, $preferences_key, $preferences_default );

		$preferences[$preferences_key] = [
			'type' => 'select',
			'options' => $itemArray,
			'default' => $usersItem,
			'label-message' => "$preferences_key-label",
			'section' => $your_new_extensions_section
		];
	}
<!-- [...] -->
}

In i18n/en.json

{
	"hitcounters-pageid-label": "Show page ID",
	"hitcounters-numberofmostviewedpages-help": "Hide with the entry of “0”.",
	"hitcounters-numberofmostviewedpages-label": "Number of most viewed pages",
	"hitcounters-periodforlastviewedpages-label": "Period for last viewed pages:",
	"hitcounters-statistics-mostpopular-week": "Most viewed pages in the current week",
	"hitcounters-statistics-mostpopular-month": "Most viewed pages in the current month",
	"hitcounters-statistics-mostpopular-year": "Most viewed pages in the current year",
}

Siehe auch