mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-09-23 10:22:05 +00:00
Fix incomplete gender support for user group changes
This affects primarily the message "notification-header-user-rights-add-only" which is very priminently seen by every new editor that made their first few edits and gets promoted to the next user group a few days later. Turns out the code was just incomplete. All the information about the user and their gender is already there, it was just not forwarded correctly. Notice there are two messages: * "group-…" messages don't have gender support. This is the (ideally) gender neutral name of the group. Meant to be used as e.g. section heading for a list of users. * "group-…-member" is the same with gender support. To be used in all contexts that are about a single, specific user with known gender. Which is exactly what's happening here. Turns out we can even use a neat convenience function from the Language class that does exactly what we need. I can't tell why but the array_values is apparently critical. Originally added via I49b5fe5. It can't hurt so I keep it. Bug: T368249 Change-Id: I53c028375d77c93f399538fd38aa8f8af30934b0
This commit is contained in:
parent
8b9e747966
commit
eaa1fea890
|
@ -20,15 +20,15 @@ class EchoUserRightsPresentationModel extends EchoEventPresentationModel {
|
|||
[ $formattedName, $genderName ] = $this->getAgentForOutput();
|
||||
$add = array_map(
|
||||
[ $this->language, 'embedBidi' ],
|
||||
$this->getLocalizedGroupNames( array_values( $this->event->getExtraParam( 'add', [] ) ) )
|
||||
$this->getLocalizedGroupNames( $this->event->getExtraParam( 'add', [] ), $genderName )
|
||||
);
|
||||
$remove = array_map(
|
||||
[ $this->language, 'embedBidi' ],
|
||||
$this->getLocalizedGroupNames( array_values( $this->event->getExtraParam( 'remove', [] ) ) )
|
||||
$this->getLocalizedGroupNames( $this->event->getExtraParam( 'remove', [] ), $genderName )
|
||||
);
|
||||
$expiryChanged = array_map(
|
||||
[ $this->language, 'embedBidi' ],
|
||||
$this->getLocalizedGroupNames( array_values( $this->event->getExtraParam( 'expiry-changed', [] ) ) )
|
||||
$this->getLocalizedGroupNames( $this->event->getExtraParam( 'expiry-changed', [] ), $genderName )
|
||||
);
|
||||
if ( $expiryChanged ) {
|
||||
$msg = $this->msg( 'notification-header-user-rights-expiry-change' );
|
||||
|
@ -72,11 +72,16 @@ class EchoUserRightsPresentationModel extends EchoEventPresentationModel {
|
|||
return false;
|
||||
}
|
||||
|
||||
private function getLocalizedGroupNames( array $names ) {
|
||||
return array_map( function ( $name ) {
|
||||
$msg = $this->msg( 'group-' . $name );
|
||||
return $msg->isBlank() ? $name : $msg->text();
|
||||
}, $names );
|
||||
/**
|
||||
* @param string[] $names
|
||||
* @param string $genderName
|
||||
* @return string[]
|
||||
*/
|
||||
private function getLocalizedGroupNames( array $names, string $genderName ) {
|
||||
return array_map(
|
||||
fn ( $name ) => $this->language->getGroupMemberName( $name, $genderName ),
|
||||
array_values( $names )
|
||||
);
|
||||
}
|
||||
|
||||
public function getPrimaryLink() {
|
||||
|
|
Loading…
Reference in a new issue