$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 &&
}
if ( $this->mReset ) {
$this->resetPrefs();
- $this->mainPrefsForm( wfMsg( 'prefsreset' ) );
+ $this->mainPrefsForm( 'reset', wfMsg( 'prefsreset' ) );
} else if ( $this->mSaveprefs ) {
$this->savePreferences();
} else {
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 );
$wgUser->setCookies();
$wgUser->saveSettings();
- $error = wfMsg( 'savedprefs' );
+ $error = false;
if( $wgEnableEmail ) {
$newadr = $this->mUserEmail;
$oldadr = $wgUser->getEmail();
# 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() );
}
}
}
+ 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);
}
/**
/**
* @access private
*/
- function mainPrefsForm( $err ) {
+ function mainPrefsForm( $status , $message = '' ) {
global $wgUser, $wgOut, $wgLang, $wgContLang, $wgValidSkinNames;
global $wgAllowRealName, $wgImageLimits, $wgThumbLimits;
global $wgDisableLangConversion;
$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();