PageSourceSearch

https://beteve.cat/wp-content/themes/beteve/inc/assets/js/participacions-register.js?ver=1

js beteve.cat collected 2026-10-01 10:27:51 UTC 6,775 bytes, 174 lines download raw bytes

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.