diff --git a/extensions/wikidata/module/langs/translation-en.json b/extensions/wikidata/module/langs/translation-en.json
index 7c8a8a59c..f4e9c9aa2 100644
--- a/extensions/wikidata/module/langs/translation-en.json
+++ b/extensions/wikidata/module/langs/translation-en.json
@@ -82,8 +82,8 @@
"wikidata-account/access-secret-label": "Access secret:",
"wikidata-account/access-secret-placeholder": "access secret",
"wikidata-account/remember-me": "Remember me",
- "wikidata-account/password-remember-me-title": "Your password won't be stored.",
- "wikidata-account/owner-only-consumer-remember-me-title": "Consumer credentials are stored encrypted in cookies.",
+ "wikidata-account/password-remember-me-title": "Your password won't be stored. Don't check this if your computer is public.",
+ "wikidata-account/owner-only-consumer-remember-me-title": "Consumer credentials are stored unencrypted in cookies. Don't check this if your computer is public.",
"wikidata-account/close": "Close",
"wikidata-account/log-in": "Log in",
"wikidata-account/logged-in-as": "You are logged in as:",
diff --git a/extensions/wikidata/module/langs/translation-en_GB.json b/extensions/wikidata/module/langs/translation-en_GB.json
index 7088f3d2b..2206aaa95 100644
--- a/extensions/wikidata/module/langs/translation-en_GB.json
+++ b/extensions/wikidata/module/langs/translation-en_GB.json
@@ -114,8 +114,8 @@
"wikidata-account/access-secret-label": "Access secret:",
"wikidata-account/access-secret-placeholder": "access secret",
"wikidata-account/remember-me": "Remember me",
- "wikidata-account/password-remember-me-title": "Your password won't be stored.",
- "wikidata-account/owner-only-consumer-remember-me-title": "Consumer credentials are stored encrypted in cookies.",
+ "wikidata-account/password-remember-me-title": "Your password won't be stored. Don't check this if your computer is public.",
+ "wikidata-account/owner-only-consumer-remember-me-title": "Consumer credentials are stored unencrypted in cookies. Don't check this if your computer is public.",
"wikidata-account/close": "Close",
"wikidata-account/log-in": "Log in",
"wikidata-account/logged-in-as": "You are logged in as:",
diff --git a/extensions/wikidata/module/scripts/dialogs/logged-in-dialog.html b/extensions/wikidata/module/scripts/dialogs/logged-in-dialog.html
index 81bf2b396..229fddb46 100644
--- a/extensions/wikidata/module/scripts/dialogs/logged-in-dialog.html
+++ b/extensions/wikidata/module/scripts/dialogs/logged-in-dialog.html
@@ -7,6 +7,7 @@
-
diff --git a/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js b/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js
index 8b9977648..486b865f4 100644
--- a/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js
+++ b/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js
@@ -2,35 +2,42 @@ var ManageAccountDialog = {};
ManageAccountDialog.firstLogin = true;
-ManageAccountDialog.display = function (logged_in_username, callback) {
-
+/**
+ * Displays the logged in page if the user is logged in,
+ * displays the login page otherwise.
+ */
+ManageAccountDialog.display = function (logged_in_username, onSuccess) {
if (logged_in_username == null) {
- logged_in_username = ManageAccountDialog.tryLoginWithCookies(callback);
- }
-
- if (logged_in_username != null) {
- ManageAccountDialog.displayLoggedIn(logged_in_username, callback);
+ if (ManageAccountDialog.firstLogin) {
+ ManageAccountDialog.firstLogin = false;
+ ManageAccountDialog.tryLoginWithCookies(onSuccess);
+ } else {
+ ManageAccountDialog.displayPasswordLogin(onSuccess);
+ }
} else {
- ManageAccountDialog.displayPasswordLogin(callback);
+ ManageAccountDialog.displayLoggedIn(logged_in_username);
}
};
-ManageAccountDialog.tryLoginWithCookies = function (callback) {
- var logged_user_name = null;
- $.ajaxSetup({async: false});
+
+ManageAccountDialog.tryLoginWithCookies = function (onSuccess) {
+ // In the first login, we try logging in with cookies,
+ // the backend may take a while to tell if the cookies are valid or not.
+ // So we need to call DialogSystem.showBusy to inform the user that
+ // OpenRefine is trying connecting to Wikidata.
+ const discardWaiter = DialogSystem.showBusy($.i18n('wikidata-account/connecting-to-wikidata'));
Refine.postCSRF(
"command/wikidata/login",
{},
function (data) {
+ discardWaiter();
if (data.logged_in) {
- callback(data.username);
- logged_user_name = data.username;
+ onSuccess(data.username);
+ ManageAccountDialog.displayLoggedIn(data.username);
} else {
- logged_user_name = null;
+ ManageAccountDialog.displayPasswordLogin(onSuccess);
}
});
- $.ajaxSetup({async: true});
- return logged_user_name;
};
ManageAccountDialog.initCommon = function (elmts) {
@@ -39,7 +46,7 @@ ManageAccountDialog.initCommon = function (elmts) {
elmts.cancelButton.text($.i18n('wikidata-account/close'));
};
-ManageAccountDialog.displayLoggedIn = function (logged_in_username, callback) {
+ManageAccountDialog.displayLoggedIn = function (logged_in_username) {
var frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/logged-in-dialog.html"));
var elmts = DOM.bind(frame);
ManageAccountDialog.initCommon(elmts);
@@ -57,7 +64,6 @@ ManageAccountDialog.displayLoggedIn = function (logged_in_username, callback) {
elmts.cancelButton.click(function (e) {
dismiss();
- callback(null);
});
elmts.logoutButton.click(function () {
@@ -69,13 +75,12 @@ ManageAccountDialog.displayLoggedIn = function (logged_in_username, callback) {
frame.show();
if (!data.logged_in) {
dismiss();
- callback(null);
}
});
});
};
-ManageAccountDialog.displayPasswordLogin = function (callback) {
+ManageAccountDialog.displayPasswordLogin = function (onSuccess) {
const frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/password-login-dialog.html"));
const elmts = DOM.bind(frame);
ManageAccountDialog.initCommon(elmts);
@@ -98,12 +103,11 @@ ManageAccountDialog.displayPasswordLogin = function (callback) {
elmts.cancelButton.click(function (e) {
dismiss();
- callback(null);
});
elmts.explainOwnerOnlyConsumerLogin.click(function (e) {
dismiss();
- ManageAccountDialog.displayOwnerOnlyConsumerLogin(callback);
+ ManageAccountDialog.displayOwnerOnlyConsumerLogin(onSuccess);
});
elmts.loginForm.submit(function (e) {
@@ -114,7 +118,7 @@ ManageAccountDialog.displayPasswordLogin = function (callback) {
function (data) {
if (data.logged_in) {
dismiss();
- callback(data.username);
+ onSuccess(data.username);
} else {
frame.show();
elmts.invalidCredentials.show();
@@ -124,7 +128,7 @@ ManageAccountDialog.displayPasswordLogin = function (callback) {
});
};
-ManageAccountDialog.displayOwnerOnlyConsumerLogin = function (callback) {
+ManageAccountDialog.displayOwnerOnlyConsumerLogin = function (onSuccess) {
var frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/owner-only-consumer-login-dialog.html"));
var elmts = DOM.bind(frame);
ManageAccountDialog.initCommon(elmts);
@@ -152,12 +156,11 @@ ManageAccountDialog.displayOwnerOnlyConsumerLogin = function (callback) {
elmts.cancelButton.click(function (e) {
dismiss();
- callback(null);
});
elmts.explainPasswordLogin.click(function (e) {
dismiss();
- ManageAccountDialog.displayPasswordLogin(callback);
+ ManageAccountDialog.displayPasswordLogin(onSuccess);
});
elmts.loginForm.submit(function (e) {
@@ -168,7 +171,7 @@ ManageAccountDialog.displayOwnerOnlyConsumerLogin = function (callback) {
function (data) {
if (data.logged_in) {
dismiss();
- callback(data.username);
+ onSuccess(data.username);
} else {
frame.show();
elmts.invalidCredentials.show();
@@ -178,27 +181,28 @@ ManageAccountDialog.displayOwnerOnlyConsumerLogin = function (callback) {
});
};
+/**
+ * Checks if the user is logged in or not.
+ *
+ * The callback needs to react to both cases.
+ */
ManageAccountDialog.isLoggedIn = function (callback) {
- var discardWaiter = function () {
- };
- if (ManageAccountDialog.firstLogin) {
- discardWaiter = DialogSystem.showBusy($.i18n('wikidata-account/connecting-to-wikidata'));
- }
$.get(
"command/wikidata/login",
function (data) {
- discardWaiter();
- ManageAccountDialog.firstLogin = false;
callback(data.username);
});
};
-ManageAccountDialog.ensureLoggedIn = function (callback) {
+/**
+ * The onSuccess callback is called if and only if the user is logged in.
+ */
+ManageAccountDialog.ensureLoggedIn = function (onSuccess) {
ManageAccountDialog.isLoggedIn(function (logged_in_username) {
if (logged_in_username == null) {
- ManageAccountDialog.display(null, callback);
+ ManageAccountDialog.display(null, onSuccess);
} else {
- callback(logged_in_username);
+ onSuccess(logged_in_username);
}
});
};
diff --git a/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.js b/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.js
index eed847bf6..283747b3f 100644
--- a/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.js
+++ b/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.js
@@ -42,7 +42,7 @@ PerformEditsDialog.launch = function(logged_in_username, max_severity) {
{ onDone: function() { dismiss(); } }
);
}
- }
+ };
elmts.loggedInUsername
.text(logged_in_username)
@@ -72,7 +72,7 @@ PerformEditsDialog.updateEditCount = function(edit_count) {
this._elmts.reviewYourEdits.html(
$.i18n('perform-wikidata-edits/review-your-edits')
.replace('{nb_edits}', edit_count));
-}
+};
PerformEditsDialog._updateWarnings = function(data) {
var warnings = data.warnings;
@@ -87,7 +87,7 @@ PerformEditsDialog._updateWarnings = function(data) {
var rendered = WarningsRenderer._renderWarning(warnings[i]);
rendered.appendTo(table);
}
-}
+};
PerformEditsDialog.checkAndLaunch = function () {
var self = this;
@@ -95,26 +95,24 @@ PerformEditsDialog.checkAndLaunch = function () {
this._elmts = DOM.bind(this.frame);
this.missingSchema = false;
- var onSaved = function() {
- ManageAccountDialog.ensureLoggedIn(function(logged_in_username) {
- if (logged_in_username) {
- var discardWaiter = DialogSystem.showBusy($.i18n('perform-wikidata-edits/analyzing-edits'));
- Refine.postCSRF(
- "command/wikidata/preview-wikibase-schema?" + $.param({ project: theProject.id }),
- { engine: JSON.stringify(ui.browsingEngine.getJSON()) },
- function(data) {
- discardWaiter();
- if(data['code'] != 'error') {
- PerformEditsDialog._updateWarnings(data);
- PerformEditsDialog.launch(logged_in_username, data['max_severity']);
- } else {
- SchemaAlignmentDialog.launch(
- PerformEditsDialog.checkAndLaunch);
- }
- },
- "json"
- );
- }
+ var onSaved = function () {
+ ManageAccountDialog.ensureLoggedIn(function (logged_in_username) {
+ var discardWaiter = DialogSystem.showBusy($.i18n('perform-wikidata-edits/analyzing-edits'));
+ Refine.postCSRF(
+ "command/wikidata/preview-wikibase-schema?" + $.param({project: theProject.id}),
+ {engine: JSON.stringify(ui.browsingEngine.getJSON())},
+ function (data) {
+ discardWaiter();
+ if (data['code'] != 'error') {
+ PerformEditsDialog._updateWarnings(data);
+ PerformEditsDialog.launch(logged_in_username, data['max_severity']);
+ } else {
+ SchemaAlignmentDialog.launch(
+ PerformEditsDialog.checkAndLaunch);
+ }
+ },
+ "json"
+ );
});
};
diff --git a/extensions/wikidata/module/styles/dialogs/manage-account-dialog.less b/extensions/wikidata/module/styles/dialogs/manage-account-dialog.less
index 17346603a..33449f52c 100644
--- a/extensions/wikidata/module/styles/dialogs/manage-account-dialog.less
+++ b/extensions/wikidata/module/styles/dialogs/manage-account-dialog.less
@@ -91,4 +91,4 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.wikibase-login-dialog-footer span {
cursor: pointer;
-}
\ No newline at end of file
+}