diff --git a/extensions/wikidata/module/MOD-INF/controller.js b/extensions/wikidata/module/MOD-INF/controller.js index b2e9858dc..d2f306b0a 100644 --- a/extensions/wikidata/module/MOD-INF/controller.js +++ b/extensions/wikidata/module/MOD-INF/controller.js @@ -48,7 +48,7 @@ function init() { RefineServlet.registerCommand(module, "preview-wikibase-schema", new PreviewWikibaseSchemaCommand()); RefineServlet.registerCommand(module, "perform-wikibase-edits", new PerformWikibaseEditsCommand()); RefineServlet.registerCommand(module, "login", new LoginCommand()); - + /* * Resources */ diff --git a/extensions/wikidata/module/images/wikidata.png b/extensions/wikidata/module/images/wikidata.png index d0aa6d802..58d5d8a8f 100644 Binary files a/extensions/wikidata/module/images/wikidata.png and b/extensions/wikidata/module/images/wikidata.png differ diff --git a/extensions/wikidata/module/langs/translation-bn.json b/extensions/wikidata/module/langs/translation-bn.json index fa50d4cc2..c02cf7a1e 100644 --- a/extensions/wikidata/module/langs/translation-bn.json +++ b/extensions/wikidata/module/langs/translation-bn.json @@ -43,9 +43,7 @@ "wikidata-account/dialog-header": "উইকিউপাত্ত অ্যাকাউন্ট", "wikidata-account/explain-log-in": "উইকিউপাত্তে প্রবেশ করলে সরাসরি ওপেনরিফাইন থেকে আপনাকে সম্পাদনা আপলোড করতে দেওয়া হবে।", "wikidata-account/username-label": "ব্যবহারকারী নাম:", - "wikidata-account/username-placeholder": "আপনার ব্যবহারকারী নাম অন্তর্ভুক্ত করুন", "wikidata-account/password-label": "পাসওয়ার্ড:", - "wikidata-account/password-placeholder": "আপনার পাসওয়ার্ড অন্তর্ভুক্ত করুন", "wikidata-account/close": "বন্ধ করুন", "wikidata-account/log-in": "প্রবেশ করুন", "wikidata-account/log-out": "প্রস্থান করুন" diff --git a/extensions/wikidata/module/langs/translation-en.json b/extensions/wikidata/module/langs/translation-en.json index 753f7c21b..7c8a8a59c 100644 --- a/extensions/wikidata/module/langs/translation-en.json +++ b/extensions/wikidata/module/langs/translation-en.json @@ -65,11 +65,25 @@ "wikidata-preview/new-id": "new item", "wikidata-account/dialog-header": "Wikidata account", "wikidata-account/explain-log-in": "Logging in to Wikidata lets you to upload edits directly from OpenRefine.", + "wikidata-account/explain-owner-only-consumer-wiki": "See this wiki to get your owner-only consumer if you don't have one.", + "wikidata-account/explain-password-login": "You can also login with your username/password.", + "wikidata-account/explain-owner-only-consumer-login": "You can also login with your owner-only consumer.", + "wikidata-account/invalid-credentials": "Invalid credentials", "wikidata-account/username-label": "Username:", - "wikidata-account/username-placeholder": "Enter your username", + "wikidata-account/username-placeholder": "username", "wikidata-account/password-label": "Password:", - "wikidata-account/password-placeholder": "Enter your password", - "wikidata-account/remember-credentials-label": "Remember credentials (stored unencrypted in OpenRefine's preferences)", + "wikidata-account/password-placeholder": "password", + "wikidata-account/consumer-token-label": "Consumer token:", + "wikidata-account/consumer-token-placeholder": "consumer token", + "wikidata-account/consumer-secret-label": "Consumer secret:", + "wikidata-account/consumer-secret-placeholder": "consumer secret", + "wikidata-account/access-token-label": "Access token:", + "wikidata-account/access-token-placeholder": "access token", + "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/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 7ebae0b16..7088f3d2b 100644 --- a/extensions/wikidata/module/langs/translation-en_GB.json +++ b/extensions/wikidata/module/langs/translation-en_GB.json @@ -95,17 +95,31 @@ "perform-wikidata-edits/review-your-edits": "You are about to upload {nb_edits} edits to Wikidata. Please check them carefully. Large edit batches should be submitted for bot review first.", "perform-wikidata-edits/dialog-header": "Upload edits to Wikidata", "wikidata-account/connecting-to-wikidata": "Connecting to Wikidata…", - "wikidata-account/log-out": "Log out", - "wikidata-account/logged-in-as": "You are logged in as:", - "wikidata-account/log-in": "Log in", - "wikidata-account/close": "Close", - "wikidata-account/remember-credentials-label": "Remember credentials (stored unencrypted in OpenRefine's preferences)", - "wikidata-account/password-placeholder": "Enter your password", - "wikidata-account/password-label": "Password:", - "wikidata-account/username-placeholder": "Enter your username", - "wikidata-account/username-label": "Username:", - "wikidata-account/explain-log-in": "Logging in to Wikidata lets you to upload edits directly from OpenRefine.", "wikidata-account/dialog-header": "Wikidata account", + "wikidata-account/explain-log-in": "Logging in to Wikidata lets you to upload edits directly from OpenRefine.", + "wikidata-account/explain-owner-only-consumer-wiki": "See this wiki to get your owner-only consumer if you don't have one.", + "wikidata-account/explain-password-login": "You can also login with your username/password.", + "wikidata-account/explain-owner-only-consumer-login": "You can also login with your owner-only consumer.", + "wikidata-account/invalid-credentials": "Invalid credentials", + "wikidata-account/username-label": "Username:", + "wikidata-account/username-placeholder": "username", + "wikidata-account/password-label": "Password:", + "wikidata-account/password-placeholder": "password", + "wikidata-account/consumer-token-label": "Consumer token:", + "wikidata-account/consumer-token-placeholder": "consumer token", + "wikidata-account/consumer-secret-label": "Consumer secret:", + "wikidata-account/consumer-secret-placeholder": "consumer secret", + "wikidata-account/access-token-label": "Access token:", + "wikidata-account/access-token-placeholder": "access token", + "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/close": "Close", + "wikidata-account/log-in": "Log in", + "wikidata-account/logged-in-as": "You are logged in as:", + "wikidata-account/log-out": "Log out", "wikidata-preview/new-id": "new item", "wikidata-schema/unsaved-warning": "You have made unsaved changes to your Wikidata schema. Close anyway?", "wikidata-schema/incomplete-schema-could-not-be-saved": "Your schema is incomplete so it cannot be saved yet.", diff --git a/extensions/wikidata/module/langs/translation-fr.json b/extensions/wikidata/module/langs/translation-fr.json index e49561278..0ee14f082 100644 --- a/extensions/wikidata/module/langs/translation-fr.json +++ b/extensions/wikidata/module/langs/translation-fr.json @@ -59,10 +59,7 @@ "wikidata-account/dialog-header": "compte Wikidata", "wikidata-account/explain-log-in": "Se connecter à Wikidata vous permet de publier vos données sur Wikidata depuis OpenRefine.", "wikidata-account/username-label": "Nom d'utilisateur :", - "wikidata-account/username-placeholder": "Entrez votre nom d'utilisateur", "wikidata-account/password-label": "Mot de passe :", - "wikidata-account/password-placeholder": "Entrez votre mot de passe", - "wikidata-account/remember-credentials-label": "Se souvenir des identifiants (enregistrés sans chiffrement dans les préférences)", "wikidata-account/close": "Fermer", "wikidata-account/log-in": "Se connecter", "wikidata-account/logged-in-as": "Vous êtes connecté·e en tant que :", diff --git a/extensions/wikidata/module/langs/translation-it.json b/extensions/wikidata/module/langs/translation-it.json index 7657c6d31..b05f1697f 100644 --- a/extensions/wikidata/module/langs/translation-it.json +++ b/extensions/wikidata/module/langs/translation-it.json @@ -52,10 +52,7 @@ "wikidata-account/dialog-header": "account su Wikidata", "wikidata-account/explain-log-in": "Accedere a Wikidata ti permette di caricare i tuoi edit direttamente tramite OpenRefine.", "wikidata-account/username-label": "Nome utente:", - "wikidata-account/username-placeholder": "Inserisci il tuo nome utente", "wikidata-account/password-label": "Password:", - "wikidata-account/password-placeholder": "Inserisci la tua password", - "wikidata-account/remember-credentials-label": "Ricorda questi dati (verranno mantenuti in forma criptata nelle preferenze di OpenRefine", "wikidata-account/close": "Chiudi", "wikidata-account/log-in": "Entra", "wikidata-account/logged-in-as": "Sei registrato come:", diff --git a/extensions/wikidata/module/langs/translation-jp.json b/extensions/wikidata/module/langs/translation-jp.json index 1c0fefec7..f4137023f 100644 --- a/extensions/wikidata/module/langs/translation-jp.json +++ b/extensions/wikidata/module/langs/translation-jp.json @@ -56,10 +56,7 @@ "wikidata-account/dialog-header": "Wikidataアカウント", "wikidata-account/explain-log-in": "OpenRefineから直接データをアップロードするため、Wikidataにログインする.", "wikidata-account/username-label": "ユーザー名:", - "wikidata-account/username-placeholder": "ユーザー名を入力", "wikidata-account/password-label": "パスワード:", - "wikidata-account/password-placeholder": "パスワードを入力", - "wikidata-account/remember-credentials-label": "credentialsをOpenRefineの設定に保存する", "wikidata-account/close": "閉じる", "wikidata-account/log-in": "ログイン", "wikidata-account/logged-in-as": "ログイン名:", diff --git a/extensions/wikidata/module/langs/translation-ko.json b/extensions/wikidata/module/langs/translation-ko.json index fd457dc7c..935080c29 100644 --- a/extensions/wikidata/module/langs/translation-ko.json +++ b/extensions/wikidata/module/langs/translation-ko.json @@ -54,10 +54,7 @@ "wikidata-account/dialog-header": "Wikidata 계정", "wikidata-account/explain-log-in": "Wikidata 로그인하세요. OpenRefine 에서 직접 편집을 업로드할 수 있습니다.", "wikidata-account/username-label": "사용자이름:", - "wikidata-account/username-placeholder": "사용자이름을 입력하세요", "wikidata-account/password-label": "비밀번호:", - "wikidata-account/password-placeholder": "비밀번호를 입력하세요", - "wikidata-account/remember-credentials-label": "credentials을 기억하세요 (OpenRefine의 Preferences에 암호화되지 않고 저장됩니다)", "wikidata-account/close": "닫기", "wikidata-account/log-in": "로그인", "wikidata-account/logged-in-as": "다음으로 로그인 됨:", diff --git a/extensions/wikidata/module/langs/translation-nb_NO.json b/extensions/wikidata/module/langs/translation-nb_NO.json index b6b5bc6ac..8ace62f0c 100644 --- a/extensions/wikidata/module/langs/translation-nb_NO.json +++ b/extensions/wikidata/module/langs/translation-nb_NO.json @@ -54,10 +54,7 @@ "wikidata-account/dialog-header": "Wikidata-konto", "wikidata-account/explain-log-in": "Hvis du logger inn på Wikidata kan du laste opp redigeringer direkte fra OpenRefine.", "wikidata-account/username-label": "Brukernavn:", - "wikidata-account/username-placeholder": "Skriv inn brukernavnet ditt", "wikidata-account/password-label": "Passord:", - "wikidata-account/password-placeholder": "Skriv inn passordet ditt", - "wikidata-account/remember-credentials-label": "Husk meg (lagres ukryptert i OpenRefines innstillinger)", "wikidata-account/close": "Lukk", "wikidata-account/log-in": "Logg inn", "wikidata-account/logged-in-as": "Du er innlogget som:", diff --git a/extensions/wikidata/module/langs/translation-nl.json b/extensions/wikidata/module/langs/translation-nl.json index 3f9671854..9a7ec5d22 100644 --- a/extensions/wikidata/module/langs/translation-nl.json +++ b/extensions/wikidata/module/langs/translation-nl.json @@ -53,10 +53,7 @@ "wikidata-account/dialog-header": "Wikidata-account", "wikidata-account/explain-log-in": "Aanmelden bij Wikidata laat u direct bewerkingen vanuit OpenRefine uploaden.", "wikidata-account/username-label": "Gebruikersnaam:", - "wikidata-account/username-placeholder": "Vul uw gebruikersnaam in", "wikidata-account/password-label": "Wachtwoord:", - "wikidata-account/password-placeholder": "Voer uw wachtwoord in", - "wikidata-account/remember-credentials-label": "Gegevens onthouden (ongecodeerd opgeslagen in de voorkeuren van OpenRefine)", "wikidata-account/close": "Sluiten", "wikidata-account/log-in": "Aanmelden", "wikidata-account/logged-in-as": "U bent aangemeld als:", diff --git a/extensions/wikidata/module/langs/translation-sv.json b/extensions/wikidata/module/langs/translation-sv.json index da487eecf..434ce0401 100644 --- a/extensions/wikidata/module/langs/translation-sv.json +++ b/extensions/wikidata/module/langs/translation-sv.json @@ -59,10 +59,7 @@ "wikidata-preview/new-id": "nytt objekt", "wikidata-account/explain-log-in": "Logga in på Wikidata så att du kan ladda upp redigeringar direkt från OpenRefine.", "wikidata-account/username-label": "Användarnamn:", - "wikidata-account/username-placeholder": "Skriv in ditt användarnamn", "wikidata-account/password-label": "Lösenord:", - "wikidata-account/password-placeholder": "Skriv in ditt lösenord", - "wikidata-account/remember-credentials-label": "Kom ihåg inloggningsuppgifter (lagras okrypterade i OpenRefines inställningar)", "wikidata-account/connecting-to-wikidata": "Anslut till Wikidata…", "perform-wikidata-edits/dialog-header": "Överför redigeringar till Wikidata", "perform-wikidata-edits/review-your-edits": "Du håller på att ladda upp {nb_edits} redigeringar till Wikidata. Kontrollera dem noggrant. Stora antal av ändringar bör skickas till botgranskning först.", diff --git a/extensions/wikidata/module/scripts/dialogs/import-schema-dialog.html b/extensions/wikidata/module/scripts/dialogs/import-schema-dialog.html index 0885460db..50d01f699 100644 --- a/extensions/wikidata/module/scripts/dialogs/import-schema-dialog.html +++ b/extensions/wikidata/module/scripts/dialogs/import-schema-dialog.html @@ -5,7 +5,7 @@

-
+
diff --git a/extensions/wikidata/module/scripts/dialogs/logged-in-dialog.html b/extensions/wikidata/module/scripts/dialogs/logged-in-dialog.html new file mode 100644 index 000000000..81bf2b396 --- /dev/null +++ b/extensions/wikidata/module/scripts/dialogs/logged-in-dialog.html @@ -0,0 +1,25 @@ +
+
+
+ + +
+ +
diff --git a/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.html b/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.html deleted file mode 100644 index 5ad8f9e23..000000000 --- a/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.html +++ /dev/null @@ -1,45 +0,0 @@ -
-
-
- - - - -
-
diff --git a/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js b/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js index 5717354d6..8b9977648 100644 --- a/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js +++ b/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js @@ -2,120 +2,210 @@ var ManageAccountDialog = {}; ManageAccountDialog.firstLogin = true; -ManageAccountDialog.launch = function(logged_in_username, callback) { - $.post( - "command/core/get-all-preferences", - null, - function (preferences) { - ManageAccountDialog.display(logged_in_username, preferences.wikidata_credentials, callback); - }, - "json" - ); -}; +ManageAccountDialog.display = function (logged_in_username, callback) { -ManageAccountDialog.display = function(logged_in_username, saved_credentials, callback) { - var self = this; - var frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/manage-account-dialog.html")); - var elmts = this._elmts = DOM.bind(frame); - - this._elmts.dialogHeader.text($.i18n('wikidata-account/dialog-header')); - this._elmts.explainLogIn.html($.i18n('wikidata-account/explain-log-in')); - this._elmts.usernameLabel.text($.i18n('wikidata-account/username-label')); - this._elmts.usernameInput.attr("placeholder", $.i18n('wikidata-account/username-placeholder')); - this._elmts.passwordLabel.text($.i18n('wikidata-account/password-label')); - this._elmts.passwordInput.attr("placeholder", $.i18n('wikidata-account/password-placeholder')); - this._elmts.rememberCredentialsLabel.text($.i18n('wikidata-account/remember-credentials-label')); - this._elmts.dialogHeader.text($.i18n('wikidata-account/dialog-header')); - this._elmts.cancelButton1.text($.i18n('wikidata-account/close')); - this._elmts.cancelButton2.text($.i18n('wikidata-account/close')); - this._elmts.loggedInAs.text($.i18n('wikidata-account/logged-in-as')); - this._elmts.logoutButton.text($.i18n('wikidata-account/log-out')); - this._elmts.loginButton.val($.i18n('wikidata-account/log-in')); - - if (logged_in_username != null) { - elmts.loginArea.remove(); - } else { - elmts.logoutArea.remove(); + if (logged_in_username == null) { + logged_in_username = ManageAccountDialog.tryLoginWithCookies(callback); } - this._level = DialogSystem.showDialog(frame); - this._elmts.usernameInput.focus(); + if (logged_in_username != null) { + ManageAccountDialog.displayLoggedIn(logged_in_username, callback); + } else { + ManageAccountDialog.displayPasswordLogin(callback); + } +}; - var dismiss = function() { - DialogSystem.dismissUntil(self._level - 1); +ManageAccountDialog.tryLoginWithCookies = function (callback) { + var logged_user_name = null; + $.ajaxSetup({async: false}); + Refine.postCSRF( + "command/wikidata/login", + {}, + function (data) { + if (data.logged_in) { + callback(data.username); + logged_user_name = data.username; + } else { + logged_user_name = null; + } + }); + $.ajaxSetup({async: true}); + return logged_user_name; +}; + +ManageAccountDialog.initCommon = function (elmts) { + elmts.dialogHeader.text($.i18n('wikidata-account/dialog-header')); + elmts.explainLogIn.html($.i18n('wikidata-account/explain-log-in')); + elmts.cancelButton.text($.i18n('wikidata-account/close')); +}; + +ManageAccountDialog.displayLoggedIn = function (logged_in_username, callback) { + var frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/logged-in-dialog.html")); + var elmts = DOM.bind(frame); + ManageAccountDialog.initCommon(elmts); + elmts.loggedInAs.text($.i18n('wikidata-account/logged-in-as')); + elmts.logoutButton.text($.i18n('wikidata-account/log-out')); + + var level = DialogSystem.showDialog(frame); + var dismiss = function () { + DialogSystem.dismissUntil(level - 1); }; elmts.loggedInUsername - .text(logged_in_username) - .attr('href', 'https://www.wikidata.org/wiki/User:'+logged_in_username); + .text(logged_in_username) + .attr('href', 'https://www.wikidata.org/wiki/User:' + logged_in_username); - elmts.cancelButton1.click(function(e) { - dismiss(); - callback(null); - }); - elmts.cancelButton2.click(function(e) { - dismiss(); - callback(null); + elmts.cancelButton.click(function (e) { + dismiss(); + callback(null); }); - elmts.loginForm.submit(function(e) { - frame.hide(); - Refine.postCSRF( + elmts.logoutButton.click(function () { + frame.hide(); + Refine.postCSRF( + "command/wikidata/login", + "logout=true", + function (data) { + frame.show(); + if (!data.logged_in) { + dismiss(); + callback(null); + } + }); + }); +}; + +ManageAccountDialog.displayPasswordLogin = function (callback) { + const frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/password-login-dialog.html")); + const elmts = DOM.bind(frame); + ManageAccountDialog.initCommon(elmts); + elmts.explainOwnerOnlyConsumerLogin.html($.i18n('wikidata-account/explain-owner-only-consumer-login')); + elmts.invalidCredentials.text($.i18n('wikidata-account/invalid-credentials')); + elmts.invalidCredentials.hide(); + elmts.usernameLabel.text($.i18n('wikidata-account/username-label')); + elmts.usernameInput.attr("placeholder", $.i18n('wikidata-account/username-placeholder')); + elmts.passwordLabel.text($.i18n('wikidata-account/password-label')); + elmts.passwordInput.attr("placeholder", $.i18n('wikidata-account/password-placeholder')); + elmts.rememberMe.text($.i18n('wikidata-account/remember-me')); + elmts.passwordRememberMeTitle.attr("title", $.i18n('wikidata-account/password-remember-me-title')); + elmts.loginButton.text($.i18n('wikidata-account/log-in')); + elmts.usernameInput.focus(); + + var level = DialogSystem.showDialog(frame); + var dismiss = function () { + DialogSystem.dismissUntil(level - 1); + }; + + elmts.cancelButton.click(function (e) { + dismiss(); + callback(null); + }); + + elmts.explainOwnerOnlyConsumerLogin.click(function (e) { + dismiss(); + ManageAccountDialog.displayOwnerOnlyConsumerLogin(callback); + }); + + elmts.loginForm.submit(function (e) { + frame.hide(); + Refine.postCSRF( "command/wikidata/login", elmts.loginForm.serialize(), - function(data) { + function (data) { if (data.logged_in) { dismiss(); callback(data.username); + } else { + frame.show(); + elmts.invalidCredentials.show(); } - else { - frame.show(); - elmts.invalidCredentials.text("Invalid credentials."); - } - }); - e.preventDefault(); - } - ); - - elmts.logoutButton.click(function() { - Refine.postCSRF( - "command/wikidata/login", - "logout=true", - function(data) { - if (!data.logged_in) { - dismiss(); - callback(null); - } - }); + }); + e.preventDefault(); }); }; -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.displayOwnerOnlyConsumerLogin = function (callback) { + var frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/owner-only-consumer-login-dialog.html")); + var elmts = DOM.bind(frame); + ManageAccountDialog.initCommon(elmts); + elmts.explainOwnerOnlyConsumerWiki.html($.i18n('wikidata-account/explain-owner-only-consumer-wiki')); + elmts.explainPasswordLogin.html($.i18n('wikidata-account/explain-password-login')); + elmts.invalidCredentials.text($.i18n('wikidata-account/invalid-credentials')); + elmts.invalidCredentials.hide(); + elmts.consumerTokenLabel.text($.i18n('wikidata-account/consumer-token-label')); + elmts.consumerTokenInput.attr("placeholder", $.i18n('wikidata-account/consumer-token-placeholder')); + elmts.consumerSecretLabel.text($.i18n('wikidata-account/consumer-secret-label')); + elmts.consumerSecretInput.attr("placeholder", $.i18n('wikidata-account/consumer-secret-placeholder')); + elmts.accessTokenLabel.text($.i18n('wikidata-account/access-token-label')); + elmts.accessTokenInput.attr("placeholder", $.i18n('wikidata-account/access-token-placeholder')); + elmts.accessSecretLabel.text($.i18n('wikidata-account/access-secret-label')); + elmts.accessSecretInput.attr("placeholder", $.i18n('wikidata-account/access-secret-placeholder')); + elmts.rememberMe.text($.i18n('wikidata-account/remember-me')); + elmts.ownerOnlyConsumerRememberMeTitle.attr("title", $.i18n('wikidata-account/owner-only-consumer-remember-me-title')); + elmts.loginButton.text($.i18n('wikidata-account/log-in')); + elmts.consumerTokenInput.focus(); + + var level = DialogSystem.showDialog(frame); + var dismiss = function () { + DialogSystem.dismissUntil(level - 1); + }; + + elmts.cancelButton.click(function (e) { + dismiss(); + callback(null); + }); + + elmts.explainPasswordLogin.click(function (e) { + dismiss(); + ManageAccountDialog.displayPasswordLogin(callback); + }); + + elmts.loginForm.submit(function (e) { + frame.hide(); + Refine.postCSRF( + "command/wikidata/login", + elmts.loginForm.serialize(), + function (data) { + if (data.logged_in) { + dismiss(); + callback(data.username); + } else { + frame.show(); + elmts.invalidCredentials.show(); + } + }); + e.preventDefault(); + }); }; -ManageAccountDialog.ensureLoggedIn = function(callback) { - ManageAccountDialog.isLoggedIn(function(logged_in_username) { - if (logged_in_username == null) { - ManageAccountDialog.launch(null, callback); - } else { - callback(logged_in_username); - } - }); +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) { + ManageAccountDialog.isLoggedIn(function (logged_in_username) { + if (logged_in_username == null) { + ManageAccountDialog.display(null, callback); + } else { + callback(logged_in_username); + } + }); }; ManageAccountDialog.checkAndLaunch = function () { - ManageAccountDialog.isLoggedIn(function(logged_in_username) { - ManageAccountDialog.launch(logged_in_username, function(success) { }); - }); + ManageAccountDialog.isLoggedIn(function (logged_in_username) { + ManageAccountDialog.display(logged_in_username, function (success) { + }); + }); }; diff --git a/extensions/wikidata/module/scripts/dialogs/owner-only-consumer-login-dialog.html b/extensions/wikidata/module/scripts/dialogs/owner-only-consumer-login-dialog.html new file mode 100644 index 000000000..baedc452b --- /dev/null +++ b/extensions/wikidata/module/scripts/dialogs/owner-only-consumer-login-dialog.html @@ -0,0 +1,53 @@ +
+
+
+ + +
+ +
diff --git a/extensions/wikidata/module/scripts/dialogs/password-login-dialog.html b/extensions/wikidata/module/scripts/dialogs/password-login-dialog.html new file mode 100644 index 000000000..ed3006d26 --- /dev/null +++ b/extensions/wikidata/module/scripts/dialogs/password-login-dialog.html @@ -0,0 +1,46 @@ +
+
+
+ + +
+ +
diff --git a/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.html b/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.html index 564066cec..4176171f4 100644 --- a/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.html +++ b/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.html @@ -7,9 +7,9 @@
-

.

+

.

-