diff --git a/main.js b/main.js
index 344c1d5..7909cf3 100644
--- a/main.js
+++ b/main.js
@@ -224,6 +224,425 @@ class QuestionDB {
}
//: }}}
+//: DOM getting stuff {{{
+// all dom getting stuff are in this sections, so on
+// moodle dom change, stuff breaks here
+
+class QuestionsPageModell {
+
+ GetAllQuestionsDropdown() {
+ if (logElementGetting)
+ Log("getting dropdown question");
+ let items = document.getElementById("responseform").getElementsByTagName("p")[0].childNodes;
+ let r = "";
+ items.forEach((item) => {
+ if (item.tagName == undefined)
+ r += item.nodeValue;
+
+ });
+ return r;
+ }
+
+ GetAllQuestionsQtext() {
+ if (logElementGetting)
+ Log("getting all questions qtext");
+ return document.getElementById("responseform").getElementsByClassName("qtext"); // getting questions
+ }
+
+ GetAllQuestionsP() {
+ if (logElementGetting)
+ Log("getting all questions by tag p");
+ return document.getElementById("responseform").getElementsByTagName("p");
+ }
+
+ GetFormulationClearfix() {
+ if (logElementGetting)
+ Log("getting formulation clearfix lol");
+ return document.getElementsByClassName("formulation clearfix");
+ }
+
+ GetAnswerOptions() {
+ if (logElementGetting)
+ Log("getting all answer options");
+ return this.GetFormulationClearfix()[0].childNodes[3].innerText;
+ }
+
+ GetQuestionImages() {
+ if (logElementGetting)
+ Log("getting question images");
+ return this.GetFormulationClearfix()[0].getElementsByTagName("img");
+ }
+
+ // this function should return the question, posible answers, and image names
+ GetQuestionFromTest() {
+ var questions; // the important questions
+ var allQuestions; // all questions
+ try // trying to get tha current questions
+ {
+ allQuestions = this.GetAllQuestionsQtext(); // getting questions
+ if (allQuestions.length == 0) // if there are no found questions
+ {
+ var ddq = this.GetAllQuestionsDropdown();
+ if (EmptyOrWhiteSpace(ddq)) {
+ var questionData = "";
+ for (var j = 0; j < allQuestions.length; j++) {
+ // TODO: test dis
+ let subAllQuestions = allQuestions[j].childNodes;
+ for (var i = 0; i < subAllQuestions.length; i++) {
+ if (subAllQuestions[i].data != undefined && !EmptyOrWhiteSpace(subAllQuestions[i].data)) // if the current element has some text data to add
+ {
+ questionData += subAllQuestions[i].data + " "; // adding text to question data
+ }
+ }
+ }
+ questions = [questionData];
+ } else
+ questions = [ddq];
+ } else // if there is
+ {
+ questions = [];
+ for (var i = 0; i < allQuestions.length; i++) {
+ questions.push(allQuestions[i].innerText);
+ }
+ }
+ } catch (e) {
+ Exception(e, "script error at getting question:");
+ }
+ var imgNodes = ""; // the image nodes for questions
+ try {
+ imgNodes = this.GetQuestionImages(); // getting question images, if there is any
+ AddImageNamesToImages(imgNodes); // adding image names to images, so its easier to search for, or even guessing
+ } catch (e) {
+ Log(e);
+ Log("Some error with images");
+ }
+
+ questions = questions.map((item, ind) => {
+ return ReplaceCharsWithSpace(item, "\n");
+ });
+
+ return {
+ imgnodes: imgNodes,
+ allQ: allQuestions,
+ q: questions
+ };
+ }
+}
+
+class ResultsPageModell {
+
+ DetermineQuestionType(nodes) {
+ let qtype = "";
+ let i = 0;
+
+ while (i < nodes.length && qtype == "") {
+ let inps = nodes[i].getElementsByTagName("input");
+
+ if (inps.length > 0) {
+ qtype = inps[0].type;
+ }
+
+ i++;
+ }
+
+ return qtype;
+
+ }
+
+ GetSelectAnswer() {
+ if (logElementGetting)
+ Log("getting selected answer");
+ var t = document.getElementsByTagName("select");
+ if (t.length > 0)
+ return t[0].options[document.getElementsByTagName("select")[
+ 0].selectedIndex].innerText;
+ }
+
+ GetCurrQuestion(i) {
+ if (logElementGetting)
+ Log("getting curr questions by index: " + i);
+ return document.getElementsByTagName("form")[0].childNodes[0].childNodes[i].childNodes[1].childNodes[
+ 0].innerText;
+ }
+
+ GetFormResult() {
+ if (logElementGetting)
+ Log("getting form result");
+ var t = document.getElementsByTagName("form")[0].childNodes[0].childNodes;
+ if (t.length > 0 && t[0].tagName == undefined) // debreceni moodle
+ return document.getElementsByTagName("form")[1].childNodes[0].childNodes;
+ else
+ return t;
+ }
+
+ GetAnswerNode(i) {
+ if (logElementGetting)
+ Log("getting answer node");
+
+ var results = this.GetFormResult(); // getting results element
+
+ var r = results[i].getElementsByClassName("answer")[0].childNodes;
+ var ret = [];
+ for (var j = 0; j < r.length; j++)
+ if (r[j].tagName != undefined && r[j].tagName.toLowerCase() == "div")
+ ret.push(r[j]);
+
+ let qtype = this.DetermineQuestionType(ret);
+
+ return {
+ nodes: ret,
+ type: qtype
+ };
+ }
+
+ GetCurrentAnswer(i) {
+ if (logElementGetting)
+ Log("getting curr answer by index: " + i);
+ var results = this.GetFormResult(); // getting results element
+ var t = results[i].getElementsByClassName("formulation clearfix")[0].getElementsByTagName("span");
+ if (t.length > 2)
+ return t[1].innerHTML.split("
")[1];
+ }
+
+ GetQText(i) {
+ if (logElementGetting)
+ Log("getting qtext by index: " + i);
+ var results = this.GetFormResult(); // getting results element
+ return results[i].getElementsByClassName("qtext");
+ }
+
+ GetDropboxes(i) {
+ if (logElementGetting)
+ Log("getting dropboxes by index: " + i);
+ var results = this.GetFormResult(); // getting results element
+ return results[i].getElementsByTagName("select");
+ }
+
+ GetAllAnswer(index) {
+ if (logElementGetting)
+ Log("getting all answers, ind: " + index);
+ return document.getElementsByClassName("answer")[index].childNodes;
+ }
+
+ GetPossibleAnswers(i) {
+ if (logElementGetting)
+ Log("getting possible answers");
+ var results = this.GetFormResult(); // getting results element
+ var items = results[i].getElementsByTagName("label");
+ var r = [];
+ for (var j = 0; j < items.length; j++) {
+
+ function TryGetCorrect(j) {
+ var cn = items[j].parentNode.className;
+ if (cn.includes("correct"))
+ return cn.includes("correct") && !cn.includes("incorrect");
+ }
+ r.push({
+ value: items[j].innerText,
+ iscorrect: TryGetCorrect(j)
+ });
+ }
+ return r;
+ }
+
+ GetRightAnswerIfCorrectShown(i) {
+ if (logElementGetting)
+ Log("getting right answer if correct shown");
+ var results = this.GetFormResult(); // getting results element
+ return results[i].getElementsByClassName("rightanswer");
+ }
+
+ GetWrongAnswerIfCorrectNotShown(i) {
+ if (logElementGetting)
+ Log("getting wrong answer if correct not shown");
+ var results = this.GetFormResult(); // getting results element
+ var n = results[i].getElementsByTagName("i")[0].parentNode;
+ if (n.className.includes("incorrect"))
+ return results[i].getElementsByTagName("i")[0].parentNode.innerText;
+ else
+ return "";
+ }
+
+ GetRightAnswerIfCorrectNotShown(i) {
+ if (logElementGetting)
+ Log("Getting right answer if correct not shown");
+ var results = this.GetFormResult(); // getting results element
+ var n = results[i].getElementsByTagName("i")[0].parentNode;
+ if (n.className.includes("correct") && !n.className.includes("incorrect"))
+ return results[i].getElementsByTagName("i")[0].parentNode.innerText;
+ else
+ return "";
+ }
+
+ GetFormCFOfResult(result) {
+ if (logElementGetting)
+ Log("getting formulation clearfix");
+ return result.getElementsByClassName("formulation clearfix")[0];
+ }
+
+ GetResultText(i) {
+ if (logElementGetting)
+ Log("getting result text");
+ var results = this.GetFormResult(); // getting results element
+ return this.GetFormCFOfResult(results[i]).getElementsByTagName("p");
+ }
+
+ GetResultImage(i) {
+ if (logElementGetting)
+ Log("getting result image");
+ var results = this.GetFormResult(); // getting results element
+ return this.GetFormCFOfResult(results[i]).getElementsByTagName("img");
+ }
+
+
+ // gets the question from the result page
+ // i is the index of the question
+ GetQuestionFromResult(i) {
+ var temp = this.GetQText(i);
+ var currQuestion = "";
+ if (temp.length > 0) // if the qtext element is not 0 length
+ {
+ currQuestion = temp[0].innerText; // adding the question to curr question as .q
+ } else {
+ // this is black magic fuckery a bit
+ if (this.GetDropboxes(i).length > 0) // if there is dropdown list in the current question
+ {
+ var allNodes = this.GetResultText(i);
+ currQuestion = "";
+ for (var k = 0; k < allNodes.length; k++) {
+ var allQuestions = this.GetResultText(i)[k].childNodes;
+ for (var j = 0; j < allQuestions.length; j++) {
+ if (allQuestions[j].data != undefined && !EmptyOrWhiteSpace(allQuestions[j].data)) {
+ currQuestion += allQuestions[j].data + " ";
+ }
+ }
+ }
+ } else {
+ try {
+ currQuestion = this.GetCurrQuestion(i);
+ } catch (e) {
+ currQuestion = "REEEEEEEEEEEEEEEEEEEEE"; // this shouldnt really happen sry guys
+ }
+ }
+ }
+ return currQuestion;
+ }
+
+ // tries to get right answer from result page
+ // i is the index of the question
+ GetRightAnswerFromResult(i) {
+ var fun = [];
+
+ // the basic type of getting answers
+ fun.push(function TryGet0(i) {
+ var temp = this.GetRightAnswerIfCorrectShown(i); // getting risht answer
+ if (temp.length > 0) // if the rightanswer element is not 0 length
+ return temp[0].innerText; // adding the answer to curr question as .a
+ });
+
+ // if there is dropdown list in the current question
+ fun.push(function TryGet1(i) {
+ if (this.GetDropboxes(i).length > 0)
+ return this.GetCurrentAnswer(i);
+ });
+
+ // if the correct answers are not shown, and the selected answer
+ // is correct
+ fun.push(function TryGet2(i) {
+ return this.GetRightAnswerIfCorrectNotShown(i);
+ });
+
+ // if there is dropbox in the question
+ fun.push(function TryGet3(i) {
+ return this.GetSelectAnswer();
+ });
+
+ // if the correct answers are not shown, and the selected answer
+ // is incorrect, and there are only 2 options
+ fun.push(function TryGet4(i) {
+ var possibleAnswers = this.GetPossibleAnswers(i);
+ if (possibleAnswers.length == 2) {
+ for (var k = 0; k < possibleAnswers.length; k++)
+ if (possibleAnswers[k].iscorrect == undefined)
+ return possibleAnswers[k].value;
+ }
+ });
+
+ fun.push(function TryGetFinal(i) {
+ return undefined;
+ });
+
+ var j = 0;
+ var currAnswer;
+ while (j < fun.length && EmptyOrWhiteSpace(currAnswer)) {
+ currAnswer = fun[j](i);
+ j++;
+ }
+
+ return currAnswer;
+ }
+
+ // version 2 of getting right answer from result page
+ // i is the index of the question
+ GetRightAnswerFromResultv2(i) {
+ try {
+ var answerNodes = this.GetAnswerNode(i);
+ let items = answerNodes.nodes;
+
+ if (answerNodes.type == "checkbox")
+ return GetRightAnswerFromResult(i);
+
+ for (var j = 0; j < items.length; j++) {
+ var cn = items[j].className;
+ if (cn.includes("correct") && !cn.includes("incorrect"))
+ return items[j].innerText;
+ }
+ if (items.length == 2) {
+ for (var j = 0; j < items.length; j++) {
+ var cn = items[j].className;
+ if (!cn.includes("correct"))
+ return items[j].innerText;
+ }
+ }
+ } catch (e) {
+ Log("error at new nodegetting, trying the oldschool way");
+ }
+ }
+}
+
+class MiscPageModell {
+
+ GetCurrentSubjectName() {
+ if (logElementGetting)
+ Log("getting current subjects name");
+ return document.getElementById("page-header").innerText.split("\n")[0];
+ }
+
+ GetVideo() {
+ if (logElementGetting)
+ Log("getting video stuff");
+ return document.getElementsByTagName("video")[0];
+ }
+
+ GetVideoElement() {
+ if (logElementGetting)
+ Log("getting video element");
+ return document.getElementById("videoElement").parentNode;
+ }
+
+ GetInputType(answers, i) {
+ if (logElementGetting)
+ Log("getting input type");
+ return answers[i].getElementsByTagName("input")[0].type;
+ }
+}
+
+//: }}}
+
+var QPM = new QuestionsPageModell();
+var RPM = new ResultsPageModell();
+var MPM = new MiscPageModell();
+
//: Main function {{{
function Main() {
'use strict';
@@ -276,426 +695,6 @@ function Main() {
}
//: }}}
-//: DOM getting stuff {{{
-// all dom getting stuff are in this sections, so on
-// moodle dom change, stuff breaks here
-
-class QuestionsPageModell {
-
- GetAllQuestionsDropdown() {
- if (logElementGetting)
- Log("getting dropdown question");
- let items = document.getElementById("responseform").getElementsByTagName("p")[0].childNodes;
- let r = "";
- items.forEach((item) => {
- if (item.tagName == undefined)
- r += item.nodeValue;
-
- });
- return r;
- }
-
- GetAllQuestionsQtext() {
- if (logElementGetting)
- Log("getting all questions qtext");
- return document.getElementById("responseform").getElementsByClassName("qtext"); // getting questions
- }
-
- GetAllQuestionsP() {
- if (logElementGetting)
- Log("getting all questions by tag p");
- return document.getElementById("responseform").getElementsByTagName("p");
- }
-
- GetFormulationClearfix() {
- if (logElementGetting)
- Log("getting formulation clearfix lol");
- return document.getElementsByClassName("formulation clearfix");
- }
-
- GetAnswerOptions() {
- if (logElementGetting)
- Log("getting all answer options");
- return GetFormulationClearfix()[0].childNodes[3].innerText;
- }
-
- GetQuestionImages() {
- if (logElementGetting)
- Log("getting question images");
- return GetFormulationClearfix()[0].getElementsByTagName("img");
- }
-
- // this function should return the question, posible answers, and image names
- GetQuestionFromTest() {
- var questions; // the important questions
- var allQuestions; // all questions
- try // trying to get tha current questions
- {
- allQuestions = this.GetAllQuestionsQtext(); // getting questions
- if (allQuestions.length == 0) // if there are no found questions
- {
- var ddq = GetAllQuestionsDropdown();
- if (EmptyOrWhiteSpace(ddq)) {
- var questionData = "";
- for (var j = 0; j < allQuestions.length; j++) {
- allQuestions = this.GetAllQuestionsQtext()[j].childNodes;
- for (var i = 0; i < allQuestions.length; i++) {
- if (allQuestions[i].data != undefined && !EmptyOrWhiteSpace(allQuestions[i].data)) // if the current element has some text data to add
- {
- questionData += allQuestions[i].data + " "; // adding text to question data
- }
- }
- }
- questions = [questionData];
- } else
- questions = [ddq];
- } else // if there is
- {
- questions = [];
- for (var i = 0; i < allQuestions.length; i++) {
- questions.push(allQuestions[i].innerText);
- }
- }
- } catch (e) {
- Exception(e, "script error at getting question:");
- }
- var imgNodes = ""; // the image nodes for questions
- try {
- imgNodes = GetQuestionImages(); // getting question images, if there is any
- AddImageNamesToImages(imgNodes); // adding image names to images, so its easier to search for, or even guessing
- } catch (e) {
- Log(e);
- Log("Some error with images");
- }
-
- questions = questions.map((item, ind) => {
- return ReplaceCharsWithSpace(item, "\n");
- });
-
- return {
- imgnodes: imgNodes,
- allQ: allQuestions,
- q: questions
- };
- }
-
-}
-
-class ResultsPageModell {
-
- GetAllAnswer(index) {
- if (logElementGetting)
- Log("getting all answers, ind: " + index);
- return document.getElementsByClassName("answer")[index].childNodes;
- }
-
- GetPossibleAnswers(i) {
- if (logElementGetting)
- Log("getting possible answers");
- var results = GetFormResult(); // getting results element
- var items = GetFormResult()[i].getElementsByTagName("label");
- var r = [];
- for (var j = 0; j < items.length; j++) {
-
- function TryGetCorrect(j) {
- var cn = items[j].parentNode.className;
- if (cn.includes("correct"))
- return cn.includes("correct") && !cn.includes("incorrect");
- }
- r.push({
- value: items[j].innerText,
- iscorrect: TryGetCorrect(j)
- });
- }
- return r;
- }
-
- GetRightAnswerIfCorrectShown(i) {
- if (logElementGetting)
- Log("getting right answer if correct shown");
- var results = GetFormResult(); // getting results element
- return results[i].getElementsByClassName("rightanswer");
- }
-
- GetWrongAnswerIfCorrectNotShown(i) {
- if (logElementGetting)
- Log("getting wrong answer if correct not shown");
- var results = GetFormResult(); // getting results element
- var n = results[i].getElementsByTagName("i")[0].parentNode;
- if (n.className.includes("incorrect"))
- return results[i].getElementsByTagName("i")[0].parentNode.innerText;
- else
- return "";
- }
-
- GetRightAnswerIfCorrectNotShown(i) {
- if (logElementGetting)
- Log("Getting right answer if correct not shown");
- var results = GetFormResult(); // getting results element
- var n = results[i].getElementsByTagName("i")[0].parentNode;
- if (n.className.includes("correct") && !n.className.includes("incorrect"))
- return results[i].getElementsByTagName("i")[0].parentNode.innerText;
- else
- return "";
- }
-
- GetFormCFOfResult(result) {
- if (logElementGetting)
- Log("getting formulation clearfix");
- return result.getElementsByClassName("formulation clearfix")[0];
- }
-
- GetResultText(i) {
- if (logElementGetting)
- Log("getting result text");
- var results = GetFormResult(); // getting results element
- return GetFormCFOfResult(results[i]).getElementsByTagName("p");
- }
-
- GetResultImage(i) {
- if (logElementGetting)
- Log("getting result image");
- var results = GetFormResult(); // getting results element
- return GetFormCFOfResult(results[i]).getElementsByTagName("img");
- }
-
-
- // gets the question from the result page
- // i is the index of the question
- GetQuestionFromResult(i) {
- var temp = GetQText(i);
- var currQuestion = "";
- if (temp.length > 0) // if the qtext element is not 0 length
- {
- currQuestion = temp[0].innerText; // adding the question to curr question as .q
- } else {
- // this is black magic fuckery a bit
- if (GetDropboxes(i).length > 0) // if there is dropdown list in the current question
- {
- var allNodes = GetResultText(i);
- currQuestion = "";
- for (var k = 0; k < allNodes.length; k++) {
- var allQuestions = GetResultText(i)[k].childNodes;
- for (var j = 0; j < allQuestions.length; j++) {
- if (allQuestions[j].data != undefined && !EmptyOrWhiteSpace(allQuestions[j].data)) {
- currQuestion += allQuestions[j].data + " ";
- }
- }
- }
- } else {
- try {
- currQuestion = GetCurrQuestion(i);
- } catch (e) {
- currQuestion = "REEEEEEEEEEEEEEEEEEEEE"; // this shouldnt really happen sry guys
- }
- }
- }
- return currQuestion;
- }
-
- // tries to get right answer from result page
- // i is the index of the question
- GetRightAnswerFromResult(i) {
- var fun = [];
-
- // the basic type of getting answers
- fun.push(function TryGet0(i) {
- var temp = GetRightAnswerIfCorrectShown(i); // getting risht answer
- if (temp.length > 0) // if the rightanswer element is not 0 length
- return temp[0].innerText; // adding the answer to curr question as .a
- });
-
- // if there is dropdown list in the current question
- fun.push(function TryGet1(i) {
- if (GetDropboxes(i).length > 0)
- return GetCurrentAnswer(i);
- });
-
- // if the correct answers are not shown, and the selected answer
- // is correct
- fun.push(function TryGet2(i) {
- return GetRightAnswerIfCorrectNotShown(i);
- });
-
- // if there is dropbox in the question
- fun.push(function TryGet3(i) {
- return GetSelectAnswer();
- });
-
- // if the correct answers are not shown, and the selected answer
- // is incorrect, and there are only 2 options
- fun.push(function TryGet4(i) {
- var possibleAnswers = GetPossibleAnswers(i);
- if (possibleAnswers.length == 2) {
- for (var k = 0; k < possibleAnswers.length; k++)
- if (possibleAnswers[k].iscorrect == undefined)
- return possibleAnswers[k].value;
- }
- });
-
- fun.push(function TryGetFinal(i) {
- return undefined;
- });
-
- var j = 0;
- var currAnswer;
- while (j < fun.length && EmptyOrWhiteSpace(currAnswer)) {
- currAnswer = fun[j](i);
- j++;
- }
-
- return currAnswer;
- }
-
- // version 2 of getting right answer from result page
- // i is the index of the question
- GetRightAnswerFromResultv2(i) {
- try {
- var answerNodes = GetAnswerNode(i);
- let items = answerNodes.nodes;
-
- if (answerNodes.type == "checkbox")
- return GetRightAnswerFromResult(i);
-
- for (var j = 0; j < items.length; j++) {
- var cn = items[j].className;
- if (cn.includes("correct") && !cn.includes("incorrect"))
- return items[j].innerText;
- }
- if (items.length == 2) {
- for (var j = 0; j < items.length; j++) {
- var cn = items[j].className;
- if (!cn.includes("correct"))
- return items[j].innerText;
- }
- }
- } catch (e) {
- Log("error at new nodegetting, trying the oldschool way");
- }
- }
-
-}
-
-class MiscPageModell {
-
- GetCurrentSubjectName() {
- if (logElementGetting)
- Log("getting current subjects name");
- return document.getElementById("page-header").innerText.split("\n")[0];
- }
-
- GetVideo() {
- if (logElementGetting)
- Log("getting video stuff");
- return document.getElementsByTagName("video")[0];
- }
-
- GetVideoElement() {
- if (logElementGetting)
- Log("getting video element");
- return document.getElementById("videoElement").parentNode;
- }
-
- GetInputType(answers, i) {
- if (logElementGetting)
- Log("getting input type");
- return answers[i].getElementsByTagName("input")[0].type;
- }
-
- GetFormResult() {
- if (logElementGetting)
- Log("getting form result");
- var t = document.getElementsByTagName("form")[0].childNodes[0].childNodes;
- if (t.length > 0 && t[0].tagName == undefined) // debreceni moodle
- return document.getElementsByTagName("form")[1].childNodes[0].childNodes;
- else
- return t;
- }
-
- GetQText(i) {
- if (logElementGetting)
- Log("getting qtext by index: " + i);
- var results = GetFormResult(); // getting results element
- return results[i].getElementsByClassName("qtext");
- }
-
- GetDropboxes(i) {
- if (logElementGetting)
- Log("getting dropboxes by index: " + i);
- var results = GetFormResult(); // getting results element
- return results[i].getElementsByTagName("select");
- }
-
- GetCurrQuestion(i) {
- if (logElementGetting)
- Log("getting curr questions by index: " + i);
- return document.getElementsByTagName("form")[0].childNodes[0].childNodes[i].childNodes[1].childNodes[
- 0].innerText;
- }
-
- GetCurrentAnswer(i) {
- if (logElementGetting)
- Log("getting curr answer by index: " + i);
- var results = GetFormResult(); // getting results element
- var t = results[i].getElementsByClassName("formulation clearfix")[0].getElementsByTagName("span");
- if (t.length > 2)
- return t[1].innerHTML.split("
")[1];
- }
-
- GetSelectAnswer() {
- if (logElementGetting)
- Log("getting selected answer");
- var t = document.getElementsByTagName("select");
- if (t.length > 0)
- return t[0].options[document.getElementsByTagName("select")[
- 0].selectedIndex].innerText;
- }
-
- GetAnswerNode(i) {
- if (logElementGetting)
- Log("getting answer node");
-
- var results = GetFormResult(); // getting results element
-
- var r = results[i].getElementsByClassName("answer")[0].childNodes;
- var ret = [];
- for (var j = 0; j < r.length; j++)
- if (r[j].tagName != undefined && r[j].tagName.toLowerCase() == "div")
- ret.push(r[j]);
-
- let qtype = DetermineQuestionType(ret);
-
- return {
- nodes: ret,
- type: qtype
- };
- }
-
- DetermineQuestionType(nodes) {
- let qtype = "";
- let i = 0;
-
- while (i < nodes.length && qtype == "") {
- let inps = nodes[i].getElementsByTagName("input");
-
- if (inps.length > 0) {
- qtype = inps[0].type;
- }
-
- i++;
- }
-
- return qtype;
-
- }
-}
-
-//: }}}
-
-var QPM = new QuestionsPageModell();
-var RPM = new ResultsPageModell();
-var MPM = new MiscPageModell();
-
//: Main logic stuff {{{
//: Loading {{{
@@ -1279,7 +1278,7 @@ function SearchSameQuestion(questionData, quiz, i) {
function GetImageFormResult(i) {
var temp = null;
try {
- var imgElements = GetResultImage(i); // trying to get image
+ var imgElements = RPM.GetResultImage(i); // trying to get image
var imgURL = []; // image urls
for (var j = 0; j < imgElements.length; j++) {
if (!imgElements[j].src.includes("brokenfile")) // idk why brokenfile is in some urls, which are broken, so why tf are they there damn moodle
@@ -1331,7 +1330,7 @@ function SaveQuiz(quiz, questionData) {
var sentData = {};
try {
try {
- sentData.subj = GetCurrentSubjectName();
+ sentData.subj = MPM.GetCurrentSubjectName();
} catch (e) {
sentData.subj = "NOSUBJ";
Log("unable to get subject name :c");
@@ -1358,19 +1357,19 @@ function SaveQuiz(quiz, questionData) {
function GetQuiz() {
try {
var quiz = []; // final quiz stuff
- var results = GetFormResult(); // getting results element
+ var results = RPM.GetFormResult(); // getting results element
for (var i = 0; i < results.length - 2; i++) // going through results, except last two, idk why, dont remember, go check it man
{
var question = {}; // the current question
// QUESTION --------------------------------------------------------------------------------------------------------------------
- var q = GetQuestionFromResult(i);
+ var q = RPM.GetQuestionFromResult(i);
if (q != undefined)
question.q = SimplifyQuery(q);
// RIGHTANSWER ---------------------------------------------------------------------------------------------------------------------
- var a = GetRightAnswerFromResultv2(i);
+ var a = RPM.GetRightAnswerFromResultv2(i);
if (a == undefined)
- a = GetRightAnswerFromResult(i);
+ a = RPM.GetRightAnswerFromResult(i);
if (a != undefined)
question.a = SimplifyQuery(a);
// IMG ---------------------------------------------------------------------------------------------------------------------
@@ -1437,7 +1436,7 @@ function AddVideoHotkeys(url) {
document.addEventListener("keydown", function(e) // keydown event listener
{
try {
- var video = GetVideo();
+ var video = MPM.GetVideo();
var keyCode = e.keyCode; // getting keycode
if (keyCode == 32) // if the keycode is 32 (space)
{
@@ -1461,7 +1460,7 @@ function AddVideoHotkeys(url) {
Log(err.message);
}
});
- var toadd = GetVideoElement();
+ var toadd = MPM.GetVideoElement();
var node = CreateNodeWithText(toadd,
"Miután elindítottad: Play/pause: space. Seek: Bal/jobb nyíl.");
node.style.margin = "5px 5px 5px 5px"; // fancy margin
@@ -1517,7 +1516,7 @@ function HighLightAnswer(results, currQuestionNumber) {
try {
if (results.length > 0) // if there are items in the result
{
- var answers = GetAllAnswer(currQuestionNumber); // getting all answers
+ var answers = RPM.GetAllAnswer(currQuestionNumber); // getting all answers
var toColor = []; // the numberth in the array will be colored, and .length items will be colored
var type = ""; // type of the question. radio or ticbox or whatitscalled
for (var i = 0; i < answers.length; i++) // going thtough answers
@@ -1536,12 +1535,12 @@ function HighLightAnswer(results, currQuestionNumber) {
if (NormalizeSpaces(RemoveUnnecesarySpaces(correct)).includes(answer)) // if the correct answer includes the current answer
{
toColor.push(i); // adding the index
- type = GetInputType(answers, i); // setting the type
+ type = MPM.GetInputType(answers, i); // setting the type
}
}
}
if (results[0].match == 100) // if the result is 100% correct
- if (type !== "radio" || toColor.length == 1) // if the type is not radio or there is exactly one correct solution
+ if (type !== "radio" || toColor.length == 1) // TODO why not radio
for (var i = 0; i < toColor.length; i++) // going through "toColor"
answers[toColor[i]].style.backgroundColor = "#8cff66"; // and coloring the correct index
}