Phuedx has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/328675 )

Change subject: Clicking cog sends user to Special:Preferences
......................................................................

Clicking cog sends user to Special:Preferences

If the user is logged in, then send them user to
the "Appearance" tab of Special:Preferences when they click on the cog
button.

Supporting changes:
* Stub the user in the settings change listener unit tests.

Bug: T146889
Change-Id: I39d7d0afd7b1fe896019a1b3a82ee907bfb20edd
---
M resources/ext.popups/boot.js
M resources/ext.popups/changeListeners/settings.js
M tests/qunit/ext.popups/changeListeners/settings.test.js
3 files changed, 34 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Popups 
refs/changes/75/328675/1

diff --git a/resources/ext.popups/boot.js b/resources/ext.popups/boot.js
index ed3c0d9..251f836 100644
--- a/resources/ext.popups/boot.js
+++ b/resources/ext.popups/boot.js
@@ -34,7 +34,7 @@
         * @param {Function} settingsDialog
         * @param {mw.User} user
         */
-       function registerChangeListeners( store, actions, schema, userSettings, 
settingsDialog ) {
+       function registerChangeListeners( store, actions, schema, userSettings, 
settingsDialog, user ) {
 
                // Sugar.
                var changeListeners = mw.popups.changeListeners,
@@ -45,7 +45,7 @@
                registerChangeListener( store, changeListeners.render( actions 
) );
                registerChangeListener( store, changeListeners.eventLogging( 
actions, schema ) );
                registerChangeListener( store, 
changeListeners.syncUserSettings( userSettings ) );
-               registerChangeListener( store, changeListeners.settings( 
actions, settingsDialog ) );
+               registerChangeListener( store, changeListeners.settings( 
actions, settingsDialog, user ) );
        }
 
        /**
@@ -110,7 +110,7 @@
                        ) )
                );
                actions = createBoundActions( store );
-               registerChangeListeners( store, actions, schema, userSettings, 
settingsDialog );
+               registerChangeListeners( store, actions, schema, userSettings, 
settingsDialog, mw.user );
 
                actions.boot(
                        isEnabled,
diff --git a/resources/ext.popups/changeListeners/settings.js 
b/resources/ext.popups/changeListeners/settings.js
index 6226d49..a32af98 100644
--- a/resources/ext.popups/changeListeners/settings.js
+++ b/resources/ext.popups/changeListeners/settings.js
@@ -1,15 +1,42 @@
 ( function ( mw ) {
 
        /**
+        * Per the [design document][0], logged in users enable or disable Page
+        * Previews via the Preferences special page.
+        *
+        * [0]: 
https://www.mediawiki.org/wiki/Beta_Features/Hovercards/Functionality#Logged-in_users
+        *
+        * @param {Object} prevState The state prior to it being reduced with 
the
+        *  action
+        * @param {Object} state The new state
+        */
+       function loggedInChangeListener( prevState, state ) {
+               var url = mw.Title.newFromText( 
'Special:Preferences#mw-prefsection-rendering' ).getUrl();
+
+               if (
+                       prevState && prevState.settings.shouldShow === false &&
+                       state.settings.shouldShow === true
+               ) {
+                       window.location = url;
+               }
+       }
+
+       /**
         * Creates an instance of the settings change listener.
         *
         * @param {Object} boundActions
         * @param {Object} render function that renders a jQuery el with the 
settings
+        * @param {mw.User} user An instance of `mw.User` that represents the 
current
+        *  user
         * @return {ext.popups.ChangeListener}
         */
-       mw.popups.changeListeners.settings = function ( boundActions, render ) {
+       mw.popups.changeListeners.settings = function ( boundActions, render, 
user ) {
                var settings;
 
+               if ( !user.isAnon() ) {
+                       return loggedInChangeListener;
+               }
+
                return function ( prevState, state ) {
                        if ( !prevState ) {
                                // Nothing to do on initialization
diff --git a/tests/qunit/ext.popups/changeListeners/settings.test.js 
b/tests/qunit/ext.popups/changeListeners/settings.test.js
index 30bbf9c..7bdd0b7 100644
--- a/tests/qunit/ext.popups/changeListeners/settings.test.js
+++ b/tests/qunit/ext.popups/changeListeners/settings.test.js
@@ -2,6 +2,8 @@
 
        QUnit.module( 'ext.popups/changeListeners/settings', {
                setup: function () {
+                       var user = mw.popups.tests.stubs.createStubUser( /* 
isAnon = */ true );
+
                        this.render = this.sandbox.stub();
                        this.rendered = {
                                appendTo: this.sandbox.spy(),
@@ -31,7 +33,7 @@
                        };
 
                        this.settings =
-                               mw.popups.changeListeners.settings( 'actions', 
this.render );
+                               mw.popups.changeListeners.settings( 'actions', 
this.render, user );
                }
        } );
 

-- 
To view, visit https://gerrit.wikimedia.org/r/328675
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I39d7d0afd7b1fe896019a1b3a82ee907bfb20edd
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Popups
Gerrit-Branch: mpga
Gerrit-Owner: Phuedx <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to