X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSpecialPreferences.php;h=4616fcc02583dde1199f9e45cc479c67bdc15fc0;hb=1807fc9c85141e7bf23bd5c936396fc2bd1ee16d;hp=d860d7cef54d4e8e37a1ef3b309fe3afb983e25e;hpb=f0f8d2a32933c08b6ae01d1fa28b9a232d62ef07;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialPreferences.php b/includes/SpecialPreferences.php index d860d7cef5..4616fcc025 100644 --- a/includes/SpecialPreferences.php +++ b/includes/SpecialPreferences.php @@ -8,9 +8,6 @@ if( !defined( 'MEDIAWIKI' ) ) die(); -/* to get a list of languages in setting user's language preference */ -require_once('languages/Names.php'); - /** * Entry point that create the "Preferences" object */ @@ -33,13 +30,14 @@ class PreferencesForm { var $mUserLanguage, $mUserVariant; var $mSearch, $mRecent, $mHourDiff, $mSearchLines, $mSearchChars, $mAction; var $mReset, $mPosted, $mToggles, $mSearchNs, $mRealName, $mImageSize; + var $mUnderline; /** * Constructor * Load some values */ function PreferencesForm( &$request ) { - global $wgLang, $wgContLang, $wgAllowRealName; + global $wgLang, $wgContLang, $wgUser, $wgAllowRealName; $this->mQuickbar = $request->getVal( 'wpQuickbar' ); $this->mOldpass = $request->getVal( 'wpOldpass' ); @@ -52,22 +50,26 @@ class PreferencesForm { $this->mMath = $request->getVal( 'wpMath' ); $this->mDate = $request->getVal( 'wpDate' ); $this->mUserEmail = $request->getVal( 'wpUserEmail' ); - $this->mRealName = ($wgAllowRealName) ? $request->getVal( 'wpRealName' ) : ''; + $this->mRealName = $wgAllowRealName ? $request->getVal( 'wpRealName' ) : ''; $this->mEmailFlag = $request->getCheck( 'wpEmailFlag' ) ? 1 : 0; $this->mNick = $request->getVal( 'wpNick' ); $this->mUserLanguage = $request->getVal( 'wpUserLanguage' ); - $this->mUserVariant = $request->getVal( 'wpUserVariant' ); + $this->mUserVariant = $request->getVal( 'wpUserVariant' ); $this->mSearch = $request->getVal( 'wpSearch' ); $this->mRecent = $request->getVal( 'wpRecent' ); $this->mHourDiff = $request->getVal( 'wpHourDiff' ); $this->mSearchLines = $request->getVal( 'wpSearchLines' ); $this->mSearchChars = $request->getVal( 'wpSearchChars' ); $this->mImageSize = $request->getVal( 'wpImageSize' ); - + $this->mThumbSize = $request->getInt( 'wpThumbSize' ); + $this->mUnderline = $request->getInt( 'wpOpunderline' ); $this->mAction = $request->getVal( 'action' ); $this->mReset = $request->getCheck( 'wpReset' ); $this->mPosted = $request->wasPosted(); - $this->mSaveprefs = $request->getCheck( 'wpSaveprefs' ) && $this->mPosted; + + $this->mSaveprefs = $request->getCheck( 'wpSaveprefs' ) && + $this->mPosted && + $wgUser->matchEditToken( $request->getVal( 'wpEditToken' ) ); # User toggles (the big ugly unsorted list of checkboxes) $this->mToggles = array(); @@ -99,9 +101,9 @@ class PreferencesForm { } function execute() { - global $wgUser, $wgOut, $wgUseDynamicDates; + global $wgUser, $wgOut; - if ( 0 == $wgUser->getID() ) { + if ( $wgUser->isAnon() ) { $wgOut->errorpage( 'prefsnologin', 'prefsnologintext' ); return; } @@ -120,7 +122,7 @@ class PreferencesForm { } } - /** + /** * @access private */ function validateInt( &$val, $min=0, $max=0x7fffffff ) { @@ -143,7 +145,13 @@ class PreferencesForm { } /** + * Used to validate the user inputed timezone before saving it as + * 'timeciorrection', will return '00:00' if fed bogus data. + * Note: It's not a 100% correct implementation timezone-wise, it will + * accept stuff like '14:30', * @access private + * @param string $s the user input + * @return string */ function validateTimeZone( $s ) { if ( $s !== '' ) { @@ -157,8 +165,10 @@ class PreferencesForm { $hour = intval( $minute / 60 ); $minute = abs( $minute ) % 60; } - $hour = min( $hour, 15 ); - $hour = max( $hour, -15 ); + # Max is +14:00 and min is -12:00, see: + # http://en.wikipedia.org/wiki/Timezone + $hour = min( $hour, 14 ); + $hour = max( $hour, -12 ); $minute = min( $minute, 59 ); $minute = max( $minute, 0 ); $s = sprintf( "%02d:%02d", $hour, $minute ); @@ -172,7 +182,9 @@ class PreferencesForm { function savePreferences() { global $wgUser, $wgLang, $wgOut; global $wgEnableUserEmail, $wgEnableEmail; - global $wgEmailAuthentication; + global $wgEmailAuthentication, $wgMinimalPasswordLength; + global $wgAuth; + if ( '' != $this->mNewpass ) { if ( $this->mNewpass != $this->mRetypePass ) { @@ -180,20 +192,32 @@ class PreferencesForm { return; } + if ( strlen( $this->mNewpass ) < $wgMinimalPasswordLength ) { + $this->mainPrefsForm( wfMsg( 'passwordtooshort', $wgMinimalPasswordLength ) ); + return; + } + if (!$wgUser->checkPassword( $this->mOldpass )) { $this->mainPrefsForm( wfMsg( 'wrongpassword' ) ); return; } + if (!$wgAuth->setPassword( $wgUser, $this->mNewpass )) { + $this->mainPrefsForm( wfMsg( 'externaldberror' ) ); + return; + } $wgUser->setPassword( $this->mNewpass ); } $wgUser->setRealName( $this->mRealName ); $wgUser->setOption( 'language', $this->mUserLanguage ); - $wgUser->setOption( 'variant', $this->mUserVariant ); + $wgUser->setOption( 'variant', $this->mUserVariant ); $wgUser->setOption( 'nickname', $this->mNick ); $wgUser->setOption( 'quickbar', $this->mQuickbar ); $wgUser->setOption( 'skin', $this->mSkin ); - $wgUser->setOption( 'math', $this->mMath ); - $wgUser->setOption( 'date', $this->mDate ); + global $wgUseTeX; + if( $wgUseTeX ) { + $wgUser->setOption( 'math', $this->mMath ); + } + $wgUser->setOption( 'date', $this->validateInt( $this->mDate, 0, 10 ) ); $wgUser->setOption( 'searchlimit', $this->validateIntOrNull( $this->mSearch ) ); $wgUser->setOption( 'contextlines', $this->validateIntOrNull( $this->mSearchLines ) ); $wgUser->setOption( 'contextchars', $this->validateIntOrNull( $this->mSearchChars ) ); @@ -203,6 +227,8 @@ class PreferencesForm { $wgUser->setOption( 'stubthreshold', $this->validateIntOrNull( $this->mStubs ) ); $wgUser->setOption( 'timecorrection', $this->validateTimeZone( $this->mHourDiff, -12, 14 ) ); $wgUser->setOption( 'imagesize', $this->mImageSize ); + $wgUser->setOption( 'thumbsize', $this->mThumbSize ); + $wgUser->setOption( 'underline', $this->validateInt($this->mUnderline, 0, 2) ); # Set search namespace options foreach( $this->mSearchNs as $i => $value ) { @@ -217,35 +243,38 @@ class PreferencesForm { foreach ( $this->mToggles as $tname => $tvalue ) { $wgUser->setOption( $tname, $tvalue ); } + if (!$wgAuth->updateExternalDB($wgUser)) { + $this->mainPrefsForm( wfMsg( 'externaldberror' ) ); + return; + } $wgUser->setCookies(); $wgUser->saveSettings(); + $error = wfMsg( 'savedprefs' ); if( $wgEnableEmail ) { - $newadr = strtolower( $this->mUserEmail ); - $oldadr = strtolower($wgUser->getEmail()); - if (($newadr <> '') && ($newadr <> $oldadr)) { # the user has supplied a new email address on the login page - # prepare for authentication and mail a temporary password to newadr - require_once( 'SpecialUserlogin.php' ); - if ( !$wgUser->isValidEmailAddr( $newadr ) ) { - $this->mainPrefsForm( wfMsg( 'invalidemailaddress' ) ); - return; - } - $wgUser->mEmail = $newadr; # new behaviour: set this new emailaddr from login-page into user database record - $wgUser->mEmailAuthenticationtimestamp = 0; # but flag as "dirty" = unauthenticated - $wgUser->saveSettings(); - if ($wgEmailAuthentication) { - # mail a temporary password to the dirty address - # on "save options", this user will be logged-out automatically - $error = LoginForm::mailPasswordInternal( $wgUser, true, $dummy ); - if ($error === '') { - return LoginForm::mainLoginForm( wfMsg( 'passwordsentforemailauthentication', $wgUser->getName() ) ); - } else { - return LoginForm::mainLoginForm( wfMsg( 'mailerror', $error ) ); + $newadr = $this->mUserEmail; + $oldadr = $wgUser->getEmail(); + if( ($newadr != '') && ($newadr != $oldadr) ) { + # the user has supplied a new email address on the login page + if( $wgUser->isValidEmailAddr( $newadr ) ) { + $wgUser->mEmail = $newadr; # new behaviour: set this new emailaddr from login-page into user database record + $wgUser->mEmailAuthenticated = null; # but flag as "dirty" = unauthenticated + $wgUser->saveSettings(); + if ($wgEmailAuthentication) { + # Mail a temporary password to the dirty address. + # User can come back through the confirmation URL to re-enable email. + $result = $wgUser->sendConfirmationMail(); + if( WikiError::isError( $result ) ) { + $error = wfMsg( 'mailerror', $result->getMessage() ); + } else { + $error = wfMsg( 'eauthentsent', $wgUser->getName() ); + } } - # if user returns, that new email address gets authenticated in checkpassword() + } else { + $error = wfMsg( 'invalidemailaddress' ); } } else { - $wgUser->setEmail( strtolower($this->mUserEmail) ); + $wgUser->setEmail( $this->mUserEmail ); $wgUser->setCookies(); $wgUser->saveSettings(); } @@ -253,7 +282,7 @@ class PreferencesForm { $wgOut->setParserOptions( ParserOptions::newFromUser( $wgUser ) ); $po = ParserOptions::newFromUser( $wgUser ); - $this->mainPrefsForm( wfMsg( 'savedprefs' ) ); + $this->mainPrefsForm( $error ); } /** @@ -272,9 +301,8 @@ class PreferencesForm { global $wgContLanguageCode; $this->mUserLanguage = $wgContLanguageCode; } - $this->mUserVariant = $wgUser->getOption( 'variant'); - if ( 1 == $wgUser->getOption( 'disablemail' ) ) { $this->mEmailFlag = 1; } - else { $this->mEmailFlag = 0; } + $this->mUserVariant = $wgUser->getOption( 'variant'); + $this->mEmailFlag = $wgUser->getOption( 'disablemail' ) == 1 ? 1 : 0; $this->mNick = $wgUser->getOption( 'nickname' ); $this->mQuickbar = $wgUser->getOption( 'quickbar' ); @@ -289,7 +317,9 @@ class PreferencesForm { $this->mSearchLines = $wgUser->getOption( 'contextlines' ); $this->mSearchChars = $wgUser->getOption( 'contextchars' ); $this->mImageSize = $wgUser->getOption( 'imagesize' ); + $this->mThumbSize = $wgUser->getOption( 'thumbsize' ); $this->mRecent = $wgUser->getOption( 'rclimit' ); + $this->mUnderline = $wgUser->getOption( 'underline' ); $togs = $wgLang->getUserToggles(); foreach ( $togs as $tname ) { @@ -299,7 +329,7 @@ class PreferencesForm { $namespaces = $wgContLang->getNamespaces(); foreach ( $namespaces as $i => $namespace ) { - if ( $i >= 0 ) { + if ( $i >= NS_MAIN ) { $this->mSearchNs[$i] = $wgUser->getOption( 'searchNs'.$i ); } } @@ -313,28 +343,19 @@ class PreferencesForm { # Determine namespace checkboxes $namespaces = $wgContLang->getNamespaces(); - $r1 = ''; + $r1 = null; foreach ( $namespaces as $i => $name ) { - # Skip special or anything similar - if ( $i >= 0 ) { - $checked = ''; - if ( $this->mSearchNs[$i] ) { - $checked = ' checked="checked"'; - } - $name = str_replace( '_', ' ', $namespaces[$i] ); - if ( '' == $name ) { - $name = wfMsg( 'blanknamespace' ); - } - - if ( 0 != $i ) { - $r1 .= ' '; - } - $r1 .= "\n"; - } + if ($i < 0) + continue; + $checked = $this->mSearchNs[$i] ? "checked='checked'" : ''; + $name = str_replace( '_', ' ', $namespaces[$i] ); + + if ( empty($name) ) + $name = wfMsg( 'blanknamespace' ); + + $r1 .= "\n"; } - return $r1; } @@ -345,27 +366,43 @@ class PreferencesForm { $this->mUsedToggles[$tname] = true; $ttext = $wgLang->getUserToggle( $tname ); - if ( 1 == $wgUser->getOption( $tname ) ) { - $checked = ' checked="checked"'; - } else { - $checked = ''; - } - $trailer =($trailer) ? $trailer : ''; - return "
$trailer
\n"; + $checked = $wgUser->getOption( $tname ) == 1 ? ' checked="checked"' : ''; + $trailer = $trailer ? $trailer : ''; + return "
" . + " $trailer
"; + } + + function getToggles( $items ) { + $out = ""; + foreach( $items as $item ) { + if( $item === false ) + continue; + if( is_array( $item ) ) { + list( $key, $trailer ) = $item; + } else { + $key = $item; + $trailer = false; + } + $out .= $this->getToggle( $key, $trailer ); + } + return $out; + } + + function addRow($td1, $td2) { + return "$td1$td2"; } /** * @access private */ function mainPrefsForm( $err ) { - global $wgUser, $wgOut, $wgLang, $wgContLang, $wgUseDynamicDates, $wgValidSkinNames; - global $wgAllowRealName, $wgImageLimits; - global $wgLanguageNames, $wgDisableLangConversion; - global $wgEmailNotificationForWatchlistPages, $wgEmailNotificationForUserTalkPages,$wgEmailNotificationForMinorEdits; - global $wgRCShowWatchingUsers, $wgEmailNotificationRevealPageEditorAddress; + global $wgUser, $wgOut, $wgLang, $wgContLang, $wgValidSkinNames; + global $wgAllowRealName, $wgImageLimits, $wgThumbLimits; + global $wgDisableLangConversion; + global $wgEnotifWatchlist, $wgEnotifUserTalk,$wgEnotifMinorEdits; + global $wgRCShowWatchingUsers, $wgEnotifRevealEditorAddress; global $wgEnableEmail, $wgEnableUserEmail, $wgEmailAuthentication; - global $wgContLanguageCode; + global $wgContLanguageCode, $wgDefaultSkin, $wgSkipSkins; $wgOut->setPageTitle( wfMsg( 'preferences' ) ); $wgOut->setArticleRelated( false ); @@ -388,46 +425,17 @@ class PreferencesForm { $titleObj = Title::makeTitle( NS_SPECIAL, 'Preferences' ); $action = $titleObj->escapeLocalURL(); - - $qb = wfMsg( 'qbsettings' ); - $cp = wfMsg( 'changepassword' ); - $sk = wfMsg( 'skin' ); - $math = wfMsg( 'math' ); - $dateFormat = wfMsg('dateformat'); - $opw = wfMsg( 'oldpassword' ); - $npw = wfMsg( 'newpassword' ); - $rpw = wfMsg( 'retypenew' ); - $svp = wfMsg( 'saveprefs' ); - $rsp = wfMsg( 'resetprefs' ); - $tbs = wfMsg( 'textboxsize' ); - $tbr = wfMsg( 'rows' ); - $tbc = wfMsg( 'columns' ); - $ltz = wfMsg( 'localtime' ); - $timezone = wfMsg( 'timezonelegend' ); - $tzt = wfMsg( 'timezonetext' ); - $tzo = wfMsg( 'timezoneoffset' ); - $tzGuess = wfMsg( 'guesstimezone' ); - $tzServerTime = wfMsg( 'servertime' ); - $yem = wfMsg( 'youremail' ); - $yrn = ($wgAllowRealName) ? wfMsg( 'yourrealname' ) : ''; - $yl = wfMsg( 'yourlanguage' ); - $yv = wfMsg( 'yourvariant' ); - $emf = wfMsg( 'emailflag' ); - $ynn = wfMsg( 'yournick' ); - $stt = wfMsg ( 'stubthreshold' ) ; - $srh = wfMsg( 'searchresultshead' ); - $rpp = wfMsg( 'resultsperpage' ); - $scl = wfMsg( 'contextlines' ); - $scc = wfMsg( 'contextchars' ); - $rcc = wfMsg( 'recentchangescount' ); - $dsn = wfMsg( 'defaultns' ); - - $wgOut->addHTML( "
" ); - - # First section: identity - # Email, etc. - # + + # Pre-expire some toggles so they won't show if disabled + $this->mUsedToggles[ 'shownumberswatching' ] = true; + $this->mUsedToggles[ 'showupdated' ] = true; + $this->mUsedToggles[ 'enotifwatchlistpages' ] = true; + $this->mUsedToggles[ 'enotifusertalkpages' ] = true; + $this->mUsedToggles[ 'enotifminoredits' ] = true; + $this->mUsedToggles[ 'enotifrevealaddr' ] = true; + + # Enotif + # $this->mUserEmail = htmlspecialchars( $this->mUserEmail ); $this->mRealName = htmlspecialchars( $this->mRealName ); $this->mNick = htmlspecialchars( $this->mNick ); @@ -435,261 +443,340 @@ class PreferencesForm { else { $emfc = ''; } if ($wgEmailAuthentication && ($this->mUserEmail != '') ) { - if ($wgUser->getEmailAuthenticationtimestamp() != 0) { - $emailauthenticated = wfMsg('emailauthenticated',$wgLang->timeanddate($wgUser->getEmailAuthenticationtimestamp(), true ) ).'
'; - $disabled = ''; + if( $wgUser->getEmailAuthenticationTimestamp() ) { + $emailauthenticated = wfMsg('emailauthenticated',$wgLang->timeanddate($wgUser->getEmailAuthenticationTimestamp(), true ) ).'
'; } else { - $emailauthenticated = wfMsg('emailnotauthenticated').'
'; - $disabled = ' '.wfMsg('disableduntilauthent'); + $skin = $wgUser->getSkin(); + $emailauthenticated = wfMsg('emailnotauthenticated').'
' . + $skin->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Confirmemail' ), + wfMsg( 'emailconfirmlink' ) ); } } else { $emailauthenticated = ''; } if ($this->mUserEmail == '') { - $disabled = ' '.wfMsg('disablednoemail'); + $emailauthenticated = wfMsg( 'noemailprefs' ); } $ps = $this->namespacesCheckboxes(); - $enotifwatchlistpages = ($wgEmailNotificationForWatchlistPages) ? $this->getToggle( 'enotifwatchlistpages', $disabled) : ''; - $enotifusertalkpages = ($wgEmailNotificationForUserTalkPages) ? $this->getToggle( 'enotifusertalkpages', $disabled) : ''; - $enotifminoredits = ($wgEmailNotificationForMinorEdits) ? $this->getToggle( 'enotifminoredits', $disabled) : ''; - $enotifrevealaddr = ($wgEmailNotificationRevealPageEditorAddress) ? $this->getToggle( 'enotifrevealaddr', $disabled) : ''; - $prefs_help_email_enotif = ( $wgEmailNotificationForWatchlistPages || $wgEmailNotificationForUserTalkPages) ? ' ' . wfMsg('prefs-help-email-enotif') : ''; + $enotifwatchlistpages = ($wgEnotifWatchlist) ? $this->getToggle( 'enotifwatchlistpages' ) : ''; + $enotifusertalkpages = ($wgEnotifUserTalk) ? $this->getToggle( 'enotifusertalkpages' ) : ''; + $enotifminoredits = ($wgEnotifWatchlist && $wgEnotifMinorEdits) ? $this->getToggle( 'enotifminoredits' ) : ''; + $enotifrevealaddr = (($wgEnotifWatchlist || $wgEnotifUserTalk) && $wgEnotifRevealEditorAddress) ? $this->getToggle( 'enotifrevealaddr' ) : ''; + $prefs_help_email_enotif = ( $wgEnotifWatchlist || $wgEnotifUserTalk) ? ' ' . wfMsg('prefs-help-email-enotif') : ''; $prefs_help_realname = ''; - $wgOut->addHTML( "
- ".wfMsg('prefs-personal').""); + # - if ($wgAllowRealName) { - $wgOut->addHTML("
"); - $prefs_help_realname = wfMsg('prefs-help-realname').'
'; + $wgOut->addHTML( "" ); + + # User data + # + + $wgOut->addHTML( "
\n" . wfMsg('prefs-personal') . "\n\n"); + + if ($wgAllowRealName) { + $wgOut->addHTML( + $this->addRow( + wfMsg('yourrealname'), + "mRealName}\" size='25' />" + ) + ); } - - if( $wgEnableEmail ) { - $wgOut->addHTML(" -
" ); - if( $wgEnableUserEmail ) { - $wgOut->addHTML( - $emailauthenticated. - $enotifrevealaddr. - $enotifwatchlistpages. - $enotifusertalkpages. - $enotifminoredits. - "
" ); - } + if ($wgEnableEmail) { + $wgOut->addHTML( + $this->addRow( + wfMsg( 'youremail' ), + "mUserEmail}\" size='25' />" + ) + ); } - $fancysig = $this->getToggle( 'fancysig' ); - $wgOut->addHTML(" -
-
$fancysig
-
\n" ); + $wgOut->addHTML( $this->addRow( wfMsg('yourlanguage'), "" )); /* see if there are multiple language variants to choose from*/ if(!$wgDisableLangConversion) { $variants = $wgContLang->getVariants(); - $size=sizeof($variants); - $variantArray=array(); foreach($variants as $v) { $v = str_replace( '_', '-', strtolower($v)); - if($name=$wgLanguageNames[$v]) { + if($name = $languages[$v]) { $variantArray[$v] = $name; } } - $size=sizeof($variantArray); - - if(sizeof($variantArray) > 1) { - $wgOut->addHtml(" -
'); + + # Password $this->mOldpass = htmlspecialchars( $this->mOldpass ); $this->mNewpass = htmlspecialchars( $this->mNewpass ); $this->mRetypePass = htmlspecialchars( $this->mRetypePass ); - $wgOut->addHTML( "
- $cp -
-
-
- " . $this->getToggle( "rememberpassword" ) . " -
-
".$prefs_help_realname.wfMsg('prefs-help-email').$prefs_help_email_enotif."
\n
\n" ); + $wgOut->addHTML( '
' . wfMsg( 'changepassword' ) . ''); + $wgOut->addHTML( + $this->addRow( wfMsg( 'oldpassword' ), "mOldpass}\" size='20' />" ) . + $this->addRow( wfMsg( 'newpassword' ), "mNewpass}\" size='20' />" ) . + $this->addRow( wfMsg( 'retypenew' ), "mRetypePass}\" size='20' />" ) . + "
\n" . + $this->getToggle( "rememberpassword" ) . "
\n\n" ); + + # + # Enotif + if ($wgEnableEmail) { + $wgOut->addHTML( '
' . wfMsg( 'email' ) . '' ); + $wgOut->addHTML( + $emailauthenticated. + $enotifrevealaddr. + $enotifwatchlistpages. + $enotifusertalkpages. + $enotifminoredits ); + if ($wgEnableUserEmail) { + $emf = wfMsg( 'emailflag' ); + $wgOut->addHTML( + "
" ); + } + + $wgOut->addHTML( '
' ); + } + #
+ + if ($wgAllowRealName || $wgEnableEmail) { + $wgOut->addHTML("
"); + $rn = $wgAllowRealName ? wfMsg('prefs-help-realname') : ''; + $em = $wgEnableEmail ? '
' . wfMsg('prefs-help-email') : ''; + $wgOut->addHTML( $rn . $em . '
'); + } - - # Quickbar setting + $wgOut->addHTML( '
' ); + + # Quickbar # - $wgOut->addHtml( "
\n$qb\n" ); - for ( $i = 0; $i < count( $qbs ); ++$i ) { - if ( $i == $this->mQuickbar ) { $checked = ' checked="checked"'; } - else { $checked = ""; } - $wgOut->addHTML( "
\n" ); + if ($this->mSkin == 'cologneblue' || $this->mSkin == 'standard') { + $wgOut->addHtml( "
\n" . wfMsg( 'qbsettings' ) . "\n" ); + for ( $i = 0; $i < count( $qbs ); ++$i ) { + if ( $i == $this->mQuickbar ) { $checked = ' checked="checked"'; } + else { $checked = ""; } + $wgOut->addHTML( "
\n" ); + } + $wgOut->addHtml( "
\n\n" ); + } else { + # Need to output a hidden option even if the relevant skin is not in use, + # otherwise the preference will get reset to 0 on submit + $wgOut->addHTML( "" ); } - $wgOut->addHtml('
'.wfMsg('qbsettingsnote').'
'); - $wgOut->addHtml( "
\n\n" ); - # Skin setting + # Skin # - $wgOut->addHTML( "
\n$sk\n" ); + $wgOut->addHTML( "
\n\n" . wfMsg('skin') . "\n" ); # Only show members of $wgValidSkinNames rather than # $skinNames (skins is all skin names from Language.php) foreach ($wgValidSkinNames as $skinkey => $skinname ) { - if ( $skinkey == $this->mSkin ) { - $checked = ' checked="checked"'; - } else { - $checked = ''; - } - if ( isset( $skinNames[$skinkey] ) ) { - $sn = $skinNames[$skinkey]; - } else { - $sn = $skinname; - } - global $wgDefaultSkin; - if( $skinkey == $wgDefaultSkin ) { + if ( in_array( $skinkey, $wgSkipSkins ) ) { + continue; + } + $checked = $skinkey == $this->mSkin ? ' checked="checked"' : ''; + $sn = isset( $skinNames[$skinkey] ) ? $skinNames[$skinkey] : $skinname; + + if( $skinkey == $wgDefaultSkin ) $sn .= ' (' . wfMsg( 'default' ) . ')'; - } - $wgOut->addHTML( "
\n" ); + $wgOut->addHTML( " {$sn}
\n" ); } $wgOut->addHTML( "
\n\n" ); - # Math setting + # Math # - $wgOut->addHTML( "
\n$math\n" ); - for ( $i = 0; $i < count( $mathopts ); ++$i ) { - if ( $i == $this->mMath ) { $checked = ' checked="checked"'; } - else { $checked = ""; } - $wgOut->addHTML( "
\n" ); + global $wgUseTeX; + if( $wgUseTeX ) { + $wgOut->addHTML( "
\n" . wfMsg('math') . '' ); + foreach ( $mathopts as $k => $v ) { + $checked = $k == $this->mMath ? ' checked="checked"' : ''; + $wgOut->addHTML( "
\n" ); + } + $wgOut->addHTML( "
\n\n" ); } - $wgOut->addHTML( "
\n\n" ); - - # Date format + + # Files # - if ( $wgUseDynamicDates ) { - $wgOut->addHTML( "
\n$dateFormat\n" ); - for ( $i = 0; $i < count( $dateopts ); ++$i) { - if ( $i == $this->mDate ) { - $checked = ' checked="checked"'; - } else { - $checked = ""; - } + $wgOut->addHTML("
+ " . wfMsg( 'files' ) . " +
+
\n\n"); + + # Date format + # + if ($dateopts) { + $wgOut->addHTML( "
\n" . wfMsg('dateformat') . "\n" ); + foreach($dateopts as $key => $option) { + ($key == $this->mDate) ? $checked = ' checked="checked"' : $checked = ''; $wgOut->addHTML( "
\n" ); + "value=\"$key\"$checked />$option\n" ); } $wgOut->addHTML( "
\n\n"); } - - # Textbox rows, cols + + # Time zone # + $nowlocal = $wgLang->time( $now = wfTimestampNow(), true ); $nowserver = $wgLang->time( $now, false ); - $wgOut->addHTML( "
- $tbs\n -
- - -
" . - $this->getToggle( "editwidth" ) . - $this->getToggle( "showtoolbar" ) . - $this->getToggle( "previewonfirst" ) . - $this->getToggle( "previewontop" ) . - $this->getToggle( "watchdefault" ) . - $this->getToggle( "minordefault" ) . " -
- -
- $timezone -
$tzServerTime: $nowserver
-
$ltz: $nowlocal
-
-
-
* {$tzt}
-
\n\n" ); - - $shownumberswatching = ($wgRCShowWatchingUsers) ? $this->getToggle('shownumberswatching') : ''; - - $wgOut->addHTML( " -
".wfMsg('prefs-rc')." -
" . - $this->getToggle( "hideminor" ) . $shownumberswatching . - $this->getToggle( "usenewrc" ) . $this->getToggle('showupdated', wfMsg('updatedmarker')) . - "
-
\n\n" ); - $imageLimitOptions=''; - foreach ( $wgImageLimits as $index => $limits ) { - $selected = ($index == $this->mImageSize) ? 'selected="selected"' : ''; - $imageLimitOptions .= "\n"; - } - $wgOut->addHTML( "{$imageLimitOptions} - -
+ # Editing + # + $wgOut->addHTML( '
' . wfMsg( 'textboxsize' ) . ' +
+ + +
" . + $this->getToggles( array( + 'editsection', + 'editsectiononrightclick', + 'editondblclick', + 'editwidth', + 'showtoolbar', + 'previewonfirst', + 'previewontop', + 'watchdefault', + 'minordefault', + 'externaleditor', + 'externaldiff' ) + ) . '
' + ); + + $wgOut->addHTML( '
' . htmlspecialchars(wfMsg('prefs-rc')) . ' + ' . + $this->addRow( + wfMsg ( 'stubthreshold' ), + "mStubs\" size='6' />" + ) . + $this->addRow( + wfMsg( 'recentchangescount' ), + "mRecent\" size='6' />" + ) . + '
' . + $this->getToggles( array( + 'hideminor', + $wgRCShowWatchingUsers ? 'shownumberswatching' : false, + 'usenewrc' ) + ) . '
' + ); -
- $srh -
-
-
- -
- $dsn - $ps -
-
- " ); + $wgOut->addHTML( '
' . wfMsg( 'searchresultshead' ) . '' . + $this->addRow( wfMsg( 'resultsperpage' ), "mSearch\" size='4' />" ) . + $this->addRow( wfMsg( 'contextlines' ), "mSearchLines\" size='4' />" ) . + $this->addRow( wfMsg( 'contextchars' ), "mSearchChars\" size='4' />" ) . + "
" . wfMsg( 'defaultns' ) . "$ps
" ); - # Various checkbox options + # Misc # - $wgOut->addHTML("
".wfMsg('prefs-misc').""); + $wgOut->addHTML('
' . wfMsg('prefs-misc') . ''); + + $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(" +
+"); foreach ( $togs as $tname ) { if( !array_key_exists( $tname, $this->mUsedToggles ) ) { $wgOut->addHTML( $this->getToggle( $tname ) ); } } - $wgOut->addHTML( "
\n\n" ); + $wgOut->addHTML( '
' ); + $token = $wgUser->editToken(); $wgOut->addHTML( "
- - +
+ \n" ); } }