mirror of
https://gitlab.com/MrFry/moodle-test-userscript
synced 2025-04-01 20:22:48 +02:00
Moving element getting to classes
This commit is contained in:
parent
4e4c5c723a
commit
da7eac9e56
1 changed files with 404 additions and 377 deletions
473
main.js
473
main.js
|
@ -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,7 +280,9 @@ 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 {
|
||||||
|
|
||||||
|
GetAllQuestionsDropdown() {
|
||||||
if (logElementGetting)
|
if (logElementGetting)
|
||||||
Log("getting dropdown question");
|
Log("getting dropdown question");
|
||||||
let items = document.getElementById("responseform").getElementsByTagName("p")[0].childNodes;
|
let items = document.getElementById("responseform").getElementsByTagName("p")[0].childNodes;
|
||||||
|
@ -291,239 +293,52 @@ function GetAllQuestionsDropdown() {
|
||||||
|
|
||||||
});
|
});
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetAllQuestionsQtext() {
|
GetAllQuestionsQtext() {
|
||||||
if (logElementGetting)
|
if (logElementGetting)
|
||||||
Log("getting all questions qtext");
|
Log("getting all questions qtext");
|
||||||
return document.getElementById("responseform").getElementsByClassName("qtext"); // getting questions
|
return document.getElementById("responseform").getElementsByClassName("qtext"); // getting questions
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetAllQuestionsP() {
|
GetAllQuestionsP() {
|
||||||
if (logElementGetting)
|
if (logElementGetting)
|
||||||
Log("getting all questions by tag p");
|
Log("getting all questions by tag p");
|
||||||
return document.getElementById("responseform").getElementsByTagName("p");
|
return document.getElementById("responseform").getElementsByTagName("p");
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetFormulationClearfix() {
|
GetFormulationClearfix() {
|
||||||
if (logElementGetting)
|
if (logElementGetting)
|
||||||
Log("getting formulation clearfix lol");
|
Log("getting formulation clearfix lol");
|
||||||
return document.getElementsByClassName("formulation clearfix");
|
return document.getElementsByClassName("formulation clearfix");
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetAnswerOptions() {
|
GetAnswerOptions() {
|
||||||
if (logElementGetting)
|
if (logElementGetting)
|
||||||
Log("getting all answer options");
|
Log("getting all answer options");
|
||||||
return GetFormulationClearfix()[0].childNodes[3].innerText;
|
return GetFormulationClearfix()[0].childNodes[3].innerText;
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetQuestionImages() {
|
GetQuestionImages() {
|
||||||
if (logElementGetting)
|
if (logElementGetting)
|
||||||
Log("getting question images");
|
Log("getting question images");
|
||||||
return GetFormulationClearfix()[0].getElementsByTagName("img");
|
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++;
|
// this function should return the question, posible answers, and image names
|
||||||
}
|
GetQuestionFromTest() {
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
function GetRightAnswerIfCorrectShown(i) {
|
|
||||||
if (logElementGetting)
|
|
||||||
Log("getting right answer if correct shown");
|
|
||||||
var results = GetFormResult(); // getting results element
|
|
||||||
return results[i].getElementsByClassName("rightanswer");
|
|
||||||
}
|
|
||||||
|
|
||||||
function 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 "";
|
|
||||||
}
|
|
||||||
|
|
||||||
function 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 "";
|
|
||||||
}
|
|
||||||
|
|
||||||
function GetFormCFOfResult(result) {
|
|
||||||
if (logElementGetting)
|
|
||||||
Log("getting formulation clearfix");
|
|
||||||
return result.getElementsByClassName("formulation clearfix")[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
function GetResultText(i) {
|
|
||||||
if (logElementGetting)
|
|
||||||
Log("getting result text");
|
|
||||||
var results = GetFormResult(); // getting results element
|
|
||||||
return GetFormCFOfResult(results[i]).getElementsByTagName("p");
|
|
||||||
}
|
|
||||||
|
|
||||||
function GetResultImage(i) {
|
|
||||||
if (logElementGetting)
|
|
||||||
Log("getting result image");
|
|
||||||
var results = GetFormResult(); // getting results element
|
|
||||||
return GetFormCFOfResult(results[i]).getElementsByTagName("img");
|
|
||||||
}
|
|
||||||
|
|
||||||
// this function should return the question, posible answers, and image names
|
|
||||||
function GetQuestionFromTest() {
|
|
||||||
var questions; // the important questions
|
var questions; // the important questions
|
||||||
var allQuestions; // all questions
|
var allQuestions; // all questions
|
||||||
try // trying to get tha current questions
|
try // trying to get tha current questions
|
||||||
{
|
{
|
||||||
allQuestions = GetAllQuestionsQtext(); // getting questions
|
allQuestions = this.GetAllQuestionsQtext(); // getting questions
|
||||||
if (allQuestions.length == 0) // if there are no found questions
|
if (allQuestions.length == 0) // if there are no found questions
|
||||||
{
|
{
|
||||||
var ddq = GetAllQuestionsDropdown();
|
var ddq = GetAllQuestionsDropdown();
|
||||||
if (EmptyOrWhiteSpace(ddq)) {
|
if (EmptyOrWhiteSpace(ddq)) {
|
||||||
var questionData = "";
|
var questionData = "";
|
||||||
for (var j = 0; j < allQuestions.length; j++) {
|
for (var j = 0; j < allQuestions.length; j++) {
|
||||||
allQuestions = GetAllQuestionsQtext()[j].childNodes;
|
allQuestions = this.GetAllQuestionsQtext()[j].childNodes;
|
||||||
for (var i = 0; i < allQuestions.length; i++) {
|
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
|
if (allQuestions[i].data != undefined && !EmptyOrWhiteSpace(allQuestions[i].data)) // if the current element has some text data to add
|
||||||
{
|
{
|
||||||
|
@ -562,11 +377,92 @@ function GetQuestionFromTest() {
|
||||||
allQ: allQuestions,
|
allQ: allQuestions,
|
||||||
q: questions
|
q: questions
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// gets the question from the result page
|
class ResultsPageModell {
|
||||||
// i is the index of the question
|
|
||||||
function GetQuestionFromResult(i) {
|
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 temp = GetQText(i);
|
||||||
var currQuestion = "";
|
var currQuestion = "";
|
||||||
if (temp.length > 0) // if the qtext element is not 0 length
|
if (temp.length > 0) // if the qtext element is not 0 length
|
||||||
|
@ -595,11 +491,11 @@ function GetQuestionFromResult(i) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return currQuestion;
|
return currQuestion;
|
||||||
}
|
}
|
||||||
|
|
||||||
// tries to get right answer from result page
|
// tries to get right answer from result page
|
||||||
// i is the index of the question
|
// i is the index of the question
|
||||||
function GetRightAnswerFromResult(i) {
|
GetRightAnswerFromResult(i) {
|
||||||
var fun = [];
|
var fun = [];
|
||||||
|
|
||||||
// the basic type of getting answers
|
// the basic type of getting answers
|
||||||
|
@ -649,11 +545,11 @@ function GetRightAnswerFromResult(i) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return currAnswer;
|
return currAnswer;
|
||||||
}
|
}
|
||||||
|
|
||||||
// version 2 of getting right answer from result page
|
// version 2 of getting right answer from result page
|
||||||
// i is the index of the question
|
// i is the index of the question
|
||||||
function GetRightAnswerFromResultv2(i) {
|
GetRightAnswerFromResultv2(i) {
|
||||||
try {
|
try {
|
||||||
var answerNodes = GetAnswerNode(i);
|
var answerNodes = GetAnswerNode(i);
|
||||||
let items = answerNodes.nodes;
|
let items = answerNodes.nodes;
|
||||||
|
@ -676,10 +572,130 @@ function GetRightAnswerFromResultv2(i) {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Log("error at new nodegetting, trying the oldschool way");
|
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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue