diff --git a/stable.user.js b/stable.user.js
index 51e070a..22883af 100755
--- a/stable.user.js
+++ b/stable.user.js
@@ -71,27 +71,25 @@
const motdShowCount = 3 /* Ammount of times to show motd */
var motd = ''
var lastestVersion = ''
+ var subjInfo
const huTexts = {
lastChangeLog: '- "Húzza a megfelelő helyre ..." kérdés lekezelése\n- Kód refactor\n- Ha valami elszállt: feedback pls',
- passiveModeActivated: 'Passzív mód bekapcsolva, mostantól kérdések nem lesznek szervertől letöltve.',
- passiveModeDeactivated: 'Passzív mód kikapcsolva, frissíts az érvénybe lépéshez!',
- passiveModeActiveOnTest: 'Passzív mód bekapcsolva, válaszok megjelenítéséhez menü gomb alatt kapcsold ki, és frissíts!',
fatalError: 'Fatál error. Check console (f12). Kattints az üzenetre az összes kérdés/válaszért manuális kereséshez!',
consoleErrorInfo: 'Itteni hibák 100% a moodle hiba. Kivéve, ha oda van írva hogy script error ;) Ha ilyesmi szerepel itt, akkor olvasd el a segítség szekciót!',
freshStartWarning: '
Moodle teszt userscript:1.5.0 verzió: a script mostantól XMLHTTP kéréseket küld szerver fele! Erre a userscript futtató kiegészitőd is figyelmeztetni fog! Ha ez történik, a script rendes működése érdekében engedélyezd (Always allow domain)! Ha nem akarod, hogy ez történjen, akkor ne engedélyezd, vagy a menüben válaszd ki a "helyi fájl használata" opciót!
Elküldött adatok: minden teszt után a kérdés-válasz páros. Fogadott adatok: Az összes eddig ismert kérdés. Érdemes help-et elolvasni!!!
Ez az ablak frissités után eltűnik. Ha nem, akkor a visza gombbal próbálkozz.
',
noResult: 'Nincs találat :( Kattints az üzenetre az összes kérdés/válaszért manuális kereséshez! Előfordulhat, hogy a tárgyat nem válsztottad ki a menüben.',
videoHelp: 'Miután elindítottad: Play/pause: space. Seek: Bal/jobb nyíl.',
menuButtonText: 'Kérdések Menu',
- passiveModeText: 'Passzív mód',
- passiveModeActivePopupMenuText: 'Passszív mód bekapcsolva. Kapcsold ki a kérdések betöltéséhez!',
couldntLoadDataPopupMenuText: 'A kérdéseket nem lehetett beolvasni, ellenőrizd hogy elérhető-e a szerver',
showGreetingOnEveryPage: 'Üdvözlő üzenet mutatása minden oldalon',
close: 'Bezárás',
help: 'Help',
websiteBugreport: 'Weboldal / Bug report',
donate: 'Donate',
- search: 'Keresés ...'
+ search: 'Keresés ...',
+ loading: 'Betöltés ...',
+ noServer: 'Nem elérhető a szerver!'
}
var texts = huTexts
@@ -686,36 +684,28 @@
Init(function () {
var url = location.href // eslint-disable-line
- if (getVal('skipLoad')) {
- if (url.includes('/quiz/') && url.includes('attempt.php')) {
- ShowMessage({
- m: texts.passiveModeActiveOnTest,
- isSimple: true
- })
- }
- } else {
- try {
- if ((url.includes('/quiz/') && url.includes('attempt.php')) || forceTestPage) { // if the current page is a test
- HandleQuiz()
- } else if ((url.includes('/quiz/') && url.includes('review.php')) || forceResultPage) { // if the current window is a test-s result
- HandleResults(url)
- } else if ((!url.includes('/quiz/') && !url.includes('review.php') && !url.includes('.pdf')) ||
+ try {
+ if ((url.includes('/quiz/') && url.includes('attempt.php')) || forceTestPage) { // if the current page is a test
+ HandleQuiz()
+ } else if ((url.includes('/quiz/') && url.includes('review.php')) || forceResultPage) { // if the current window is a test-s result
+ HandleResults(url)
+ } else if ((!url.includes('/quiz/') && !url.includes('review.php') && !url.includes('.pdf')) ||
(forceDefaultPage)) { // if the current window is any other window than a quiz or pdf.
- HandleUI(url)
- }
- } catch (e) {
- ShowMessage({
- m: texts.fatalError,
- isSimple: true
- }, undefined, () => {
- OpenErrorPage(e)
- })
-
- Exception(e, 'script error at main:')
+ HandleUI(url)
}
- if (url.includes('eduplayer')) { AddVideoHotkeys(url) } // adding video hotkeys
- Log(texts.consoleErrorInfo)
+ } catch (e) {
+ ShowMessage({
+ m: texts.fatalError,
+ isSimple: true
+ }, undefined, () => {
+ OpenErrorPage(e)
+ })
+
+ Exception(e, 'script error at main:')
}
+ if (url.includes('eduplayer')) { AddVideoHotkeys(url) } // adding video hotkeys
+ Log(texts.consoleErrorInfo)
+
console.log('Moodle Test Script run time:')
console.timeEnd('main')
})
@@ -723,7 +713,6 @@
if (forceTestPage || forceResultPage || forceDefaultPage) {
if (document.getElementById('scriptMessage')) { document.getElementById('scriptMessage').style.background = 'green' }
}
- ShowMenuList() // TODO: remove
}
// : }}}
@@ -764,7 +753,15 @@
GetXHRInfos().then((inf) => {
lastestVersion = inf.version
motd = inf.motd
+ subjInfo = inf.subjinfo
+ document.getElementById('infoMainDiv').innerText = `${subjInfo.subjects} tárgy, ${subjInfo.questions} kérdés`
+ // FIXME: if cwith() throws an unhandled error it sais server is not avaible
cwith()
+ }).catch((err) => {
+ document.getElementById('menuButtonDiv').style.backgroundColor = 'red'
+ document.getElementById('infoMainDiv').innerText = texts.noServer
+ console.log(err)
+ console.log('haaaaaaaa')
})
}
@@ -1409,138 +1406,31 @@
// shows a fancy menu
function ShowMenu () {
try {
- var buttonWidth = 100 // button size ;)
- var buttonHeight = 85
var appedtTo = document.body // will be appended here
// mainDiv.style.left = (window.innerWidth - width) / 2 + 'px';
var menuButtonDiv = document.createElement('div')
+ menuButtonDiv.setAttribute('id', 'menuButtonDiv')
SetStyle(menuButtonDiv, {
- width: buttonWidth + 'px',
+ // width: buttonWidth + 'px',
// height: buttonHeight + 'px',
- top: (window.innerHeight - buttonHeight * 1.5) + 'px',
- left: window.innerWidth - buttonWidth * 1.5 + 'px',
+ top: (window.innerHeight - 80) + 'px',
+ left: '10px',
zIndex: 999999,
position: 'fixed',
textAlign: 'center',
padding: '0px',
margin: '0px',
- background: 'transparent'
+ background: '#262626'
})
- // menu text
- // var menuTextBox = CreateNodeWithText(menuButtonDiv, "Kérdések\nMenü");
-
- var menuButton = CreateNodeWithText(menuButtonDiv, texts.menuButtonText, 'button')
- SetStyle(menuButton, {
- width: buttonWidth + 'px',
- border: 'none',
- height: buttonHeight - 20 + 'px',
- background: '#222d32',
- color: '#ffffff'
- })
- menuButton.setAttribute('id', 'HelperMenuButton')
-
- menuButton.addEventListener('click', function () {
- if (document.getElementById('HelperMenu') == null) {
- ShowMenuList()
- } else {
- CloseMenu()
- }
- }) // adding click
-
- // passive mode stuff
- var questionsTickBox = document.createElement('input')
- SetStyle(questionsTickBox, {
- position: '',
- left: 10 + 'px',
- margin: '5px 5px 5px 5px',
- top: 0 + 'px'
- })
- questionsTickBox.type = 'checkbox'
- questionsTickBox.checked = getVal('skipLoad')
-
- menuButtonDiv.appendChild(questionsTickBox) // adding to main div
-
- questionsTickBox.addEventListener('click', function () {
- setVal('skipLoad', questionsTickBox.checked)
- var msg = ''
- if (getVal('skipLoad')) {
- msg = texts.passiveModeActivated
- } else {
- msg = texts.passiveModeDeactivated
- }
-
- ShowMessage({
- m: msg,
- isSimple: true
- }, 6)
- })
- var loadDataCheckBoxText = CreateNodeWithText(questionsTickBox, texts.passiveModeText, 'span')
- loadDataCheckBoxText.style.fontSize = '12px'
-
- menuButtonDiv.appendChild(loadDataCheckBoxText)
-
- addEventListener(window, 'resize', function () {
- menuButtonDiv.style.left = window.innerWidth - buttonWidth * 2 + 'px'
- })
-
- appedtTo.appendChild(menuButtonDiv)
- } catch (e) {
- Exception(e, 'script error at showing menu:')
- }
- }
-
- // shows a fancy menu list with the subjects
- function ShowMenuList () {
- try {
- var appedtTo = document.body // will be appended here
-
- var menuDiv = document.createElement('div')
- SetStyle(menuDiv, {
- width: (window.innerWidth / 2) + 'px',
- top: (window.innerHeight / 10) + 'px',
- left: window.innerWidth / 2 - (window.innerWidth / 2) / 2 + 'px',
- zIndex: 999999,
- position: 'fixed',
- textAlign: 'center',
- padding: '0px',
- background: '#222d32',
- color: '#ffffff',
- borderColor: '#035a8f',
- border: 'none',
- opacity: '1'
- })
- menuDiv.setAttribute('id', 'HelperMenu')
-
- var fiveMargin = '5px 5px 5px 5px'
var tbl = document.createElement('table')
- tbl.style.margin = fiveMargin
+ tbl.style.margin = '5px 5px 5px 5px'
tbl.style.textAlign = 'left'
tbl.style.width = '98%'
+ menuButtonDiv.appendChild(tbl)
- // adding headers ---------------------------------------------------------------------------------------------------------------
- var subjTable = document.createElement('div')
- SetStyle(subjTable, {
- margin: fiveMargin,
- textAlign: 'left',
- width: '98%'
- })
-
- var scrollDiv = document.createElement('div')
- scrollDiv.appendChild(subjTable)
- scrollDiv.style.textAlign = 'center'
- var subjtblrow = tbl.insertRow()
- var subjtbltd = subjtblrow.insertCell()
- subjtbltd.appendChild(scrollDiv)
-
- // TODO: something in menubox
- GetXHRSubjCount(true).then((res) => {
- CreateNodeWithText(scrollDiv, `${res.subjects} tárgy, ${res.questions} kérdés`, 'div')
- })
-
- // setting up buttons
var buttonRow = tbl.insertRow()
var buttonCell = buttonRow.insertCell()
buttonCell.style.textAlign = 'center'
@@ -1549,19 +1439,12 @@
position: '',
left: 10 + 'px',
margin: '5px 5px 5px 5px',
- top: menuDiv.offsetHeight + 'px',
+ top: 10 + 'px',
border: 'none',
- backgroundColor: '#202020',
+ backgroundColor: '#222d32',
color: '#ffffff',
cursor: 'pointer'
}
- // x button ------------------------------------------------------------------------------------------------------------------------------
- let xButton = CreateNodeWithText(buttonCell, texts.close, 'button')
- SetStyle(xButton, buttonStyle)
-
- xButton.addEventListener('click', function () {
- CloseMenu()
- }) // adding clicktextNode
// help button ----------------------------------------------------------------------------------------------------------------
let helpButton = CreateNodeWithText(buttonCell, texts.help, 'button')
SetStyle(helpButton, buttonStyle)
@@ -1588,31 +1471,22 @@
location.href = serverAdress + 'donate' // eslint-disable-line
})
- // addEventListener(window, 'scroll', function () {
- // menuDiv.style.top = (pageYOffset + window.innerHeight / 3) + 'px';
- // })
addEventListener(window, 'resize', function () {
- menuDiv.style.left = window.innerWidth / 2 + 'px'
+ menuButtonDiv.style.top = (window.innerHeight - 70) + 'px'
})
- menuDiv.appendChild(tbl)
- appedtTo.appendChild(menuDiv)
+ // TODO: add this only after stuff loaded ( or not loaded )
+ let infoDiv = CreateNodeWithText(menuButtonDiv, texts.loading, 'div')
+ infoDiv.setAttribute('id', 'infoMainDiv')
+ SetStyle(infoDiv, {
+ color: '#ffffff',
+ margin: '5px'
+ })
+
+ appedtTo.appendChild(menuButtonDiv)
} catch (e) {
- Exception(e, 'script error at showing menu list:')
+ Exception(e, 'script error at showing menu:')
}
-
- document.addEventListener('keydown', EscClose)
- }
-
- function EscClose (e) {
- if (e.keyCode === 27) { CloseMenu() }
- }
-
- function CloseMenu () {
- document.getElementById('HelperMenu').parentNode.removeChild(document.getElementById(
- 'HelperMenu'))
-
- document.removeEventListener('keydown', EscClose)
}
// : }}}
@@ -1644,31 +1518,13 @@
return paragraphElement
}
- function GetXHRSubjCount () {
- let url = 'datacount'
- return new Promise((resolve, reject) => {
- xmlhttpRequest({
- method: 'GET',
- url: serverAdress + url,
- onload: function (response) {
- resolve(JSON.parse(response.responseText))
- },
- onerror: (e) => {
- console.log('GET ERROR', e)
- reject(new Error('get error'))
- }
- })
- })
- }
-
function GetXHRInfos () {
return new Promise((resolve, reject) => {
xmlhttpRequest({
method: 'GET',
- url: serverAdress + 'infos?version=true&motd=true',
+ url: serverAdress + 'infos?version=true&motd=true&subjinfo=true',
onload: function (response) {
- // resolve(JSON.parse(response.responseText))
- resolve(response.responseText)
+ resolve(JSON.parse(response.responseText))
},
onerror: (e) => {
console.log('GET ERROR', e)