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