* @subpackage SpecialPage
*/
+/* to get a list of languages in setting user's language preference */
+require_once('languages/Names.php');
+
/**
* Entry point that create the "Preferences" object
*/
class PreferencesForm {
var $mQuickbar, $mOldpass, $mNewpass, $mRetypePass, $mStubs;
var $mRows, $mCols, $mSkin, $mMath, $mDate, $mUserEmail, $mEmailFlag, $mNick;
- var $mUserLanguage;
+ var $mUserLanguage, $mUserVariant;
var $mSearch, $mRecent, $mHourDiff, $mSearchLines, $mSearchChars, $mAction;
var $mReset, $mPosted, $mToggles, $mSearchNs, $mRealName, $mImageSize;
* Load some values
*/
function PreferencesForm( &$request ) {
- global $wgLang, $wgAllowRealName;
+ global $wgLang, $wgContLang, $wgAllowRealName;
$this->mQuickbar = $request->getVal( 'wpQuickbar' );
$this->mOldpass = $request->getVal( 'wpOldpass' );
$this->mEmailFlag = $request->getCheck( 'wpEmailFlag' ) ? 1 : 0;
$this->mNick = $request->getVal( 'wpNick' );
$this->mUserLanguage = $request->getVal( 'wpUserLanguage' );
+ $this->mUserVariant = $request->getVal( 'wpUserVariant' );
$this->mSearch = $request->getVal( 'wpSearch' );
$this->mRecent = $request->getVal( 'wpRecent' );
$this->mHourDiff = $request->getVal( 'wpHourDiff' );
# Note: namespaces don't necessarily have consecutive keys
$this->mSearchNs = array();
if ( $this->mPosted ) {
- $namespaces = $wgLang->getNamespaces();
+ $namespaces = $wgContLang->getNamespaces();
foreach ( $namespaces as $i => $namespace ) {
if ( $i >= 0 ) {
$this->mSearchNs[$i] = $request->getCheck( "wpNs$i" ) ? 1 : 0;
$wgUser->setEmail( $this->mUserEmail );
$wgUser->setRealName( $this->mRealName );
$wgUser->setOption( 'language', $this->mUserLanguage );
+ $wgUser->setOption( 'variant', $this->mUserVariant );
$wgUser->setOption( 'nickname', $this->mNick );
$wgUser->setOption( 'quickbar', $this->mQuickbar );
$wgUser->setOption( 'skin', $this->mSkin );
* @access private
*/
function resetPrefs() {
- global $wgUser, $wgLang, $wgAllowRealName;
+ global $wgUser, $wgLang, $wgContLang, $wgAllowRealName;
$this->mOldpass = $this->mNewpass = $this->mRetypePass = '';
$this->mUserEmail = $wgUser->getEmail();
$this->mRealName = ($wgAllowRealName) ? $wgUser->getRealName() : '';
$this->mUserLanguage = $wgUser->getOption( 'language');
+ $this->mUserVariant = $wgUser->getOption( 'variant');
if ( 1 == $wgUser->getOption( 'disablemail' ) ) { $this->mEmailFlag = 1; }
else { $this->mEmailFlag = 0; }
$this->mNick = $wgUser->getOption( 'nickname' );
$this->mToggles[$tname] = $wgUser->getOption( $tname );
}
- $namespaces = $wgLang->getNamespaces();
+ $namespaces = $wgContLang->getNamespaces();
foreach ( $namespaces as $i => $namespace ) {
if ( $i >= 0 ) {
$this->mSearchNs[$i] = $wgUser->getOption( 'searchNs'.$i );
* @access private
*/
function namespacesCheckboxes() {
- global $wgLang, $wgUser;
+ global $wgContLang, $wgUser;
# Determine namespace checkboxes
- $namespaces = $wgLang->getNamespaces();
+ $namespaces = $wgContLang->getNamespaces();
$r1 = '';
foreach ( $namespaces as $i => $name ) {
* @access private
*/
function mainPrefsForm( $err ) {
- global $wgUser, $wgOut, $wgLang, $wgUseDynamicDates, $wgValidSkinNames;
- global $wgAllowRealName, $wgImageLimits;
-
+ global $wgUser, $wgOut, $wgLang, $wgContLang, $wgUseDynamicDates, $wgValidSkinNames;
+ global $wgAllowRealName, $wgImageLimits;
+ global $wgLanguageNames, $wgDisableLangConversion;
+
$wgOut->setPageTitle( wfMsg( 'preferences' ) );
$wgOut->setArticleRelated( false );
$wgOut->setRobotpolicy( 'noindex,nofollow' );
$yem = wfMsg( 'youremail' );
$yrn = ($wgAllowRealName) ? wfMsg( 'yourrealname' ) : '';
$yl = wfMsg( 'yourlanguage' );
+ $yv = wfMsg( 'yourvariant' );
$emf = wfMsg( 'emailflag' );
$ynn = wfMsg( 'yournick' );
$stt = wfMsg ( 'stubthreshold' ) ;
$wgOut->addHTML( "<fieldset>
<legend>".wfMsg('prefs-personal')."</legend>");
- if ($wgAllowRealName) {
- $wgOut->addHTML("<div><label>$yrn: <input type='text' name=\"wpRealName\" value=\"{$this->mRealName}\" size='20' /></label></div>");
+ if ($wgAllowRealName) {
+ $wgOut->addHTML("<div><label>$yrn: <input type='text' name=\"wpRealName\" value=\"{$this->mRealName}\" size='20' /></label></div>");
}
- $wgOut->addHTML("
+ $wgOut->addHTML("
<div><label>$yem: <input type='text' name=\"wpUserEmail\" value=\"{$this->mUserEmail}\" size='20' /></label></div>
- <div><label><input type='checkbox' $emfc value=\"1\" name=\"wpEmailFlag\" /> $emf</label></div>
+ <div><label><input type='checkbox' $emfc value=\"1\" name=\"wpEmailFlag\" />$emf</label></div>
<div><label>$ynn: <input type='text' name=\"wpNick\" value=\"{$this->mNick}\" size='12' /></label></div>
- <div><label>$yl: <input type='text' name=\"wpUserLanguage\" value=\"{$this->mUserLanguage}\" size='8' /></label></div>\n" );
+ <div><label>$yl: <select name=\"wpUserLanguage\">\n");
+
+ foreach($wgLanguageNames as $code => $name) {
+ global $IP;
+ /* only add languages that have a file */
+ $langfile="$IP/languages/Language".str_replace('-', '_', ucfirst($code)).".php";
+ if(file_exists($langfile)) {
+ $sel = ($code == $this->mUserLanguage)? 'selected="selected"' : '';
+ $wgOut->addHtml("\t<option value=\"$code\" $sel>$code - $name</option>\n");
+ }
+ }
+ $wgOut->addHtml("</select></label></div>\n" );
+ /* 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]) {
+ $variantArray[$v] = $name;
+ }
+ }
+ $size=sizeof($variantArray);
+
+ if(sizeof($variantArray) > 1) {
+ $wgOut->addHtml("
+ <div><label>$yv: <select name=\"wpUserVariant\">\n");
+ foreach($variantArray as $code => $name) {
+ $sel = ($code==$this->mUserVariant)? 'selected="selected"' : '';
+ $wgOut->addHtml("\t<option value=\"$code\" $sel>$code - $name</option>\n");
+ }
+ }
+ }
# Fields for changing password
#
$this->mOldpass = htmlspecialchars( $this->mOldpass );
</div> " .
$this->getToggle( "editwidth" ) .
$this->getToggle( "showtoolbar" ) .
+ $this->getToggle( "previewonfirst" ) .
$this->getToggle( "previewontop" ) .
$this->getToggle( "watchdefault" ) .
$this->getToggle( "minordefault" ) . "
<legend>$timezone</legend>
<div><b>$tzServerTime:</b> $nowserver</div>
<div><b>$ltz:</b> $nowlocal</div>
- <div><label>$tzo*: <input type='text' name=\"wpHourDiff\" value=\"{$this->mHourDiff}\" size='6' /></label></div>
- <div><input type=\"button\" value=\"$tzGuess\" onClick=\"javascript:guessTimezone()\" id=\"guesstimezonebutton\" style=\"display:none\" /></div>
+ <div><label>$tzo*: <input type='text' name=\"wpHourDiff\" value=\"" . htmlspecialchars( $this->mHourDiff ) . "\" size='6' /></label></div>
+ <div><input type=\"button\" value=\"$tzGuess\" onclick=\"javascript:guessTimezone()\" id=\"guesstimezonebutton\" style=\"display:none\" /></div>
<div class='prefsectiontip'>* {$tzt}</div>
</fieldset>\n\n" );
$imageLimitOptions='';
foreach ( $wgImageLimits as $index => $limits ) {
- $selected = ($index == $this->mImageSize) ? ' selected ': '';
+ $selected = ($index == $this->mImageSize) ? 'selected="selected"' : '';
$imageLimitOptions .= "<option value=\"{$index}\" {$selected}>{$limits[0]}x{$limits[1]}</option>\n";
}
$wgOut->addHTML( "{$imageLimitOptions}</select></label></div>