* (bug 13040) Gender switch in user preferences
authorNiklas Laxström <nikerabbit@users.mediawiki.org>
Mon, 26 Jan 2009 09:41:52 +0000 (09:41 +0000)
committerNiklas Laxström <nikerabbit@users.mediawiki.org>
Mon, 26 Jan 2009 09:41:52 +0000 (09:41 +0000)
RELEASE-NOTES
includes/specials/SpecialPreferences.php
languages/messages/MessagesEn.php

index 237f33b..9eef071 100644 (file)
@@ -62,6 +62,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
 * More helpful error message on raw page access if PHP_SELF isn't set
 * (bug 17145) Specific categories can be excluded from Special:UnusedCategories
   with __IGNOREUNUSED__
+* (bug 13040) Gender switch in user preferences
 
 === Bug fixes in 1.15 ===
 * (bug 16968) Special:Upload no longer throws useless warnings.
index cfe4798..922be9e 100644 (file)
@@ -26,7 +26,7 @@ class PreferencesForm {
        var $mUserLanguage, $mUserVariant;
        var $mSearch, $mRecent, $mRecentDays, $mTimeZone, $mHourDiff, $mSearchLines, $mSearchChars, $mAction;
        var $mReset, $mPosted, $mToggles, $mSearchNs, $mRealName, $mImageSize;
-       var $mUnderline, $mWatchlistEdits;
+       var $mUnderline, $mWatchlistEdits, $mGender;
 
        /**
         * Constructor
@@ -66,6 +66,7 @@ class PreferencesForm {
                $this->mWatchlistDays = $request->getVal( 'wpWatchlistDays' );
                $this->mWatchlistEdits = $request->getVal( 'wpWatchlistEdits' );
                $this->mDisableMWSuggest = $request->getCheck( 'wpDisableMWSuggest' );
+               $this->mGender = $request->getVal( 'wpGender' );
 
                $this->mSaveprefs = $request->getCheck( 'wpSaveprefs' ) &&
                        $this->mPosted &&
@@ -207,6 +208,15 @@ class PreferencesForm {
                }
        }
 
+       function validateGender( $val ) {
+               $valid = array( 'male', 'female', 'unknown' );
+               if ( in_array($val, $valid) ) {
+                       return $val;
+               } else {
+                       return User::getDefaultOption( 'gender' );
+               }
+       }
+
        /**
         * @access private
         */
@@ -272,6 +282,7 @@ class PreferencesForm {
                $wgUser->setOption( 'underline', $this->validateInt($this->mUnderline, 0, 2) );
                $wgUser->setOption( 'watchlistdays', $this->validateFloat( $this->mWatchlistDays, 0, 7 ) );
                $wgUser->setOption( 'disablesuggest', $this->mDisableMWSuggest );
+               $wgUser->setOption( 'gender', $this->validateGender( $this->mGender ) );
 
                # Set search namespace options
                foreach( $this->mSearchNs as $i => $value ) {
@@ -423,6 +434,7 @@ class PreferencesForm {
                $this->mUnderline = $wgUser->getOption( 'underline' );
                $this->mWatchlistDays = $wgUser->getOption( 'watchlistdays' );
                $this->mDisableMWSuggest = $wgUser->getBoolOption( 'disablesuggest' );
+               $this->mGender = $wgUser->getOption( 'gender' );
 
                $togs = User::getToggles();
                foreach ( $togs as $tname ) {
@@ -735,7 +747,19 @@ class PreferencesForm {
                        $this->tableRow( '&nbsp;', $this->getToggle( 'fancysig' ) )
                );
 
-               list( $lsLabel, $lsSelect) = Xml::languageSelector( $this->mUserLanguage );
+               $gender = new XMLSelect( 'wpGender', 'wpGender', $this->mGender );
+               $gender->addOption( wfMsg( 'gender-unknown' ), 'unknown' );
+               $gender->addOption( wfMsg( 'gender-male' ), 'male' );
+               $gender->addOption( wfMsg( 'gender-female' ), 'female' );
+
+               $wgOut->addHTML(
+                       $this->tableRow(
+                               Xml::label( wfMsg( 'yourgender' ), 'wpGender' ),
+                               $gender->getHTML()
+                       )
+               );
+
+               list( $lsLabel, $lsSelect) = Xml::languageSelector( $this->mUserLanguage, false );
                $wgOut->addHTML(
                        $this->tableRow( $lsLabel, $lsSelect )
                );
index c84b77a..b9c94b9 100644 (file)
@@ -286,6 +286,7 @@ $magicWords = array(
        'servername'             => array( 0,    'SERVERNAME'             ),
        'scriptpath'             => array( 0,    'SCRIPTPATH'             ),
        'grammar'                => array( 0,    'GRAMMAR:'               ),
+       'gender'                 => array( 0,    'GENDER:'                ),
        'notitleconvert'         => array( 0,    '__NOTITLECONVERT__', '__NOTC__'),
        'nocontentconvert'       => array( 0,    '__NOCONTENTCONVERT__', '__NOCC__'),
        'currentweek'            => array( 1,    'CURRENTWEEK'            ),
@@ -908,6 +909,10 @@ Please choose a different name.',
 Check HTML tags.',
 'badsiglength'               => 'The signature is too long.
 It must be under $1 {{PLURAL:$1|character|characters}}.',
+'yourgender'                 => 'Gender:',
+'gender-unknown'             => 'Unspecified',
+'gender-male'                => 'Male',
+'gender-female'              => 'Female',
 'email'                      => 'E-mail',
 'prefs-help-realname'        => 'Real name is optional.
 If you choose to provide it, this will be used for giving you attribution for your work.',