PageSourceSearch

https://www.marcolino.pt/assets/themes/js/account-modal.2609091600.js?v=1790032887

js marcolino.pt collected 2026-10-05 19:57:19 UTC 6,506 bytes, 166 lines download raw bytes

1/* Conta/registo (ex-inline em _account-modal.php). Gerado 2026-09-09. Lê MarcolinoI18n. */
2    // Store tokens to prevent duplicates
3    var captchaTokens = {
4        login: '',
5        signup: ''
6    };
7    
8    function onTurnstileCallback(token) {
9        // Only update if token is different or empty
10        if (captchaTokens.signup !== token) {
11            captchaTokens.signup = token;
12            localStorage.setItem('captchaToken_signup', token);
13            $('#cf-turnstile-response').val(token);
14        }
15    }
16
17    function onLoginTurnstileCallback(token) {
18        // Only update if token is different or empty
19        if (captchaTokens.login !== token) {
20            captchaTokens.login = token;
21            localStorage.setItem('captchaToken_login', token);
22            $('#cf-turnstile-response-login').val(token);
23        }
24    }
25    
26    // Initialize captcha fields with stored values if available
27    $(document).ready(function() {
28        if (captchaTokens.login) {
29            $('#cf-turnstile-response-login').val(captchaTokens.login);
30        }
31        
32        if (captchaTokens.signup) {
33            $('#cf-turnstile-response').val(captchaTokens.signup);
34        }
35    });
36    
37    $('#core-customer--signup').on('submit', function(e) {
38        e.preventDefault();
39        return false;
40    });
41
42    // Validate form before submission
43    function validateSignupForm() {
44        let isValid = true;
45        
46        // Clear previous error messages
47        $('.help-block').html('');
48        
49        // Check required input fields only
50        $('#core-customer--signup').find('select[aria-required="true"], input[aria-required="true"]').each(function() {
51            let field = $(this);
52            let formGroup = field.closest('.input-wrapper');
53            let formGroupSelect = field.closest('.select-wrapper-login');
54            if (!field.val()) {
55                // Handle error display for both regular inputs and select fields
56                if (formGroup.length) {
57                    formGroup.parent().find('.help-block').html(MarcolinoI18n.blankFieldError);
58                    formGroup.parent().addClass('has-error');
59                }
60                
61                if (formGroupSelect.length) {
62                    formGroupSelect.parent().find('.help-block').html(MarcolinoI18n.blankFieldError);
63                    formGroupSelect.parent().addClass('has-error');
64                }
65                
66                isValid = false;
67            } else {
68                // Clear error state if field has value
69                if (formGroup.length) {
70                    formGroup.parent().removeClass('has-error');
71                    formGroup.parent().find('.help-block').html('');
72                }
73                
74                if (formGroupSelect.length) {
75                    formGroupSelect.parent().removeClass('has-error');
76                    formGroupSelect.parent().find('.help-block').html('');
77                }
78            }
79        });
80        
81        // Check terms & conditions checkbox
82        let termsField = $('#signupform-hasreadtc');
83        if (termsField.length && !termsField.is(':checked')) {
84            termsField.closest('.form-group').find('.help-block').html(MarcolinoI18n.blankFieldError);   
85            termsField.closest('.form-group').addClass('has-error');
86            isValid = false;
87        }
88        
89        // Check gender field
90       /* let genderSelected = $('input[name="SignupForm[gender]"]:checked').val();
91        if (!genderSelected) {
92            $('input[name="SignupForm[gender]"]').closest('.form-group').find('.help-block').html(MarcolinoI18n.blankFieldError);
93            $('input[name="SignupForm[gender]"]').closest('.form-group').addClass('has-error');
94            isValid = false;
95        }*/
96        return isValid;
97    }
98
99    $(".registration-modal-btn").on('click', function (event) {
100        event.preventDefault();
101
102        // Validate form before submission
103        if (!validateSignupForm()) {
104            return false;
105        }
106
107        var $btn = $(this);
108        if ($btn.prop('disabled')) {
109            return false;
110        }
111        $btn.prop('disabled', true);
112
113      /*  let day = parseInt($('#signup-day').val());
114        let month = parseInt($('#signup-month').val());
115        let year = parseInt($('#signup-year').val());
116
117        if (!isNaN(day) && !isNaN(month) && !isNaN(year)) {
118            var date = new Date(year, month - 1, day);
119            if (!(date.getFullYear() === year && date.getMonth() + 1 === month && date.getDate() === day)) {
120                toastr['error'](MarcolinoI18n.invalidDateError);
121                return false;
122            }
123        } else {
124            toastr['error'](MarcolinoI18n.invalidDateError);
125            turnstile.reset(); // Reset captcha
126            return false;
127        }*/
128
129        // Submit via AJAX
130        $.ajax({
131            url: $('#core-customer--signup').attr('action'),
132            type: 'POST',
133            data: $('#core-customer--signup').serialize(),
134            success: function(response) {
135                console.log(response);
136                if (response.status === 'success') {
137                    toastr['success'](response.message);
138                    $(document).trigger('registrationSuccess');
139                    if (response.redirect) {
140                        window.location.href = response.redirect;
141                    }
142                } else {
143                    // Display field-specific errors if available
144                    if (response.errors) {
145                        $.each(response.errors, function(field, messages) {
146                            if (Array.isArray(messages)) {
147                                var errorMsg = messages.join('<br>');
148                            } else {
149                                var errorMsg = messages;
150                            }
151                            $('#signupform-' + field.toLowerCase()).closest('.form-group').find('.help-block').html(errorMsg);
152                        });
153                    }
154                    toastr['error'](response.message || 'Ocorreu um erro ao processar o seu pedido.');
155                }
156            },
157            error: function() {
158                toastr['error']('Ocorreu um erro ao processar o seu pedido. Por favor, tente novamente.');
159            },
160            complete: function() {
161                $btn.prop('disabled', false);
162            }
163        });
164
165        return false;
166    });

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.