friendly_register.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. (function ($) {
  2. Drupal.friendly_register = Drupal.friendly_register || {};
  3. Drupal.friendly_register.flood = false;
  4. Drupal.friendly_register.timeout = null;
  5. Drupal.friendly_register.checkUserName = function (userName) {
  6. $.getJSON(userName.ajaxPath + encodeURIComponent(userName.oldValue), function(data) {
  7. if (!data.flood) {
  8. var message;
  9. var cssclass;
  10. if (data.available) {
  11. message = userName.avail;
  12. cssclass = 'ok';
  13. } else {
  14. message = userName.notAvail;
  15. cssclass = 'error';
  16. }
  17. $('#edit-name-check').remove();
  18. userName.field.after('<div id="edit-name-check" class="' + cssclass + '"><span class="text">' + message + '</span></div>');
  19. Drupal.attachBehaviors();
  20. } else {
  21. Drupal.friendly_register.flood = true;
  22. $('#edit-name-check').remove();
  23. clearTimeout(Drupal.friendly_register.timeout);
  24. }
  25. });
  26. };
  27. Drupal.friendly_register.checkEmail = function (email) {
  28. $.getJSON(email.ajaxPath + encodeURIComponent(email.oldValue), function(data) {
  29. if (!data.flood) {
  30. if (data.available == 'incomplete') {
  31. $('#edit-mail-check').remove();
  32. return;
  33. }
  34. var message;
  35. if (data.available) {
  36. message = email.avail;
  37. cssclass = 'ok';
  38. } else {
  39. message = email.notAvail;
  40. cssclass = 'error';
  41. }
  42. $('#edit-mail-check').remove();
  43. email.field.after('<div id="edit-mail-check" class="' + cssclass + '"><span class="text">' + message + '</span></div>');
  44. Drupal.attachBehaviors();
  45. } else {
  46. Drupal.friendly_register.flood = true;
  47. $('#edit-mail-check').remove();
  48. clearTimeout(Drupal.friendly_register.timeout);
  49. }
  50. });
  51. };
  52. Drupal.behaviors.friendly_register = {
  53. attach: function (context, settings) {
  54. var loginURL = Drupal.settings.basePath + 'user';
  55. var resetURL = Drupal.settings.basePath + 'user/password';
  56. var userName = new Object();
  57. userName.oldValue = '';
  58. userName.ajaxPath = Drupal.settings.basePath + 'ajax/check-user/';
  59. userName.field = $('.friendly-register-name', context);
  60. userName.avail = Drupal.t('This username is available.');
  61. userName.notAvail = Drupal.t('This username is not available.');
  62. var email = new Object();
  63. email.oldValue = '';
  64. email.ajaxPath = Drupal.settings.basePath + 'ajax/check-email/';
  65. email.field = $('.friendly-register-mail', context);
  66. email.avail = Drupal.t('This email address has not been used.');
  67. email.notAvail = Drupal.t('This email address is already in use, please <a href="@login">try logging in</a> with that email address or <a href="@reset">resetting your password</a>.', {'@login': loginURL, '@reset': resetURL});
  68. userName.field.once('friendly-register').focus(function () {
  69. if (Drupal.friendly_register.flood) {
  70. return;
  71. }
  72. Drupal.friendly_register.timeout = setInterval(function (){
  73. var newValue = userName.field.val();
  74. if (newValue != userName.oldValue) {
  75. userName.oldValue = newValue;
  76. Drupal.friendly_register.checkUserName(userName);
  77. }
  78. }, 1000);
  79. })
  80. .blur(function () {
  81. clearTimeout(Drupal.friendly_register.timeout);
  82. var newValue = userName.field.val();
  83. if (!Drupal.friendly_register.flood && newValue != userName.oldValue) {
  84. userName.oldValue = newValue;
  85. Drupal.friendly_register.checkUserName(userName);
  86. }
  87. });
  88. email.field.once('friendly-register').focus(function () {
  89. if (Drupal.friendly_register.flood) {
  90. return;
  91. }
  92. Drupal.friendly_register.timeout = setInterval(function (){
  93. var newValue = email.field.val();
  94. if (newValue != email.oldValue) {
  95. email.oldValue = newValue;
  96. Drupal.friendly_register.checkEmail(email);
  97. }
  98. }, 1000);
  99. })
  100. .blur(function () {
  101. clearTimeout(Drupal.friendly_register.timeout);
  102. var newValue = email.field.val();
  103. if (!Drupal.friendly_register.flood && newValue != email.oldValue) {
  104. email.oldValue = newValue;
  105. Drupal.friendly_register.checkEmail(email);
  106. }
  107. });
  108. }
  109. };
  110. })(jQuery);