Part of bug 31503 - Allow gender distinction also for user groups
authorNiklas Laxström <nikerabbit@users.mediawiki.org>
Sat, 8 Oct 2011 14:13:17 +0000 (14:13 +0000)
committerNiklas Laxström <nikerabbit@users.mediawiki.org>
Sat, 8 Oct 2011 14:13:17 +0000 (14:13 +0000)
includes/Preferences.php
includes/User.php
includes/specials/SpecialActiveusers.php
includes/specials/SpecialListusers.php
includes/specials/SpecialUserrights.php
languages/messages/MessagesEn.php

index 0fc908a..ad8e82c 100644 (file)
@@ -159,7 +159,7 @@ class Preferences {
                        $groupName  = User::getGroupName( $ueg );
                        $userGroups[] = User::makeGroupLinkHTML( $ueg, $groupName );
 
-                       $memberName = User::getGroupMember( $ueg );
+                       $memberName = User::getGroupMember( $ueg, $user->getName() );
                        $userMembers[] = User::makeGroupLinkHTML( $ueg, $memberName );
                }
                asort( $userGroups );
index ef724c4..455c990 100644 (file)
@@ -3562,10 +3562,11 @@ class User {
         * Get the localized descriptive name for a member of a group, if it exists
         *
         * @param $group String Internal group name
+        * @param $username String Username for gender (since 1.19)
         * @return String Localized name for group member
         */
-       public static function getGroupMember( $group ) {
-               $msg = wfMessage( "group-$group-member" );
+       public static function getGroupMember( $group, $username = '#' ) {
+               $msg = wfMessage( "group-$group-member", $username );
                return $msg->isBlank() ? $group : $msg->text();
        }
 
index ee2fd4c..7e33730 100644 (file)
@@ -124,7 +124,7 @@ class ActiveUsersPager extends UsersPager {
                        if ( isset( $this->groups[$group] ) ) {
                                return;
                        }
-                       $list[] = self::buildGroupLink( $group );
+                       $list[] = self::buildGroupLink( $group, $userName );
                }
                $groups = $this->getLang()->commaList( $list );
 
index 44c0a07..672ac5b 100644 (file)
@@ -135,7 +135,7 @@ class UsersPager extends AlphabeticPager {
                if( count( $groups_list ) > 0 ) {
                        $list = array();
                        foreach( $groups_list as $group )
-                               $list[] = self::buildGroupLink( $group );
+                               $list[] = self::buildGroupLink( $group, $userPage->getText() );
                        $groups = $this->getLang()->commaList( $list );
                } else {
                        $groups = '';
@@ -263,11 +263,8 @@ class UsersPager extends AlphabeticPager {
         * @param $group String: group name
         * @return string
         */
-       protected static function buildGroupLink( $group ) {
-               static $cache = array();
-               if( !isset( $cache[$group] ) )
-                       $cache[$group] = User::makeGroupLinkHtml( $group, htmlspecialchars( User::getGroupMember( $group ) ) );
-               return $cache[$group];
+       protected static function buildGroupLink( $group, $username ) {
+               return User::makeGroupLinkHtml( $group, htmlspecialchars( User::getGroupMember( $group, $username ) ) );
        }
 }
 
index 8a2fb02..aeee554 100644 (file)
@@ -450,7 +450,7 @@ class UserrightsPage extends SpecialPage {
                        wfMessage( 'editinguser' )->params( wfEscapeWikiText( $user->getName() ) )->rawParams( $userToolLinks )->parse() .
                        wfMsgExt( 'userrights-groups-help', array( 'parse' ) ) .
                        $grouplist .
-                       Xml::tags( 'p', null, $this->groupCheckboxes( $groups ) ) .
+                       Xml::tags( 'p', null, $this->groupCheckboxes( $groups, $user ) ) .
                        Xml::openElement( 'table', array( 'border' => '0', 'id' => 'mw-userrights-table-outer' ) ) .
                                "<tr>
                                        <td class='mw-label'>" .
@@ -501,7 +501,7 @@ class UserrightsPage extends SpecialPage {
         * @param $usergroups Array: groups the user belongs to
         * @return string XHTML table element with checkboxes
         */
-       private function groupCheckboxes( $usergroups ) {
+       private function groupCheckboxes( $usergroups, $user ) {
                $allgroups = $this->getAllGroups();
                $ret = '';
 
@@ -549,11 +549,11 @@ class UserrightsPage extends SpecialPage {
                        foreach( $column as $group => $checkbox ) {
                                $attr = $checkbox['disabled'] ? array( 'disabled' => 'disabled' ) : array();
 
+                               $member = User::getGroupMember( $group, $user->getName() );
                                if ( $checkbox['irreversible'] ) {
-                                       $text = htmlspecialchars( wfMsg( 'userrights-irreversible-marker',
-                                               User::getGroupMember( $group ) ) );
+                                       $text = wfMessage( 'userrights-irreversible-marker', $member )->escaped();
                                } else {
-                                       $text = htmlspecialchars( User::getGroupMember( $group ) );
+                                       $text = htmlspecialchars( $member );
                                }
                                $checkboxHtml = Xml::checkLabel( $text, "wpGroup-" . $group,
                                        "wpGroup-" . $group, $checkbox['set'], $attr );
index 23c389b..bcfb32c 100644 (file)
@@ -1908,12 +1908,12 @@ Your e-mail address is not revealed when other users contact you.',
 'group-suppress'      => 'Oversights',
 'group-all'           => '(all)',
 
-'group-user-member'          => 'user',
-'group-autoconfirmed-member' => 'autoconfirmed user',
-'group-bot-member'           => 'bot',
-'group-sysop-member'         => 'administrator',
-'group-bureaucrat-member'    => 'bureaucrat',
-'group-suppress-member'      => 'oversight',
+'group-user-member'          => '{{GENDER:$1|user}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|autoconfirmed user}}',
+'group-bot-member'           => '{{GENDER:$1|bot}}',
+'group-sysop-member'         => '{{GENDER:$1|administrator}}',
+'group-bureaucrat-member'    => '{{GENDER:$1|bureaucrat}}',
+'group-suppress-member'      => '{{GENDER:$1|oversight}}',
 
 'grouppage-user'          => '{{ns:project}}:Users',
 'grouppage-autoconfirmed' => '{{ns:project}}:Autoconfirmed users',