Merge branch 'release' into stable

pull/3/head 1.6.2
Frode Petterson 2016-01-21 14:34:34 +01:00
commit c63a4795ac
5 changed files with 68 additions and 33 deletions

View File

@ -221,9 +221,3 @@
.h5p-no-frame .questionset .h5p-question > *:last-child { .h5p-no-frame .questionset .h5p-question > *:last-child {
margin-bottom: 0; margin-bottom: 0;
} }
/* Hide retry and show solution buttons */
.questionset .h5p-question .h5p-question-try-again,
.questionset .h5p-question .h5p-question-show-solution {
display: none;
}

View File

@ -154,11 +154,18 @@ H5P.QuestionSet = function (options, contentId) {
answered = answered && (questionInstances[i]).getAnswerGiven(); answered = answered && (questionInstances[i]).getAnswerGiven();
} }
if (currentQuestion === (params.questions.length - 1) && answered) { if (currentQuestion === (params.questions.length - 1) && answered &&
questionInstances[currentQuestion]) {
questionInstances[currentQuestion].showButton('finish'); questionInstances[currentQuestion].showButton('finish');
} }
}; };
var _stopQuestion = function (questionNumber) {
if (questionInstances[questionNumber]) {
pauseMedia(questionInstances[questionNumber]);
}
};
var _showQuestion = function (questionNumber) { var _showQuestion = function (questionNumber) {
// Sanitize input. // Sanitize input.
if (questionNumber < 0) { if (questionNumber < 0) {
@ -168,14 +175,19 @@ H5P.QuestionSet = function (options, contentId) {
questionNumber = params.questions.length - 1; questionNumber = params.questions.length - 1;
} }
currentQuestion = questionNumber;
// Hide all questions // Hide all questions
$('.question-container', $myDom).hide().eq(questionNumber).show(); $('.question-container', $myDom).hide().eq(questionNumber).show();
if (questionInstances[questionNumber]) {
// Trigger resize on question in case the size of the QS has changed. // Trigger resize on question in case the size of the QS has changed.
var instance = questionInstances[questionNumber]; var instance = questionInstances[questionNumber];
instance.setActivityStarted();
if (instance.$ !== undefined) { if (instance.$ !== undefined) {
instance.trigger('resize'); instance.trigger('resize');
} }
}
// Update progress indicator // Update progress indicator
// Test if current has been answered. // Test if current has been answered.
@ -189,7 +201,6 @@ H5P.QuestionSet = function (options, contentId) {
} }
// Remember where we are // Remember where we are
currentQuestion = questionNumber;
_updateButtons(); _updateButtons();
self.trigger('resize'); self.trigger('resize');
return currentQuestion; return currentQuestion;
@ -261,7 +272,7 @@ H5P.QuestionSet = function (options, contentId) {
passed: success passed: success
}; };
var displayResults = function () { var displayResults = function () {
self.triggerXAPICompleted(self.getScore(), self.totalScore()); self.triggerXAPICompleted(self.getScore(), self.totalScore(), success);
if (!params.endGame.showResultPage) { if (!params.endGame.showResultPage) {
self.trigger('h5pQuestionSetFinished', eventData); self.trigger('h5pQuestionSetFinished', eventData);
@ -343,7 +354,9 @@ H5P.QuestionSet = function (options, contentId) {
// Function for attaching the multichoice to a DOM element. // Function for attaching the multichoice to a DOM element.
this.attach = function (target) { this.attach = function (target) {
if (this.isRoot()) {
this.setActivityStarted(); this.setActivityStarted();
}
if (typeof(target) === "string") { if (typeof(target) === "string") {
$myDom = $('#' + target); $myDom = $('#' + target);
} }
@ -394,6 +407,7 @@ H5P.QuestionSet = function (options, contentId) {
// Add finish question set button // Add finish question set button
question.addButton('finish', params.texts.finishButton, function () { question.addButton('finish', params.texts.finishButton, function () {
_stopQuestion(currentQuestion);
_displayEndGame(); _displayEndGame();
}, false); }, false);
@ -401,6 +415,7 @@ H5P.QuestionSet = function (options, contentId) {
// Add next question button // Add next question button
question.addButton('next', '', function () { question.addButton('next', '', function () {
_stopQuestion(currentQuestion);
_showQuestion(currentQuestion + 1); _showQuestion(currentQuestion + 1);
}); });
} }
@ -408,6 +423,7 @@ H5P.QuestionSet = function (options, contentId) {
// Add previous question button // Add previous question button
if (questionInstances[0] !== question) { if (questionInstances[0] !== question) {
question.addButton('prev', '', function () { question.addButton('prev', '', function () {
_stopQuestion(currentQuestion);
_showQuestion(currentQuestion - 1); _showQuestion(currentQuestion - 1);
}); });
} }
@ -424,6 +440,10 @@ H5P.QuestionSet = function (options, contentId) {
// An activity within this activity is not allowed to send completed events // An activity within this activity is not allowed to send completed events
event.setVerb('answered'); event.setVerb('answered');
} }
if (event.data.statement.context.extensions === undefined) {
event.data.statement.context.extensions = [];
}
event.data.statement.context.extensions['http://id.tincanapi.com/extension/ending-point'] = currentQuestion + 1;
}); });
if (question.getAnswerGiven()) { if (question.getAnswerGiven()) {
$('.progress-dot:eq(' + i +')', $myDom).removeClass('unanswered').addClass('answered'); $('.progress-dot:eq(' + i +')', $myDom).removeClass('unanswered').addClass('answered');
@ -441,6 +461,7 @@ H5P.QuestionSet = function (options, contentId) {
// Set event listeners. // Set event listeners.
$('.progress-dot', $myDom).click(function () { $('.progress-dot', $myDom).click(function () {
_stopQuestion(currentQuestion);
_showQuestion($(this).index()); _showQuestion($(this).index());
}); });
@ -546,6 +567,26 @@ H5P.QuestionSet = function (options, contentId) {
this.showSolutions = function() { this.showSolutions = function() {
renderSolutions = true; renderSolutions = true;
}; };
/**
* Stop the given element's playback if any.
*
* @param {object} instance
*/
var pauseMedia = function (instance) {
try {
if (instance.pause !== undefined &&
(instance.pause instanceof Function ||
typeof instance.pause === 'function')) {
instance.pause();
}
}
catch (err) {
// Prevent crashing, log error.
H5P.error(err);
}
};
}; };
H5P.QuestionSet.prototype = Object.create(H5P.EventDispatcher.prototype); H5P.QuestionSet.prototype = Object.create(H5P.EventDispatcher.prototype);
H5P.QuestionSet.prototype.constructor = H5P.QuestionSet; H5P.QuestionSet.prototype.constructor = H5P.QuestionSet;

View File

@ -8,11 +8,11 @@
}, },
{ {
"label": "Titolo", "label": "Titolo",
"description": "Questo titolo verr<EFBFBD> visualizzato sopra il testo introduttivo." "description": "Questo titolo verrà visualizzato sopra il testo introduttivo."
}, },
{ {
"label": "Testo introduttivo", "label": "Testo introduttivo",
"description": "Questo testo verr<EFBFBD> visualizzato prima dell'inizio del quiz." "description": "Questo testo verrà visualizzato prima dell'inizio del quiz."
}, },
{ {
"label": "Testo pulsante Start" "label": "Testo pulsante Start"
@ -73,7 +73,7 @@
}, },
{ {
"label": "Testo Avanzamento", "label": "Testo Avanzamento",
"description": "esto utilizzato se il testo Avanzamento <EFBFBD> selezionato." "description": "esto utilizzato se il testo Avanzamento è selezionato."
} }
] ]
}, },
@ -85,27 +85,27 @@
}, },
{ {
"label": "Intestazione Feedback", "label": "Intestazione Feedback",
"description": "Questa intestazione verr<EFBFBD> visualizzata alla fine del quiz, dopo che l'utente avr<76> risposto a tutte le domande." "description": "Questa intestazione verrà visualizzata alla fine del quiz, dopo che l'utente avrà risposto a tutte le domande."
}, },
{ {
"label": "Testo visualizza punteggio", "label": "Testo visualizza punteggio",
"description": "Testo utilizzato per visualizzare il punteggio Totale dell'utente. \"@score\" verr<EFBFBD> rimpiazzato dal punteggio calcolato, \"@total\" sar<61> rimpiazzato dal punteggio massimo possibile. " "description": "Testo utilizzato per visualizzare il punteggio Totale dell'utente. \"@score\" verrà rimpiazzato dal punteggio calcolato, \"@total\" sarà rimpiazzato dal punteggio massimo possibile. "
}, },
{ {
"label": "Messaggio di superamento quiz", "label": "Messaggio di superamento quiz",
"description": "Questo testo verr<EFBFBD> visualizzato sopra il punteggio se l'utente ha superato con successo il quiz." "description": "Questo testo verrà visualizzato sopra il punteggio se l'utente ha superato con successo il quiz."
}, },
{ {
"label": "Commento di superamento quiz", "label": "Commento di superamento quiz",
"description": "Questo commento verr<EFBFBD> visualizzato dopo il punteggio se l'utente ha superato con successo il quiz." "description": "Questo commento verrà visualizzato dopo il punteggio se l'utente ha superato con successo il quiz."
}, },
{ {
"label": "Titolo quiz fallito", "label": "Titolo quiz fallito",
"description": "Questo testo verr<EFBFBD> visualizzato sopra il punteggio se l'utente non ha superato il quiz." "description": "Questo testo verrà visualizzato sopra il punteggio se l'utente non ha superato il quiz."
}, },
{ {
"label": "Commento quiz fallito", "label": "Commento quiz fallito",
"description": "Questo commento verr<EFBFBD> visualizzato dopo il punteggio se l'utente non ha superato il quiz." "description": "Questo commento verrà visualizzato dopo il punteggio se l'utente non ha superato il quiz."
}, },
{ {
"label": "Etichetta pulsante Soluzione", "label": "Etichetta pulsante Soluzione",
@ -129,11 +129,11 @@
}, },
{ {
"label": "Video di superamento quiz", "label": "Video di superamento quiz",
"description": "Questo video verr<EFBFBD> visualizzato sopra il punteggio se l'utente ha superato con successo il quiz." "description": "Questo video verrà visualizzato sopra il punteggio se l'utente ha superato con successo il quiz."
}, },
{ {
"label": "Video quiz fallito", "label": "Video quiz fallito",
"description": "Questo testo verr<EFBFBD> visualizzato se l'utente non ha superato il quiz." "description": "Questo testo verrà visualizzato se l'utente non ha superato il quiz."
} }
] ]
}, },
@ -143,15 +143,15 @@
"fields": [ "fields": [
{ {
"label": "Abilita ignora impostazioni per \"Mostra soluzione\" e \"Riprova\".", "label": "Abilita ignora impostazioni per \"Mostra soluzione\" e \"Riprova\".",
"description": "Se questa opzione <EFBFBD> abilitata le proprie impostazioni per le domande saranno ignorate e verranno utilizzate le impostazioni seguenti." "description": "Se questa opzione è abilitata le proprie impostazioni per le domande saranno ignorate e verranno utilizzate le impostazioni seguenti."
}, },
{ {
"label": "Abilita pulsanti \"Mostra soluzione\".", "label": "Abilita pulsanti \"Mostra soluzione\".",
"description": "L'attivazione di questa opzione far<EFBFBD> in modo che le domande mostrino il tasto \"Mostra soluzione\"." "description": "L'attivazione di questa opzione farà in modo che le domande mostrino il tasto \"Mostra soluzione\"."
}, },
{ {
"label": "Abilita \"Riprova\".", "label": "Abilita \"Riprova\".",
"description": "L'attivazione di questa opzione far<EFBFBD> in modo che per l'utente sia abilitata l'opzione \"Riprova\"." "description": "L'attivazione di questa opzione farà in modo che per l'utente sia abilitata l'opzione \"Riprova\"."
} }
] ]
}, },

View File

@ -3,7 +3,7 @@
"description": "Put together a set of different questions that has to be solved. (Quiz)", "description": "Put together a set of different questions that has to be solved. (Quiz)",
"contentType": "question", "contentType": "question",
"majorVersion": 1, "majorVersion": 1,
"minorVersion": 5, "minorVersion": 6,
"patchVersion": 2, "patchVersion": 2,
"embedTypes": [ "embedTypes": [
"iframe" "iframe"

View File

@ -110,10 +110,10 @@
"label": "Question type", "label": "Question type",
"description": "Library for this question.", "description": "Library for this question.",
"options": [ "options": [
"H5P.MultiChoice 1.4", "H5P.MultiChoice 1.5",
"H5P.DragQuestion 1.5", "H5P.DragQuestion 1.5",
"H5P.Blanks 1.4", "H5P.Blanks 1.4",
"H5P.MarkTheWords 1.4", "H5P.MarkTheWords 1.5",
"H5P.DragText 1.4" "H5P.DragText 1.4"
] ]
} }