Add mute preferences link to the tools menu
authorDayllan Maza <dmaza@wikimedia.org>
Wed, 10 Jul 2019 17:47:07 +0000 (13:47 -0400)
committerDayllan Maza <dmaza@wikimedia.org>
Tue, 16 Jul 2019 21:38:47 +0000 (17:38 -0400)
A link to Special:Mute is added to the tools menu on the sidebar
if the user is logged in and a registered relevant-user* is found
Mute preferences link will not be shown if $wgEnableSpecialMute is false

* From Skin::getRelevantUser: Special pages like Special:Contributions mark
  the user which  they are relevant to so that things like the toolbox can
  display the information they usually are only able to display on a
  user's userpage and talkpage.

Bug: T218270
Change-Id: I89eb8373963d28d52a026b60aa42d1c64b31b7c6

includes/skins/BaseTemplate.php
includes/skins/SkinTemplate.php
languages/i18n/en.json
languages/i18n/qqq.json

index 6d108e8..cd79259 100644 (file)
@@ -85,7 +85,7 @@ abstract class BaseTemplate extends QuickTemplate {
                                $toolbox['feeds']['links'][$key]['class'] = 'feedlink';
                        }
                }
-               foreach ( [ 'contributions', 'log', 'blockip', 'emailuser',
+               foreach ( [ 'contributions', 'log', 'blockip', 'emailuser', 'mute',
                        'userrights', 'upload', 'specialpages' ] as $special
                ) {
                        if ( isset( $this->data['nav_urls'][$special] ) && $this->data['nav_urls'][$special] ) {
index 5d6197e..364e4fc 100644 (file)
@@ -1278,6 +1278,7 @@ class SkinTemplate extends Skin {
                $nav_urls['contributions'] = false;
                $nav_urls['log'] = false;
                $nav_urls['blockip'] = false;
+               $nav_urls['mute'] = false;
                $nav_urls['emailuser'] = false;
                $nav_urls['userrights'] = false;
 
@@ -1355,6 +1356,13 @@ class SkinTemplate extends Skin {
                        }
 
                        if ( !$user->isAnon() ) {
+                               if ( $this->getUser()->isRegistered() && $this->getConfig()->get( 'EnableSpecialMute' ) ) {
+                                       $nav_urls['mute'] = [
+                                               'text' => $this->msg( 'mute-preferences' )->text(),
+                                               'href' => self::makeSpecialUrlSubpage( 'Mute', $rootUser )
+                                       ];
+                               }
+
                                $sur = new UserrightsPage;
                                $sur->setContext( $this->getContext() );
                                $canChange = $sur->userCanChangeRights( $user );
index 0da5c5f..0f40121 100644 (file)
        "specialmute-error-email-preferences": "You must confirm your email address before you can mute a user. You may do so from [[Special:Preferences]].",
        "specialmute-email-footer": "To manage email preferences for {{BIDI:$2}} please visit <$1>.",
        "specialmute-login-required": "Please log in to change your mute preferences.",
+       "mute-preferences": "Mute preferences",
        "revid": "revision $1",
        "pageid": "page ID $1",
        "interfaceadmin-info": "$1\n\nPermissions for editing of sitewide CSS/JS/JSON files were recently separated from the <code>editinterface</code> right. If you do not understand why you are getting this error, see [[mw:MediaWiki_1.32/interface-admin]].",
index 6ba308b..965f163 100644 (file)
        "specialmute-error-email-preferences": "Error displayed when the user has not confirmed their email address.",
        "specialmute-email-footer": "Email footer in plain text linking to [[Special:Mute]] preselecting the sender to manage muting options.\n* $1 - Url linking to [[Special:Mute]].\n* $2 - The user sending the email.",
        "specialmute-login-required": "Error displayed when a user tries to access [[Special:Mute]] before logging in.",
+       "mute-preferences": "Link in the sidebar to manage muting preferences for a user. It links to [[Special:Mute]] with the user in context as the subpage.",
        "revid": "Used to format a revision ID number in text. Parameters:\n* $1 - Revision ID number.\n{{Identical|Revision}}",
        "pageid": "Used to format a page ID number in text. Parameters:\n* $1 - Page ID number.",
        "interfaceadmin-info": "Part of the error message shown when someone with the <code>editinterface</code> right but without the appropriate <code>editsite*</code> right tries to edit a sitewide CSS/JSON/JS page.",