diff --git a/public/language/en_GB/error.json b/public/language/en_GB/error.json index b937455c7e..79a26a9aa5 100644 --- a/public/language/en_GB/error.json +++ b/public/language/en_GB/error.json @@ -20,7 +20,7 @@ "username-taken": "Username taken", "email-taken": "Email taken", - "email-not-confirmed": "Your email is not confirmed", + "email-not-confirmed": "Your email is not confirmed, please click here to confirm your email.", "username-too-short": "Username too short", diff --git a/public/language/en_GB/user.json b/public/language/en_GB/user.json index 19db94a1fe..ab8c1cdae6 100644 --- a/public/language/en_GB/user.json +++ b/public/language/en_GB/user.json @@ -2,11 +2,9 @@ "banned": "Banned", "offline": "Offline", "username": "User Name", - + "email": "Email", - "email.confirmed": "Confirmed", - "email.not_confirmed": "Not Confirmed", - "email.confirm_button_text": "Resend Confirmation", + "confirm_email": "Confirm Email", "fullname": "Full Name", "website": "Website", diff --git a/public/src/forum/account/edit.js b/public/src/forum/account/edit.js index aed26a9a19..0a9237c7af 100644 --- a/public/src/forum/account/edit.js +++ b/public/src/forum/account/edit.js @@ -6,7 +6,8 @@ define('forum/account/edit', ['forum/account/header', 'uploader'], function(head var AccountEdit = {}, gravatarPicture = '', uploadedPicture = '', - selectedImageType = ''; + selectedImageType = '', + currentEmail; AccountEdit.init = function() { gravatarPicture = ajaxify.variables.get('gravatarpicture'); @@ -22,6 +23,8 @@ define('forum/account/edit', ['forum/account/header', 'uploader'], function(head yearRange: '1900:+0' }); + currentEmail = $('#inputEmail').val(); + handleImageChange(); handleImageUpload(); handleEmailConfirm(); @@ -70,6 +73,11 @@ define('forum/account/edit', ['forum/account/header', 'uploader'], function(head $('#user-profile-link').attr('href', config.relative_path + '/user/' + data.userslug); $('#user-header-name').text(userData.username); } + + if (currentEmail !== data.email) { + currentEmail = data.email; + $('#confirm-email').removeClass('hide'); + } }); return false; diff --git a/public/src/modules/composer.js b/public/src/modules/composer.js index a46ea7799c..f10629db59 100644 --- a/public/src/modules/composer.js +++ b/public/src/modules/composer.js @@ -394,6 +394,10 @@ define('composer', dependencies, function(taskbar, controls, uploads, formatting function done(err) { $('.action-bar button').removeAttr('disabled'); if (err) { + if (err.message === '[[error:email-not-confirmed]]') { + return showEmailConfirmAlert(err); + } + return app.alertError(err.message); } @@ -402,6 +406,25 @@ define('composer', dependencies, function(taskbar, controls, uploads, formatting } } + function showEmailConfirmAlert(err) { + app.alert({ + id: 'email_confirm', + title: '[[global:alert.error]]', + message: err.message, + type: 'danger', + timeout: 0, + clickfn: function() { + app.removeAlert('email_confirm'); + socket.emit('user.emailConfirm', {}, function(err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('[[notifications:email-confirm-sent]]'); + }); + } + }); + } + function discard(post_uuid) { if (composer.posts[post_uuid]) { $('#cmp-uuid-' + post_uuid).remove(); diff --git a/src/user/profile.js b/src/user/profile.js index 4ac2a5729b..597c8e8534 100644 --- a/src/user/profile.js +++ b/src/user/profile.js @@ -77,7 +77,7 @@ module.exports = function(User) { return callback(err); } - User.getUserFields(uid, ['userslug', 'picture', 'gravatarpicture'], callback); + User.getUserFields(uid, ['email', 'userslug', 'picture', 'gravatarpicture'], callback); }); }); @@ -111,7 +111,7 @@ module.exports = function(User) { return callback(err); } - if(userData.email === newEmail) { + if (userData.email === newEmail) { return callback(); }