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
- Nápověda:Nastavení – uživatelská dokumentace k preferencím
- Extension:GlobalPreferences – rozšíření pro správu preferencí napříč více wikinami
- Příručka:Databázová tabulka user_properties - ukládání uživatelských preferencí