Manual:User preferences/cs

Načítání uživatelských předvoleb

Chcete-li načíst všechny uživatelské preference, použijte UserOptionsLookup::getOptions() s objektem identity uživatele jako parametrem.

Chcete-li načíst konkrétní preferenci uživatele, použijte UserOptionsLookup::getOption() s identitou uživatele a názvem preference jako parametrem, například:

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

Pokud je preference typu multiselect nebo checkmatrix, parametr bude <preference-name><option-value>. Například pokud je název preference 'searchNs' a hodnota možnosti je '2', parametr pro getOption bude 'searchNs2'. Existuje však výjimka: Pokud preference specifikuje explicitní prefix volby, bude tento prefix použit místo názvu preference (<název-prefixu><název-volby>). Příklad naleznete v rozšíření Gadgets.

Pro jeho načtení v JavaScriptu použijte modul user.options.

Nastavení výchozích preferencí

Informace o nastavení výchozích předvoleb pro všechny uživatele naleznete v článku Příručka:$wgDefaultUserOptions.

Změna preference

Předvolby lze změnit pomocí akce Možnosti API.

Vytvoření rozhraní preferencí

Informace o vytvoření rozhraní předvoleb pro vaše funkce naleznete v článku Příručka:Hooks/GetPreferences.

Předvolby gadgetů a uživatelských skriptů

Libovolný gadget nebo uživatelský skript může definovat preferenci, jejíž název musí začínat na "userjs-". Taková preference se neobjeví v odpovědích Special:Preferences ani API:Uživatelské informace a nebude ověřena. Lze jej číst od hodnoty user.options a nastavovat až do hodnoty API:Možnosti.

Skryté předvolby API

Předvolby API jsou také definovány pomocí háčku GetPreferences, jehož typ je nastaven na 'api'. Jsou ověřeny a čitelné běžným způsobem, ale nejsou součástí formuláře Special:Preferences.

Zakázání uživatelských preferencí

Dle preference

Verze MediaWiki:
1.16

Chcete-li zakázat individuální preference pro všechny uživatele, přidejte názvy preferencí do konfigurační proměnné $wgHiddenPrefs. Například chcete-li zabránit tomu, aby si kdokoli mohl ve výchozím nastavení označit své úpravy jako drobné, nastavte v souboru LocalSettings.php následující:

$wgHiddenPrefs[] = 'minordefault';

Podle uživatelské skupiny

Verze MediaWiki:
1.22

Chcete-li zabránit jednotlivým skupinám uživatelů v úpravě jejich preferencí, můžete použít uživatelské právo 'editmyoptions'. S tímto řádkem ve vašem LocalSettings.php nemohou uživatelé ve skupině 'user' (která obsahuje všechny přihlášené uživatele) upravovat svá uživatelská nastavení:

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

Od uživatele

Není možné zakázat pouze preference určitých jednotlivých uživatelů.

Přidat uživatelské preference do rozšíření

V 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"
		}

V 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';

		// Zaškrtávací políčko
		$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
		];

		// Vstupní pole pro celé číslo
		$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
		];

		// Výběrové pole
		$ctx = RequestContext::getMain();
		$preferences_key = 'hitcounters-periodforlastviewedpages';
		$key_base = 'hitcounters-statistics-mostpopular';

		// Zajistěte, aby 'default' (výchozí) bylo vždy první položkou pole.
		$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
		];
	}
<!-- [...] -->
}

V 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",
}

Související odkazy

Category:Preferences/cs
Category:Preferences/cs