PageSourceSearch

https://moodle.com/wp-content/themes/thetheme/acf-blocks/custom-quiz/assets/scripts.js?ver=1.5.8

js moodle.com collected 2026-10-01 08:39:15 UTC 4,242 bytes, 139 lines download raw bytes

1const $ = jQuery;
2
3questions.forEach((question, index) => {
4    question.ID = index;
5})
6
7function calculateResults() {
8    let calculatedResults = {};
9    answerData.forEach((answer, index) => {
10        if (!calculatedResults[answer.answer_tally_id]) {
11            calculatedResults[answer.answer_tally_id] = answer.point_value;
12        }
13        else {
14            calculatedResults[answer.answer_tally_id] += answer.point_value;
15        }
16    })
17    calculatedResults.winner = Object.keys(calculatedResults).reduce((a, b) => calculatedResults[a] > calculatedResults[b] ? a : b);
18    return calculatedResults;
19}
20function showResults() {
21
22    let calculatedResults = calculateResults();
23    let winnerID = calculatedResults.winner;
24    let winner = results.find(result => result.result_id === winnerID);
25    let resultText = winner.result_to_display;
26    calculatedResults.result_text = $(resultText).text();
27    let resultHTML = `<div class="result">${resultText}</div><div id="hs-form-wrapper" class="hs-form-iframe"></div>`;
28    let quiz_name = $('.custom-quiz-block h3').text();
29    
30
31    var data = {
32        action: 'quiz_submission',
33        security: custom_quiz_ajax.security,
34        quiz_name: quiz_name,
35        //answer_data: answerData,
36        result: calculatedResults
37    };
38    
39    // Post to get attachmnet url from id
40    $.post(custom_quiz_ajax.ajaxurl, data, function(response) {
41        $('.eyebrow-text').empty();
42        $('#answers').empty();
43        $('#result-content').html(resultHTML);
44        $('#results-container').show();
45        $('#quiz-content').hide();
46        $('.quiz-container .loading').fadeOut();
47        $('.question-text').empty();
48    });
49}
50
51
52function goToNextQuestion() {
53
54    const currentQuestion = questions[currentQuestionIndex];
55
56    $('#question-text').text(currentQuestion.question_text);
57    $('#eyebrow-text').text(currentQuestion.eyebrow_text);
58
59    $('#answers').html(currentQuestion.answers.map(answer => `<button data-question-id="${currentQuestion.ID}" data-answer-id="${answer.answer_tally_id}" data-answer-weight="${answer.point_value}" class="answer-button"><span>${answer.answer_text}</span></button>`).join(''));
60
61    $('#results-container').hide();
62    $('#quiz-content').show();
63
64    $('.answer-button').on('click', function() {
65        const questionId = $(this).data('question-id');
66        const answerId = $(this).data('answer-id');
67        const answerWeight = $(this).data('answer-weight');
68        answerData[questionId].answer_tally_id = answerId;
69        answerData[questionId].point_value = answerWeight;
70        answerData[questionId].question_text = $('#question-text').text();
71        answerData[questionId].answer_text = $('span', $(this)).text();
72        // console.log(answerData);
73        currentQuestionIndex++;
74        if (currentQuestionIndex < questions.length) {
75            goToNextQuestion();
76            $('.back-button').css('left', '0');
77        } else {
78            $('.quiz-container .loading').fadeIn();
79            showResults();
80        }
81    });
82
83
84}
85
86function goToPreviousQuestion() {
87    currentQuestionIndex--;
88    goToNextQuestion();
89    if (currentQuestionIndex === 0) {
90        $('.back-button').css('left', '-100px');
91    }
92}
93
94let answerData = [];
95let currentQuestionIndex = 0;
96
97questions.forEach(question => {
98    answerData[question.ID] = {
99        answer_tally_id: "",
100        point_value: 0,
101    }
102})
103
104$('#fs-wrap').hide();
105
106$('#start-button').on('click', function() {
107    $('#fs-wrap').show();
108    //$('#masthead, .anchor-nav.sticky').fadeOut();
109    hide_menu($('#masthead'));
110    hide_menu($('.anchor-nav.sticky'));
111});
112$('.exit-button').on('click', function() {
113    $('#fs-wrap').hide();
114    //$('#masthead, .anchor-nav.sticky').fadeIn();
115    show_menu($('#masthead'));
116    show_menu($('.anchor-nav.sticky'));
117});
118$('.back-button').on('click', function() {
119    goToPreviousQuestion();
120});
121
122function hide_menu(section) {
123    var top = parseInt(section.css('top'), 10);
124    section.data('top', top);
125    var new_top = top - 200;
126    section.animate({
127        top: new_top
128    }, 800);
129}
130
131function show_menu(section) {
132    var top = section.data('top');
133    section.animate({
134        top: top
135    }, 800);
136}
137
138
139goToNextQuestion();

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.