„Szerkesztő:Palotasb/common.js” változatai közötti eltérés
version 2013.02.06. v1 |
Kvíz currentCodeID = "2013.02.07. v1"; |
||
| 26. sor: | 26. sor: | ||
(function (mw, $) { | (function (mw, $) { | ||
/* | |||
Egy anonim függvényobjektumot hozunk létre, amit rögtön végre is hajtunk. | |||
Mivel a függvény külön névtérben van, ezért a globális névteret (window) | |||
nem szennyezzük a lokális változókkal, függvényekkel. | |||
*/ | |||
var questions = [], | var questions = [], | ||
| 34. sor: | 39. sor: | ||
stats = new StatObject(), | stats = new StatObject(), | ||
defaultScoringMethod = +1, | defaultScoringMethod = +1, | ||
currentCodeID = "2013.02. | currentCodeID = "2013.02.07. v1"; | ||
return init(); | |||
/* | |||
Inicializáló függvény. Eldönti, hogy kvízoldalról va szó, és ha igen, akkor | |||
értelmezi és úgy alakítja át az oldalt, hogy interaktív kvízként működjön. | |||
*/ | |||
function init() { | function init() { | ||
if (!shouldLoadQuiz()) { | if (!shouldLoadQuiz()) { | ||
return false; | return false; | ||
} | } | ||
getDefaultScoringMethod(); | getDefaultScoringMethod(); // A kérdések parse-olása előtt kell legyen | ||
parseQuestionsInDocument(); | parseQuestionsInDocument(); // Kérdések feldolgozása | ||
parseAnswerGroupsInQuestions(); | parseAnswerGroupsInQuestions(); // Kérdéseken belül a válaszlehetőségek | ||
uiCreateQuizInterface(); | uiCreateQuizInterface(); // Interfész (infobox) inicializása | ||
uiPopulateQuizInterace(); | uiPopulateQuizInterace(); // Interfészelemek létrehozása | ||
uiReset(); | uiReset(); // Reset, hogy rögtön mehessen a kvíz | ||
return true; | return true; | ||
} | } | ||
/* | |||
A kvíz alapbeállított pontozási módszerét tölti be az oldalról. | |||
*/ | |||
function getDefaultScoringMethod() { | function getDefaultScoringMethod() { | ||
var defScorMethText = $('#vw-quiz-defaultscoringmethod').text(); | var defScorMethText = $('#vw-quiz-defaultscoringmethod').text(); | ||
| 62. sor: | 71. sor: | ||
} | } | ||
/* | |||
Eldönti, hogy be kell-e tölteni a kódot, kvízzé kell-e alakítani az oldalt. | |||
*/ | |||
function shouldLoadQuiz() { | function shouldLoadQuiz() { | ||
if ($('#vw-quiz-canvas').length !== 1) | if ($('#vw-quiz-canvas').length !== 1) | ||
return false; | return false; // Ha nincs Kvízoldal sablon, vagy több is van -> NEM | ||
if (wgAction !== 'view' && wgAction !== 'submit') | if (mw.config.values.wgAction !== 'view' && | ||
return false; | mw.config.values.wgAction !== 'submit') | ||
if ($.cookie('vw- | return false; // Ha nem megtekintjük a kész oldalt, vagy nem | ||
return false; | // előnézetben vagyunk az oldal mentésekor -> NEM | ||
return true; | if ($.cookie('vw-quiz-conf-loadcodeid') && | ||
$.cookie('vw-quiz-conf-loadcodeid') != currentCodeID) | |||
return false; // Ha cookieval le van tiltva a kód -> NEM | |||
return true; // Minden egyéb esetben IGEN | |||
} | } | ||
/* | |||
Az infoboxban frissíti a statisztikákat. | |||
*/ | |||
function uiUpdateStats() { | function uiUpdateStats() { | ||
// Átlagteljesítmény, százalékosan | |||
uiControlElements.uiStatAverageText.text( | uiControlElements.uiStatAverageText.text( | ||
stats.totalAnswers != 0 ? Math.round(stats.getRunningAverage() * 100).toString() + '%' : '' ); | stats.totalAnswers != 0 ? | ||
uiControlElements.uiStatAllQuestionsText.text( stats.totalAnswers.toString() ); | Math.round(stats.getRunningAverage() * 100).toString() + '%' : | ||
uiControlElements.uiStatGoodAnswersText.text( (Math.round(stats.totalPercentage * 100) / 100).toString() ); | '' | ||
); | |||
// Kérdések száma | |||
uiControlElements.uiStatAllQuestionsText.text( | |||
stats.totalAnswers.toString() | |||
); | |||
// Pontok száma két tizedesjegyre | |||
uiControlElements.uiStatGoodAnswersText.text( | |||
(Math.round(stats.totalPercentage * 100) / 100).toString() | |||
); | |||
} | } | ||
/* | |||
Feldolozza a kérdéseket a dokumentumban. | |||
Egy kérdés az első <H2> tagtől a következőig tart. Egy <HR> (horizontal | |||
rule) tag a kérdéssor végét jelöli (wikiszintexissal ez négy kötőjel ----), | |||
így lehet megjegyzéseket beszúrni a kérdéssor elé és mögé. | |||
*/ | |||
function parseQuestionsInDocument() { | function parseQuestionsInDocument() { | ||
var CQ_UNINITIATED = -1; | var CQ_UNINITIATED = -1; | ||
var CQ_EXIT = -2; | var CQ_EXIT = -2; | ||
// A tartalomrész felsőszintű elemei. | |||
var uiContentElements = $('#mw-content-text > *'); | var uiContentElements = $('#mw-content-text > *'); | ||
// Az első <H2>-ig mindent ignorálunk. | |||
// Onnantól kezdve a megfelelő QuestionObjectbe beletoljuk az összes alá | |||
// tartozó elemet | |||
var questionId = CQ_UNINITIATED; | var questionId = CQ_UNINITIATED; | ||
for (var i = 0; i != uiContentElements.length && questionId != CQ_EXIT; i++) { | for (var i = 0; i != uiContentElements.length && questionId != CQ_EXIT; i++) { | ||
if (uiContentElements[i].nodeName === 'H2') { | if (uiContentElements[i].nodeName === 'H2') { | ||
questionId++ ; | questionId++ ; | ||
questions.push(new QuestionObject(questionId)); | questions.push(new QuestionObject(questionId)); | ||
questions[questionId].uiElements.push( $(uiContentElements[i]).detach()[0] ); | questions[questionId].uiElements.push( $(uiContentElements[i]).detach()[0] ); | ||
} else if (uiContentElements[i].nodeName === 'HR') { | } else if (uiContentElements[i].nodeName === 'HR') { | ||
// <HR/> -> abort mission | |||
questionId = CQ_EXIT; | questionId = CQ_EXIT; | ||
} else if (questionId > CQ_UNINITIATED) { | } else if (questionId > CQ_UNINITIATED) { | ||
| 99. sor: | 138. sor: | ||
} | } | ||
/* | |||
A QuestionObject-ekbe betöltött HTML-elemeket végignézve feldolgozza a | |||
válaszcsoportokat. | |||
*/ | |||
function parseAnswerGroupsInQuestions() { | function parseAnswerGroupsInQuestions() { | ||
for (var i = 0; i != questions.length; i++) { | for (var i = 0; i != questions.length; i++) { | ||
| 105. sor: | 148. sor: | ||
} | } | ||
/* | |||
Létrehozza a kvizinterfészt. Bizonyos HTML-elemeket betölti egy-egy | |||
változóba a gyors elérésé érdekében. | |||
*/ | |||
function uiCreateQuizInterface() { | function uiCreateQuizInterface() { | ||
uiContentElement = $('#vw-quiz-content'); | uiContentElement = $('#vw-quiz-content'); | ||
$('#toc').remove(); | $('#toc').remove(); // tartalomjegyzék törléseaz oldalról, ha van | ||
// Infobox stílusának beállítása | |||
var uiInfoboxElement = $('#vw-quiz-infobox'); | var uiInfoboxElement = $('#vw-quiz-infobox'); | ||
uiInfoboxElement.css( { | uiInfoboxElement.css( { | ||
| 119. sor: | 167. sor: | ||
$('#mw-content-text').css('min-height', uiInfoboxElement.height().toString() + 'px'); | $('#mw-content-text').css('min-height', uiInfoboxElement.height().toString() + 'px'); | ||
// Infobox pozicionálása (hogy mindig látszódjon, ha görgetünk is) | |||
var setInfoboxPosition = function() { | var setInfoboxPosition = function() { | ||
var relTop = $('#vw-quiz-content').offset().top - $(window).scrollTop(); | var relTop = $('#vw-quiz-content').offset().top - $(window).scrollTop(); | ||
| 129. sor: | 178. sor: | ||
} | } | ||
/* | |||
Az infobox (interfész) feltöltése a gombokkal és ezek exportálása egy | |||
változóba (uiControlElements) a gyors elérés érdekében. | |||
*/ | |||
function uiPopulateQuizInterace() { | function uiPopulateQuizInterace() { | ||
var uiStatAverageText = $('#vw-quiz-stat-average'); | var uiStatAverageText = $('#vw-quiz-stat-average'); | ||
| 167. sor: | 220. sor: | ||
} | } | ||
/* | |||
Randomizálja a megjelenített kérdések sorrendjét | |||
*/ | |||
function randomizeDisplayOrder() { | function randomizeDisplayOrder() { | ||
var ArrayShuffle = function(a) { | var ArrayShuffle = function(a) { | ||
| 184. sor: | 240. sor: | ||
} | } | ||
/* | |||
A [Minden válasz ellenőrzése]/[Minden kérdés mutatása] gomb eseménykezelője | |||
*/ | |||
function uiCheckAll() { | function uiCheckAll() { | ||
if (config.showAll) { | if (config.showAll) { | ||
// Ha minden látszik, akkor mindent ellenőrzünk | |||
$(':button.vw-quiz-check-btn').click(); | $(':button.vw-quiz-check-btn').click(); | ||
} else { | } else { | ||
// Ha nem minden kérdés látszik, akkor beállítjuk, hogy látszódjon, | |||
// és resetelünk | |||
uiControlElements.showAllCheckbox.prop('checked', true); | uiControlElements.showAllCheckbox.prop('checked', true); | ||
uiReset(); | uiReset(); | ||
| 193. sor: | 255. sor: | ||
} | } | ||
/* | |||
A beállítások betöltése az infoboxból. | |||
*/ | |||
function configSet() { | function configSet() { | ||
config.setRandomOrder(uiControlElements.randomCheckbox.prop('checked')); | config.setRandomOrder(uiControlElements.randomCheckbox.prop('checked')); | ||
| 198. sor: | 263. sor: | ||
} | } | ||
/* | |||
Újrakezdés. Az [Újrakezdés] gomb eseménykezelője is. | |||
*/ | |||
function uiReset() { | function uiReset() { | ||
configSet(); | configSet(); | ||
| 205. sor: | 273. sor: | ||
} | } | ||
/* | |||
Újrakezdéskor visszaállítja a válaszadások közben megváltoztatott dolgokat. | |||
*/ | |||
function reset() { | function reset() { | ||
// Megjelenített kérdések listáját töröljük | |||
shownQuestionIds = []; | shownQuestionIds = []; | ||
// Hogy érkezett-e válasz a kérdésre, azt is alaphelyzetbe állítjuk, | |||
// majd a kérdést újra hozzáadjuk a megjelenített kérdések listájához. | |||
for (var i = 0; i != questions.length; i++) { | for (var i = 0; i != questions.length; i++) { | ||
questions[i].submitted = false; | questions[i].submitted = false; | ||
questions[i].uiResetAnswers(); | |||
shownQuestionIds.push(i); | shownQuestionIds.push(i); | ||
} | } | ||
// Ha kell, randomizáljuk a sorrendet. | |||
if (config.randomOrder) { | if (config.randomOrder) { | ||
randomizeDisplayOrder(); | randomizeDisplayOrder(); | ||
} | } | ||
// Mást csinál a gomb, ha minden kérdés látszik, és mást, ha csak 1. | |||
if (!config.showAll) { | if (!config.showAll) { | ||
uiControlElements.checkAllButton.val('Minden kérdés mutatása'); | uiControlElements.checkAllButton.val('Minden kérdés mutatása'); | ||
| 219. sor: | 296. sor: | ||
uiControlElements.checkAllButton.val('Minden válasz ellenőrzése'); | uiControlElements.checkAllButton.val('Minden válasz ellenőrzése'); | ||
} | } | ||
// Statisztikák visszaállítása. | |||
stats.reset(); | stats.reset(); | ||
} | } | ||
/* | |||
Újrakezdéskor megjeleníti a kérdéseket a megfelelő sorrendben az oldalon. | |||
*/ | |||
function uiShowQuestions() { | function uiShowQuestions() { | ||
uiContentElement.children().detach(); | uiContentElement.children().detach(); | ||
for (var i = 0; i != shownQuestionIds.length; i++) { | for (var i = 0; i != shownQuestionIds.length; i++) { | ||
questions[ shownQuestionIds[i] ].uiParentElement.appendTo(uiContentElement); | questions[ shownQuestionIds[i] ].uiParentElement.appendTo(uiContentElement); | ||
// Ha nem minden kell látszódjon, akkor elrejtjük a többi kérdést. | |||
if (!config.showAll && i != 0) { | if (!config.showAll && i != 0) { | ||
questions[ shownQuestionIds[i] ].uiParentElement.css('display', 'none'); | questions[ shownQuestionIds[i] ].uiParentElement.css('display', 'none'); | ||
| 236. sor: | 317. sor: | ||
} | } | ||
/* | |||
Egy adott kérdés bejelölt válaszainak ellenőrzése, eredmény mutatása stb. | |||
*/ | |||
function checkAnswer(question) { | function checkAnswer(question) { | ||
// Amit már ellenőriztünk, azt nem ellenőrizzük újra. | |||
if (question.submitted) { | if (question.submitted) { | ||
return false; | return false; | ||
| 242. sor: | 327. sor: | ||
question.submitted = true; | question.submitted = true; | ||
// Válaszellenőrzés | |||
var result = question.checkAnswer(); | var result = question.checkAnswer(); | ||
stats.totalAnswers += result.totalAnswers; | stats.totalAnswers += result.totalAnswers; | ||
| 247. sor: | 333. sor: | ||
uiUpdateStats(); | uiUpdateStats(); | ||
// Következő kérdés mutatása, ha nem mind látszik | |||
if (!config.showAll) { | if (!config.showAll) { | ||
uiHidePreviousQuestion(question); | uiHidePreviousQuestion(question); | ||
| 253. sor: | 340. sor: | ||
} | } | ||
/* | |||
Egy kérdés válaszainak ellenőrzése után az előző kérdést elrejti. | |||
*/ | |||
function uiHidePreviousQuestion(question) { | function uiHidePreviousQuestion(question) { | ||
var prevQuestion = getPreviousQuestion(question); | var prevQuestion = getPreviousQuestion(question); | ||
| 263. sor: | 353. sor: | ||
} | } | ||
/* | |||
Egy kérdés válaszainak ellenőrzése után a következő kérdést megjeleníti. | |||
*/ | |||
function uiShowNextQuestion(question) { | function uiShowNextQuestion(question) { | ||
var nextQuestion = getNextQuestion(question); | var nextQuestion = getNextQuestion(question); | ||
if (nextQuestion == null) { | if (nextQuestion == null) { | ||
// Ha nincs több kérdés, akkor ezt külön üzenettel jelzi. | |||
var uiEndOfQuizMessage = $('<p></p>').text('A kvíz véget ért.'); | var uiEndOfQuizMessage = $('<p></p>').text('A kvíz véget ért.'); | ||
uiEndOfQuizMessage.css({ | uiEndOfQuizMessage.css({ | ||
| 285. sor: | 379. sor: | ||
} | } | ||
/* | |||
Visszatér a megjelenítési sorrend szerint az előző kérdéssel. | |||
*/ | |||
function getPreviousQuestion(question) { | function getPreviousQuestion(question) { | ||
for (var i = 0; i != shownQuestionIds.length; i++) { | for (var i = 0; i != shownQuestionIds.length; i++) { | ||
| 294. sor: | 391. sor: | ||
} | } | ||
/* | |||
Visszatér a megjelenítési sorrend szerint a következő kérdéssel. | |||
*/ | |||
function getNextQuestion(question) { | function getNextQuestion(question) { | ||
for (var i = 0; i != shownQuestionIds.length; i++) { | for (var i = 0; i != shownQuestionIds.length; i++) { | ||
| 305. sor: | 405. sor: | ||
/* ------------------------------------------------------- */ | /* ------------------------------------------------------- */ | ||
/* | |||
Egy kérdés adatai tartalmazó objektum. | |||
Kezdetnek csak egy azonosítót kell megadni. | |||
*/ | |||
function QuestionObject(id) { | function QuestionObject(id) { | ||
this.id = id; | this.id = id; | ||
| 313. sor: | 416. sor: | ||
this.submitted = false; | this.submitted = false; | ||
/* | |||
A kérdésben a betöltött HTML-elemeket nézve kiolvassa a kérdésre a különböző | |||
válaszcsoportokban adható válaszokat. | |||
*/ | |||
this.parseAnswerGroups = function(defaultScoringMethod, answerCheckingFunction) { | this.parseAnswerGroups = function(defaultScoringMethod, answerCheckingFunction) { | ||
for (var j = 1; j < this.uiElements.length; j++) { | for (var j = 1; j < this.uiElements.length; j++) { | ||
| 318. sor: | 425. sor: | ||
var previousElement = this.uiElements[j - 1]; | var previousElement = this.uiElements[j - 1]; | ||
/* | |||
Egy válaszcsoport mindig egy <OL> rendezett listában van (# | |||
szintaxis), ha az előző elemben megtalálható a "vw-quiz-meta" | |||
osztályú elemet tartalmazó sablon, amely a helyes válaszok listáját, | |||
a kérdés és a pontozás típusát tartalmazza. | |||
*/ | |||
if (currentElement.nodeName === "OL" | if (currentElement.nodeName === "OL" | ||
&& $('.vw-quiz-meta', previousElement).length !== 0 | && $('.vw-quiz-meta', previousElement).length !== 0 | ||
| 331. sor: | 444. sor: | ||
defaultScoringMethod | defaultScoringMethod | ||
)); | )); | ||
$(previousElement).css('display', 'none'); | $(previousElement).css('display', 'none'); // Meta elrejtése | ||
} | } | ||
} | } | ||
// Válaszgomb hozzáadása | |||
this.uiAddAnswerButton(answerCheckingFunction); | this.uiAddAnswerButton(answerCheckingFunction); | ||
// Egy darab tartalmazó <div> hozzáadása | |||
this.uiAddParentElement(); | this.uiAddParentElement(); | ||
}; | }; | ||
/* | |||
Egy darab a teljes kvízkérdést tartalmazó <div> létrehozása. | |||
*/ | |||
this.uiAddParentElement = function() { | this.uiAddParentElement = function() { | ||
this.uiParentElement = $('<div></div>').addClass('vw-quiz-container').append(this.uiElements); | this.uiParentElement = $('<div></div>').addClass('vw-quiz-container').append(this.uiElements); | ||
| 347. sor: | 465. sor: | ||
}; | }; | ||
/* | |||
Válaszgomb hozzáadása a kérdés legvégéhez. Az answerCheckingFunction a | |||
függvény, amit a gomb megnyomásakor meg kell hívni a válasz ellenőrzéséhez | |||
(a teljes kvízhez tartozik egy ilyen függvény, amit paraméterként átadunk). | |||
*/ | |||
this.uiAddAnswerButton = function(answerCheckingFunction) { | this.uiAddAnswerButton = function(answerCheckingFunction) { | ||
var button = $('<input type="button" />').val('Ellenőrzés').addClass("vw-quiz-check-btn"); | var button = $('<input type="button" />').val('Ellenőrzés').addClass("vw-quiz-check-btn"); | ||
| 361. sor: | 484. sor: | ||
}; | }; | ||
/* | |||
Válaszok visszaállítása alaphelyzetbe (kitöltetlen és jelöletlen). | |||
*/ | |||
this.uiResetAnswers = function () { | this.uiResetAnswers = function () { | ||
var answerElements = $('.vw-quiz-question > li', this.uiParentElement); | var answerElements = $('.vw-quiz-question > li', this.uiParentElement); | ||
| 374. sor: | 500. sor: | ||
}; | }; | ||
/* | |||
A válaszok ellenőrzése egy adott kérdés esetén. Visszatér a kérdés | |||
pontértékével és az elért pontokkal. | |||
*/ | |||
this.checkAnswer = function() { | this.checkAnswer = function() { | ||
// A pontszámok, amiket a felhasználó kap. | |||
var result = { | var result = { | ||
totalAnswers: 0, | totalAnswers: 0, | ||
| 380. sor: | 511. sor: | ||
}; | }; | ||
for (var i = 0; i != this.answers.length; i++) { | for (var i = 0; i != this.answers.length; i++) { | ||
// interfész: válaszadás letiltása az ellenőrzéssel. | |||
$('input', this.uiParentElement).prop('disabled', true); | $('input', this.uiParentElement).prop('disabled', true); | ||
$('input, .vw-quiz-question > li', this.uiParentElement).css('cursor', 'default') | $('input, .vw-quiz-question > li', this.uiParentElement).css('cursor', 'default') | ||
| 386. sor: | 518. sor: | ||
var ans = this.answers[i]; | var ans = this.answers[i]; | ||
if (ans.type === 1) { | if (ans.type === 1) { | ||
// Egyválaszos (radio button) kérdéstípus | |||
result.totalAnswers++; | result.totalAnswers++; | ||
// A jó válasz kivételével az összes elhalványítása | |||
$('li:not(:nth-of-type(' + (ans.answer + 1).toString() + '))', ans.uiElement).not("li li").css({ | $('li:not(:nth-of-type(' + (ans.answer + 1).toString() + '))', ans.uiElement).not("li li").css({ | ||
'opacity': '0.5' | 'opacity': '0.5' | ||
| 421. sor: | 555. sor: | ||
} | } | ||
} else if (ans.type === 2) { | } else if (ans.type === 2) { | ||
// Többválaszos (checkbox) kérdéstípus | |||
result.totalAnswers++; | result.totalAnswers++; | ||
var uiAnswerElements = $('li', ans.uiElement).not('li li'); | var uiAnswerElements = $('li', ans.uiElement).not('li li'); | ||
var partialPoints = 0; | var partialPoints = 0; | ||
// Végigmegyünk az összes válaszlehetőségen | |||
for (var j = 0; j != uiAnswerElements.length; j++) { | for (var j = 0; j != uiAnswerElements.length; j++) { | ||
var currentAnswerElement = $(uiAnswerElements[j]); | var currentAnswerElement = $(uiAnswerElements[j]); | ||
| 438. sor: | 575. sor: | ||
partialPoints++; | partialPoints++; | ||
} else { | } else { | ||
// Nincs | // Nincs, hibás válasz | ||
currentAnswerElement.css({ | currentAnswerElement.css({ | ||
'border-color': '#aa2', | 'border-color': '#aa2', | ||
| 449. sor: | 586. sor: | ||
// Nem kéne bejelölve legyen | // Nem kéne bejelölve legyen | ||
if (checkbox.prop('checked')) { | if (checkbox.prop('checked')) { | ||
// De mégis be van | // De mégis be van, hibás válasz | ||
currentAnswerElement.css({ | currentAnswerElement.css({ | ||
'border-color': '#a00', | 'border-color': '#a00', | ||
| 458. sor: | 595. sor: | ||
partialPoints--; | partialPoints--; | ||
} else { | } else { | ||
// És nincs is | // És nincs is, ezzel látszólag nem foglalkozunk, | ||
// mert csak zavaró, de pontot adunk rá. | |||
currentAnswerElement.css({ | currentAnswerElement.css({ | ||
'opacity': '0.5' | 'opacity': '0.5' | ||
| 476. sor: | 614. sor: | ||
/* ------------------------------------------------------- */ | /* ------------------------------------------------------- */ | ||
/* | |||
Egy válaszcsoportot szimbolizáló objektum. | |||
*/ | |||
function AnswerGroupObject( | |||
typeText, // A válaszcsoport típusát leíró szöveg a wikioldalról | |||
correctAnswerText, // A jó választ leíró szöveg a wikioldalról | |||
scoringMethodText, // A pontozást leíró szöveg a wikioldalról | |||
numberOfOptions, // A válaszlehetőségek száma | |||
uiElement, // A válaszcsoporthoz tartozó HTML <OL> listaelem | |||
questionId, // Kérdésazonosító | |||
answerId, // Válaszcsoportazonosító | |||
defaultScoringMethod // Alap pontozási módszer | |||
) { | |||
// Inicializálás | |||
// Választípus megállapítása | |||
this.type = 1; // A default az egyválaszos (radio) | this.type = 1; // A default az egyválaszos (radio) | ||
if ($.trim(typeText) === "egy") | if ($.trim(typeText) === "egy") | ||
| 486. sor: | 638. sor: | ||
this.answer = null; | this.answer = null; | ||
// Pontozás megállapítása | |||
this.scoringMethod = defaultScoringMethod; | this.scoringMethod = defaultScoringMethod; | ||
if ($.trim(scoringMethodText) === "-") | if ($.trim(scoringMethodText) === "-") | ||
| 492. sor: | 645. sor: | ||
this.scoringMethod = +1; | this.scoringMethod = +1; | ||
// Egyebek | |||
this.numberOfOptions = numberOfOptions; | this.numberOfOptions = numberOfOptions; | ||
this.uiElement = $(uiElement); | this.uiElement = $(uiElement); | ||
| 500. sor: | 654. sor: | ||
addAnswerControls.call(this); | addAnswerControls.call(this); | ||
// Válasz megállapítása és stílus beállítása | |||
function init() { | function init() { | ||
if (this.type === 1) { | if (this.type === 1) { | ||
| 520. sor: | 675. sor: | ||
} | } | ||
// Válaszadásra lehetőséget adó ineraktív elemek (radio button, checkbox) | |||
// hozzáadása a válaszlehetőségekhez | |||
function addAnswerControls() { | function addAnswerControls() { | ||
this.uiElement.addClass('vw-quiz-question'); | this.uiElement.addClass('vw-quiz-question'); | ||
| 530. sor: | 687. sor: | ||
.prop('name', idString) | .prop('name', idString) | ||
.data('answer-id', i); | .data('answer-id', i); | ||
// A listaelemre kattintás olyan, mintha rákattintanék a gombra | |||
$(answerOptionElements[i]).prepend(uiRadiobutton).click(uiRadiobutton, function(eventObject) { | $(answerOptionElements[i]).prepend(uiRadiobutton).click(uiRadiobutton, function(eventObject) { | ||
if (eventObject.target.nodeName == "INPUT") { | if (eventObject.target.nodeName == "INPUT") { | ||
| 544. sor: | 702. sor: | ||
.prop('name', idString) | .prop('name', idString) | ||
.data('answer-id', i); | .data('answer-id', i); | ||
// A listaelemre kattintás olyan, mintha rákattintanék a pipára | |||
$(answerOptionElements[i]).prepend(uiCheckbox).click(uiCheckbox, function(eventObject) { | $(answerOptionElements[i]).prepend(uiCheckbox).click(uiCheckbox, function(eventObject) { | ||
if (eventObject.target.nodeName == "INPUT") { | if (eventObject.target.nodeName == "INPUT") { | ||
| 560. sor: | 719. sor: | ||
/* ------------------------------------------------------- */ | /* ------------------------------------------------------- */ | ||
/* | |||
Statisztikát számon tartó objektum. | |||
*/ | |||
function StatObject() { | function StatObject() { | ||
this.totalAnswers = 0; | this.totalAnswers = 0; | ||
| 571. sor: | 732. sor: | ||
/* ------------------------------------------------------- */ | /* ------------------------------------------------------- */ | ||
/* | |||
Felhasználói beállításokat számon tartó objektum. | |||
*/ | |||
function ConfObject(showAllDefault, randomOrderDefault) { | function ConfObject(showAllDefault, randomOrderDefault) { | ||
this.showAll = showAllDefault; | this.showAll = showAllDefault; | ||
if ($.cookie('vw- | if ($.cookie('vw-quiz-conf-showall') == 'showall') { | ||
this.showAll = true; | this.showAll = true; | ||
} | } | ||
if ($.cookie('vw- | if ($.cookie('vw-quiz-conf-showall') == 'showone') { | ||
this.showAll = false; | this.showAll = false; | ||
} | } | ||
this.randomOrder = randomOrderDefault; | this.randomOrder = randomOrderDefault; | ||
if ($.cookie('vw- | if ($.cookie('vw-quiz-conf-ordering') == 'random') { | ||
this.randomOrder = true; | this.randomOrder = true; | ||
} | } | ||
if ($.cookie('vw- | if ($.cookie('vw-quiz-conf-ordering') == 'inorder') { | ||
this.randomOrder = false; | this.randomOrder = false; | ||
} | } | ||
// Véletlenszerú sorrend mentése cookie-ba | |||
this.setRandomOrder = function(value) { | this.setRandomOrder = function(value) { | ||
this.randomOrder = value; | this.randomOrder = value; | ||
$.cookie('vw- | $.cookie('vw-quiz-conf-ordering', value ? 'random' : 'inorder'); | ||
}; | }; | ||
// "Minden kérdés látszik" mentése cookie-ba | |||
this.setShowAll = function(value) { | this.setShowAll = function(value) { | ||
this.showAll = value; | this.showAll = value; | ||
$.cookie('vw- | $.cookie('vw-quiz-conf-showall', value ? 'showall' : 'showone'); | ||
}; | }; | ||
} | } | ||