Files
NodeBB/public/src/forum/register.js

199 lines
4.7 KiB
JavaScript
Raw Normal View History

2014-03-12 23:18:54 -04:00
'use strict';
2014-03-12 23:18:54 -04:00
/* globals define, app, utils, socket, config */
define('forum/register', function() {
2014-03-12 23:18:54 -04:00
var Register = {},
validationError = false,
successIcon = '<i class="fa fa-check"></i>';
function showError(element, msg) {
translator.translate(msg, function(msg) {
element.html(msg);
element.parent()
.removeClass('alert-success')
.addClass('alert-danger');
element.show();
});
2014-05-27 21:12:57 -04:00
validationError = true;
2014-03-12 23:18:54 -04:00
}
function showSuccess(element, msg) {
translator.translate(msg, function(msg) {
element.html(msg);
element.parent()
.removeClass('alert-danger')
.addClass('alert-success');
element.show();
});
2014-03-12 23:18:54 -04:00
}
2014-05-27 21:12:57 -04:00
function validateEmail(email, callback) {
callback = callback || function() {};
2014-03-12 23:18:54 -04:00
var email_notify = $('#email-notify');
if (!email) {
2013-08-28 13:47:52 -04:00
validationError = true;
2014-03-12 23:18:54 -04:00
return;
}
2013-08-28 13:47:52 -04:00
2014-03-12 23:18:54 -04:00
if (!utils.isEmailValid(email)) {
2014-05-27 21:12:57 -04:00
showError(email_notify, '[[error:invalid-email]]');
2014-03-12 23:18:54 -04:00
return;
}
2014-03-12 23:18:54 -04:00
socket.emit('user.emailExists', {
email: email
}, function(err, exists) {
if(err) {
return app.alertError(err.message);
}
2014-03-12 23:18:54 -04:00
if (exists) {
2014-05-27 21:12:57 -04:00
showError(email_notify, '[[error:email-taken]]');
} else {
2014-03-12 23:18:54 -04:00
showSuccess(email_notify, successIcon);
}
2014-05-27 21:12:57 -04:00
callback();
});
2014-03-12 23:18:54 -04:00
}
2014-05-27 21:12:57 -04:00
function validateUsername(username, callback) {
callback = callback || function() {};
2014-03-12 23:18:54 -04:00
var username_notify = $('#username-notify');
2014-03-12 23:18:54 -04:00
if (!username) {
validationError = true;
return;
}
2014-03-12 23:18:54 -04:00
if (username.length < config.minimumUsernameLength) {
2014-05-27 21:12:57 -04:00
showError(username_notify, '[[error:username-too-short]]');
2014-03-12 23:18:54 -04:00
} else if (username.length > config.maximumUsernameLength) {
2014-05-27 21:12:57 -04:00
showError(username_notify, '[[error:username-too-long]]');
2014-03-12 23:18:54 -04:00
} else if (!utils.isUserNameValid(username) || !utils.slugify(username)) {
2014-05-27 21:12:57 -04:00
showError(username_notify, '[[error:invalid-username]]');
2014-03-12 23:18:54 -04:00
} else {
socket.emit('user.exists', {
username: username
}, function(err, exists) {
if(err) {
return app.alertError(err.message);
}
2014-01-16 17:15:00 -05:00
2014-03-12 23:18:54 -04:00
if (exists) {
2014-05-27 21:12:57 -04:00
showError(username_notify, '[[error:username-taken]]');
2014-03-12 23:18:54 -04:00
} else {
showSuccess(username_notify, successIcon);
}
2014-05-27 21:12:57 -04:00
callback();
2014-03-12 23:18:54 -04:00
});
}
}
2014-03-12 23:18:54 -04:00
function validatePassword(password, password_confirm) {
if (!password) {
validationError = true;
return;
}
var password_notify = $('#password-notify'),
password_confirm_notify = $('#password-confirm-notify');
if (password.length < config.minimumPasswordLength) {
showError(password_notify, '[[user:change_password_error_length]]');
2014-03-12 23:18:54 -04:00
} else if (!utils.isPasswordValid(password)) {
showError(password_notify, '[[user:change_password_error_]]');
2014-03-12 23:18:54 -04:00
} else {
showSuccess(password_notify, successIcon);
}
2014-03-12 23:18:54 -04:00
if (password !== password_confirm && password_confirm !== '') {
showError(password_confirm_notify, '[[user:change_password_error_match]]');
2014-03-12 23:18:54 -04:00
}
}
2014-03-12 23:18:54 -04:00
function validatePasswordConfirm(password, password_confirm) {
var password_notify = $('#password-notify'),
password_confirm_notify = $('#password-confirm-notify');
if (!password || password_notify.hasClass('alert-error')) {
return;
}
2014-03-12 23:18:54 -04:00
if (password !== password_confirm) {
showError(password_confirm_notify, '[[user:change_password_error_match]]');
2014-03-12 23:18:54 -04:00
} else {
showSuccess(password_confirm_notify, successIcon);
}
}
Register.init = function() {
var email = $('#email'),
username = $('#username'),
password = $('#password'),
password_confirm = $('#password-confirm'),
register = $('#register'),
agreeTerms = $('#agree-terms');
$('#referrer').val(app.previousUrl);
email.on('blur', function() {
validateEmail(email.val());
});
2014-03-12 23:18:54 -04:00
username.on('keyup', function() {
$('#yourUsername').html(this.value.length > 0 ? this.value : 'username');
});
2014-03-12 23:18:54 -04:00
username.on('blur', function() {
validateUsername(username.val());
});
password.on('blur', function() {
validatePassword(password.val(), password_confirm.val());
});
2014-03-12 23:18:54 -04:00
password_confirm.on('blur', function() {
validatePasswordConfirm(password.val(), password_confirm.val());
});
2014-05-27 21:12:57 -04:00
function validateForm(callback) {
validationError = false;
2014-03-12 23:18:54 -04:00
validatePassword(password.val(), password_confirm.val());
validatePasswordConfirm(password.val(), password_confirm.val());
2014-05-27 21:12:57 -04:00
validateEmail(email.val(), function() {
validateUsername(username.val(), callback);
});
}
register.on('click', function(e) {
2014-05-27 21:12:57 -04:00
var registerBtn = $(this);
e.preventDefault();
validateForm(function() {
if (!validationError) {
registerBtn.parents('form').trigger('submit');
}
});
});
if(agreeTerms.length) {
agreeTerms.on('click', function() {
if ($(this).prop('checked')) {
register.removeAttr('disabled');
} else {
register.attr('disabled', 'disabled');
}
});
register.attr('disabled', 'disabled');
}
};
return Register;
2014-04-10 20:31:57 +01:00
});