Move old feedback into a separate deprecated group

HFP-1174
pull/15/head
Frode Petterson 2017-07-13 15:51:24 +02:00
parent 9b89efad81
commit 6a762b8223
5 changed files with 146 additions and 115 deletions

View File

@ -112,10 +112,12 @@ H5P.QuestionSet = function (options, contentId, contentData) {
showResultPage: true, showResultPage: true,
noResultMessage: 'Finished', noResultMessage: 'Finished',
message: 'Your result:', message: 'Your result:',
oldFeedback: {
successGreeting: '', successGreeting: '',
successComment: '', successComment: '',
failGreeting: '', failGreeting: '',
failComment: '', failComment: ''
},
overallFeedback: [], overallFeedback: [],
finishButtonText: 'Finish', finishButtonText: 'Finish',
solutionButtonText: 'Show solution', solutionButtonText: 'Show solution',
@ -158,27 +160,27 @@ H5P.QuestionSet = function (options, contentId, contentData) {
var randomizeQuestionOrdering = function (questions) { var randomizeQuestionOrdering = function (questions) {
// Save the original order of the questions in a multidimensional array [[question0,0],[question1,1]... // Save the original order of the questions in a multidimensional array [[question0,0],[question1,1]...
var questionOrdering = questions.map(function(questionInstance, index) { return [questionInstance, index] }); var questionOrdering = questions.map(function (questionInstance, index) { return [questionInstance, index]; });
// Shuffle the multidimensional array // Shuffle the multidimensional array
questionOrdering = H5P.shuffleArray(questionOrdering); questionOrdering = H5P.shuffleArray(questionOrdering);
// Retrieve question objects from the first index // Retrieve question objects from the first index
var questions = []; questions = [];
for (var i = 0; i < questionOrdering.length; i++) { for (var i = 0; i < questionOrdering.length; i++) {
questions[i] = questionOrdering[i][0]; questions[i] = questionOrdering[i][0];
} }
// Retrieve the new shuffled order from the second index // Retrieve the new shuffled order from the second index
var newOrder = []; var newOrder = [];
for (var i = 0; i< questionOrdering.length; i++) { for (var j = 0; j < questionOrdering.length; j++) {
// Use a previous order if it exists // Use a previous order if it exists
if (contentData.previousState && contentData.previousState.questionOrder) { if (contentData.previousState && contentData.previousState.questionOrder) {
newOrder[i] = questionOrder[questionOrdering[i][1]]; newOrder[j] = questionOrder[questionOrdering[j][1]];
} }
else { else {
newOrder[i] = questionOrdering[i][1]; newOrder[j] = questionOrdering[j][1];
} }
} }
@ -312,8 +314,8 @@ H5P.QuestionSet = function (options, contentId, contentData) {
var _updateButtons = function () { var _updateButtons = function () {
// Verify that current question is answered when backward nav is disabled // Verify that current question is answered when backward nav is disabled
if (params.disableBackwardsNavigation) { if (params.disableBackwardsNavigation) {
if (questionInstances[currentQuestion].getAnswerGiven() if (questionInstances[currentQuestion].getAnswerGiven() &&
&& questionInstances.length-1 !== currentQuestion) { questionInstances.length-1 !== currentQuestion) {
questionInstances[currentQuestion].showButton('next'); questionInstances[currentQuestion].showButton('next');
} }
else { else {
@ -418,11 +420,11 @@ H5P.QuestionSet = function (options, contentId, contentData) {
var currentQuestion = params.questions[currentQuestionIndex]; var currentQuestion = params.questions[currentQuestionIndex];
var hasAutoPlay = currentQuestion var hasAutoPlay = currentQuestion &&
&& currentQuestion.params.media currentQuestion.params.media &&
&& currentQuestion.params.media.params currentQuestion.params.media.params &&
&& currentQuestion.params.media.params.playback currentQuestion.params.media.params.playback &&
&& currentQuestion.params.media.params.playback.autoplay; currentQuestion.params.media.params.playback.autoplay;
if (hasAutoPlay && typeof questionInstances[currentQuestionIndex].play === 'function') { if (hasAutoPlay && typeof questionInstances[currentQuestionIndex].play === 'function') {
questionInstances[currentQuestionIndex].play(); questionInstances[currentQuestionIndex].play();
@ -592,19 +594,19 @@ H5P.QuestionSet = function (options, contentId, contentData) {
question.attach($('.question-container:eq(' + i + ')', $myDom)); question.attach($('.question-container:eq(' + i + ')', $myDom));
//Show buttons if necessary //Show buttons if necessary
if(questionInstances[questionInstances.length -1] === question if (questionInstances[questionInstances.length -1] === question &&
&& question.hasButton('finish')) { question.hasButton('finish')) {
question.showButton('finish'); question.showButton('finish');
} }
if(questionInstances[questionInstances.length -1] !== question if (questionInstances[questionInstances.length -1] !== question &&
&& question.hasButton('next')) { question.hasButton('next')) {
question.showButton('next'); question.showButton('next');
} }
if(questionInstances[0] !== question if (questionInstances[0] !== question &&
&& question.hasButton('prev') question.hasButton('prev') &&
&& !params.disableBackwardsNavigation) { !params.disableBackwardsNavigation) {
question.showButton('prev'); question.showButton('prev');
} }
@ -732,8 +734,8 @@ H5P.QuestionSet = function (options, contentId, contentData) {
var eparams = { var eparams = {
message: params.endGame.showResultPage ? params.endGame.message : params.endGame.noResultMessage, message: params.endGame.showResultPage ? params.endGame.message : params.endGame.noResultMessage,
comment: params.endGame.showResultPage ? (success ? params.endGame.successGreeting : params.endGame.failGreeting) : undefined, comment: params.endGame.showResultPage ? (success ? params.endGame.oldFeedback.successGreeting : params.endGame.oldFeedback.failGreeting) : undefined,
resulttext: params.endGame.showResultPage ? (success ? params.endGame.successComment : params.endGame.failComment) : undefined, resulttext: params.endGame.showResultPage ? (success ? params.endGame.oldFeedback.successComment : params.endGame.oldFeedback.failComment) : undefined,
finishButtonText: params.endGame.finishButtonText, finishButtonText: params.endGame.finishButtonText,
solutionButtonText: params.endGame.solutionButtonText, solutionButtonText: params.endGame.solutionButtonText,
retryButtonText: params.endGame.retryButtonText retryButtonText: params.endGame.retryButtonText
@ -1197,7 +1199,7 @@ H5P.QuestionSet = function (options, contentId, contentData) {
return { return {
statement: xAPIEvent.data.statement, statement: xAPIEvent.data.statement,
children: getXAPIDataFromChildren(this) children: getXAPIDataFromChildren(this)
} };
}; };
}; };

View File

@ -153,8 +153,7 @@
{ {
"label": "Score Range" "label": "Score Range"
}, },
{ {},
},
{ {
"label": "Feedback for defined score range", "label": "Feedback for defined score range",
"placeholder": "Fill in the feedback" "placeholder": "Fill in the feedback"
@ -164,6 +163,9 @@
} }
] ]
}, },
{
"label": "Old Feedback",
"fields": [
{ {
"label": "Quiz passed greeting", "label": "Quiz passed greeting",
"description": "This text will be displayed above the score if the user has successfully passed the quiz." "description": "This text will be displayed above the score if the user has successfully passed the quiz."
@ -179,6 +181,8 @@
{ {
"label": "Failed comment", "label": "Failed comment",
"description": "This comment will be displayed after the score if the user has failed the quiz." "description": "This comment will be displayed after the score if the user has failed the quiz."
}
]
}, },
{ {
"label": "Solution button label", "label": "Solution button label",

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": 15, "minorVersion": 13,
"patchVersion": 0, "patchVersion": 0,
"embedTypes": [ "embedTypes": [
"iframe" "iframe"

View File

@ -339,6 +339,13 @@
} }
] ]
}, },
{
"name": "oldFeedback",
"type": "group",
"label": "Old Feedback",
"importance": "low",
"deprecated": true,
"fields": [
{ {
"name": "successGreeting", "name": "successGreeting",
"type": "text", "type": "text",
@ -349,8 +356,7 @@
"tags": [ "tags": [
"strong", "strong",
"em" "em"
], ]
"deprecated": true
}, },
{ {
"name": "successComment", "name": "successComment",
@ -367,8 +373,7 @@
"em", "em",
"a", "a",
"p" "p"
], ]
"deprecated": true
}, },
{ {
"name": "failGreeting", "name": "failGreeting",
@ -380,8 +385,7 @@
"tags": [ "tags": [
"strong", "strong",
"em" "em"
], ]
"deprecated": true
}, },
{ {
"name": "failComment", "name": "failComment",
@ -398,8 +402,9 @@
"em", "em",
"a", "a",
"p" "p"
], ]
"deprecated": true }
]
}, },
{ {
"name": "solutionButtonText", "name": "solutionButtonText",

View File

@ -78,6 +78,26 @@ H5PUpgrades['H5P.QuestionSet'] = (function ($) {
delete parameters.endGame.scoreString; delete parameters.endGame.scoreString;
} }
// Group old feedback fields
if (parameters.endGame.successGreeting ||
parameters.endGame.successComment ||
parameters.endGame.failGreeting ||
parameters.endGame.failComment) {
parameters.endGame.oldFeedback = {};
if (parameters.endGame.successGreeting) {
parameters.endGame.oldFeedback.successGreeting = parameters.endGame.successGreeting;
}
if (parameters.endGame.successComment) {
parameters.endGame.oldFeedback.successComment = parameters.endGame.successComment;
}
if (parameters.endGame.failGreeting) {
parameters.endGame.oldFeedback.failGreeting = parameters.endGame.failGreeting;
}
if (parameters.endGame.failComment) {
parameters.endGame.oldFeedback.failComment = parameters.endGame.failComment;
}
}
finished(null, parameters); finished(null, parameters);
} }
} }