aboutsummaryrefslogtreecommitdiffstats
path: root/includes/SpecialPreferences.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/SpecialPreferences.php')
-rw-r--r--includes/SpecialPreferences.php67
1 files changed, 43 insertions, 24 deletions
diff --git a/includes/SpecialPreferences.php b/includes/SpecialPreferences.php
index 6e99b3f03fe6..bdf9e1e45c98 100644
--- a/includes/SpecialPreferences.php
+++ b/includes/SpecialPreferences.php
@@ -66,6 +66,7 @@ class PreferencesForm {
$this->mAction = $request->getVal( 'action' );
$this->mReset = $request->getCheck( 'wpReset' );
$this->mPosted = $request->wasPosted();
+ $this->mSuccess = $request->getCheck( 'success' );
$this->mSaveprefs = $request->getCheck( 'wpSaveprefs' ) &&
$this->mPosted &&
@@ -113,7 +114,7 @@ class PreferencesForm {
}
if ( $this->mReset ) {
$this->resetPrefs();
- $this->mainPrefsForm( wfMsg( 'prefsreset' ) );
+ $this->mainPrefsForm( 'reset', wfMsg( 'prefsreset' ) );
} else if ( $this->mSaveprefs ) {
$this->savePreferences();
} else {
@@ -197,26 +198,33 @@ class PreferencesForm {
if ( '' != $this->mNewpass ) {
if ( $this->mNewpass != $this->mRetypePass ) {
- $this->mainPrefsForm( wfMsg( 'badretype' ) );
+ $this->mainPrefsForm( 'error', wfMsg( 'badretype' ) );
return;
}
if ( strlen( $this->mNewpass ) < $wgMinimalPasswordLength ) {
- $this->mainPrefsForm( wfMsg( 'passwordtooshort', $wgMinimalPasswordLength ) );
+ $this->mainPrefsForm( 'error', wfMsg( 'passwordtooshort', $wgMinimalPasswordLength ) );
return;
}
if (!$wgUser->checkPassword( $this->mOldpass )) {
- $this->mainPrefsForm( wfMsg( 'wrongpassword' ) );
+ $this->mainPrefsForm( 'error', wfMsg( 'wrongpassword' ) );
return;
}
if (!$wgAuth->setPassword( $wgUser, $this->mNewpass )) {
- $this->mainPrefsForm( wfMsg( 'externaldberror' ) );
+ $this->mainPrefsForm( 'error', wfMsg( 'externaldberror' ) );
return;
}
$wgUser->setPassword( $this->mNewpass );
}
$wgUser->setRealName( $this->mRealName );
+
+ if( $wgUser->getOption( 'language' ) !== $this->mUserLanguage ) {
+ $needRedirect = true;
+ } else {
+ $needRedirect = false;
+ }
+
$wgUser->setOption( 'language', $this->mUserLanguage );
$wgUser->setOption( 'variant', $this->mUserVariant );
$wgUser->setOption( 'nickname', $this->mNick );
@@ -226,7 +234,7 @@ class PreferencesForm {
if( $wgUseTeX ) {
$wgUser->setOption( 'math', $this->mMath );
}
- $wgUser->setOption( 'date', $this->validateDate( $this->mDate, 0, 10 ) );
+ $wgUser->setOption( 'date', $this->validateDate( $this->mDate, 0, 20 ) );
$wgUser->setOption( 'searchlimit', $this->validateIntOrNull( $this->mSearch ) );
$wgUser->setOption( 'contextlines', $this->validateIntOrNull( $this->mSearchLines ) );
$wgUser->setOption( 'contextchars', $this->validateIntOrNull( $this->mSearchChars ) );
@@ -259,7 +267,7 @@ class PreferencesForm {
$wgUser->setCookies();
$wgUser->saveSettings();
- $error = wfMsg( 'savedprefs' );
+ $error = false;
if( $wgEnableEmail ) {
$newadr = $this->mUserEmail;
$oldadr = $wgUser->getEmail();
@@ -274,7 +282,7 @@ class PreferencesForm {
# User can come back through the confirmation URL to re-enable email.
$result = $wgUser->sendConfirmationMail();
if( WikiError::isError( $result ) ) {
- $error = wfMsg( 'mailerror', $result->getMessage() );
+ $error = wfMsg( 'mailerror', htmlspecialchars( $result->getMessage() ) );
} else {
$error = wfMsg( 'eauthentsent', $wgUser->getName() );
}
@@ -289,9 +297,15 @@ class PreferencesForm {
}
}
+ if( $needRedirect && $error === false ) {
+ $title =& Title::makeTitle( NS_SPECIAL, "Preferences" );
+ $wgOut->redirect($title->getFullURL('success'));
+ return;
+ }
+
$wgOut->setParserOptions( ParserOptions::newFromUser( $wgUser ) );
$po = ParserOptions::newFromUser( $wgUser );
- $this->mainPrefsForm( $error );
+ $this->mainPrefsForm( $error === false ? 'success' : 'error', $error);
}
/**
@@ -378,7 +392,7 @@ class PreferencesForm {
$checked = $wgUser->getOption( $tname ) == 1 ? ' checked="checked"' : '';
$trailer = $trailer ? $trailer : '';
return "<div class='toggle'><input type='checkbox' value='1' id=\"$tname\" name=\"wpOp$tname\"$checked />" .
- " <span class='toggletext'><label for=\"$tname\">$ttext</label>$trailer</span></div>";
+ " <span class='toggletext'><label for=\"$tname\">$ttext</label>$trailer</span></div>\n";
}
function getToggles( $items ) {
@@ -404,7 +418,7 @@ class PreferencesForm {
/**
* @access private
*/
- function mainPrefsForm( $err ) {
+ function mainPrefsForm( $status , $message = '' ) {
global $wgUser, $wgOut, $wgLang, $wgContLang, $wgValidSkinNames;
global $wgAllowRealName, $wgImageLimits, $wgThumbLimits;
global $wgDisableLangConversion;
@@ -417,8 +431,12 @@ class PreferencesForm {
$wgOut->setArticleRelated( false );
$wgOut->setRobotpolicy( 'noindex,nofollow' );
- if ( '' != $err ) {
- $wgOut->addHTML( "<p class='error'>" . htmlspecialchars( $err ) . "</p>\n" );
+ if ( $this->mSuccess || 'success' == $status ) {
+ $wgOut->addWikitext( '<span class="preferences-save-success">'. wfMsg( 'savedprefs' ) . "</span>\n----" );
+ } else if ( 'error' == $status ) {
+ $wgOut->addWikitext( "<span class='error'>" . $message . "</span>\n----" );
+ } else if ( '' != $status ) {
+ $wgOut->addWikitext( $message . "\n----" );
}
$uname = $wgUser->getName();
$uid = $wgUser->getID();
@@ -661,7 +679,7 @@ class PreferencesForm {
$imageLimitOptions = null;
foreach ( $wgImageLimits as $index => $limits ) {
$selected = ($index == $this->mImageSize) ? 'selected="selected"' : '';
- $imageLimitOptions .= "<option value=\"{$index}\" {$selected}>{$limits[0]}x{$limits[1]}</option>\n";
+ $imageLimitOptions .= "<option value=\"{$index}\" {$selected}>{$limits[0]}×{$limits[1]}". wfMsgHtml('unit-pixel') ."</option>\n";
}
$imageThumbOptions = null;
@@ -669,7 +687,7 @@ class PreferencesForm {
<div><label>" . wfMsg('thumbsize') . "<select name=\"wpThumbSize\">");
foreach ( $wgThumbLimits as $index => $size ) {
$selected = ($index == $this->mThumbSize) ? 'selected="selected"' : '';
- $imageThumbOptions .= "<option value=\"{$index}\" {$selected}>{$size}px</option>\n";
+ $imageThumbOptions .= "<option value=\"{$index}\" {$selected}>{$size}". wfMsgHtml('unit-pixel') ."</option>\n";
}
$wgOut->addHTML( "{$imageThumbOptions}</select></label></div></fieldset>\n\n");
@@ -754,14 +772,14 @@ class PreferencesForm {
#
$wgOut->addHTML('<fieldset><legend>' . wfMsg('prefs-misc') . '</legend>');
- $msgUnderline = htmlspecialchars(wfMsg("tog-underline"));
- $msgUnderlinenever = htmlspecialchars(wfMsg("underline-never"));
- $msgUnderlinealways = htmlspecialchars(wfMsg("underline-always"));
- $msgUnderlinedefault = htmlspecialchars(wfMsg("underline-default"));
- $uopt = $wgUser->getOption("underline");
- $s0 = $uopt == 0 ? " selected=\"selected\"" : "";
- $s1 = $uopt == 1 ? " selected=\"selected\"" : "";
- $s2 = $uopt == 2 ? " selected=\"selected\"" : "";
+ $msgUnderline = htmlspecialchars(wfMsg('tog-underline'));
+ $msgUnderlinenever = htmlspecialchars(wfMsg('underline-never'));
+ $msgUnderlinealways = htmlspecialchars(wfMsg('underline-always'));
+ $msgUnderlinedefault = htmlspecialchars(wfMsg('underline-default'));
+ $uopt = $wgUser->getOption('underline');
+ $s0 = $uopt == 0 ? ' selected="selected"' : '';
+ $s1 = $uopt == 1 ? ' selected="selected"' : '';
+ $s2 = $uopt == 2 ? ' selected="selected"' : '';
$wgOut->addHTML("
<div class='toggle'><label>$msgUnderline
<select name=\"wpOpunderline\">
@@ -769,7 +787,8 @@ class PreferencesForm {
<option value=\"1\"$s1>$msgUnderlinealways</option>
<option value=\"2\"$s2>$msgUnderlinedefault</option>
</select>
-</label></div>
+</label>
+</div>
");
foreach ( $togs as $tname ) {
if( !array_key_exists( $tname, $this->mUsedToggles ) ) {