if (self::$defaultPreferences)
return self::$defaultPreferences;
- global $wgLang, $wgRCMaxAge;
-
+ global $wgRCMaxAge;
+
$defaultPreferences = array();
self::profilePreferences( $user, $defaultPreferences );
- self::emailPreferences( $user, $defaultPreferences );
self::skinPreferences( $user, $defaultPreferences );
- self::mathPreferences( $user, $defaultPreferences );
self::filesPreferences( $user, $defaultPreferences );
+ self::mathPreferences( $user, $defaultPreferences );
self::datetimePreferences( $user, $defaultPreferences );
self::renderingPreferences( $user, $defaultPreferences );
self::editingPreferences( $user, $defaultPreferences );
self::watchlistPreferences( $user, $defaultPreferences );
self::searchPreferences( $user, $defaultPreferences );
self::miscPreferences( $user, $defaultPreferences );
-
+
wfRunHooks( 'GetPreferences', array( $user, &$defaultPreferences ) );
-
+
+ ## Remove preferences that wikis don't want to use
+ global $wgHiddenPrefs;
+ foreach ( $wgHiddenPrefs as $pref ) {
+ if ( isset( $defaultPreferences[$pref] ) ) {
+ unset( $defaultPreferences[ $pref ] );
+ }
+ }
+
## Prod in defaults from the user
global $wgDefaultUserOptions;
foreach( $defaultPreferences as $name => &$info ) {
// Already set, no problem
continue;
} elseif ( !is_null( $prefFromUser ) && // Make sure we're not just pulling nothing
- $field->validate( $prefFromUser, $user->mOptions ) ) {
+ $field->validate( $prefFromUser, $user->mOptions ) === true ) {
$info['default'] = $prefFromUser;
- } elseif( $field->validate( $globalDefault, $user->mOptions ) ) {
+ } elseif( $field->validate( $globalDefault, $user->mOptions ) === true ) {
$info['default'] = $globalDefault;
+ } else {
+ throw new MWException( "Global default $globalDefault is invalid for field $name" );
}
}
'type' => 'info',
'label-message' => 'username',
'default' => $user->getName(),
- 'section' => 'personal',
+ 'section' => 'personal/info',
);
$defaultPreferences['userid'] =
'type' => 'info',
'label-message' => 'uid',
'default' => $user->getId(),
- 'section' => 'personal',
+ 'section' => 'personal/info',
);
# Get groups to which the user belongs
count($userEffectiveGroupsArray) ),
'default' => $wgLang->commaList( $userEffectiveGroupsArray ),
'raw' => true,
- 'section' => 'personal',
+ 'section' => 'personal/info',
);
$defaultPreferences['editcount'] =
'type' => 'info',
'label-message' => 'prefs-edits',
'default' => $user->getEditCount(),
- 'section' => 'personal',
+ 'section' => 'personal/info',
);
if ($user->getRegistration()) {
'type' => 'info',
'label-message' => 'prefs-registration',
'default' => $wgLang->timeanddate( $user->getRegistration() ),
- 'section' => 'personal',
+ 'section' => 'personal/info',
);
}
// Actually changeable stuff
- global $wgAllowRealName;
- if ($wgAllowRealName) {
- $defaultPreferences['realname'] =
- array(
- 'type' => 'text',
- 'default' => $user->getRealName(),
- 'section' => 'personal',
- 'label-message' => 'yourrealname',
- 'help-message' => 'prefs-help-realname',
- );
- }
-
- global $wgEmailConfirmToEdit;
-
- $defaultPreferences['emailaddress'] =
+ global $wgAuth;
+ $defaultPreferences['realname'] =
array(
- 'type' => 'text',
- 'default' => $user->getEmail(),
- 'section' => 'personal',
- 'label-message' => 'youremail',
- 'help-message' => $wgEmailConfirmToEdit
- ? 'prefs-help-email-required'
- : 'prefs-help-email',
- 'validation-callback' => array( 'Preferences', 'validateEmail' ),
+ 'type' => $wgAuth->allowPropChange( 'realname' ) ? 'text' : 'info',
+ 'default' => $user->getRealName(),
+ 'section' => 'personal/info',
+ 'label-message' => 'yourrealname',
+ 'help-message' => 'prefs-help-realname',
);
-
- global $wgAuth;
+
+ $defaultPreferences['gender'] =
+ array(
+ 'type' => 'select',
+ 'section' => 'personal/info',
+ 'options' => array(
+ wfMsg('gender-male') => 'male',
+ wfMsg('gender-female') => 'female',
+ wfMsg('gender-unknown') => 'unknown',
+ ),
+ 'label-message' => 'yourgender',
+ 'help-message' => 'prefs-help-gender',
+ );
+
if ($wgAuth->allowPasswordChange()) {
global $wgUser; // For skin.
- $link = $wgUser->getSkin()->link( SpecialPage::getTitleFor( 'ResetPass' ),
+ $link = $wgUser->getSkin()->link( SpecialPage::getTitleFor( 'Resetpass' ),
wfMsgHtml( 'prefs-resetpass' ), array() ,
array('returnto' => SpecialPage::getTitleFor( 'Preferences') ) );
'raw' => true,
'default' => $link,
'label-message' => 'yourpassword',
- 'section' => 'personal',
+ 'section' => 'personal/info',
);
}
- $defaultPreferences['gender'] =
+ $defaultPreferences['rememberpassword'] =
array(
- 'type' => 'select',
- 'section' => 'personal',
- 'options' => array(
- wfMsg('gender-male') => 'male',
- wfMsg('gender-female') => 'female',
- wfMsg('gender-unknown') => 'unknown',
- ),
- 'label-message' => 'yourgender',
- 'help-message' => 'prefs-help-gender',
+ 'type' => 'toggle',
+ 'label-message' => 'tog-rememberpassword',
+ 'section' => 'personal/info',
);
// Language
$defaultPreferences['language'] =
array(
'type' => 'select',
- 'section' => 'personal',
+ 'section' => 'personal/i18n',
'options' => $options,
'label-message' => 'yourlanguage',
);
'label-message' => 'yourvariant',
'type' => 'select',
'options' => $options,
- 'section' => 'personal',
+ 'section' => 'personal/i18n',
);
}
}
$defaultPreferences['noconvertlink'] =
array(
'type' => 'toggle',
- 'section' => 'misc',
+ 'section' => 'personal/i18n',
'label-message' => 'tog-noconvertlink',
);
}
global $wgMaxSigChars;
$defaultPreferences['nickname'] =
array(
- 'type' => 'text',
+ 'type' => $wgAuth->allowPropChange( 'nickname' ) ? 'text' : 'info',
'maxlength' => $wgMaxSigChars,
'label-message' => 'yournick',
'validation-callback' =>
array( 'Preferences', 'validateSignature' ),
- 'section' => 'personal',
+ 'section' => 'personal/signature',
'filter-callback' => array( 'Preferences', 'cleanSignature' ),
);
$defaultPreferences['fancysig'] =
array(
'type' => 'toggle',
'label-message' => 'tog-fancysig',
- 'section' => 'personal'
+ 'section' => 'personal/signature'
);
- $defaultPreferences['rememberpassword'] =
+ ## Email stuff
+
+ global $wgEmailConfirmToEdit;
+
+ $defaultPreferences['emailaddress'] =
array(
- 'type' => 'toggle',
- 'label-message' => 'tog-rememberpassword',
- 'section' => 'personal',
+ 'type' => $wgAuth->allowPropChange( 'emailaddress' ) ? 'text' : 'info',
+ 'default' => $user->getEmail(),
+ 'section' => 'personal/email',
+ 'label-message' => 'youremail',
+ 'help-message' => $wgEmailConfirmToEdit
+ ? 'prefs-help-email-required'
+ : 'prefs-help-email',
+ 'validation-callback' => array( 'Preferences', 'validateEmail' ),
);
- }
-
- static function emailPreferences( $user, &$defaultPreferences ) {
- global $wgLang;
-
- ## Email #######################################
- ## Email stuff
+
global $wgEnableEmail, $wgEnableUserEmail, $wgEmailAuthentication;
+ $disableEmailPrefs = false;
+
if ( $wgEmailAuthentication ) {
if ( $user->getEmail() ) {
if( $user->getEmailAuthenticationTimestamp() ) {
$time = $wgLang->timeAndDate( $user->getEmailAuthenticationTimestamp(), true );
$d = $wgLang->date( $user->getEmailAuthenticationTimestamp(), true );
$t = $wgLang->time( $user->getEmailAuthenticationTimestamp(), true );
- $emailauthenticated = wfMsg('emailauthenticated', $time, $d, $t ).'<br />';
+ $emailauthenticated = htmlspecialchars(wfMsg('emailauthenticated', $time, $d, $t )).'<br />';
$disableEmailPrefs = false;
} else {
$disableEmailPrefs = true;
global $wgUser; // wgUser is okay here, it's for display
$skin = $wgUser->getSkin();
- $emailauthenticated = wfMsg('emailnotauthenticated').'<br />' .
+ $emailauthenticated = wfMsgHtml('emailnotauthenticated').'<br />' .
$skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Confirmemail' ),
wfMsg( 'emailconfirmlink' ) ) . '<br />';
}
} else {
- $emailauthenticated = wfMsg( 'noemailprefs' );
+ $disableEmailPrefs = true;
+ $emailauthenticated = wfMsgHtml( 'noemailprefs' );
}
$defaultPreferences['emailauthentication'] =
array(
'type' => 'info',
'raw' => true,
- 'section' => 'email',
+ 'section' => 'personal/email',
'label-message' => 'prefs-emailconfirm-label',
'default' => $emailauthenticated,
);
array(
'type' => 'toggle',
'invert' => true,
- 'section' => 'email',
+ 'section' => 'personal/email',
'label-message' => 'allowemail',
+ 'disabled' => $disableEmailPrefs,
);
$defaultPreferences['ccmeonemails'] =
array(
'type' => 'toggle',
- 'section' => 'email',
+ 'section' => 'personal/email',
'label-message' => 'tog-ccmeonemails',
+ 'disabled' => $disableEmailPrefs,
);
}
$defaultPreferences['enotifwatchlistpages'] =
array(
'type' => 'toggle',
- 'section' => 'email',
+ 'section' => 'personal/email',
'label-message' => 'tog-enotifwatchlistpages',
+ 'disabled' => $disableEmailPrefs,
);
$defaultPreferences['enotifusertalkpages'] =
array(
'type' => 'toggle',
- 'section' => 'email',
+ 'section' => 'personal/email',
'label-message' => 'tog-enotifusertalkpages',
+ 'disabled' => $disableEmailPrefs,
);
$defaultPreferences['enotifminoredits'] =
array(
'type' => 'toggle',
- 'section' => 'email',
+ 'section' => 'personal/email',
'label-message' => 'tog-enotifminoredits',
+ 'disabled' => $disableEmailPrefs,
);
$defaultPreferences['enotifrevealaddr'] =
array(
'type' => 'toggle',
- 'section' => 'email',
- 'label-message' => 'tog-enotifrevealaddr'
+ 'section' => 'personal/email',
+ 'label-message' => 'tog-enotifrevealaddr',
+ 'disabled' => $disableEmailPrefs,
);
}
}
static function skinPreferences( $user, &$defaultPreferences ) {
## Skin #####################################
- global $wgAllowUserSkin;
-
- if ($wgAllowUserSkin) {
- $defaultPreferences['skin'] =
- array(
- 'type' => 'radio',
- 'options' => self::generateSkinOptions( $user ),
- 'label' => ' ',
- 'section' => 'skin',
- );
- }
+ $defaultPreferences['skin'] =
+ array(
+ 'type' => 'radio',
+ 'options' => self::generateSkinOptions( $user ),
+ 'label' => ' ',
+ 'section' => 'rendering/skin',
+ );
$selectedSkin = $user->getOption( 'skin' );
if ( in_array( $selectedSkin, array( 'cologneblue', 'standard' ) ) ) {
+ global $wgLang;
$settings = array_flip($wgLang->getQuickbarSettings());
$defaultPreferences['quickbar'] =
array(
'type' => 'radio',
'options' => $settings,
- 'section' => 'skin',
+ 'section' => 'rendering/skin',
'label-message' => 'qbsettings',
);
}
array(
'type' => 'radio',
'options' =>
- array_flip( array_map( 'wfMsg', $wgLang->getMathNames() ) ),
+ array_flip( array_map( 'wfMsgHtml', $wgLang->getMathNames() ) ),
'label' => ' ',
- 'section' => 'math',
+ 'section' => 'rendering/math',
);
}
}
'type' => 'select',
'options' => self::getImageSizes(),
'label-message' => 'imagemaxsize',
- 'section' => 'files',
+ 'section' => 'rendering/files',
);
$defaultPreferences['thumbsize'] =
array(
'type' => 'select',
'options' => self::getThumbSizes(),
'label-message' => 'thumbsize',
- 'section' => 'files',
+ 'section' => 'rendering/files',
);
}
array(
'type' => 'radio',
'options' => $dateOptions,
- 'label-message' => 'dateformat',
- 'section' => 'datetime',
+ 'label' => ' ',
+ 'section' => 'datetime/dateformat',
);
}
'raw' => 1,
'label-message' => 'servertime',
'default' => $nowserver,
- 'section' => 'datetime',
+ 'section' => 'datetime/timeoffset',
);
$defaultPreferences['nowlocal'] =
'raw' => 1,
'label-message' => 'localtime',
'default' => $nowlocal,
- 'section' => 'datetime',
+ 'section' => 'datetime/timeoffset',
);
// Grab existing pref.
'label-message' => 'timezonelegend',
'options' => self::getTimezoneOptions(),
'default' => $tzSetting,
- 'section' => 'datetime',
+ 'section' => 'datetime/timeoffset',
);
}
wfMsg( 'underline-default' ) => 2,
),
'label-message' => 'tog-underline',
- 'section' => 'rendering',
+ 'section' => 'rendering/advancedrendering',
);
$stubThresholdValues = array( 0, 50, 100, 500, 1000, 2000, 5000, 10000 );
$defaultPreferences['stubthreshold'] =
array(
'type' => 'selectorother',
- 'section' => 'rendering',
+ 'section' => 'rendering/advancedrendering',
'options' => $stubThresholdOptions,
'label' => wfMsg('stub-threshold'), // Raw HTML message. Yay?
);
$defaultPreferences['highlightbroken'] =
array(
'type' => 'toggle',
- 'section' => 'rendering',
+ 'section' => 'rendering/advancedrendering',
'label' => wfMsg('tog-highlightbroken'), // Raw HTML
);
$defaultPreferences['showtoc'] =
array(
'type' => 'toggle',
- 'section' => 'rendering',
+ 'section' => 'rendering/advancedrendering',
'label-message' => 'tog-showtoc',
);
$defaultPreferences['nocache'] =
array(
'type' => 'toggle',
'label-message' => 'tog-nocache',
- 'section' => 'rendering',
+ 'section' => 'rendering/advancedrendering',
);
$defaultPreferences['showhiddencats'] =
array(
'type' => 'toggle',
- 'section' => 'rendering',
+ 'section' => 'rendering/advancedrendering',
'label-message' => 'tog-showhiddencats'
);
$defaultPreferences['showjumplinks'] =
array(
'type' => 'toggle',
- 'section' => 'rendering',
+ 'section' => 'rendering/advancedrendering',
'label-message' => 'tog-showjumplinks',
);
$defaultPreferences['justify'] =
array(
'type' => 'toggle',
- 'section' => 'rendering',
+ 'section' => 'rendering/advancedrendering',
'label-message' => 'tog-justify',
);
$defaultPreferences['numberheadings'] =
array(
'type' => 'toggle',
- 'section' => 'rendering',
+ 'section' => 'rendering/advancedrendering',
'label-message' => 'tog-numberheadings',
);
}
array(
'type' => 'int',
'label-message' => 'columns',
- 'section' => 'editing',
+ 'section' => 'editing/textboxsize',
'min' => 4,
'max' => 1000,
);
array(
'type' => 'int',
'label-message' => 'rows',
- 'section' => 'editing',
+ 'section' => 'editing/textboxsize',
'min' => 4,
'max' => 1000,
);
$defaultPreferences['previewontop'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-previewontop',
);
$defaultPreferences['previewonfirst'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-previewonfirst',
);
$defaultPreferences['editsection'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-editsection',
);
$defaultPreferences['editsectiononrightclick'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-editsectiononrightclick',
);
$defaultPreferences['editondblclick'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-editondblclick',
);
$defaultPreferences['editwidth'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-editwidth',
);
$defaultPreferences['showtoolbar'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-showtoolbar',
);
$defaultPreferences['minordefault'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-minordefault',
);
$defaultPreferences['externaleditor'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-externaleditor',
);
$defaultPreferences['externaldiff'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-externaldiff',
);
$defaultPreferences['forceeditsummary'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-forceeditsummary',
);
$defaultPreferences['uselivepreview'] =
array(
'type' => 'toggle',
- 'section' => 'editing',
+ 'section' => 'editing/advancedediting',
'label-message' => 'tog-uselivepreview',
);
}
array(
'type' => 'int',
'label-message' => 'recentchangesdays',
- 'section' => 'rc',
+ 'section' => 'rc/display',
'min' => 1,
'max' => ceil($wgRCMaxAge / (3600*24)),
);
array(
'type' => 'int',
'label-message' => 'recentchangescount',
- 'section' => 'rc',
+ 'help-message' => 'prefs-help-recentchangescount',
+ 'section' => 'rc/display',
);
$defaultPreferences['usenewrc'] =
array(
'type' => 'toggle',
'label-message' => 'tog-usenewrc',
- 'section' => 'rc',
+ 'section' => 'rc/advancedrc',
);
$defaultPreferences['hideminor'] =
array(
'type' => 'toggle',
'label-message' => 'tog-hideminor',
- 'section' => 'rc',
+ 'section' => 'rc/advancedrc',
);
global $wgUseRCPatrol;
$defaultPreferences['hidepatrolled'] =
array(
'type' => 'toggle',
- 'section' => 'rc',
+ 'section' => 'rc/advancedrc',
'label-message' => 'tog-hidepatrolled',
);
$defaultPreferences['newpageshidepatrolled'] =
array(
'type' => 'toggle',
- 'section' => 'rc',
+ 'section' => 'rc/advancedrc',
'label-message' => 'tog-newpageshidepatrolled',
);
}
$defaultPreferences['shownumberswatching'] =
array(
'type' => 'toggle',
- 'section' => 'rc',
+ 'section' => 'rc/advancedrc',
'label-message' => 'tog-shownumberswatching',
);
}
static function watchlistPreferences( $user, &$defaultPreferences ) {
global $wgUseRCPatrol;
## Watchlist #####################################
- $defaultPreferences['wllimit'] =
+ $defaultPreferences['watchlistdays'] =
array(
'type' => 'int',
'min' => 0,
- 'max' => 1000,
- 'label-message' => 'prefs-watchlist-edits',
- 'section' => 'watchlist'
+ 'max' => 7,
+ 'section' => 'watchlist/display',
+ 'label-message' => 'prefs-watchlist-days',
);
- $defaultPreferences['watchlistdays'] =
+ $defaultPreferences['wllimit'] =
array(
'type' => 'int',
'min' => 0,
- 'max' => 7,
- 'section' => 'watchlist',
- 'label-message' => 'prefs-watchlist-days',
+ 'max' => 1000,
+ 'label-message' => 'prefs-watchlist-edits',
+ 'section' => 'watchlist/display'
);
$defaultPreferences['extendwatchlist'] =
array(
'type' => 'toggle',
- 'section' => 'watchlist',
+ 'section' => 'watchlist/advancedwatchlist',
'label-message' => 'tog-extendwatchlist',
);
$defaultPreferences['watchlisthideminor'] =
array(
'type' => 'toggle',
- 'section' => 'watchlist',
+ 'section' => 'watchlist/advancedwatchlist',
'label-message' => 'tog-watchlisthideminor',
);
$defaultPreferences['watchlisthidebots'] =
array(
'type' => 'toggle',
- 'section' => 'watchlist',
+ 'section' => 'watchlist/advancedwatchlist',
'label-message' => 'tog-watchlisthidebots',
);
$defaultPreferences['watchlisthideown'] =
array(
'type' => 'toggle',
- 'section' => 'watchlist',
+ 'section' => 'watchlist/advancedwatchlist',
'label-message' => 'tog-watchlisthideown',
);
$defaultPreferences['watchlisthideanons'] =
array(
'type' => 'toggle',
- 'section' => 'watchlist',
+ 'section' => 'watchlist/advancedwatchlist',
'label-message' => 'tog-watchlisthideanons',
);
$defaultPreferences['watchlisthideliu'] =
array(
'type' => 'toggle',
- 'section' => 'watchlist',
+ 'section' => 'watchlist/advancedwatchlist',
'label-message' => 'tog-watchlisthideliu',
);
$defaultPreferences['watchlisthidepatrolled'] =
array(
'type' => 'toggle',
- 'section' => 'watchlist',
+ 'section' => 'watchlist/advancedwatchlist',
'label-message' => 'tog-watchlisthidepatrolled',
);
}
if ( $user->isAllowed( $action ) ) {
$defaultPreferences[$pref] = array(
'type' => 'toggle',
- 'section' => 'watchlist',
+ 'section' => 'watchlist/advancedwatchlist',
'label-message' => "tog-$pref",
);
}
array(
'type' => 'int',
'label-message' => 'resultsperpage',
- 'section' => 'searchoptions',
+ 'section' => 'searchoptions/display',
'min' => 0,
);
$defaultPreferences['contextlines'] =
array(
'type' => 'int',
'label-message' => 'contextlines',
- 'section' => 'searchoptions',
+ 'section' => 'searchoptions/display',
'min' => 0,
);
$defaultPreferences['contextchars'] =
array(
'type' => 'int',
'label-message' => 'contextchars',
- 'section' => 'searchoptions',
+ 'section' => 'searchoptions/display',
'min' => 0,
+ );
+ global $wgEnableMWSuggest;
+ if ($wgEnableMWSuggest) {
+ $defaultPreferences['disablesuggest'] =
+ array(
+ 'type' => 'toggle',
+ 'label-message' => 'mwsuggest-disable',
+ 'section' => 'searchoptions/display',
+ );
+ }
+
+ $defaultPreferences['searcheverything'] =
+ array(
+ 'type' => 'toggle',
+ 'label-message' => 'searcheverything-enable',
+ 'section' => 'searchoptions/advancedsearchoptions',
);
// Searchable namespaces back-compat with old format
if (!$displayNs) $displayNs = wfMsg( 'blanknamespace' );
+ $displayNs = htmlspecialchars( $displayNs );
$nsOptions[$displayNs] = $ns;
}
'type' => 'multiselect',
'label-message' => 'defaultns',
'options' => $nsOptions,
- 'section' => 'searchoptions',
+ 'section' => 'searchoptions/advancedsearchoptions',
'prefix' => 'searchNs',
);
-
- global $wgEnableMWSuggest;
- if ($wgEnableMWSuggest) {
- $defaultPreferences['disablesuggest'] =
- array(
- 'type' => 'toggle',
- 'label-message' => 'mwsuggest-disable',
- 'section' => 'searchoptions',
- );
- }
+
+
+
}
static function miscPreferences( $user, &$defaultPreferences ) {
$defaultPreferences['diffonly'] =
array(
'type' => 'toggle',
- 'section' => 'misc',
+ 'section' => 'misc/diffs',
'label-message' => 'tog-diffonly',
);
$defaultPreferences['norollbackdiff'] =
array(
'type' => 'toggle',
- 'section' => 'misc',
+ 'section' => 'misc/diffs',
'label-message' => 'tog-norollbackdiff',
);
+
+ // Stuff from Language::getExtraUserToggles()
+ global $wgContLang;
+
+ $toggles = $wgContLang->getExtraUserToggles();
+
+ foreach( $toggles as $toggle ) {
+ $defaultPreferences[$toggle] =
+ array(
+ 'type' => 'toggle',
+ 'section' => 'personal/i18n',
+ 'label-message' => "tog-$toggle",
+ );
+ }
}
static function generateSkinOptions( $user ) {
$ret = array();
$mptitle = Title::newMainPage();
- $previewtext = wfMsg( 'skin-preview' );
+ $previewtext = wfMsgHtml( 'skin-preview' );
# Only show members of Skin::getSkinNames() rather than
# $skinNames (skins is all skin names from Language.php)
$validSkinNames = Skin::getUsableSkins();
$msgName = "skinname-{$skinkey}";
$localisedSkinName = wfMsg( $msgName );
if ( !wfEmptyMsg( $msgName, $localisedSkinName ) ) {
- $skinname = $localisedSkinName;
+ $skinname = htmlspecialchars($localisedSkinName);
}
}
asort($validSkinNames);
global $wgAllowUserCss, $wgAllowUserJs;
if( $wgAllowUserCss ) {
$cssPage = Title::makeTitleSafe( NS_USER, $user->getName().'/'.$skinkey.'.css' );
- $customCSS = $sk->makeLinkObj( $cssPage, wfMsgExt('prefs-custom-css', array() ) );
+ $customCSS = $sk->link( $cssPage, wfMsgHtml( 'prefs-custom-css' ) );
$extraLinks .= " ($customCSS)";
}
if( $wgAllowUserJs ) {
$jsPage = Title::makeTitleSafe( NS_USER, $user->getName().'/'.$skinkey.'.js' );
- $customJS = $sk->makeLinkObj( $jsPage, wfMsgHtml('prefs-custom-js') );
+ $customJS = $sk->link( $jsPage, wfMsgHtml( 'prefs-custom-js' ) );
$extraLinks .= " ($customJS)";
}
if( $skinkey == $wgDefaultSkin )
- $sn .= ' (' . wfMsg( 'default' ) . ')';
+ $sn .= ' (' . wfMsgHtml( 'default' ) . ')';
$display = "$sn $previewlink{$extraLinks}";
$ret[$display] = $skinkey;
}
$epoch = '20010115161234'; # Wikipedia day
foreach( $dateopts as $key ) {
if( $key == 'default' ) {
- $formatted = wfMsg( 'datedefault' );
+ $formatted = wfMsgHtml( 'datedefault' );
} else {
- $formatted = $wgLang->timeanddate( $epoch, false, $key );
+ $formatted = htmlspecialchars($wgLang->timeanddate( $epoch, false, $key ));
}
$ret[$formatted] = $key;
}
}
static function validateEmail( $email, $alldata ) {
- global $wgUser; // To check
-
- if ( $email && !$wgUser->isValidEmailAddr( $email ) ) {
+ if ( $email && !User::isValidEmailAddr( $email ) ) {
return wfMsgExt( 'invalidemailaddress', 'parseinline' );
}
}
}
- static function tryFormSubmit( $formData ) {
+ static function tryFormSubmit( $formData, $entryPoint = 'internal' ) {
global $wgUser, $wgEmailAuthentication, $wgEnableEmail;
+ $result = true;
+
// Filter input
foreach( array_keys($formData) as $name ) {
if ( isset(self::$saveFilters[$name]) ) {
$result = $wgUser->sendConfirmationMail();
if( WikiError::isError( $result ) ) {
return wfMsg( 'mailerror', htmlspecialchars( $result->getMessage() ) );
- } else {
- // TODO return this somehow
-# wfMsg( 'eauthentsent', $wgUser->getName() );
+ } elseif ($entryPoint == 'ui') {
+ $result = 'eauth';
}
}
} else {
}
// Fortunately, the realname field is MUCH simpler
- global $wgAllowRealName;
- if ($wgAllowRealName) {
+ global $wgHiddenPrefs;
+ if ( !in_array( 'realname', $wgHiddenPrefs ) ) {
$realName = $formData['realname'];
$wgUser->setRealName( $realName );
}
$wgUser->saveSettings();
- // Done
- global $wgOut;
- $wgOut->redirect( SpecialPage::getTitleFor( 'Preferences' )->getFullURL( 'success' ) );
+ return $result;
+ }
+
+ public static function tryUISubmit( $formData ) {
+ $res = self::tryFormSubmit( $formData, 'ui' );
+
+ if ($res) {
+ $urlOptions = array( 'success' );
+ if ($res === 'eauth')
+ $urlOptions[] = 'eauth';
+
+ $queryString = implode( '&', $urlOptions );
+
+ $url = SpecialPage::getTitleFor( 'Preferences' )->getFullURL( $queryString );
+ global $wgOut;
+ $wgOut->redirect( $url );
+ }
return true;
}
$sk = $wgUser->getSkin();
$t = SpecialPage::getTitleFor( 'Preferences', 'reset' );
- $html .= "\n" . $sk->link( $t, wfMsg( 'restoreprefs' ) );
+ $html .= "\n" . $sk->link( $t, wfMsgHtml( 'restoreprefs' ) );
+
+ $html = Xml::tags( 'div', array( 'class' => 'mw-prefs-buttons' ), $html );
return $html;
}