diff --git a/db/install.xml b/db/install.xml
new file mode 100644
index 0000000..735727e
--- /dev/null
+++ b/db/install.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lang/en/exp360.php b/lang/en/exp360.php
new file mode 100644
index 0000000..078519e
--- /dev/null
+++ b/lang/en/exp360.php
@@ -0,0 +1,10 @@
+dirroot/course/moodleform_mod.php");
+
+class mod_exp360_mod_form extends moodleform_mod {
+ public function definition() {
+ $mform = $this->_form;
+
+ $mform->addElement('header', 'general', get_string('general', 'form'));
+
+ $mform->addElement('text', 'name', get_string('exp360name', 'exp360'), array('size' => '64'));
+ $mform->setType('name', PARAM_TEXT);
+ $mform->addRule('name', null, 'required', null, 'client');
+ $mform->addRule('name', null, 'maxlength', 255, 'client');
+
+ $this->standard_intro_elements();
+
+ $mform->addElement('text', 'content_id', get_string('contentid', 'exp360'), array('size' => '64'));
+ $mform->setType('content_id', PARAM_TEXT);
+ $mform->addRule('content_id', null, 'required', null, 'client');
+
+ $this->standard_coursemodule_elements();
+
+ $this->add_action_buttons();
+ }
+}
\ No newline at end of file
diff --git a/script.js b/script.js
index d3e88ce..c872d74 100644
--- a/script.js
+++ b/script.js
@@ -1,214 +1,192 @@
-function loadScript(url, integrity, crossorigin) {
- return new Promise((resolve, reject) => {
- const script = document.createElement("script");
- script.src = url;
- script.integrity = integrity;
- script.crossOrigin = crossorigin;
- script.onload = () => resolve(script);
- script.onerror = () => reject(new Error(`Failed to load script: ${url}`));
- document.head.appendChild(script);
- });
-}
+(function () {
+ function loadScript(url, integrity, crossorigin) {
+ return new Promise((resolve, reject) => {
+ const script = document.createElement("script");
+ script.src = url;
+ script.integrity = integrity;
+ script.crossOrigin = crossorigin;
+ script.onload = () => resolve(script);
+ script.onerror = () => reject(new Error(`Failed to load script: ${url}`));
+ document.head.appendChild(script);
+ });
+ }
-function getFeedbackLinks() {
- // Select all elements with the class "stretched-link"
- const links = document.querySelectorAll("a.stretched-link");
-
- // Initialize an array to store the href attributes
- const feedbackLinks = [];
-
- // Iterate through the selected links
- links.forEach((link) => {
- const href = link.getAttribute("href");
- // Check if the href includes "/feedback/"
- if (href) {
- if (href.includes("/feedback/")) {
- feedbackLinks.push(href);
- } else if (href.includes("/quiz/")) {
- feedbackLinks.push(href);
+ function getFeedbackLinks() {
+ const links = document.querySelectorAll("a.stretched-link");
+ const feedbackLinks = [];
+ links.forEach((link) => {
+ const href = link.getAttribute("href");
+ if (href) {
+ if (href.includes("/feedback/")) {
+ feedbackLinks.push(href);
+ } else if (href.includes("/quiz/")) {
+ feedbackLinks.push(href);
+ }
}
- }
+ });
+ return feedbackLinks;
+ }
+
+ var currentScript = document.currentScript;
+
+ var myModal = document.getElementById("fullScreenModal");
+
+ myModal.addEventListener("shown.bs.modal", function () {
+ var modalContent = myModal.querySelector(".modal-content");
+ var modalWidth = modalContent.offsetWidth;
+ var modalHeight = modalContent.offsetHeight;
+
+ const modalIframe = window.$("#modal-iframe");
+
+ modalIframe.css("width", "100%");
+ modalIframe.css("height", "100%");
+ modalIframe.css("border", "none");
});
- return feedbackLinks;
-}
+ loadScript(
+ "https://code.jquery.com/jquery-3.7.1.min.js",
+ "sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=",
+ "anonymous"
+ )
+ .then(() => {
+ console.log("jQuery loaded successfully");
+ window.$ = jQuery;
+ return loadScript(
+ "https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js",
+ "sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz",
+ "anonymous"
+ );
+ })
+ .then(() => {
+ console.log("Bootstrap loaded successfully");
+ var scriptId = "script-" + Math.random().toString(36).substring(2, 9);
+ currentScript.id = scriptId;
-var currentScript = document.currentScript;
+ var contentUrl = "/mod/exp360/view_content.php?id=" + $(currentScript).attr("data-activity-id");
-var myModal = document.getElementById("fullScreenModal");
-
-myModal.addEventListener("shown.bs.modal", function () {
- var modalContent = myModal.querySelector(".modal-content");
- var modalWidth = modalContent.offsetWidth;
- var modalHeight = modalContent.offsetHeight;
-
- const modalIframe = window.$("#modal-iframe");
-
- modalIframe.css("width", "100%");
- modalIframe.css("height", "100%");
- modalIframe.css("border", "none");
-});
-
-loadScript(
- "https://code.jquery.com/jquery-3.7.1.min.js",
- "sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=",
- "anonymous"
-)
- .then(() => {
- console.log("jQuery loaded successfully");
- window.$ = jQuery;
- return loadScript(
- "https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js",
- "sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz",
- "anonymous"
- );
- })
- .then(() => {
- console.log("Bootstrap loaded successfully");
- var scriptId = "script-" + Math.random().toString(36).substring(2, 9);
- currentScript.id = scriptId;
-
- contentUrl = $(currentScript).attr("data-content-url");
-
- 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() {
- // Get the currently executing
+
+
+