Moving element getting to classes

This commit is contained in:
YourFriendlyNeighborhoodDealer 2019-03-13 08:23:38 +01:00
parent 4e4c5c723a
commit da7eac9e56

781
main.js
View file

@ -28,19 +28,19 @@ const serverAdress = "https://qmining.tk/";
// forcing pages for testing. unless you test, do not set these to true! // forcing pages for testing. unless you test, do not set these to true!
// only one of these should be true for testing // only one of these should be true for testing
const forceTestPage = false; const forceTestPage = true;
const forceResultPage = false; const forceResultPage = false;
const forceDefaultPage = false; const forceDefaultPage = false;
const logElementGetting = false; const logElementGetting = false;
const log = true; const log = true;
const motdShowCount = 3; const motdShowCount = 3; /* Ammount of times to show motd */
var motd = ""; var motd = "";
var lastestVersion = ""; var lastestVersion = "";
const minMatchAmmount = 55; const minMatchAmmount = 55; /* Minimum ammount to consider that two questions match during answering */
const minResultMatchPercent = 99; const minResultMatchPercent = 99; /* Minimum ammount to consider that two questions match during saving */
const lengthDiffMultiplier = 10; const lengthDiffMultiplier = 10; /* Percent minus for length difference */
//: Class descriptions {{{ //: Class descriptions {{{
class Question { class Question {
@ -280,406 +280,422 @@ function Main() {
// all dom getting stuff are in this sections, so on // all dom getting stuff are in this sections, so on
// moodle dom change, stuff breaks here // moodle dom change, stuff breaks here
function GetAllQuestionsDropdown() { class QuestionsPageModell {
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;
}); GetAllQuestionsDropdown() {
return r; 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;
function GetAllQuestionsQtext() {
if (logElementGetting)
Log("getting all questions qtext");
return document.getElementById("responseform").getElementsByClassName("qtext"); // getting questions
}
function GetAllQuestionsP() {
if (logElementGetting)
Log("getting all questions by tag p");
return document.getElementById("responseform").getElementsByTagName("p");
}
function GetFormulationClearfix() {
if (logElementGetting)
Log("getting formulation clearfix lol");
return document.getElementsByClassName("formulation clearfix");
}
function GetAnswerOptions() {
if (logElementGetting)
Log("getting all answer options");
return GetFormulationClearfix()[0].childNodes[3].innerText;
}
function GetQuestionImages() {
if (logElementGetting)
Log("getting question images");
return GetFormulationClearfix()[0].getElementsByTagName("img");
}
function GetCurrentSubjectName() {
if (logElementGetting)
Log("getting current subjects name");
return document.getElementById("page-header").innerText.split("\n")[0];
}
function GetVideo() {
if (logElementGetting)
Log("getting video stuff");
return document.getElementsByTagName("video")[0];
}
function GetVideoElement() {
if (logElementGetting)
Log("getting video element");
return document.getElementById("videoElement").parentNode;
}
function GetAllAnswer(index) {
if (logElementGetting)
Log("getting all answers, ind: " + index);
return document.getElementsByClassName("answer")[index].childNodes;
}
function GetInputType(answers, i) {
if (logElementGetting)
Log("getting input type");
return answers[i].getElementsByTagName("input")[0].type;
}
function 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;
}
function GetQText(i) {
if (logElementGetting)
Log("getting qtext by index: " + i);
var results = GetFormResult(); // getting results element
return results[i].getElementsByClassName("qtext");
}
function GetDropboxes(i) {
if (logElementGetting)
Log("getting dropboxes by index: " + i);
var results = GetFormResult(); // getting results element
return results[i].getElementsByTagName("select");
}
function 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;
}
function 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("<br>")[1];
}
function 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;
}
function 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
};
}
function 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;
}
function 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;
} }
return r;
}
function GetRightAnswerIfCorrectShown(i) { GetAllQuestionsQtext() {
if (logElementGetting) if (logElementGetting)
Log("getting right answer if correct shown"); Log("getting all questions qtext");
var results = GetFormResult(); // getting results element return document.getElementById("responseform").getElementsByClassName("qtext"); // getting questions
return results[i].getElementsByClassName("rightanswer"); }
}
function GetWrongAnswerIfCorrectNotShown(i) { GetAllQuestionsP() {
if (logElementGetting) if (logElementGetting)
Log("getting wrong answer if correct not shown"); Log("getting all questions by tag p");
var results = GetFormResult(); // getting results element return document.getElementById("responseform").getElementsByTagName("p");
var n = results[i].getElementsByTagName("i")[0].parentNode; }
if (n.className.includes("incorrect"))
return results[i].getElementsByTagName("i")[0].parentNode.innerText;
else
return "";
}
function GetRightAnswerIfCorrectNotShown(i) { GetFormulationClearfix() {
if (logElementGetting) if (logElementGetting)
Log("Getting right answer if correct not shown"); Log("getting formulation clearfix lol");
var results = GetFormResult(); // getting results element return document.getElementsByClassName("formulation clearfix");
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 "";
}
function GetFormCFOfResult(result) { GetAnswerOptions() {
if (logElementGetting) if (logElementGetting)
Log("getting formulation clearfix"); Log("getting all answer options");
return result.getElementsByClassName("formulation clearfix")[0]; return GetFormulationClearfix()[0].childNodes[3].innerText;
} }
function GetResultText(i) { GetQuestionImages() {
if (logElementGetting) if (logElementGetting)
Log("getting result text"); Log("getting question images");
var results = GetFormResult(); // getting results element return GetFormulationClearfix()[0].getElementsByTagName("img");
return GetFormCFOfResult(results[i]).getElementsByTagName("p"); }
}
function GetResultImage(i) { // this function should return the question, posible answers, and image names
if (logElementGetting) GetQuestionFromTest() {
Log("getting result image"); var questions; // the important questions
var results = GetFormResult(); // getting results element var allQuestions; // all questions
return GetFormCFOfResult(results[i]).getElementsByTagName("img"); try // trying to get tha current questions
}
// this function should return the question, posible answers, and image names
function GetQuestionFromTest() {
var questions; // the important questions
var allQuestions; // all questions
try // trying to get tha current questions
{
allQuestions = GetAllQuestionsQtext(); // getting questions
if (allQuestions.length == 0) // if there are no found questions
{ {
var ddq = GetAllQuestionsDropdown(); allQuestions = this.GetAllQuestionsQtext(); // getting questions
if (EmptyOrWhiteSpace(ddq)) { if (allQuestions.length == 0) // if there are no found questions
var questionData = ""; {
for (var j = 0; j < allQuestions.length; j++) { var ddq = GetAllQuestionsDropdown();
allQuestions = GetAllQuestionsQtext()[j].childNodes; if (EmptyOrWhiteSpace(ddq)) {
for (var i = 0; i < allQuestions.length; i++) { var questionData = "";
if (allQuestions[i].data != undefined && !EmptyOrWhiteSpace(allQuestions[i].data)) // if the current element has some text data to add for (var j = 0; j < allQuestions.length; j++) {
{ allQuestions = this.GetAllQuestionsQtext()[j].childNodes;
questionData += allQuestions[i].data + " "; // adding text to question data 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 + " ";
} }
} }
} }
questions = [questionData]; } else {
} else try {
questions = [ddq]; currQuestion = GetCurrQuestion(i);
} else // if there is } catch (e) {
{ currQuestion = "REEEEEEEEEEEEEEEEEEEEE"; // this shouldnt really happen sry guys
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
};
}
// gets the question from the result page
// i is the index of the question
function 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 { return currQuestion;
currQuestion = GetCurrQuestion(i); }
} catch (e) {
currQuestion = "REEEEEEEEEEEEEEEEEEEEE"; // this shouldnt really happen sry guys // 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 currQuestion;
}
// tries to get right answer from result page return currAnswer;
// i is the index of the question
function 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;
// version 2 of getting right answer from result page if (answerNodes.type == "checkbox")
// i is the index of the question return GetRightAnswerFromResult(i);
function 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++) { for (var j = 0; j < items.length; j++) {
var cn = items[j].className; var cn = items[j].className;
if (!cn.includes("correct")) if (cn.includes("correct") && !cn.includes("incorrect"))
return items[j].innerText; 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");
} }
} 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("<br>")[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 {{{ //: Main logic stuff {{{
//: Loading {{{ //: Loading {{{
@ -794,10 +810,14 @@ function Version161() {
//: }}} //: }}}
var GetFileData = () => {
return GM_getResourceText("data");
};
function ReadFile(cwith) { function ReadFile(cwith) {
var resource = ""; var resource = "";
try { try {
resource = GM_getResourceText("data"); // getting data from txt resource = GetFileData(); // getting data from txt
if (resource == undefined) { if (resource == undefined) {
ShowMessage({ ShowMessage({
@ -1022,8 +1042,8 @@ function NLoad(resource, cwith) {
while (i < data.length && !GM_getValue("Is" + i + "Active")) { while (i < data.length && !GM_getValue("Is" + i + "Active")) {
i++; i++;
} }
if (i >= data.length)
document.getElementById("HelperMenuButton").style.background = "yellow"; AlertOnNoQuestion(i);
} catch (e) { } catch (e) {
Exception(e, "script error at loading:"); Exception(e, "script error at loading:");
@ -1032,6 +1052,13 @@ function NLoad(resource, cwith) {
cwith(count, subjCount); cwith(count, subjCount);
} }
var AlertOnNoQuestion = (i) => {
try {
if (i >= data.length)
document.getElementById("HelperMenuButton").style.background = "yellow";
} catch (e) {}
};
//: }}} //: }}}
//: UI handling {{{ //: UI handling {{{
@ -1059,7 +1086,7 @@ function HandleUI(url, count, subjCount) {
greetMsg = "Moodle/Elearning/KMOOC segéd v. " + GM_info.script.version + ". "; greetMsg = "Moodle/Elearning/KMOOC segéd v. " + GM_info.script.version + ". ";
if (lastestVersion != undefined && GM_info.script.version != lastestVersion) { if (lastestVersion != undefined && GM_info.script.version != lastestVersion) {
greetMsg += "Új verzió elérhető: " + lastestVersion + " "; greetMsg += "Új verzió elérhető: " + lastestVersion + "\n";
timeout = undefined; timeout = undefined;
} }
greetMsg += count + " kérdés és " + subjCount + " tárgy betöltve. (click for help)."; greetMsg += count + " kérdés és " + subjCount + " tárgy betöltve. (click for help).";
@ -1129,7 +1156,7 @@ function HandleUI(url, count, subjCount) {
//: Answering stuffs {{{ //: Answering stuffs {{{
function HandleQuiz() { function HandleQuiz() {
var q = GetQuestionFromTest(); var q = QPM.GetQuestionFromTest();
var questions = q.q; var questions = q.q;
var allQuestions = q.allQ; var allQuestions = q.allQ;
var imgNodes = q.imgnodes; var imgNodes = q.imgnodes;