diff --git a/script.js b/script.js index 552608f..0832322 100644 --- a/script.js +++ b/script.js @@ -42,173 +42,176 @@ }); } - waitForGlobalVariable("bootstrap") + waitForGlobalVariable("$") .then(() => { - console.log("Bootstrap loaded successfully"); + waitForGlobalVariable("bootstrap") + .then(() => { + console.log("Bootstrap loaded successfully"); - var myModal = $("#fullScreenModal"); + var myModal = $("#fullScreenModal"); - myModal[0].addEventListener("shown.bs.modal", function () { - const modalIframe = window.$("#modal-iframe"); + myModal[0].addEventListener("shown.bs.modal", function () { + const modalIframe = window.$("#modal-iframe"); - modalIframe.css("width", "100%"); - modalIframe.css("height", "100%"); - modalIframe.css("border", "none"); + modalIframe.css("width", "100%"); + modalIframe.css("height", "100%"); + modalIframe.css("border", "none"); - // Add event handler to iframe load events - modalIframe[0].addEventListener("load", function () { - const newLocation = modalIframe[0].contentWindow.location.href; + // Add event handler to iframe load events + modalIframe[0].addEventListener("load", function () { + const newLocation = modalIframe[0].contentWindow.location.href; - // If the iframe now contains a course page, open it in the parent window - if (newLocation.includes("/course/view.php?id=")) { - window.top.location.href = newLocation; - }; - }); - }); + // If the iframe now contains a course page, open it in the parent window + if (newLocation.includes("/course/view.php?id=")) { + window.top.location.href = newLocation; + }; + }); + }); - var scriptId = "script-" + Math.random().toString(36).substring(2, 9); - currentScript.id = scriptId; + var scriptId = "script-" + Math.random().toString(36).substring(2, 9); + currentScript.id = scriptId; - var contentUrl = "/mod/exp360/view_content.php?id=" + $(currentScript).attr("data-activity-id"); + var contentUrl = "/mod/exp360/view_content.php?id=" + $(currentScript).attr("data-activity-id"); - function openInModal(url, block) { - $("#modal-iframe").attr("src", url); - if (block) { - $("#fullScreenModal").attr("data-block", block); - } else { - $("#fullScreenModal").removeAttr("data-block"); - } - } + function openInModal(url, block) { + $("#modal-iframe").attr("src", url); + if (block) { + $("#fullScreenModal").attr("data-block", block); + } else { + $("#fullScreenModal").removeAttr("data-block"); + } + } - function showContent(url, block) { - bootstrap.Modal.getOrCreateInstance( - document.getElementById("fullScreenModal") - ).show(); - if (url) { - openInModal(url, block); - } - } + function showContent(url, block) { + bootstrap.Modal.getOrCreateInstance( + document.getElementById("fullScreenModal") + ).show(); + if (url) { + openInModal(url, block); + } + } - function hideContent() { - bootstrap.Modal.getOrCreateInstance( - document.getElementById("fullScreenModal") - ).hide(); - openInModal("about:blank"); - } + function hideContent() { + bootstrap.Modal.getOrCreateInstance( + document.getElementById("fullScreenModal") + ).hide(); + openInModal("about:blank"); + } - async function nextContent() { - var modal = $("#fullScreenModal"); - var currentLi = $("#" + modal.attr("data-block")); + async function nextContent() { + var modal = $("#fullScreenModal"); + var currentLi = $("#" + modal.attr("data-block")); - var nextLi = currentLi.next("li.section"); + var nextLi = currentLi.next("li.section"); - var aLink = nextLi.find("a.stretched-link"); + var aLink = nextLi.find("a.stretched-link"); - if (aLink.length > 0) { - let hrefValue = aLink.attr("href"); + if (aLink.length > 0) { + let hrefValue = aLink.attr("href"); - if (hrefValue.includes("feedback")) { - hrefValue = hrefValue.replace("view", "complete"); - hrefValue = hrefValue + "&embed=1"; - } else if (hrefValue.includes("/quiz/")) { - hrefValue = hrefValue.replace("view", "attempt"); + if (hrefValue.includes("feedback")) { + hrefValue = hrefValue.replace("view", "complete"); + hrefValue = hrefValue + "&embed=1"; + } else if (hrefValue.includes("/quiz/")) { + hrefValue = hrefValue.replace("view", "attempt"); - try { - const response = await fetch(hrefValue); - hrefValue = response.url; - } catch (error) { - console.error('Error fetching the URL:', error); + try { + const response = await fetch(hrefValue); + hrefValue = response.url; + } catch (error) { + console.error('Error fetching the URL:', error); + } + + hrefValue = hrefValue + "&embed=1"; + } + + return openInModal(hrefValue, nextLi.attr("id")); + } else { + var button = nextLi.find("button.btn-primary"); + + if (button.length > 0) { + return button.click(); + } } - hrefValue = hrefValue + "&embed=1"; + hideContent(); } - return openInModal(hrefValue, nextLi.attr("id")); - } else { - var button = nextLi.find("button.btn-primary"); - - if (button.length > 0) { - return button.click(); + function openUrlInQuizModal(href) { + $("#regular-modal-iframe").attr("src", href); + $("#regularModal").modal("show"); } - } - hideContent(); - } + // Function to open a quiz modal + async function openQuizModal(number, openNext = true) { + openNextFlag = openNext; // Store the flag in the global variable - function openUrlInQuizModal(href) { - $("#regular-modal-iframe").attr("src", href); - $("#regularModal").modal("show"); - } + let href = getFeedbackLinks()[number - 1]; + const quizLink = $(`a.stretched-link[href="${href}"]`).closest("li.section"); - // Function to open a quiz modal - async function openQuizModal(number, openNext = true) { - openNextFlag = openNext; // Store the flag in the global variable + if (href.includes("/feedback/")) { + href = href.replace("view", "complete"); + } else if (href.includes("/quiz/")) { + href = href.replace("view", "attempt"); + try { + const response = await fetch(href); + href = response.url; + } catch (error) { + console.error('Error fetching the URL:', error); + } + } - let href = getFeedbackLinks()[number - 1]; - const quizLink = $(`a.stretched-link[href="${href}"]`).closest("li.section"); + href = href + "&embed=1&modal=1"; + openUrlInQuizModal(href); - if (href.includes("/feedback/")) { - href = href.replace("view", "complete"); - } else if (href.includes("/quiz/")) { - href = href.replace("view", "attempt"); - try { - const response = await fetch(href); - href = response.url; - } catch (error) { - console.error('Error fetching the URL:', error); + if (openNext) { + // Set the data-block attribute to the block containing the current quiz + $("#fullScreenModal").attr("data-block", quizLink.attr("id")); + } } - } - href = href + "&embed=1&modal=1"; - openUrlInQuizModal(href); + // Function to close the quiz modal + function closeQuizModal() { + $("#regularModal").modal("hide"); + $("#regular-modal-iframe").attr("src", "about:blank"); - if (openNext) { - // Set the data-block attribute to the block containing the current quiz - $("#fullScreenModal").attr("data-block", quizLink.attr("id")); - } - } + if (openNextFlag) { + nextContent(); // Open the next activity + } + } - // Function to close the quiz modal - function closeQuizModal() { - $("#regularModal").modal("hide"); - $("#regular-modal-iframe").attr("src", "about:blank"); + function goToCourse(id) { + window.top.location.href = "/course/view.php?id=" + id; + } - if (openNextFlag) { - nextContent(); // Open the next activity - } - } + // Attach global functions to window.top + window.top.nextContent = nextContent; + window.top.openQuizModal = openQuizModal; + window.top.openModal = openQuizModal; + window.top.closeQuizModal = closeQuizModal; + window.top.goToQuiz = window.top.nextContent; + window.top.goToCourse = goToCourse; - function goToCourse(id) { - window.top.location.href = "/course/view.php?id=" + id; - } + var contentName = $(currentScript).attr("data-activity-name"); - // Attach global functions to window.top - window.top.nextContent = nextContent; - window.top.openQuizModal = openQuizModal; - window.top.openModal = openQuizModal; - window.top.closeQuizModal = closeQuizModal; - window.top.goToQuiz = window.top.nextContent; - window.top.goToCourse = goToCourse; + $(currentScript) + .parent() + .append( + `` + ); - var contentName = $(currentScript).attr("data-activity-name"); - - $(currentScript) - .parent() - .append( - `` - ); - - var button = $("#contentButton-" + scriptId); - button.click(function () { - showContent( - contentUrl, - $(currentScript).closest("li.section").attr("id") - ); - }); + var button = $("#contentButton-" + scriptId); + button.click(function () { + showContent( + contentUrl, + $(currentScript).closest("li.section").attr("id") + ); + }); + }) }) .catch((error) => { console.error(error.message);