Add a user preference to opt in or out of a confirmation prompt for rollbacks.
authortzhelyazkova <tonina.zhelyazkova@wikimedia.de>
Thu, 21 Mar 2019 08:05:27 +0000 (09:05 +0100)
committertzhelyazkova <tonina.zhelyazkova@wikimedia.de>
Thu, 21 Mar 2019 08:05:27 +0000 (09:05 +0100)
Bug: T199537
Change-Id: I2f08ef5f8c38f23b282e130d040681fc060b6b00

includes/preferences/DefaultPreferencesFactory.php
tests/phpunit/includes/preferences/DefaultPreferencesFactoryTest.php

index 3651882..a42726f 100644 (file)
@@ -121,7 +121,7 @@ class DefaultPreferencesFactory implements PreferencesFactory {
                $this->skinPreferences( $user, $context, $preferences );
                $this->datetimePreferences( $user, $context, $preferences );
                $this->filesPreferences( $context, $preferences );
-               $this->renderingPreferences( $context, $preferences );
+               $this->renderingPreferences( $user, $context, $preferences );
                $this->editingPreferences( $user, $context, $preferences );
                $this->rcPreferences( $user, $context, $preferences );
                $this->watchlistPreferences( $user, $context, $preferences );
@@ -800,10 +800,12 @@ class DefaultPreferencesFactory implements PreferencesFactory {
        }
 
        /**
+        * @param User $user
         * @param MessageLocalizer $l10n
         * @param array &$defaultPreferences
         */
        protected function renderingPreferences(
+               User $user,
                MessageLocalizer $l10n,
                &$defaultPreferences
        ) {
@@ -861,6 +863,14 @@ class DefaultPreferencesFactory implements PreferencesFactory {
                        'section' => 'rendering/advancedrendering',
                        'label-message' => 'tog-numberheadings',
                ];
+
+               if ( $user->isAllowed( 'rollback' ) ) {
+                       $defaultPreferences['showrollbackconfirmation'] = [
+                               'type' => 'toggle',
+                               'section' => 'rendering/advancedrendering',
+                               'label-message' => 'tog-showrollbackconfirmation',
+                       ];
+               }
        }
 
        /**
index 8142f39..94c0667 100644 (file)
@@ -87,8 +87,6 @@ class DefaultPreferencesFactoryTest extends \MediaWikiTestCase {
         * @covers MediaWiki\Preferences\DefaultPreferencesFactory::renderingPreferences()
         */
        public function testShowRollbackConfIsHiddenForUsersWithoutRollbackRights() {
-               // TODO Remove temporary skip marker once feature is added back in
-               $this->markTestSkipped();
                $userMock = $this->getMockBuilder( User::class )
                        ->disableOriginalConstructor()
                        ->getMock();
@@ -109,8 +107,6 @@ class DefaultPreferencesFactoryTest extends \MediaWikiTestCase {
         * @covers MediaWiki\Preferences\DefaultPreferencesFactory::renderingPreferences()
         */
        public function testShowRollbackConfIsShownForUsersWithRollbackRights() {
-               // TODO Remove temporary skip marker once feature is added back in
-               $this->markTestSkipped();
                $userMock = $this->getMockBuilder( User::class )
                        ->disableOriginalConstructor()
                        ->getMock();