check_configure_seafile.tpl 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. {*
  2. This is the check orderform template for the seafile product
  3. This template requires a list of custom fields in exact this order:
  4. firstname|Vorname -> customfields[0]
  5. lastname|Nachname -> customfields[1]
  6. login|Login E-Mail -> customfields[2]
  7. password|Passwort -> customfields[3]
  8. pwrepeat|Passwort wiederholen -> customfields[4]
  9. *}
  10. <script>
  11. function checkUserName ( username, pid) {
  12. {literal}
  13. var nameRegex = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
  14. {/literal}
  15. var validUsername = username.match(nameRegex);
  16. if(validUsername == null) {
  17. console.log("Invalid E-Mail: "+username);
  18. $(customFields[3]).prop("disabled",true);
  19. $(customFields[4]).prop("disabled",true);
  20. $(customFields[2]).addClass('has-error');
  21. $(customFields[2]).css('background-color', '#f003');;
  22. $("#hintHead").text('Bitte eine gültige E-Mail-Adresse angeben.');
  23. $("#hintLength").text('');
  24. $("#hintNumeric").text('');
  25. $("#hintSymbols").text('');
  26. $("#hintUpperLower").text('');
  27. return;
  28. }
  29. var xhttp = new XMLHttpRequest();
  30. var success = false;
  31. console.log("UserName: " + username);
  32. xhttp.onreadystatechange = function() {
  33. if (this.readyState == 4 && this.status == 200) {
  34. if( this.responseText.trim() == 'yes') {
  35. console.log("Response: " + this.responseText);
  36. $(customFields[2]).addClass('has-success');
  37. $(customFields[2]).css('background-color', '#0f03');;
  38. $(customFields[3]).prop("disabled",false);
  39. $(customFields[4]).prop("disabled",true);
  40. $("#hintHead").text('');
  41. $("#hintLength").text('');
  42. $("#hintNumeric").text('');
  43. $("#hintSymbols").text('');
  44. $("#hintUpperLower").text('');
  45. $(customFields[3]).focus();
  46. } else if (this.responseText.trim() == 'no') {
  47. console.log("Response: " + this.responseText);
  48. $(customFields[2]).addClass('has-error');
  49. $(customFields[2]).css('background-color', '#f003');;
  50. $(customFields[3]).prop("disabled",true);
  51. $(customFields[4]).prop("disabled",true);
  52. $("#hintHead").text('E-Mail Account ' + $(customFields[2]).val() + ' nicht verfügbar!');
  53. $("#hintLength").text('');
  54. $("#hintNumeric").text('');
  55. $("#hintSymbols").text('');
  56. $("#hintUpperLower").text('');
  57. } else if (this.responseText.trim() == 'invalid') {
  58. console.log("Response: " + this.responseText);
  59. $(customFields[2]).addClass('has-error');
  60. $(customFields[2]).css('background-color', '#f003');;
  61. $(customFields[3]).prop("disabled",true);
  62. $(customFields[4]).prop("disabled",true);
  63. $("#hintHead").text('E-Mail Adresse ' + $(customFields[2]).val() + ' nicht valide! HACKER!');
  64. $("#hintLength").text('');
  65. $("#hintNumeric").text('');
  66. $("#hintSymbols").text('');
  67. $("#hintUpperLower").text('');
  68. }
  69. }
  70. };
  71. xhttp.open("GET", "modules/servers/seafile/seafileAddressAvailable.php?username=" + username + '&pid=' + pid, true);
  72. xhttp.send();
  73. }
  74. jQuery(document).ready(function(){
  75. customFields = $("*[id^='customfield']");
  76. $("#btnCompleteProductConfig").prop("disabled",true);
  77. $(customFields[3]).val('');
  78. $(customFields[4]).val('');
  79. if ($(customFields[2]).val().length > 0) {
  80. checkUserName( $(customFields[2]).val(), {$productinfo['pid']});
  81. }
  82. $(customFields[3]).prop("disabled",true);
  83. $(customFields[4]).prop("disabled",true);
  84. $(customFields[2]).blur(function () {
  85. checkUserName( $(customFields[2]).val(), {$productinfo['pid']});
  86. });
  87. $(customFields[3]).focus (function () {
  88. $("#hintHead").text('Tipps für ein gutes Passwort');
  89. $("#hintLength").text('Benutzen Sie mindestens 8 Zeichen');
  90. $("#hintNumeric").text('Benutzen Sie mindestens eine Zahl');
  91. $("#hintSymbols").text('Benutzen Sie auch mindestens eines der folgenden Symbole (# $ ! % + - etc...)');
  92. $("#hintUpperLower").text('Benutzen Sie Groß- und Kleinschreibung');
  93. });
  94. // Check password in first password field
  95. $(customFields[3]).keyup(function () {
  96. var pwlengthOK = false;
  97. var numericOK = false;
  98. var symbolsOK = false;
  99. var upperOK = false;
  100. var pw = $(customFields[3]).val();
  101. var pwlength = (pw.length);
  102. if (pwlength > 7) {
  103. pwlengthOK = true;
  104. $("#hintLength").text('');
  105. } else {
  106. pwlengthOK = false;
  107. $("#hintLength").text('Benutzen Sie mindestens 8 Zeichen');
  108. }
  109. var numeric = pw.replace(/[0-9]/g, "");
  110. var numnumeric = (pw.length - numeric.length);
  111. if (numnumeric > 0) {
  112. numericOK = true;
  113. $("#hintNumeric").text('');
  114. } else {
  115. numericOK = false;
  116. $("#hintNumeric").text('Benutzen Sie mindestens eine Zahl');
  117. }
  118. var symbols = pw.replace(/\W/g, "");
  119. var numsymbols = (pw.length - symbols.length);
  120. if (numsymbols > 0) {
  121. symbolsOK = true;
  122. $("#hintSymbols").text('');
  123. } else {
  124. symbolsOK = false;
  125. $("#hintSymbols").text('Benutzen Sie auch mindestens ein Symbol oder Sonderzeichen (# $ ! % & + - etc...)');
  126. }
  127. var upper = pw.replace(/[A-Z]/g, "");
  128. var numupper = (pw.length - upper.length);
  129. var lower = pw.replace(/[a-z]/g, "");
  130. var numlower = (pw.length - lower.length);
  131. if ((numupper > 0) && (numlower > 0)) {
  132. upperlowerOK = true;
  133. $("#hintUpperLower").text('');
  134. } else {
  135. upperlowerOK = false;
  136. $("#hintUpperLower").text('Benutzen Sie Groß- und Kleinschreibung');
  137. }
  138. $(customFields[3]).removeClass('has-error has-warning has-success');
  139. if (pwlengthOK && numericOK && symbolsOK && upperlowerOK) {
  140. $(customFields[4]).prop("disabled",false);
  141. $(customFields[3]).addClass('has-success');
  142. $(customFields[3]).css('background-color', '#0f03');;
  143. $("#hintHead").text('');
  144. } else {
  145. $(customFields[4]).prop("disabled",true);
  146. $(customFields[3]).addClass('has-error');
  147. $(customFields[3]).css('background-color', '#f003');;
  148. $("#hintHead").text('Tipps für ein gutes Passwort');
  149. }
  150. });
  151. $(customFields[4]).keyup(function () {
  152. if ($(customFields[4]).val() == $(customFields[3]).val()) {
  153. $("#btnCompleteProductConfig").prop("disabled",false);
  154. $(customFields[4]).addClass('has-success');
  155. $(customFields[4]).css('background-color', '#0f03');;
  156. $("#hintHead").text('');
  157. } else {
  158. $("#btnCompleteProductConfig").prop("disabled",true);
  159. $(customFields[4]).addClass('has-error');
  160. $(customFields[4]).css('background-color', '#f003');;
  161. $("#hintHead").text('Passworte stimmen nicht überein!');
  162. }
  163. });
  164. });
  165. </script>