From 5e041dccfd37305e0c8db4a131c9061fcb4429d2 Mon Sep 17 00:00:00 2001 From: "Amir E. Aharoni" Date: Wed, 24 Oct 2012 12:24:37 +0200 Subject: [PATCH] (bug 31565) Option to use group members on Special:UserRights If a language community wants to show member names rather than group names, it's possible to use the new optional message userrights-groupsmember-type. Change-Id: I1dc3efcb2c8a32a01b33158c9a14c079e42705d7 --- includes/specials/SpecialUserrights.php | 43 ++++++++++++++++++------- languages/messages/MessagesEn.php | 1 + languages/messages/MessagesQqq.php | 4 +++ maintenance/language/messageTypes.inc | 1 + maintenance/language/messages.inc | 1 + 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/includes/specials/SpecialUserrights.php b/includes/specials/SpecialUserrights.php index 0616d56fad..88f127e6a5 100644 --- a/includes/specials/SpecialUserrights.php +++ b/includes/specials/SpecialUserrights.php @@ -410,27 +410,41 @@ class UserrightsPage extends SpecialPage { */ protected function showEditUserGroupsForm( $user, $groups ) { $list = array(); + $membersList = array(); foreach( $groups as $group ) { $list[] = self::buildGroupLink( $group ); + $membersList[] = self::buildGroupMemberLink( $group ); } - $autolist = array(); + $autoList = array(); + $autoMembersList = array(); if ( $user instanceof User ) { foreach( Autopromote::getAutopromoteGroups( $user ) as $group ) { - $autolist[] = self::buildGroupLink( $group ); + $autoList[] = self::buildGroupLink( $group ); + $autoMembersList[] = self::buildGroupMemberLink( $group ); } } + $language = $this->getLanguage(); + $displayedList = $this->msg( 'userrights-groupsmember-type', + $language->listToText( $list ), + $language->listToText( $membersList ) + )->plain(); + $displayedAutolist = $this->msg( 'userrights-groupsmember-type', + $language->listToText( $autoList ), + $language->listToText( $autoMembersList ) + )->plain(); + $grouplist = ''; $count = count( $list ); - if( $count > 0 ) { + if ( $count > 0 ) { $grouplist = $this->msg( 'userrights-groupsmember', $count, $user->getName() )->parse(); - $grouplist = '

' . $grouplist . ' ' . $this->getLanguage()->listToText( $list ) . "

\n"; + $grouplist = '

' . $grouplist . ' ' . $displayedList . "

\n"; } - $count = count( $autolist ); - if( $count > 0 ) { + $count = count( $autoList ); + if ( $count > 0 ) { $autogrouplistintro = $this->msg( 'userrights-groupsmember-auto', $count, $user->getName() )->parse(); - $grouplist .= '

' . $autogrouplistintro . ' ' . $this->getLanguage()->listToText( $autolist ) . "

\n"; + $grouplist .= '

' . $autogrouplistintro . ' ' . $displayedAutolist . "

\n"; } $userToolLinks = Linker::userToolLinks( @@ -480,10 +494,17 @@ class UserrightsPage extends SpecialPage { * @return string */ private static function buildGroupLink( $group ) { - static $cache = array(); - if( !isset( $cache[$group] ) ) - $cache[$group] = User::makeGroupLinkHtml( $group, htmlspecialchars( User::getGroupName( $group ) ) ); - return $cache[$group]; + return User::makeGroupLinkHtml( $group, User::getGroupName( $group ) ); + } + + /** + * Format a link to a group member description page + * + * @param $group string + * @return string + */ + private static function buildGroupMemberLink( $group ) { + return User::makeGroupLinkHtml( $group, User::getGroupMember( $group ) ); } /** diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index a61ab822bc..4c99aedbce 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -1947,6 +1947,7 @@ Your e-mail address is not revealed when other users contact you.', 'saveusergroups' => 'Save user groups', 'userrights-groupsmember' => 'Member of:', 'userrights-groupsmember-auto' => 'Implicit member of:', +'userrights-groupsmember-type' => '$1', # only translate this message to other languages if you have to change it 'userrights-groups-help' => 'You may alter the groups this user is in: * A checked box means the user is in that group. * An unchecked box means the user is not in that group. diff --git a/languages/messages/MessagesQqq.php b/languages/messages/MessagesQqq.php index 82cf299869..f03294aa9c 100644 --- a/languages/messages/MessagesQqq.php +++ b/languages/messages/MessagesQqq.php @@ -1650,6 +1650,10 @@ Parameters: Parameters * $1 - the number of items in the list following the message, for PLURAL. * $2 - the user name, for GENDER.', +'userrights-groupsmember-type' => '{{optional}} +Parameters: +* $1 is list of group names. +* $2 is list of group member names. Used with labels {{msg-mw|userrights-groupsmember}} and {{msg-mw|userrights-groupsmember-auto}}', 'userrights-groups-help' => 'Instructions displayed on [[Special:UserRights]]. Parameters: * $1 is a username - optional, can be used for GENDER', 'userrights-reason' => 'Text beside log field when editing user groups diff --git a/maintenance/language/messageTypes.inc b/maintenance/language/messageTypes.inc index ce1dbb9b5b..d22070f446 100644 --- a/maintenance/language/messageTypes.inc +++ b/maintenance/language/messageTypes.inc @@ -467,6 +467,7 @@ $wgOptionalMessages = array( 'backlinksubtitle', 'prefs-registration-date-time', 'prefs-memberingroups-type', + 'userrights-groupsmember-type', 'shared-repo-name-wikimediacommons', 'usermessage-template', 'filepage.css', diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc index 60e0f30e59..3a16065b26 100644 --- a/maintenance/language/messages.inc +++ b/maintenance/language/messages.inc @@ -1087,6 +1087,7 @@ $wgMessageStructure = array( 'saveusergroups', 'userrights-groupsmember', 'userrights-groupsmember-auto', + 'userrights-groupsmember-type', 'userrights-groups-help', 'userrights-reason', 'userrights-no-interwiki', -- 2.20.1