From bb241a9041aed91fcd637d353f2b6740ef60c8ec Mon Sep 17 00:00:00 2001 From: mrfry Date: Sun, 15 May 2022 16:54:59 +0200 Subject: [PATCH 1/8] criteria check error handling in question nodes --- stable.user.js | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/stable.user.js b/stable.user.js index eb8e57d..2ce55fe 100755 --- a/stable.user.js +++ b/stable.user.js @@ -46,7 +46,7 @@ // : Script header {{{ // ==UserScript== // @name Moodle/Elearning/KMOOC test help -// @version 2.1.3.9 +// @version 2.1.3.10 // @description Online Moodle/Elearning/KMOOC test help // @author MrFry // @match https://elearning.uni-obuda.hu/* @@ -335,7 +335,8 @@ } }) } catch (e) { - debugLog("Couldn't get images from result (old)") + warn(e) + warn("Couldn't get images from result (old)") } } @@ -394,7 +395,7 @@ uid: getUid(), } - debugLog('Sent data', sentData) + log('Sent data', sentData) post('ask', sentData).then((results) => { removeLoadingMessage() ShowAnswers( @@ -471,7 +472,13 @@ let questionNodes Object.keys(questionNodeVariants).some((key) => { const variant = questionNodeVariants[key] - if (variant.criteria()) { + let criteriaPassed = false + try { + criteriaPassed = variant.criteria() + } catch (e) { + debugLog('Criteria check failed with error (question nodes)', e) + } + if (criteriaPassed) { questionNodes = variant.getter() if (questionNodes.length === 0) { warn( @@ -762,7 +769,7 @@ try { criteriaPassed = variant.criteria() } catch (e) { - debugLog('Criteria check failed with error', e) + debugLog('Criteria check failed with error (result nodes)', e) } if (criteriaPassed) { resultNodes = variant.getter() @@ -1152,7 +1159,7 @@ ], } - debugLog(sentData) + log(sentData) post('isAdding', sentData).then((res) => { ShowSaveQuizDialog(res.success, sentData, res.totalNewQuestions) }) @@ -1226,7 +1233,7 @@ testUrl: url, } - debugLog('Sent data', sentData) + log('Sent data', sentData) post('ask', sentData).then((results) => { removeLoadingMessage() ShowAnswers( @@ -1239,8 +1246,8 @@ ) }) } catch (e) { - debugLog('Error in handleAVRQuiz') - debugLog(e) + warn('Error in handleAVRQuiz') + warn(e) } } @@ -1919,7 +1926,7 @@ // } // }> function ShowAnswers(results) { - debugLog(results) + log(results) try { const answers = results.reduce((acc, res) => { const prepared = PrepareAnswers(res) @@ -1948,8 +1955,8 @@ ) } } catch (e) { - debugLog('Error showing answers') - debugLog(e) + warn('Error showing answers') + warn(e) } } @@ -2013,9 +2020,9 @@ sentData.subj = getCurrentSubjectName() } catch (e) { sentData.subj = 'NOSUBJ' - debugLog('unable to get subject name :c') + warn('unable to get subject name :c') } - debugLog('SENT DATA', sentData) + log('SENT DATA', sentData) post('isAdding', sentData).then((res) => { ShowSaveQuizDialog(res.success, sentData, res.totalNewQuestions) }) @@ -2073,8 +2080,8 @@ installSource: info().script.updateURL, }) } catch (err) { - debugLog('Unexpected error while registering script') - debugLog(err) + warn('Unexpected error while registering script') + warn(err) } } @@ -2107,8 +2114,8 @@ video.currentTime -= seekTime } } catch (err) { - debugLog('Hotkey error.') - debugLog(err.message) + warn('Hotkey error.') + warn(err.message) } }) var toadd = getVideoElement() @@ -2453,8 +2460,8 @@ result.msgContainer.child.msgDiv.elem.innerText = getCurrMsg().m } catch (e) { - debugLog('Error in message updating') - debugLog(e) + warn('Error in message updating') + warn(e) } } updateMessageText() From 45dba61fff7c7e02ab24613f6a0fec7fa1f2a24b Mon Sep 17 00:00:00 2001 From: mrfry Date: Wed, 17 Aug 2022 14:28:39 +0200 Subject: [PATCH 2/8] Added new url to match-es in header --- stable.user.js | 1 + 1 file changed, 1 insertion(+) diff --git a/stable.user.js b/stable.user.js index 2ce55fe..c4f017d 100755 --- a/stable.user.js +++ b/stable.user.js @@ -68,6 +68,7 @@ // @match https://iktblog.hu/* // @match https://moodle.ms.sapientia.ro/* // @match https://moodle.uni-corvinus.hu/* +// @match https://v39.moodle.uniduna.hu/* // @noframes // @match https://qmining.frylabs.net/* // @run-at document-start From 49824b8d0ca336bd88bffc30b0f936ac45c310d0 Mon Sep 17 00:00:00 2001 From: mrfry Date: Wed, 23 Nov 2022 21:48:17 +0100 Subject: [PATCH 3/8] adding base64 image if the question is an image --- stable.user.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/stable.user.js b/stable.user.js index c4f017d..76e614a 100755 --- a/stable.user.js +++ b/stable.user.js @@ -46,7 +46,7 @@ // : Script header {{{ // ==UserScript== // @name Moodle/Elearning/KMOOC test help -// @version 2.1.3.10 +// @version 2.1.3.11 // @description Online Moodle/Elearning/KMOOC test help // @author MrFry // @match https://elearning.uni-obuda.hu/* @@ -260,6 +260,10 @@ if (img.title) { promises.push({ type: 'txt', val: img.title, node: elem }) } else { + const originalBase64 = img.src.startsWith('data:image/') + ? img.src + : null + promises.push( new Promise((resolve) => { digestMessage(getBase64Image(img)).then((res) => { @@ -267,6 +271,7 @@ type: 'img', val: res, node: img, + base64: originalBase64, }) }) }) @@ -310,7 +315,11 @@ if (element.type === 'img') { // FIXME: include check needed? if (!acc.includes(element.val)) { - acc.push({ val: element.val, node: element.node }) + acc.push({ + val: element.val, + node: element.node, + base64: element.base64, + }) } } return acc @@ -713,7 +722,7 @@ ...possibleAnswerArray, ]) const data = getDataFromTest( - node, + question, images, getLegacyImageID(imageNodes) ) @@ -739,7 +748,7 @@ }) } - function getDataFromTest(_node, hashedImages, legacyImages) { + function getDataFromTest(questions, hashedImages, legacyImages) { if (hashedImages.length > 0) { return { type: 'image', @@ -747,6 +756,11 @@ return x.val }), images: legacyImages, + base64: questions + .map((x) => { + return x.base64 + }) + .filter((x) => !!x), } } else { return { From f8ee092b013e557dc8df1998c075cbb3b0c790c1 Mon Sep 17 00:00:00 2001 From: mrfry Date: Tue, 6 Dec 2022 20:24:55 +0100 Subject: [PATCH 4/8] logging color, trying to prevent window close --- stable.user.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/stable.user.js b/stable.user.js index 76e614a..63e9b64 100755 --- a/stable.user.js +++ b/stable.user.js @@ -46,7 +46,7 @@ // : Script header {{{ // ==UserScript== // @name Moodle/Elearning/KMOOC test help -// @version 2.1.3.11 +// @version 2.1.3.12 // @description Online Moodle/Elearning/KMOOC test help // @author MrFry // @match https://elearning.uni-obuda.hu/* @@ -1279,6 +1279,7 @@ } // : }}} + // : Misc {{{ function getVideo() { @@ -1448,10 +1449,17 @@ // window.addEventListener("load", () => {}) Main() + function preventWindowClose() { + usf.close = () => { + log('Prevented window.close() ...') + } + } + function Main() { 'use strict' log('Moodle / E-Learning script') + preventWindowClose() if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', Init) @@ -1765,7 +1773,7 @@ SafeGetElementById('retryContainer', (elem) => { elem.style.display = 'flex' }) - log(texts.noServerConsoleMessage) + warn(texts.noServerConsoleMessage) } function VersionActions() { @@ -2728,23 +2736,23 @@ } } - function logHelper(logMethod, ...value) { + function logHelper(logMethod, style, ...value) { if (logEnabled) { - logMethod('[Moodle Script]: ', ...value) + logMethod('%c[Moodle Script]:', style, ...value) } } function warn(value) { - logHelper(console.warn, value) + logHelper(console.warn, 'color:yellow', value) } function log() { - logHelper(console.log, ...arguments) + logHelper(console.log, 'color:green', ...arguments) } function debugLog() { if (isDevel) { - logHelper(console.log, ...arguments) + logHelper(console.log, 'color:grey', ...arguments) } } From 0fd5ee605cdc6fb63761c916ddeb6f083d9619be Mon Sep 17 00:00:00 2001 From: mrfry Date: Mon, 12 Dec 2022 20:44:19 +0100 Subject: [PATCH 5/8] added new match url --- stable.user.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stable.user.js b/stable.user.js index 63e9b64..47362a8 100755 --- a/stable.user.js +++ b/stable.user.js @@ -46,7 +46,7 @@ // : Script header {{{ // ==UserScript== // @name Moodle/Elearning/KMOOC test help -// @version 2.1.3.12 +// @version 2.1.3.13 // @description Online Moodle/Elearning/KMOOC test help // @author MrFry // @match https://elearning.uni-obuda.hu/* @@ -69,6 +69,7 @@ // @match https://moodle.ms.sapientia.ro/* // @match https://moodle.uni-corvinus.hu/* // @match https://v39.moodle.uniduna.hu/* +// @match https://elearning.med.unideb.hu/* // @noframes // @match https://qmining.frylabs.net/* // @run-at document-start From 6f65538370264e2ba6cb2c957bfa2aeac2b2ffe8 Mon Sep 17 00:00:00 2001 From: mrfry Date: Sun, 22 Jan 2023 14:49:09 +0100 Subject: [PATCH 6/8] match update --- stable.user.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/stable.user.js b/stable.user.js index 47362a8..10557e5 100755 --- a/stable.user.js +++ b/stable.user.js @@ -51,27 +51,27 @@ // @author MrFry // @match https://elearning.uni-obuda.hu/* // @match https://exam.elearning.uni-obuda.hu/* +// @match https://oktatas.mai.kvk.uni-obuda.hu/* +// @match https://portal.kgk.uni-obuda.hu/* // @match https://mooc.unideb.hu/* // @match https://elearning.unideb.hu/* +// @match https://elearning.med.unideb.hu/* +// @match https://exam.unideb.hu/* // @match https://itc.semmelweis.hu/moodle/* -// @match https://moodle.gtk.uni-pannon.hu/* -// @match https://oktatas.mai.kvk.uni-obuda.hu/* -// @match https://moodle.pte.hu/* // @match https://szelearning.sze.hu/* // @match https://moodle.kre.hu/* // @match https://moodle.pte.hu/* -// @match https://portal.kgk.uni-obuda.hu/* // @match https://elearning.uni-miskolc.hu/* // @match https://elearning.uni-mate.hu/* -// @match https://edu.gpk.bme.hu/* +// @match https://moodle.gtk.uni-pannon.hu/* // @match https://edu.gtk.bme.hu/* +// @match https://edu.gpk.bme.hu/* // @match https://iktblog.hu/* // @match https://moodle.ms.sapientia.ro/* // @match https://moodle.uni-corvinus.hu/* // @match https://v39.moodle.uniduna.hu/* -// @match https://elearning.med.unideb.hu/* -// @noframes // @match https://qmining.frylabs.net/* +// @noframes // @run-at document-start // @grant GM_getResourceText // @grant GM_info From 5e086f461e95f8e45183fe255580fc0049743c7a Mon Sep 17 00:00:00 2001 From: mrfry Date: Tue, 7 Mar 2023 17:32:57 +0100 Subject: [PATCH 7/8] added hotkey to hide ui elements --- stable.user.js | 68 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/stable.user.js b/stable.user.js index 10557e5..f1b8bed 100755 --- a/stable.user.js +++ b/stable.user.js @@ -46,7 +46,7 @@ // : Script header {{{ // ==UserScript== // @name Moodle/Elearning/KMOOC test help -// @version 2.1.3.13 +// @version 2.1.3.14 // @description Online Moodle/Elearning/KMOOC test help // @author MrFry // @match https://elearning.uni-obuda.hu/* @@ -70,6 +70,7 @@ // @match https://moodle.ms.sapientia.ro/* // @match https://moodle.uni-corvinus.hu/* // @match https://v39.moodle.uniduna.hu/* +// @match https://mentok.net/* // @match https://qmining.frylabs.net/* // @noframes // @run-at document-start @@ -147,6 +148,7 @@ var motd = '' var lastestVersion = '' var subjInfo + var uiShowing = true // array, where elems are added to shadow-root, but its position should be at target. var updatableElements = [] // { elem: ..., target: ... } @@ -1465,6 +1467,21 @@ if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', Init) } else { + try { + addEventListener = (function () { + if (document.addEventListener) { + return function (element, event, handler) { + element.addEventListener(event, handler, false) + } + } else { + return function (element, event, handler) { + element.attachEvent('on' + event, handler) + } + } + })() + } catch (e) { + Exception(e, 'script error at addEventListener:') + } Init() } } @@ -1668,23 +1685,9 @@ return } - try { - addEventListener = (function () { - if (document.addEventListener) { - return function (element, event, handler) { - element.addEventListener(event, handler, false) - } - } else { - return function (element, event, handler) { - element.attachEvent('on' + event, handler) - } - } - })() - } catch (e) { - Exception(e, 'script error at addEventListener:') - } VersionActions() if (!url.includes('.pdf')) { + SetupMenu() ShowMenu() } ConnectToServer(AfterLoad) @@ -1749,6 +1752,7 @@ }) .catch(() => { NoServerAction() + warn(texts.noServerConsoleMessage) }) } @@ -1774,7 +1778,6 @@ SafeGetElementById('retryContainer', (elem) => { elem.style.display = 'flex' }) - warn(texts.noServerConsoleMessage) } function VersionActions() { @@ -2239,6 +2242,34 @@ }) } + function ToggleUIElements() { + const newVal = uiShowing ? 'none' : '' + SafeGetElementById( + 'scriptMessage', + (elem) => { + elem.style.display = newVal + }, + true + ) + SafeGetElementById( + 'scriptMenuDiv', + (elem) => { + elem.style.display = newVal + }, + true + ) + uiShowing = !uiShowing + } + + function SetupMenu() { + document.addEventListener('keydown', (event) => { + if (event.ctrlKey && event.key === 'h') { + event.preventDefault() + ToggleUIElements() + } + }) + } + function ShowMessage(msgItem, timeout, funct) { let isSimpleMessage = false let simpleMessageText = '' @@ -2785,11 +2816,12 @@ } } - function SafeGetElementById(id, next) { + function SafeGetElementById(id, next, silent) { const element = overlay.querySelector('#' + id) if (element) { next(element) } else { + if (silent) return log(`Unable to safe get element by id: ${id}`) } } From b43bdaad4779bc16a18b47a933307925089e4402 Mon Sep 17 00:00:00 2001 From: mrfry Date: Tue, 7 Mar 2023 18:26:48 +0100 Subject: [PATCH 8/8] add event listener fix --- stable.user.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/stable.user.js b/stable.user.js index f1b8bed..c112db2 100755 --- a/stable.user.js +++ b/stable.user.js @@ -46,7 +46,7 @@ // : Script header {{{ // ==UserScript== // @name Moodle/Elearning/KMOOC test help -// @version 2.1.3.14 +// @version 2.1.3.15 // @description Online Moodle/Elearning/KMOOC test help // @author MrFry // @match https://elearning.uni-obuda.hu/* @@ -1467,21 +1467,6 @@ if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', Init) } else { - try { - addEventListener = (function () { - if (document.addEventListener) { - return function (element, event, handler) { - element.addEventListener(event, handler, false) - } - } else { - return function (element, event, handler) { - element.attachEvent('on' + event, handler) - } - } - })() - } catch (e) { - Exception(e, 'script error at addEventListener:') - } Init() } } @@ -1685,6 +1670,21 @@ return } + try { + addEventListener = (function () { + if (document.addEventListener) { + return function (element, event, handler) { + element.addEventListener(event, handler, false) + } + } else { + return function (element, event, handler) { + element.attachEvent('on' + event, handler) + } + } + })() + } catch (e) { + Exception(e, 'script error at addEventListener:') + } VersionActions() if (!url.includes('.pdf')) { SetupMenu()