1jQuery(document).ready(function () { 2 var urlParams = new URLSearchParams(window.location.search); 3 jQuery("#id_next_create").val(urlParams.get('next')) 4 5 jQuery("#recuperar_contrasenya_form").submit(function (event) { 6 event.preventDefault(); 7 var form = jQuery(this); 8 var error_text = form.find('#recuperar_contrasenya_form_error'); 9 // Hide errors 10 error_text.html(""); 11 error_text.css('display', 'none'); 12 // Ajax call 13 response = ajax_request(form); 14 // Success 15 if (response['status_code'] == 200) { 16 login_close_icon_item_click(); 17 showSuccessToast("Correu de recuperació de password enviat"); 18 form.find("[name='email']").val(''); 19 showLoginMenu(); 20 // Error 21 } else { 22 error_text.html("Introdueix un email và lid"); 23 error_text.css('display', 'block'); 24 } 25 }); 26 jQuery("#cambiar_contrasenya_form").submit(function (event) { 27 event.preventDefault(); 28 var form = jQuery(this); 29 var error_text = form.find('#cambiar_contrasenya_form_error'); 30 // Hide errors 31 error_text.html(""); 32 error_text.css('display', 'none'); 33 // Password check 34 var password = form.find('#id_password_recover').val() 35 var password_confirmation = form.find('#id_password_recover_confirm').val() 36 if (password != password_confirmation) { 37 error_text.html('Les contrasenyes no coincideixen'); 38 error_text.css('display', 'block'); 39 return; 40 } 41 // Get token from URL 42 var token = getURLParameter('token'); 43 // Ajax call 44 var request_data = { 45 token:token, 46 password:password 47 } 48 response = ajax_request( 49 form = null, 50 url_override = "/participacions/usuari/recuperar_contrasenya", 51 method_override = "post", 52 multipart = false, 53 form_data_override = JSON.stringify(request_data), 54 content_type_override = "application/json; charset=utf-8" 55 ); 56 // Success 57 if (response['status_code'] == 200) { 58 showLoginMenu(); 59 showSuccessToast("Contrasenya canviada correctament"); 60 // Error 61 } else if (response['status_code'] == 403 || response['status_code'] == 404){ 62 error_text.html("Error al canviar contrasenya"); 63 error_text.css('display', 'block'); 64 } else { 65 error_text.html("Error. La contrasenya no es và lida"); 66 error_text.css('display', 'block'); 67 } 68 }); 69 jQuery("#user_create_form").submit(function (event) { 70 event.preventDefault(); 71 72 if (jQuery('#btn-registra').hasClass('disabled')) return; 73 74 const form = jQuery(this); 75 const errorIcon = '<img src="/wp-content/themes/beteve/img/cancel_fill.png" alt="Icona de error">'; 76 let hasError = false; 77 78 // Campos a validar 79 const fields = [ 80 { id: 'first_name_create', name: 'El nom és obligatori' }, 81 { id: 'email_create', name: 'El correu electrònic és obligatori' }, 82 { id: 'password_create', name: 'La contrasenya és obligatòria' } 83 ]; 84 85 // Limpiar errores anteriores 86 jQuery.each(fields, function (_, field) { 87 jQuery(`#id_${field.id}_error`).html('').hide(); 88 }); 89 90 // Validar cada campo 91 jQuery.each(fields, function (_, field) { 92 const input = jQuery(`#id_${field.id}`); 93 const value = input.val().trim(); 94 const errorDiv = jQuery(`#id_${field.id}_error`); 95 96 // Validación general 97 if (!value) { 98 errorDiv.html(`${errorIcon} <span>${field.name}</span>`).css('display', 'flex'); 99 hasError = true; 100 } 101 102 // Validar formato del email 103 if (field.id === 'email_create' && value) { 104 const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; 105 if (!emailRegex.test(value)) { 106 errorDiv.html(`${errorIcon} <span>El correu no té un format và lid</span>`).css('display', 'flex'); 107 hasError = true; 108 } 109 } 110 111 if (field.id === 'password_create' && value) { 112 const passwordRegex = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[^A-Za-z\d]).{8,}$/; 113 const passwordInfo = jQuery('#password_info'); 114 if (!passwordRegex.test(value)) { 115 errorDiv.html(`${errorIcon} <span>La contrasenya ha de tenir almenys 8 carà cters, incloure lletres, números i carà cters especials</span>`).css('display', 'flex'); 116 passwordInfo.hide(); 117 hasError = true; 118 } else { 119 passwordInfo.show(); 120 } 121 } 122 }); 123 124 if (hasError) return; 125 126 response = ajax_request(form); 127 // Register success 128 if (response['status_code'] == 201){ 129 login_close_icon_item_click(); 130 showSuccessToast("S'ha enviat un correu per activar el compte d'usuari"); 131 hide_user_create_form_errors(form); 132 // Error 133 } else if (response['status_code'] == 400 && response['error']) { 134 // Render errors 135 jQuery.each(response['error'], function (field, errors) { 136 jQuery.each(errors, function (key, error) { 137 var error_div = form.find('#id_' + field + '_create_error'); 138 error_div.html(`${errorIcon} <span>${error}</span>`).css('display', 'flex'); 139 // error_div.css('display', 'flex'); 140 }); 141 }); 142 } else { 143 error_text.html("Error. Si us plau, torna-ho a intentar"); 144 error_text.css('display', 'block'); 145 } 146 }); 147}); 148 149// Hide erros from each field in user create form 150function hide_user_create_form_errors(form) { 151 var element = form.find('#id_first_name_create_error'); 152 element.html(""); 153 element.css("display","none"); 154 155 var element = form.find('#id_last_name_create_error'); 156 element.html(""); 157 element.css("display","none"); 158 159 element = form.find('#id_email_create_error'); 160 element.html(""); 161 element.css("display", "none"); 162 163 element = form.find('#id_email_confirmation_create_error'); 164 element.html(""); 165 element.css("display", "none"); 166 167 element = form.find('#id_password_create_error'); 168 element.html(""); 169 element.css("display", "none"); 170 171 element = form.find('#id_password_confirmation_create_error'); 172 element.html(""); 173 element.css("display", "none"); 174}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.