49 parent::__construct(
'Preferences' );
51 $services = MediaWikiServices::getInstance();
64 $out->disallowUserJs(); # Prevent hijacked user scripts from sniffing passwords etc.
69 if ( $par ==
'reset' ) {
75 $out->addModules(
'mediawiki.special.preferences.ooui' );
76 $out->addModuleStyles( [
77 'mediawiki.special.preferences.styles.ooui',
78 'mediawiki.widgets.TagMultiselectWidget.styles',
80 $out->addModuleStyles(
'oojs-ui-widgets.styles' );
83 if ( $session->get(
'specialPreferencesSaveSuccess' ) ) {
85 $session->remove(
'specialPreferencesSaveSuccess' );
86 $out->addModuleStyles(
'mediawiki.notification.convertmessagebox.styles' );
92 'class' =>
'mw-preferences-messagebox mw-notify-success successbox',
93 'id' =>
'mw-preferences-success',
94 'data-mw-autohide' =>
'false',
96 Html::element(
'p', [], $this->
msg(
'savedprefs' )->text() )
105 $user = $this->
getUser()->getInstanceForUpdate() ?: $this->
getUser();
111 $sectionTitles = $htmlForm->getPreferenceSections();
114 foreach ( $sectionTitles as $key ) {
117 'label' => $htmlForm->getLegend( $key ),
120 $out->addJsConfigVars(
'wgPreferencesTabs', $prefTabs );
132 $form = $this->preferencesFactory->getForm( $user, $context, PreferencesFormOOUI::class );
137 if ( !$this->
getAuthority()->isAllowed(
'editmyoptions' ) ) {
141 $this->
getOutput()->addWikiMsg(
'prefs-reset-intro' );
145 HTMLForm::factory(
'ooui', [], $context,
'prefs-restore' )
146 ->setSubmitTextMsg(
'restoreprefs' )
147 ->setSubmitDestructive()
148 ->setSubmitCallback( [ $this,
'submitReset' ] )
154 if ( !$this->
getAuthority()->isAllowed(
'editmyoptions' ) ) {
158 $user = $this->
getUser()->getInstanceForUpdate();
159 $this->userOptionsManager->resetOptions( $user, $this->
getContext(),
'all' );
160 $user->saveSettings();
163 $this->
getRequest()->getSession()->set(
'specialPreferencesSaveSuccess', 1 );
An IContextSource implementation which will inherit context from another source but allow individual ...
Show an error when a user tries to do something they do not have the necessary permissions for.
Parent class for all special pages.
outputHeader( $summaryMessageKey='')
Outputs a summary message on top of special pages Per default the message key is the canonical name o...
setHeaders()
Sets headers - this should be called from the execute() method of all derived classes!
getOutput()
Get the OutputPage being used for this instance.
requireLogin( $reasonMsg='exception-nologin-text', $titleMsg='exception-nologin')
If the user is not logged in, throws UserNotLoggedIn error.
getUser()
Shortcut to get the User executing this instance.
getContext()
Gets the context this SpecialPage is executed in.
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
getAuthority()
Shortcut to get the Authority executing this instance.
getRequest()
Get the WebRequest being used for this instance.
checkReadOnly()
If the wiki is currently in readonly mode, throws a ReadOnlyError.
getPageTitle( $subpage=false)
Get a self-referential title object.
addHelpLink( $to, $overrideBaseUrl=false)
Adds help link with an icon via page indicators.
A special page that allows users to change their preferences.
execute( $par)
Default execute method Checks user permissions.
PreferencesFactory $preferencesFactory
doesWrites()
Indicates whether this special page may perform database writes.
getGroupName()
Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-gro...
__construct(PreferencesFactory $preferencesFactory=null, UserOptionsManager $userOptionsManager=null)
getFormObject( $user, IContextSource $context)
Get the preferences form to use.
UserOptionsManager $userOptionsManager
Interface for objects which can provide a MediaWiki context on request.