Alterações no Código
Arquivo: ajaxregistrationcheck.js
===================================================================
--- ajaxregistrationcheck.js (original)
+++ ajaxregistrationcheck.js (modificado)
@@ -1,30 +1,181 @@
-<input id="pcgf-ajaxregistrationcheck-sfs-field" name="sfs" class="hidden" type="text"/>
+var pcgfAJAXRegistrationCheckUsername = $('#pcgf-ajaxregistrationcheck-username');
-<div id="pcgf-ajaxregistrationcheck-sfs" class="sfs invalid"></div>
+var pcgfAJAXRegistrationCheckEMail = $('#pcgf-ajaxregistrationcheck-email');
-<div id="pcgf-ajaxregistrationcheck-username" class="inline"></div>
+var pcgfAJAXRegistrationCheckPassword = $('#pcgf-ajaxregistrationcheck-password');
-<div id="pcgf-ajaxregistrationcheck-email" class="inline"></div>
+var pcgfAJAXRegistrationCheckConfirmPassword = $('#pcgf-ajaxregistrationcheck-confirm-password');
-<div id="pcgf-ajaxregistrationcheck-password" class="inline"></div>
+
-<div id="pcgf-ajaxregistrationcheck-confirm-password" class="inline"></div>
+pcgfAJAXRegistrationCheckEMailRule = new RegExp(pcgfAJAXRegistrationCheckEMailRule, 'i');
-<script type="text/javascript">
+pcgfAJAXRegistrationCheckUsernameRule = new RegExp(pcgfAJAXRegistrationCheckUsernameRule, 'i');
- var pcgfAJAXRegistrationCheckLoading = '{LA_LOADING}...';
+
- var pcgfAJAXRegistrationCheckUsernameMin = '{PCGF_AJAXREGISTRATIONCHECK_USERNAME_MIN}';
+function setInvalid(message, messageField, field) {
- var pcgfAJAXRegistrationCheckUsernameMax = '{PCGF_AJAXREGISTRATIONCHECK_USERNAME_MAX}';
+ messageField.removeClass('valid').addClass('invalid');
- var pcgfAJAXRegistrationCheckUsernameRule = "{PCGF_AJAXREGISTRATIONCHECK_USERNAME_RULE}";
+ messageField.html(message);
- var pcgfAJAXRegistrationCheckUsernameInvalidBoundaries = '{PCGF_AJAXREGISTRATIONCHECK_USERNAME_INVALID_BOUNDARIES}';
+ field.get(0).setCustomValidity(message);
- var pcgfAJAXRegistrationCheckUsernameCheckLink = '{PCGF_AJAXREGISTRATIONCHECK_CHECK_USERNAME_LINK}';
+}
- var pcgfAJAXRegistrationCheckEMailRule = "{PCGF_AJAXREGISTRATIONCHECK_EMAIL_RULE}";
+
- var pcgfAJAXRegistrationCheckEMailInvalid = '{LA_PCGF_AJAXREGISTRATIONCHECK_EMAIL_INVALID}';
+function setValid(message, messageField, field) {
- var pcgfAJAXRegistrationCheckEMailCheckLink = '{PCGF_AJAXREGISTRATIONCHECK_CHECK_EMAIL_LINK}';
+ messageField.removeClass('invalid').addClass('valid');
- var pcgfAJAXRegistrationCheckPasswordMin = '{PCGF_AJAXREGISTRATIONCHECK_PASSWORD_MIN}';
+ messageField.html(message);
- var pcgfAJAXRegistrationCheckPasswordMax = '{PCGF_AJAXREGISTRATIONCHECK_PASSWORD_MAX}';
+ field.get(0).setCustomValidity('');
- var pcgfAJAXRegistrationCheckPasswordRule = "{PCGF_AJAXREGISTRATIONCHECK_PASSWORD_RULE}";
+}
- var pcgfAJAXRegistrationCheckPasswordInvalid = '{PCGF_AJAXREGISTRATIONCHECK_PASSWORD_INVALID_BOUNDARIES}';
+
- var pcgfAJAXRegistrationCheckConfirmPasswordValid = '{LA_PCGF_AJAXREGISTRATIONCHECK_CONFIRM_PASSWORD_OK}';
+function setLoading(message, messageField, field) {
- var pcgfAJAXRegistrationCheckConfirmPasswordInvalid = '{LA_NEW_PASSWORD_ERROR}';
+ messageField.removeClass('invalid').removeClass('valid');
- var pcgfAJAXRegistrationCheckPasswordStrength = '{LA_PCGF_AJAXREGISTRATIONCHECK_PASSWORD_STRENGTH}{LA_COLON}';
+ messageField.html('<div class="loading-circle"><div class="circle1 circle"></div><div class="circle2 circle"></div><div class="circle3 circle"></div><div class="circle4 circle"></div><div class="circle5 circle"></div><div class="circle6 circle"></div><div class="circle7 circle"></div><div class="circle8 circle"></div><div class="circle9 circle"></div><div class="circle10 circle"></div><div class="circle11 circle"></div><div class="circle12 circle"></div></div> ' + message);
- var pcgfAJAXRegistrationCheckPasswordVeryWeak = '{LA_PCGF_AJAXREGISTRATIONCHECK_PASSWORD_VERY_WEAK}';
+ field.get(0).setCustomValidity('');
- var pcgfAJAXRegistrationCheckPasswordWeak = '{LA_PCGF_AJAXREGISTRATIONCHECK_PASSWORD_WEAK}';
+}
- var pcgfAJAXRegistrationCheckPasswordNormal = '{LA_PCGF_AJAXREGISTRATIONCHECK_PASSWORD_NORMAL}';
+
- var pcgfAJAXRegistrationCheckPasswordStrong = '{LA_PCGF_AJAXREGISTRATIONCHECK_PASSWORD_STRONG}';
+$(document).ready(function() {
- var pcgfAJAXRegistrationCheckPasswordVeryStrong = '{LA_PCGF_AJAXREGISTRATIONCHECK_PASSWORD_VERY_STRONG}';
+ var passwordField = $('#new_password');
-</script>
+ var passwordConfirmationField = $('#password_confirm');
-<!-- INCLUDEJS @pcgf_ajaxregistrationcheck/javascript/ajaxregistrationcheck.js -->
+ pcgfAJAXRegistrationCheckConfirmPassword.insertAfter(passwordConfirmationField);
+ passwordConfirmationField.on('keyup', function() {
+ if ($(this).val() === passwordField.val()) {
+ setValid(pcgfAJAXRegistrationCheckConfirmPasswordValid, pcgfAJAXRegistrationCheckConfirmPassword, $(this));
+ } else {
+ setInvalid(pcgfAJAXRegistrationCheckConfirmPasswordInvalid, pcgfAJAXRegistrationCheckConfirmPassword, $(this));
+ }
+ });
+ passwordConfirmationField.trigger('keyup');
+ pcgfAJAXRegistrationCheckPassword.insertAfter(passwordField);
+ passwordField.on('keyup', function() {
+ passwordConfirmationField.trigger('keyup');
+ var value = $(this).val();
+ var containsLowerCase = value.match(/[a-z]/g);
+ var containsUpperCase = value.match(/[A-Z]/g);
+ var containsNumber = value.match(/[0-9]/g);
+ var containsSymbol = value.match(/[^a-zA-Z0-9]/g);
+ var valid = false;
+ if (value.length < pcgfAJAXRegistrationCheckPasswordMin) {
+ // The password is too short (removido 'or too long' para 3.3.x)
+ setInvalid(pcgfAJAXRegistrationCheckPasswordInvalid, pcgfAJAXRegistrationCheckPassword, $(this));
+ } else {
+ if (pcgfAJAXRegistrationCheckPasswordRule <= 0) {
+ valid = true;
+ } else if (containsLowerCase && containsUpperCase) {
+ if (pcgfAJAXRegistrationCheckPasswordRule <= 10) {
+ valid = true;
+ } else if (containsNumber) {
+ if (pcgfAJAXRegistrationCheckPasswordRule <= 100) {
+ valid = true;
+ } else if (containsSymbol) {
+ valid = true;
+ } else {
+ setInvalid(pcgfAJAXRegistrationCheckPasswordInvalid, pcgfAJAXRegistrationCheckPassword, $(this));
+ }
+ } else {
+ setInvalid(pcgfAJAXRegistrationCheckPasswordInvalid, pcgfAJAXRegistrationCheckPassword, $(this));
+ }
+ } else {
+ setInvalid(pcgfAJAXRegistrationCheckPasswordInvalid, pcgfAJAXRegistrationCheckPassword, $(this));
+ }
+ }
+ if (valid) {
+ var percentage = 0;
+ if (containsLowerCase) {
+ percentage += (containsLowerCase.length > 5 ? 5 : containsLowerCase.length) * 5;
+ }
+ if (containsUpperCase) {
+ percentage += (containsUpperCase.length > 3 ? 3 : containsUpperCase.length) * 7;
+ }
+ if (containsNumber) {
+ percentage += (containsNumber.length > 2 ? 2 : containsNumber.length) * 10;
+ }
+ if (containsSymbol) {
+ percentage += (containsSymbol.length > 2 ? 2 : containsSymbol.length) * 14;
+ }
+ var usernameField = $('#username');
+ var eMailField = $('#email');
+ if ((usernameField.val() === '' || value.indexOf(usernameField.val()) < 0) && (eMailField.val() === '' || value.indexOf(eMailField.val()) < 0)) {
+ percentage += 6;
+ }
+ if (pcgfAJAXRegistrationCheckPassword.hasClass('invalid')) {
+ pcgfAJAXRegistrationCheckPassword.removeClass('invalid').addClass('password-strength');
+ var securityHTML = '<span>' + pcgfAJAXRegistrationCheckPasswordStrength + '</span>';
+ securityHTML += '<div class="progressbar"><div id="pcgf-ajaxregistrationcheck-security"> </div></div>';
+ securityHTML += '<span id="pcgf-ajaxregistrationcheck-strength"></span>';
+ pcgfAJAXRegistrationCheckPassword.html(securityHTML);
+ }
+ $(this).get(0).setCustomValidity('');
+ var securityPB = $('#pcgf-ajaxregistrationcheck-security');
+ var strengthText = $('#pcgf-ajaxregistrationcheck-strength');
+ securityPB.stop().animate({width: percentage + '%', overflow: 'overflow'}, 800);
+ if (percentage >= 95) {
+ strengthText.html(pcgfAJAXRegistrationCheckPasswordVeryStrong);
+ securityPB.removeClass().addClass('very-strong');
+ } else if (percentage >= 85) {
+ strengthText.html(pcgfAJAXRegistrationCheckPasswordStrong);
+ securityPB.removeClass().addClass('strong');
+ } else if (percentage >= 60) {
+ strengthText.html(pcgfAJAXRegistrationCheckPasswordNormal);
+ securityPB.removeClass().addClass('normal');
+ } else if (percentage >= 45) {
+ strengthText.html(pcgfAJAXRegistrationCheckPasswordWeak);
+ securityPB.removeClass().addClass('weak');
+ } else {
+ strengthText.html(pcgfAJAXRegistrationCheckPasswordVeryWeak);
+ securityPB.removeClass().addClass('very-weak');
+ }
+ } else {
+ pcgfAJAXRegistrationCheckPassword.removeClass('password-strength');
+ }
+ });
+ passwordField.trigger('keyup');
+ var usernameField = $('#username');
+ pcgfAJAXRegistrationCheckUsername.insertAfter(usernameField);
+ usernameField.on('keyup', function() {
+ passwordField.trigger('keyup');
+ var value = $(this).val();
+ if (value.length < pcgfAJAXRegistrationCheckUsernameMin || value.length > pcgfAJAXRegistrationCheckUsernameMax || value.match(pcgfAJAXRegistrationCheckUsernameRule) === null) {
+ setInvalid(pcgfAJAXRegistrationCheckUsernameInvalidBoundaries, pcgfAJAXRegistrationCheckUsername, $(this));
+ } else {
+ setLoading(pcgfAJAXRegistrationCheckLoading, pcgfAJAXRegistrationCheckUsername, $(this));
+ $.ajax({
+ url: pcgfAJAXRegistrationCheckUsernameCheckLink,
+ type: 'POST',
+ data: {'search': value},
+ success: function(result) {
+ if (result[0] === 'OK') {
+ setValid(result[1], pcgfAJAXRegistrationCheckUsername, usernameField);
+ } else if (result[0] === 'INVALID QUERY') {
+ setLoading(result[1], pcgfAJAXRegistrationCheckUsername, usernameField);
+ } else {
+ setInvalid(result[1], pcgfAJAXRegistrationCheckUsername, usernameField);
+ }
+ }
+ });
+ }
+ });
+ usernameField.trigger('keyup');
+ var eMailField = $('#email');
+ pcgfAJAXRegistrationCheckEMail.insertAfter(eMailField);
+ eMailField.on('keyup', function() {
+ passwordField.trigger('keyup');
+ var value = $(this).val();
+ if (value.match(pcgfAJAXRegistrationCheckEMailRule) === null) {
+ setInvalid(pcgfAJAXRegistrationCheckEMailInvalid, pcgfAJAXRegistrationCheckEMail, $(this));
+ } else {
+ setLoading(pcgfAJAXRegistrationCheckLoading, pcgfAJAXRegistrationCheckEMail, $(this));
+ $.ajax({
+ url: pcgfAJAXRegistrationCheckEMailCheckLink,
+ type: 'POST',
+ data: {'search': value},
+ success: function(result) {
+ if (result[0] === 'OK') {
+ setValid(result[1], pcgfAJAXRegistrationCheckEMail, eMailField);
+ } else if (result[0] === 'INVALID QUERY') {
+ setLoading(result[1], pcgfAJAXRegistrationCheckEMail, eMailField);
+ } else {
+ setInvalid(result[1], pcgfAJAXRegistrationCheckEMail, eMailField);
+ }
+ }
+ });
+ }
+ });
+ eMailField.trigger('keyup');
+ $('#ucp').on('submit', function() {
+ if (pcgfAJAXRegistrationCheckUsername.hasClass('invalid') || pcgfAJAXRegistrationCheckEMail.hasClass('invalid') || pcgfAJAXRegistrationCheckPassword.hasClass('invalid') || pcgfAJAXRegistrationCheckConfirmPassword.hasClass('invalid')) {
+ return false;
+ }
+ return true;
+ });
+});