PageSourceSearch

https://www.cadaveranatomy.com/js/scripts/captcha/captcha-feedback.js?v=20261008_131752

js cadaveranatomy.com collected 2026-10-08 18:19:39 UTC 3,974 bytes, 87 lines download raw bytes

1let captchaFeedbackSent = false;
2
3$('#show-feedback').on('click', function () {
4    let feedbackContainer = $('.captcha-feedback-container');
5    if (feedbackContainer.html()) {
6        feedbackContainer.empty();
7        feedbackContainer.hide();
8    } else {
9        createCaptchaFeedbackForm('.captcha-feedback-container');
10        feedbackContainer.show();
11    }
12});
13
14function createCaptchaFeedbackForm(feedbackContainerSelector) {
15    let feedbackContainer = $(feedbackContainerSelector);
16    feedbackContainer.append('<i name="close-feedback-form" class="mwicon-x float-right cursor-pointer"></i>');
17    feedbackContainer.append(
18        `<label for="email">${_lang('feedback.input.email')}<span class="warning">*</span></label>`
19    );
20    feedbackContainer.append('<input class="form-control" type="text" id="email"/>');
21    feedbackContainer.append(`<label for="name">${_lang('general.name')}<span class="warning">*</span></label>`);
22    feedbackContainer.append('<input class="form-control" type="text" id="name">');
23    feedbackContainer.append(
24        `<label for="description">${_lang('general.description')}<span class="warning">*</span></label>`
25    );
26    feedbackContainer.append('<textarea class="form-control" id="description" rows="5"></textarea>');
27    feedbackContainer.append(`<button class="btn btn-primary" id="send-feedback">${_lang('general.send')}</button>`);
28    feedbackContainer.append(
29        `<button class="btn btn-secondary" name="close-feedback-form">${_lang('general.cancel')}</button>`
30    );
31
32    $('[name="close-feedback-form"]').on('click', function () {
33        feedbackContainer.empty();
34        feedbackContainer.hide();
35    });
36
37    $('#send-feedback').on('click', function () {
38        if (captchaFeedbackSent) {
39            return;
40        }
41
42        captchaFeedbackSent = true;
43        $.post('api/v1/captcha-feedback', {
44            email: $('#email').val().trim(),
45            name: $('#name').val().trim(),
46            description: $('#description').val(),
47            consoleErrors: JSON.stringify(consoleErrors),
48            currentUrl: window.location.href,
49        })
50            .then((response) => {
51                const dialogMessage = `${_lang('feedback.feedback_sent_new')}<br>${_lang('feedback.new_feedback_id')} <b>${response.feedback_id}</b>`;
52                BootstrapDialog.show({
53                    type: BootstrapDialog.TYPE_SUCCESS,
54                    draggable: true,
55                    closable: false,
56                    title: _lang('feedback.page_title'),
57                    message: $(`<div>${dialogMessage}</div>`),
58                    buttons: [
59                        {
60                            label: _lang('general.ok'),
61                            cssClass: 'btn-success pull-right',
62                            action: function (dialog) {
63                                dialog.close();
64                                feedbackContainer.empty();
65                                feedbackContainer.hide();
66                                captchaFeedbackSent = false;
67                            },
68                        },
69                    ],
70                });
71            })
72            .fail((errorResponse) => {
73                const presentErrorMessageContainer = $('div.error-message-container');
74                let errorMessageContainer =
75                    presentErrorMessageContainer.length > 0
76                        ? presentErrorMessageContainer
77                        : $('<div class="error-message-container alert alert-danger"></div>');
78                errorMessageContainer.empty();
79                if (errorResponse.hasOwnProperty('responseJSON')) {
80                    const errorMessages = errorResponse.responseJSON.error;
81                    errorMessageContainer.html(errorMessages.join('<br>'));
82                }
83                feedbackContainer.append(errorMessageContainer);
84                captchaFeedbackSent = false;
85            });
86    });
87}

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.