From bfa29df4c68db8b815cf8e7a020221ba84227475 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Mon, 5 Sep 2016 14:37:20 +0200 Subject: [PATCH 01/62] Bumped h5p-drag-n-bar and all dependent libraries --- library.json | 6 +++--- semantics.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/library.json b/library.json index fac3d5c..b83a392 100644 --- a/library.json +++ b/library.json @@ -3,8 +3,8 @@ "description": "Put together a set of different questions that has to be solved. (Quiz)", "contentType": "question", "majorVersion": 1, - "minorVersion": 8, - "patchVersion": 4, + "minorVersion": 9, + "patchVersion": 0, "embedTypes": [ "iframe" ], @@ -61,4 +61,4 @@ "minorVersion": 1 } ] -} \ No newline at end of file +} diff --git a/semantics.json b/semantics.json index a29b346..e7c165b 100644 --- a/semantics.json +++ b/semantics.json @@ -111,7 +111,7 @@ "description": "Library for this question.", "options": [ "H5P.MultiChoice 1.7", - "H5P.DragQuestion 1.6", + "H5P.DragQuestion 1.7", "H5P.Blanks 1.6", "H5P.MarkTheWords 1.6", "H5P.DragText 1.5" From d5eb0f50edd61ce50e6c91a628de26e27611ac12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ha=CC=8Akon=20Ellingsen?= Date: Wed, 28 Sep 2016 11:10:32 +0200 Subject: [PATCH 02/62] HFP-24: Only add skip button when it is wanted --- js/questionset.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/questionset.js b/js/questionset.js index b346c51..63a18fb 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -524,7 +524,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { }); video.play(); - if (params.endGame.skipButtonText) { + if (params.endGame.skippable) { $('').click(function () { video.pause(); $videoContainer.hide(); From 601ae585e184d1bb9b3ea0ee8d7ae830c72dbe3d Mon Sep 17 00:00:00 2001 From: thomasmars Date: Mon, 3 Oct 2016 13:06:01 +0200 Subject: [PATCH 03/62] Disable backwards navigation. Show dots, but they have no action when backward navigation is disabled. Always show/enable full navigation in solution mode. Only show forward button when a question has been answered. Remove navigation button if question has been answered, then retried within the question's logic. HFP-8 --- js/questionset.js | 74 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 57 insertions(+), 17 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 63a18fb..634a296 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -39,7 +39,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { ' <% } %>' + ' ' + ' <% } else if (progressType == "textual") { %>' + @@ -323,7 +327,12 @@ H5P.QuestionSet = function (options, contentId, contentData) { */ var toggleDotsNavigation = function (enable) { $('.progress-dot', $myDom).each(function () { + $(this).toggleClass('disabled', !enable); $(this).attr('aria-disabled', enable ? 'false' : 'true'); + // Remove tabindex + if (!enable) { + $(this).attr('tabindex', '-1'); + } }); }; @@ -441,9 +450,10 @@ H5P.QuestionSet = function (options, contentId, contentData) { label += ', ' + texts.currentQuestionText; } + var disabledTabindex = params.disableBackwardsNavigation && !showingSolutions; $el.toggleClass('current', isCurrent) .attr('aria-label', label) - .attr('tabindex', isCurrent ? 0 : -1); + .attr('tabindex', isCurrent && !disabledTabindex ? 0 : -1); }; var _displayEndGame = function () { From ebd2314a5c1f8c4e86d760279e274c7d2608f964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A5l=20J=C3=B8rgensen?= Date: Thu, 6 Oct 2016 21:47:40 +0200 Subject: [PATCH 09/62] Added H5P.TrueFalse to QS [HFP-6] --- semantics.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/semantics.json b/semantics.json index eaaa265..91ab898 100644 --- a/semantics.json +++ b/semantics.json @@ -114,7 +114,8 @@ "H5P.DragQuestion 1.7", "H5P.Blanks 1.7", "H5P.MarkTheWords 1.6", - "H5P.DragText 1.5" + "H5P.DragText 1.5", + "H5P.TrueFalse 1.0" ] } }, From e510b662ed450a5fc3948b85502b943117692e29 Mon Sep 17 00:00:00 2001 From: thomasmars Date: Fri, 7 Oct 2016 13:38:39 +0200 Subject: [PATCH 10/62] Restore at last page if in solution mode HFP-9 --- js/questionset.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 1e18f63..cd9727a 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -881,17 +881,15 @@ H5P.QuestionSet = function (options, contentId, contentData) { /** * Returns the complete state of question set and sub-content * - * @returns {Object} + * @returns {Object} current state */ this.getCurrentState = function () { - var state = { - progress: currentQuestion, + return { + progress: showingSolutions ? questionInstances.length - 1 : currentQuestion, answers: questionInstances.map(function (qi) { return qi.getCurrentState(); }) }; - - return state; }; }; From 85bdfabb85d89d87c57be756528df9221c57b7a2 Mon Sep 17 00:00:00 2001 From: Tom Arild Jakobsen Date: Mon, 10 Oct 2016 11:18:19 +0200 Subject: [PATCH 11/62] Update gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e266972..c30f2fe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *~ -/nbproject/private/ \ No newline at end of file +/nbproject/private/ +.idea \ No newline at end of file From 02f98007cc8de51e3b1eed39b85341c4754685b0 Mon Sep 17 00:00:00 2001 From: Tom Arild Jakobsen Date: Mon, 10 Oct 2016 11:21:06 +0200 Subject: [PATCH 12/62] Add getMaxScore and deprecate totalScore --- js/questionset.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 1e18f63..3d70079 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -469,7 +469,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Get total score. var finals = self.getScore(); - var totals = self.totalScore(); + var totals = self.getMaxScore(); var scoreString = params.endGame.scoreString.replace("@score", finals).replace("@total", totals); var success = ((100 * finals / totals) >= params.passPercentage); var eventData = { @@ -494,7 +494,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { }; var displayResults = function () { - self.triggerXAPICompleted(self.getScore(), self.totalScore(), success); + self.triggerXAPICompleted(self.getScore(), self.getMaxScore(), success); var eparams = { message: params.endGame.showResultPage ? params.endGame.message : params.endGame.noResultMessage, @@ -779,7 +779,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { }; // Get total score possible for questionset. - this.totalScore = function () { + this.getMaxScore = function () { var score = 0; for (var i = questionInstances.length - 1; i >= 0; i--) { score += questionInstances[i].getMaxScore(); @@ -787,6 +787,15 @@ H5P.QuestionSet = function (options, contentId, contentData) { return score; }; + + /** + * @deprecated since version 1.9.2 + * @returns {number} + */ + this.totalScore = function () { + return this.getMaxScore(); + }; + /** * Gather copyright information for the current content. * From d19a8d52fc24fa8008928048421d5caa28b21878 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Fri, 7 Oct 2016 15:15:42 +0200 Subject: [PATCH 13/62] Randomize questions and update buttons [HFP-56] Show and hide navigational buttons Add functionality to save content state Clean up code [HFP-59] Randomize on initialization Tidy up [HFP-56] --- js/questionset.js | 129 ++++++++++++++++++++++++++++++++++++++++++++-- semantics.json | 7 +++ 2 files changed, 133 insertions(+), 3 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 3602de9..2d2f6d7 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -77,7 +77,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { ''; var defaults = { - randomOrder: false, initialQuestion: 0, progressType: 'dots', passPercentage: 50, @@ -124,14 +123,17 @@ H5P.QuestionSet = function (options, contentId, contentData) { var currentQuestion = 0; var questionInstances = []; + var idMap = []; var $myDom; var scoreBar; var up; var renderSolutions = false; var showingSolutions = false; contentData = contentData || {}; + var answerIndex; if (contentData.previousState) { currentQuestion = contentData.previousState.progress; + answerIndex = contentData.previousState.order; } var $template = $(template.render(params)); @@ -168,7 +170,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { var hasAnswers = contentData.previousState && contentData.previousState.answers; var questionInstance = H5P.newRunnable(question, contentId, undefined, undefined, { - previousState: hasAnswers ? contentData.previousState.answers[i] : undefined, + previousState: hasAnswers ? contentData.previousState.answers[answerIndex[i]] : undefined, parent: self }); questionInstance.on('resize', function () { @@ -178,6 +180,40 @@ H5P.QuestionSet = function (options, contentId, contentData) { questionInstances.push(questionInstance); } + // Save the original order of questions + for (var i = 0; i < questionInstances.length; i++) { + questionInstances[i].originalOrder = i; + idMap[i] = i; + } + + // Randomize questions only once + if (params.randomQuestions && contentData.previousState === undefined) { + // Randomize order of the questions + questionInstances = H5P.shuffleArray(questionInstances); + + // Save new randomized order in case the question is resumed + for (var i = 0; i < questionInstances.length; i++) { + idMap[i] = questionInstances[i].originalOrder; + } + } + + // Restore previous order of questions if necessary + if (contentData && contentData.previousState !== undefined + && contentData.previousState.order !== undefined) { + var temp = []; + + // Fill temporary array in the previous order + for (var i = 0; i < questionInstances.length; i++) { + temp[contentData.previousState.order[i]] = questionInstances[i]; + } + + // Update current arrays using the temporary array + for (var i = 0; i < questionInstances.length; i++) { + questionInstances[i] = temp[i]; + idMap[i] = i; + } + } + // Resize all interactions on resize self.on('resize', function () { if (up) { @@ -356,6 +392,8 @@ H5P.QuestionSet = function (options, contentId, contentData) { //Force the last page to be reRendered rendered = false; + + randomizeQuestions(); }; var rendered = false; @@ -364,6 +402,90 @@ H5P.QuestionSet = function (options, contentId, contentData) { rendered = false; }; + var randomizeQuestions = function () { + + if (!params.randomizeQuestions) { + return false; + } + + // Randomize order of the questions + questionInstances = H5P.shuffleArray(questionInstances); + + // Save new randomized order in case the question is resumed + for (var i = 0; i < questionInstances.length; i++) { + idMap[i] = questionInstances[i].originalOrder; + } + + // Find all question containers and detach questions from them + $('.question-container', $myDom).each(function (){ + $(this).children().detach(); + }); + + // Reattach questions and their buttons in the new order + for (var i = 0; i < questionInstances.length; i++) { + var question = questionInstances[i]; + + question.attach($('.question-container:eq(' + i + ')', $myDom)); + + // Add 'finish' button if needed + if(questionInstances[questionInstances.length -1] === question) { + + if (question.hasButton('finish')) {question.showButton('finish');} + + else { + // Add finish question set button + question.addButton('finish', params.texts.finishButton, + moveQuestion.bind(this, 1), false); + } + } + + // Add 'next' button if needed + if(questionInstances[questionInstances.length -1] !== question) { + + if (question.hasButton('next')) {question.showButton('next');} + + else { + // Only show button 'next' button when answered or is allowed to go back + question.addButton('next', '', moveQuestion.bind(this, 1), + !params.disableBackwardsNavigation || !!question.getAnswerGiven(), { + href: '#', // Use href since this is a navigation button + 'aria-label': params.texts.nextButton + }); + } + } + + // Add 'previous' button if needed + if(questionInstances[0] !== question) { + + if (question.hasButton('prev')) {question.showButton('prev');} + + else { + // Only show button 'previous' button when answered or is allowed to go forward + question.addButton('prev', '', moveQuestion.bind(this, -1), + !(questionInstances[0] === question || params.disableBackwardsNavigation), { + href: '#', // Use href since this is a navigation button + 'aria-label': params.texts.prevButton + }); + } + } + + // Hide relevant buttons since the order has changed + if (questionInstances[0] === question) { + question.hideButton('prev'); + } + + if (questionInstances[questionInstances.length-1] === question) { + question.hideButton('next'); + } + + if (questionInstances[questionInstances.length-1] !== question) { + question.hideButton('finish'); + } + + } + + } + var moveQuestion = function (direction) { if (params.disableBackwardsNavigation && !questionInstances[currentQuestion].getAnswerGiven()) { questionInstances[currentQuestion].hideButton('next'); @@ -865,7 +987,8 @@ H5P.QuestionSet = function (options, contentId, contentData) { progress: currentQuestion, answers: questionInstances.map(function (qi) { return qi.getCurrentState(); - }) + }), + order: idMap }; return state; diff --git a/semantics.json b/semantics.json index eaaa265..1da7d12 100644 --- a/semantics.json +++ b/semantics.json @@ -201,6 +201,13 @@ "optional": true, "default": false }, + { + "name": "randomQuestions", + "type": "boolean", + "label": "Randomize questions", + "description": "Enable to randomize the order of questions on display.", + "default": true + }, { "name": "endGame", "type": "group", From 491ed24c0b6e25e1f02c8074c526d1cece3d160a Mon Sep 17 00:00:00 2001 From: thomasmars Date: Fri, 14 Oct 2016 16:48:03 +0200 Subject: [PATCH 14/62] Tweaks to make randomization work. HFP-56 --- js/questionset.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 8843084..4062c4a 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -136,8 +136,10 @@ H5P.QuestionSet = function (options, contentId, contentData) { var showingSolutions = false; contentData = contentData || {}; var answerIndex; - if (contentData.previousState && contentData.previousState.progress) { - currentQuestion = contentData.previousState.progress; + if (contentData.previousState) { + if (contentData.previousState.progress) { + currentQuestion = contentData.previousState.progress; + } answerIndex = contentData.previousState.order; } @@ -161,7 +163,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Instantiate question instances for (var i = 0; i < params.questions.length; i++) { - var question = params.questions[i]; + var question = params.questions[answerIndex[i]]; if (override) { // Extend subcontent with the overrided settings. @@ -426,7 +428,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { var randomizeQuestions = function () { - if (!params.randomizeQuestions) { + if (!params.randomQuestions) { return false; } From 46753e2b5e64892420910c7acdf49098f3034bc4 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Sun, 16 Oct 2016 11:14:52 +0200 Subject: [PATCH 15/62] Refactor randomizing on initialization --- js/questionset.js | 82 +++++++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 39 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 4062c4a..524859d 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -128,7 +128,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { var currentQuestion = 0; var questionInstances = []; - var idMap = []; + var questionOrder = []; //Stores order of questions to allow resuming of question set var $myDom; var scoreBar; var up; @@ -136,11 +136,20 @@ H5P.QuestionSet = function (options, contentId, contentData) { var showingSolutions = false; contentData = contentData || {}; var answerIndex; + + // Bring question set up to date when resuming if (contentData.previousState) { if (contentData.previousState.progress) { currentQuestion = contentData.previousState.progress; } - answerIndex = contentData.previousState.order; + questionOrder = contentData.previousState.order; + } + + else { + // Set a generic order of 0...N if not resuming + for (var i = 0; i < params.questions.length; i++) { + questionOrder[i] = i; + } } var $template = $(template.render(params)); @@ -163,7 +172,9 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Instantiate question instances for (var i = 0; i < params.questions.length; i++) { - var question = params.questions[answerIndex[i]]; + + // Create questions in either a generic or randomized order + var question = params.questions[questionOrder[i]]; if (override) { // Extend subcontent with the overrided settings. @@ -177,7 +188,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { var hasAnswers = contentData.previousState && contentData.previousState.answers; var questionInstance = H5P.newRunnable(question, contentId, undefined, undefined, { - previousState: hasAnswers ? contentData.previousState.answers[answerIndex[i]] : undefined, + previousState: hasAnswers ? contentData.previousState.answers[questionOrder[i]] : undefined, parent: self }); questionInstance.on('resize', function () { @@ -187,38 +198,32 @@ H5P.QuestionSet = function (options, contentId, contentData) { questionInstances.push(questionInstance); } - // Save the original order of questions - for (var i = 0; i < questionInstances.length; i++) { - questionInstances[i].originalOrder = i; - idMap[i] = i; + // General purpose function to randomize elements and update a map of their indexes + // TODO: Move this function to a seperate file + var randomizeElements = function (elements, map) { + + // Save the original order of the elements in a nested array [[element1,0],[element2,1]... + var tuples = elements.map(function(object, index) { return [object, index] }); + + tuples = H5P.shuffleArray(tuples); + + // Retrieve elements and indexes + elements = tuples.map(d => d[0]); + map = tuples.map(d => d[1]); + + return { + elements:elements, + map:map + }; + } - // Randomize questions only once + // Randomize questions only on instantiation if (params.randomQuestions && contentData.previousState === undefined) { - // Randomize order of the questions - questionInstances = H5P.shuffleArray(questionInstances); - // Save new randomized order in case the question is resumed - for (var i = 0; i < questionInstances.length; i++) { - idMap[i] = questionInstances[i].originalOrder; - } - } - - // Restore previous order of questions if necessary - if (contentData && contentData.previousState !== undefined - && contentData.previousState.order !== undefined) { - var temp = []; - - // Fill temporary array in the previous order - for (var i = 0; i < questionInstances.length; i++) { - temp[contentData.previousState.order[i]] = questionInstances[i]; - } - - // Update current arrays using the temporary array - for (var i = 0; i < questionInstances.length; i++) { - questionInstances[i] = temp[i]; - idMap[i] = i; - } + var result = randomizeElements(questionInstances,questionOrder); + questionInstances = result.elements; + questionOrder = result.map; } // Resize all interactions on resize @@ -417,7 +422,10 @@ H5P.QuestionSet = function (options, contentId, contentData) { //Force the last page to be reRendered rendered = false; - randomizeQuestions(); + if (params.randomQuestions) { + // randomizeQuestions(); + } + }; var rendered = false; @@ -428,16 +436,12 @@ H5P.QuestionSet = function (options, contentId, contentData) { var randomizeQuestions = function () { - if (!params.randomQuestions) { - return false; - } - // Randomize order of the questions questionInstances = H5P.shuffleArray(questionInstances); // Save new randomized order in case the question is resumed for (var i = 0; i < questionInstances.length; i++) { - idMap[i] = questionInstances[i].originalOrder; + questionOrder[i] = questionInstances[i].originalOrder; } // Find all question containers and detach questions from them @@ -1022,7 +1026,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { answers: questionInstances.map(function (qi) { return qi.getCurrentState(); }), - order: idMap + order: questionOrder }; }; }; From b3dc56c7963a21f8da6f915b2316522194e438b9 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Mon, 17 Oct 2016 10:43:07 +0200 Subject: [PATCH 16/62] Refactor button creation [HFP-56] Add comments --- js/questionset.js | 120 +++++++++++++++++++--------------------------- 1 file changed, 49 insertions(+), 71 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 524859d..fcc3e62 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -128,7 +128,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { var currentQuestion = 0; var questionInstances = []; - var questionOrder = []; //Stores order of questions to allow resuming of question set + var questionOrder; //Stores order of questions to allow resuming of question set var $myDom; var scoreBar; var up; @@ -145,13 +145,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { questionOrder = contentData.previousState.order; } - else { - // Set a generic order of 0...N if not resuming - for (var i = 0; i < params.questions.length; i++) { - questionOrder[i] = i; - } - } - var $template = $(template.render(params)); // Set overrides for questions var override; @@ -173,8 +166,15 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Instantiate question instances for (var i = 0; i < params.questions.length; i++) { - // Create questions in either a generic or randomized order - var question = params.questions[questionOrder[i]]; + var question; + // If a previous order exists, use it + if (questionOrder !== undefined) { + question = params.questions[questionOrder[i]]; + } + else { + // Use generic order when initialzing for the first time + question = params.questions[i]; + } if (override) { // Extend subcontent with the overrided settings. @@ -198,8 +198,12 @@ H5P.QuestionSet = function (options, contentId, contentData) { questionInstances.push(questionInstance); } - // General purpose function to randomize elements and update a map of their indexes - // TODO: Move this function to a seperate file + /** + * Randomizes elements in an array and updates a map of the order + * @param elements + * @param map + * @return {array} + */ var randomizeElements = function (elements, map) { // Save the original order of the elements in a nested array [[element1,0],[element2,1]... @@ -423,7 +427,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { rendered = false; if (params.randomQuestions) { - // randomizeQuestions(); + randomizeQuestions(); } }; @@ -434,15 +438,14 @@ H5P.QuestionSet = function (options, contentId, contentData) { rendered = false; }; + /** + * Randomizes question instances + */ var randomizeQuestions = function () { - // Randomize order of the questions - questionInstances = H5P.shuffleArray(questionInstances); - - // Save new randomized order in case the question is resumed - for (var i = 0; i < questionInstances.length; i++) { - questionOrder[i] = questionInstances[i].originalOrder; - } + var result = randomizeElements(questionInstances,questionOrder); + questionInstances = result.elements; + questionOrder = result.map; // Find all question containers and detach questions from them $('.question-container', $myDom).each(function (){ @@ -451,50 +454,25 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Reattach questions and their buttons in the new order for (var i = 0; i < questionInstances.length; i++) { + var question = questionInstances[i]; question.attach($('.question-container:eq(' + i + ')', $myDom)); - // Add 'finish' button if needed - if(questionInstances[questionInstances.length -1] === question) { - - if (question.hasButton('finish')) {question.showButton('finish');} - - else { - // Add finish question set button - question.addButton('finish', params.texts.finishButton, - moveQuestion.bind(this, 1), false); - } + //Show buttons if necessary + if(questionInstances[questionInstances.length -1] === question + && question.hasButton('finish')) { + question.showButton('finish'); } - // Add 'next' button if needed - if(questionInstances[questionInstances.length -1] !== question) { - - if (question.hasButton('next')) {question.showButton('next');} - - else { - // Only show button 'next' button when answered or is allowed to go back - question.addButton('next', '', moveQuestion.bind(this, 1), - !params.disableBackwardsNavigation || !!question.getAnswerGiven(), { - href: '#', // Use href since this is a navigation button - 'aria-label': params.texts.nextButton - }); - } + if(questionInstances[questionInstances.length -1] !== question + && question.hasButton('next')) { + question.showButton('next'); } - // Add 'previous' button if needed - if(questionInstances[0] !== question) { - - if (question.hasButton('prev')) {question.showButton('prev');} - - else { - // Only show button 'previous' button when answered or is allowed to go forward - question.addButton('prev', '', moveQuestion.bind(this, -1), - !(questionInstances[0] === question || params.disableBackwardsNavigation), { - href: '#', // Use href since this is a navigation button - 'aria-label': params.texts.prevButton - }); - } + if(questionInstances[0] !== question + && question.hasButton('prev')) { + question.showButton('prev'); } // Hide relevant buttons since the order has changed @@ -779,29 +757,29 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Listen for image resize registerImageLoadedListener(question); - // Add next/finish button - if (questionInstances[questionInstances.length -1] === question) { + // Add finish button + question.addButton('finish', params.texts.finishButton, + moveQuestion.bind(this, 1), false); - // Add finish question set button - question.addButton('finish', params.texts.finishButton, - moveQuestion.bind(this, 1), false); + // Add next button + question.addButton('next', '', moveQuestion.bind(this, 1), + !params.disableBackwardsNavigation || !!question.getAnswerGiven(), { + href: '#', // Use href since this is a navigation button + 'aria-label': params.texts.nextButton + }); - } else { - // Only show button next button when answered or is allowed to go back - question.addButton('next', '', moveQuestion.bind(this, 1), - !params.disableBackwardsNavigation || !!question.getAnswerGiven(), { - href: '#', // Use href since this is a navigation button - 'aria-label': params.texts.nextButton - }); - } - - // Add previous question button + // Add previous button question.addButton('prev', '', moveQuestion.bind(this, -1), !(questionInstances[0] === question || params.disableBackwardsNavigation), { href: '#', // Use href since this is a navigation button 'aria-label': params.texts.prevButton }); + // Hide next button if it is the last question + if(questionInstances[questionInstances.length -1] === question) { + question.hideButton('next'); + } + question.on('xAPI', function (event) { var shortVerb = event.getVerb(); if (shortVerb === 'interacted' || From c16422f13d198ec5cef3a8e314d49b6e5bd7e9f2 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Mon, 17 Oct 2016 15:42:56 +0200 Subject: [PATCH 17/62] Add language fields Replace TODOs --- language/ar.json | 189 +++++++++++++++++++++++++++++++++-------- language/de.json | 182 ++++++++++++++++++++++++++++++--------- language/fr.json | 201 +++++++++++++++++++++++++++++++++----------- language/it.json | 187 +++++++++++++++++++++++++++++++++-------- language/nb.json | 215 +++++++++++++++++++++++++++++++++++------------ language/nn.json | 215 +++++++++++++++++++++++++++++++++++------------ 6 files changed, 924 insertions(+), 265 deletions(-) diff --git a/language/ar.json b/language/ar.json index 3a9c5fc..7dd3b11 100644 --- a/language/ar.json +++ b/language/ar.json @@ -1,200 +1,319 @@ { "semantics": [ { + "englishLabel": "Quiz introduction", "label": "مقدمة المسابقة", "fields": [ { + "englishLabel": "Display introduction", "label": "عرض المقدمة" }, { + "englishLabel": "Title", "label": "العنوان", + "englishDescription": "This title will be displayed above the introduction text.", "description": "سيتم عرض هذا العنوان فوق النص المقدمة" }, { + "englishLabel": "Introduction text", "label": "مقدمة النص", + "englishDescription": "This text will be displayed before the quiz starts.", "description": "سيتم عرض هذا النص قبل أن تبدأ هذه المسابقة" }, { - "label": "بدء زر النص" + "englishLabel": "Start button text", + "label": "بدء زر النص", + "englishDefault": "Start Quiz", + "default": "Start Quiz" }, { + "englishLabel": "Background image", "label": "صورة الخلفية", + "englishDescription": "An optional background image for the introduction.", "description": "إدخال صورة خلفية اختيارية" } ] }, { + "englishLabel": "Background image", "label": "صورة الخلفية", + "englishDescription": "An optional background image for the Question set.", "description": "صورة خلفية اختيارية لأسئلة" }, { + "englishLabel": "Progress indicator", "label": "مؤشر التقدم", + "englishDescription": "Question set progress indicator style.", "description": "أسئلة لتعيين نمط مؤشر التقدم", "options": [ { + "englishLabel": "Textual", "label": "النصية" }, { + "englishLabel": "Dots", "label": "النقاط" } ] }, { + "englishLabel": "Pass percentage", "label": "نسبة النجاح", + "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "النسبة المئوية لمجموع النقاط المطلوبة لاجتياز الاختبار" }, { + "englishLabel": "Questions", "label": "الأسئلة", "widgets": [ { + "englishLabel": "Default", "label": "الافتراضي" }, { + "englishLabel": "Textual", "label": "النصية" } ], + "englishEntity": "question", "entity": "السؤال", "field": { + "englishLabel": "Question type", "label": "نوع السؤال", + "englishDescription": "Library for this question.", "description": "مكتبة لهذا السؤال" } }, { + "englishLabel": "Interface texts in quiz", "label": "واجهة النصوص لهذه المسابقة", "fields": [ { - "label": "زر الرجوع" + "englishLabel": "Back button", + "label": "زر الرجوع", + "englishDefault": "Previous question", + "default": "Previous question" }, { - "label": "زر التقدم" + "englishLabel": "Next button", + "label": "زر التقدم", + "englishDefault": "Next question", + "default": "Next question" }, { - "label": "زر الانتهاء" + "englishLabel": "Finish button", + "label": "زر الانتهاء", + "englishDefault": "Finish", + "default": "Finish" }, { + "englishLabel": "Progress text", "label": "نص التقدم", - "description": "النص المستخدم إذا تم تحديد التقدم نصيا" + "englishDescription": "Text used if textual progress is selected.", + "description": "النص المستخدم إذا تم تحديد التقدم نصيا", + "englishDefault": "Question: @current of @total questions", + "default": "Question: @current of @total questions" }, { + "englishLabel": "Label for jumping to a certain question", "label": "Label for jumping to a certain question", + "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", + "englishDefault": "Question %d of %total", "default": "Question %d of %total" }, { + "englishLabel": "Copyright dialog question label", "label": "Copyright dialog question label", + "englishDefault": "Question", "default": "Question" }, { + "englishLabel": "Readspeaker progress", "label": "Readspeaker progress", + "englishDescription": "May use @current and @total question variables", "description": "May use @current and @total question variables", + "englishDefault": "Question @current of @total", "default": "Question @current of @total" }, { + "englishLabel": "Unanswered question text", "label": "Unanswered question text", + "englishDefault": "Unanswered", "default": "Unanswered" }, { + "englishLabel": "Answered question text", "label": "Answered question text", + "englishDefault": "Answered", "default": "Answered" }, { + "englishLabel": "Current question text", "label": "Current question text", + "englishDefault": "Current question", "default": "Current question" } ] }, { + "englishLabel": "Disable backwards navigation", "label": "Disable backwards navigation", + "englishDescription": "This option will only allow you to move forward in Question Set", "description": "This option will only allow you to move forward in Question Set" }, { - "label": "انتهاء المسابقة", + "englishLabel": "Randomize questions", + "label": "Randomize questions", + "englishDescription": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." + }, + { + "englishLabel": "Quiz finished", + "label": "إعدادات زر \"مشاهدة حل \" وزر \"إعادة المحاولة\" ", "fields": [ { - "label": "عرض النتائج" + "englishLabel": "Display results", + "label": "Override \"Show Solution\" button" }, { - "label": "No results message", - "description": "Text displayed on end page when \"Display results\" is disabled", + "englishLabel": "No results message", + "label": "Override \"Retry\" button", + "englishDescription": "Text displayed on end page when \"Display results\" is disabled", + "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", + "englishDefault": "Finished", "default": "Finished" }, { - "label": "نص راس الملاحظات", - "description": "سيتم عرض هذا العنوان في نهاية هذه المسابقة حيثما أجاب المستخدم على جميع الأسئلة المستعملة" + "englishLabel": "Feedback heading", + "label": "Feedback heading", + "englishDefault": "Your result:", + "default": "Your result:", + "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", + "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." }, { - "label": "عرض نص النتيجة", - "description": "النص يستخدم لعرض مجموع النقاط للمستخدم \"@score\" سوف تحل محلها النتيجة المحسوبة, \"@total\" حسب أقصى درجة ممكنة" + "englishLabel": "Score display text", + "label": "Score display text", + "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "englishDefault": "You got @score of @total points", + "default": "You got @score of @total points" }, { - "label": "تعليق النجاح بالمسابقة", - "description": "سيتم عرض هذا النص أعلاه النتيجة إذا انقضى المستخدم بنجاح هذه المسابقة" + "englishLabel": "Quiz passed greeting", + "label": "Quiz passed greeting", + "englishDefault": "Congratulations!", + "default": "Congratulations!", + "englishDescription": "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." }, { - "label": "ملاحظة النجاح", - "description": "سيتم عرض هذه الملاحظة بعد النتيجة إذا انقضى المستخدم بنجاح هذه المسابقة" + "englishLabel": "Passed comment", + "label": "Passed comment", + "englishDefault": "You did very well!", + "default": "You did very well!", + "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", + "description": "This comment will be displayed after the score if the user has successfully passed the quiz." }, { - "label": "تعليق الرسوب بالمسابقة", - "description": "سيتم عرض هذا النص أعلاه النتيجة إذا كان المستخدم قد فشلت في المسابقة" + "englishLabel": "Quiz failed title", + "label": "Quiz failed title", + "englishDefault": "You did not pass this time.", + "default": "You did not pass this time.", + "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", + "description": "This text will be displayed above the score if the user has failed the quiz." }, { - "label": "ملاحظة الرسوب", - "description": "سيتم عرض هذه الملاحظة بعد النتيجة إذا كان المستخدم قد فشلت في المسابقة" + "englishLabel": "Failed comment", + "label": "Failed comment", + "englishDefault": "Have another try!", + "default": "Have another try!", + "englishDescription": "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": "تسمية زر اظهار الحل", - "description": "نص زر الحل" + "englishLabel": "Solution button label", + "label": "Solution button label", + "englishDefault": "Show solution", + "default": "Show solution", + "englishDescription": "Text for the solution button.", + "description": "Text for the solution button." }, { - "label": "تسمية زر إعادة المحاولة", - "description": "نص زر إعادة المحاولة" + "englishLabel": "Retry button label", + "label": "Retry button label", + "englishDefault": "Retry", + "default": "Retry", + "englishDescription": "Text for the retry button.", + "description": "Text for the retry button." }, { - "label": "نص زر الانتهاء" + "englishLabel": "Finish button text", + "label": "Finish button text", + "englishDefault": "Finish", + "default": "Finish" }, { - "label": "عرض الفيديو قبل نتائج المسابقة" + "englishLabel": "Display video before quiz results", + "label": "Display video before quiz results" }, { - "label": "تفعيل زر تخطى الفيديو" + "englishLabel": "Enable skip video button", + "label": "Enable skip video button" }, { - "label": "تسمية زر تخطى الفيديو" + "englishLabel": "Skip video button label", + "label": "Skip video button label", + "englishDefault": "Skip video", + "default": "Skip video" }, { - "label": "فيديو النجاح بالمسابقة", - "description": "سيتم تشغيل هذا الفيديو إذا كان المستخدم ناجحا بهذه المسابقة" + "englishLabel": "Passed video", + "label": "Passed video", + "englishDescription": "This video will be played if the user successfully passed the quiz.", + "description": "This video will be played if the user successfully passed the quiz." }, { - "label": "فيديو الرسوب بالمسابقة", - "description": "سيتم تشغيل هذا الفيديو إذا كان المستخدم راسبا بهذه المسابقة" + "englishLabel": "Fail video", + "label": "Fail video", + "englishDescription": "This video will be played if the user failes the quiz.", + "description": "This video will be played if the user failes the quiz." } ] }, { - "label": "إعدادات زر \"مشاهدة حل \" وزر \"إعادة المحاولة\" ", + "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Settings for \"Show solution\" and \"Retry\" buttons", "fields": [ { + "englishLabel": "Override \"Show Solution\" button", "label": "Override \"Show Solution\" button", + "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { + "englishLabel": "Enabled", "label": "Enabled" }, { + "englishLabel": "Disabled", "label": "Disabled" } ] }, { + "englishLabel": "Override \"Retry\" button", "label": "Override \"Retry\" button", + "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { + "englishLabel": "Enabled", "label": "Enabled" }, { + "englishLabel": "Disabled", "label": "Disabled" } ] @@ -202,4 +321,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/language/de.json b/language/de.json index 14b925f..a08d83d 100644 --- a/language/de.json +++ b/language/de.json @@ -1,215 +1,319 @@ { "semantics": [ { + "englishLabel": "Quiz introduction", "label": "Quiz Einführung", "fields": [ { + "englishLabel": "Display introduction", "label": "Zeige Einführung" }, { + "englishLabel": "Title", "label": "Titel", + "englishDescription": "This title will be displayed above the introduction text.", "description": "Dieser Titel wird über dem Einführungstext angezeigt." }, { + "englishLabel": "Introduction text", "label": "Einführungstext", + "englishDescription": "This text will be displayed before the quiz starts.", "description": "Dieser Text wird angezeigt, bevor das Quiz anfängt." }, { + "englishLabel": "Start button text", "label": "Start Button Text", + "englishDefault": "Start Quiz", "default": "Starte Quiz" }, { + "englishLabel": "Background image", "label": "Hintergrundbild", + "englishDescription": "An optional background image for the introduction.", "description": "Ein optionales Hintergrundbild für die Einführung." } ] }, { + "englishLabel": "Background image", "label": "Hintergrundbild", + "englishDescription": "An optional background image for the Question set.", "description": "Ein optionales Hintergrundbild für das Frage Set." }, { + "englishLabel": "Progress indicator", "label": "Fortschrittsanzeige", + "englishDescription": "Question set progress indicator style.", "description": "Anzeigestil für die Fortschrittsanzeige des Frage Sets.", "options": [ { + "englishLabel": "Textual", "label": "Text" }, { + "englishLabel": "Dots", "label": "Punkte" } ] }, { + "englishLabel": "Pass percentage", "label": "Prozent bearbeitet", + "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "Prozent der Gesamtpunkte sind notwendig um das Quiz zu bestehen." }, { + "englishLabel": "Questions", "label": "Fragen", "widgets": [ { + "englishLabel": "Default", "label": "Vorgabe" }, { + "englishLabel": "Textual", "label": "Text" } ], + "englishEntity": "question", "entity": "Frage", "field": { + "englishLabel": "Question type", "label": "Fragentyp", + "englishDescription": "Library for this question.", "description": "Bibliothek für diese Frage." } }, { + "englishLabel": "Interface texts in quiz", "label": "Anzeigetexte im Quiz", "fields": [ { + "englishLabel": "Back button", "label": "Rückwärts Button", + "englishDefault": "Previous question", "default": "vorherige" }, { + "englishLabel": "Next button", "label": "Weiter Button", + "englishDefault": "Next question", "default": "weiter" }, { + "englishLabel": "Finish button", "label": "Ende Button", + "englishDefault": "Finish", "default": "beenden" }, { + "englishLabel": "Progress text", "label": "Fortschrittstext", + "englishDescription": "Text used if textual progress is selected.", "description": "Verwendeter Text wenn Text Fortschrittsanzeige gewählt wurde.", + "englishDefault": "Question: @current of @total questions", "default": "Aktuelle Frage: @current von @total Fragen" }, { + "englishLabel": "Label for jumping to a certain question", "label": "Label for jumping to a certain question", + "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", + "englishDefault": "Question %d of %total", "default": "Question %d of %total" }, { + "englishLabel": "Copyright dialog question label", "label": "Copyright dialog question label", + "englishDefault": "Question", "default": "Question" }, { + "englishLabel": "Readspeaker progress", "label": "Readspeaker progress", + "englishDescription": "May use @current and @total question variables", "description": "May use @current and @total question variables", + "englishDefault": "Question @current of @total", "default": "Question @current of @total" }, { + "englishLabel": "Unanswered question text", "label": "Unanswered question text", + "englishDefault": "Unanswered", "default": "Unanswered" }, { + "englishLabel": "Answered question text", "label": "Answered question text", + "englishDefault": "Answered", "default": "Answered" }, { + "englishLabel": "Current question text", "label": "Current question text", + "englishDefault": "Current question", "default": "Current question" } ] }, { + "englishLabel": "Disable backwards navigation", "label": "Disable backwards navigation", + "englishDescription": "This option will only allow you to move forward in Question Set", "description": "This option will only allow you to move forward in Question Set" }, { - "label": "Quiz beendet", + "englishLabel": "Randomize questions", + "label": "Randomize questions", + "englishDescription": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." + }, + { + "englishLabel": "Quiz finished", + "label": "Einstellungen für \"Zeige die Lösung\" Button und \"Nochmal\".", "fields": [ { - "label": "Ergebnisanzeige" + "englishLabel": "Display results", + "label": "Override \"Show Solution\" button" }, { - "label": "No results message", - "description": "Text displayed on end page when \"Display results\" is disabled", + "englishLabel": "No results message", + "label": "Override \"Retry\" button", + "englishDescription": "Text displayed on end page when \"Display results\" is disabled", + "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", + "englishDefault": "Finished", "default": "Finished" }, { - "label": "Kopfzeile Feedback", - "default": "Dein Ergebnis:", - "description": "diese Kopfzeile wird am Ende des Quiz angezeigt, wenn der Benutzer alle Fragen beantwortet hat." + "englishLabel": "Feedback heading", + "label": "Feedback heading", + "englishDefault": "Your result:", + "default": "Your result:", + "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", + "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." }, { - "label": "Punkt Anzeige Text", - "description": "Dieser Text wird verwendet um die Gesamtpunkte des Benutzers anzuzeigen. \"@score\" wird durch die errechneten Punkte ersetzt, \"@total\" wird durch die maximal erreichbaren Punkte ersetzt.", - "default": "Du hast @score Punkte von @total möglichen." + "englishLabel": "Score display text", + "label": "Score display text", + "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "englishDefault": "You got @score of @total points", + "default": "You got @score of @total points" }, { - "label": "Quiz bestanden Mitteilung", - "default": "Gratulation!", - "description": "Dieser Text wird oberhalb der Punkte angezeigt, wenn der Benutzer das Quiz erfolgreich abgeschlossen hat." + "englishLabel": "Quiz passed greeting", + "label": "Quiz passed greeting", + "englishDefault": "Congratulations!", + "default": "Congratulations!", + "englishDescription": "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." }, { - "label": "Bestanden Kommentar", - "default": "Gut gemacht!", - "description": "dieser Kommentar wird nach den Punkten angezeigt, wenn der Benutzer das Quiz erfolgreich bestanden hat." + "englishLabel": "Passed comment", + "label": "Passed comment", + "englishDefault": "You did very well!", + "default": "You did very well!", + "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", + "description": "This comment will be displayed after the score if the user has successfully passed the quiz." }, { - "label": "Quiz nicht bestanden Titel", - "default": "Diese Mal hast du nicht bestanden.", - "description": "dieser Text wird oberhalb der Punkte angezeigt, wenn der Benutzer das Quiz nicht bestanden hat." + "englishLabel": "Quiz failed title", + "label": "Quiz failed title", + "englishDefault": "You did not pass this time.", + "default": "You did not pass this time.", + "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", + "description": "This text will be displayed above the score if the user has failed the quiz." }, { - "label": "Nicht bestanden Kommentar", - "default": "Versuche es noch einmal!", - "description": "Dieser Kommentar wird nach den Punkten angezeigt, wenn der Benutzer das Quiz nicht bestanden hat." + "englishLabel": "Failed comment", + "label": "Failed comment", + "englishDefault": "Have another try!", + "default": "Have another try!", + "englishDescription": "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": "Lösungs Button Beschriftung", - "default": "Zeige die Lösung", - "description": "Text für den Lösungs Button." + "englishLabel": "Solution button label", + "label": "Solution button label", + "englishDefault": "Show solution", + "default": "Show solution", + "englishDescription": "Text for the solution button.", + "description": "Text for the solution button." }, { - "label": "Wiederholen Button Beschriftung", - "default": "Versuch es nochmal", - "description": "Text für den Wiederholen Button." + "englishLabel": "Retry button label", + "label": "Retry button label", + "englishDefault": "Retry", + "default": "Retry", + "englishDescription": "Text for the retry button.", + "description": "Text for the retry button." }, { - "label": "Beende Button Text", - "default": "Beenden" + "englishLabel": "Finish button text", + "label": "Finish button text", + "englishDefault": "Finish", + "default": "Finish" }, { - "label": "Zeige Video vor den Quizergebnissen" + "englishLabel": "Display video before quiz results", + "label": "Display video before quiz results" }, { - "label": "Aktiviere Skip Video Button" + "englishLabel": "Enable skip video button", + "label": "Enable skip video button" }, { - "label": "Skip Video Button Beschriftung", - "default": "Überspringe Video" + "englishLabel": "Skip video button label", + "label": "Skip video button label", + "englishDefault": "Skip video", + "default": "Skip video" }, { - "label": "Bestanden Video", - "description": "Dieses Video wird angezeigt, wenn der Benutzer das Quiz erfolgreich bestanden hat." + "englishLabel": "Passed video", + "label": "Passed video", + "englishDescription": "This video will be played if the user successfully passed the quiz.", + "description": "This video will be played if the user successfully passed the quiz." }, { - "label": "Nicht bestanden Video", - "description": "Dieses Video wird angezeigt, wenn der Benutzer das Quiz nicht bestanden hat." + "englishLabel": "Fail video", + "label": "Fail video", + "englishDescription": "This video will be played if the user failes the quiz.", + "description": "This video will be played if the user failes the quiz." } ] }, { - "label": "Einstellungen für \"Zeige die Lösung\" Button und \"Nochmal\".", + "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Settings for \"Show solution\" and \"Retry\" buttons", "fields": [ { + "englishLabel": "Override \"Show Solution\" button", "label": "Override \"Show Solution\" button", + "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { + "englishLabel": "Enabled", "label": "Enabled" }, { + "englishLabel": "Disabled", "label": "Disabled" } ] }, { + "englishLabel": "Override \"Retry\" button", "label": "Override \"Retry\" button", + "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { + "englishLabel": "Enabled", "label": "Enabled" }, { + "englishLabel": "Disabled", "label": "Disabled" } ] diff --git a/language/fr.json b/language/fr.json index 7929026..7c68e5c 100644 --- a/language/fr.json +++ b/language/fr.json @@ -1,217 +1,320 @@ { "semantics": [ { + "englishLabel": "Quiz introduction", "label": "Introduction du Quiz ", "fields": [ { + "englishLabel": "Display introduction", "label": "Afficher l'introduction" }, { + "englishLabel": "Title", "label": "Titre", + "englishDescription": "This title will be displayed above the introduction text.", "description": "Ce titre sera affiché au-dessus de votre texte d'introduction." }, { + "englishLabel": "Introduction text", "label": "Texte d'introduction ", + "englishDescription": "This text will be displayed before the quiz starts.", "description": "Ce texte sera affiché avant le démarrage du quiz." }, { + "englishLabel": "Start button text", "label": "Texte du bouton de démarrage", + "englishDefault": "Start Quiz", "default": "Commencer" }, { + "englishLabel": "Background image", "label": "Image d'arrière-plan", + "englishDescription": "An optional background image for the introduction.", "description": "Image d'arrière-plan optionnelle pour l'introduction." } ] }, { + "englishLabel": "Background image", "label": "Image d'arrière-plan", + "englishDescription": "An optional background image for the Question set.", "description": "Image d'arrière-plan optionnelle pour la série de questions." }, { + "englishLabel": "Progress indicator", "label": "Indicateur de progression", + "englishDescription": "Question set progress indicator style.", "description": "Style de l'indicateur de progression de la série de questions.", "options": [ { + "englishLabel": "Textual", "label": "Texte" }, { + "englishLabel": "Dots", "label": "Points" } ] }, { + "englishLabel": "Pass percentage", "label": "Pourcentage de réussite", + "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "Pourcentage exigé pour considérer que le quiz est réussi." }, { + "englishLabel": "Questions", "label": "Questions", "widgets": [ { + "englishLabel": "Default", "label": "Par défaut" }, { + "englishLabel": "Textual", "label": "Texte" } ], + "englishEntity": "question", "entity": "question", "field": { + "englishLabel": "Question type", "label": "Type de question", + "englishDescription": "Library for this question.", "description": "Types possibles pour cette question." } }, { + "englishLabel": "Interface texts in quiz", "label": "Textes de l'interface du quiz", "fields": [ { + "englishLabel": "Back button", "label": "Bouton précédent", + "englishDefault": "Previous question", "default": "Retour" }, { + "englishLabel": "Next button", "label": "Bouton suivant", + "englishDefault": "Next question", "default": "Suite" }, { + "englishLabel": "Finish button", "label": "Bouton fin", + "englishDefault": "Finish", "default": "Terminer" }, { + "englishLabel": "Progress text", "label": "Texte de progression", + "englishDescription": "Text used if textual progress is selected.", "description": "Texte utilisé si la progression textuelle a été sélectionnée.", + "englishDefault": "Question: @current of @total questions", "default": "Question @current sur @total" }, { + "englishLabel": "Label for jumping to a certain question", "label": "Texte pour aller directement à une question", + "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "Vous devez utiliser la variable '%d' à la place du numéro de la question et %total à la place du nombre total de questions.", + "englishDefault": "Question %d of %total", "default": "Question %d sur %total" }, { + "englishLabel": "Copyright dialog question label", "label": "Texte de la question de la boîte de dialogue de copyright", + "englishDefault": "Question", "default": "Question" }, { + "englishLabel": "Readspeaker progress", "label": "Progression pour la synthèse vocale", + "englishDescription": "May use @current and @total question variables", "description": "Vous pouvez utiliser les variables @current et @total", + "englishDefault": "Question @current of @total", "default": "Question @current sur @total" }, { + "englishLabel": "Unanswered question text", "label": "Texte d'une question sans réponse", + "englishDefault": "Unanswered", "default": "Pas de réponse donnée" }, { + "englishLabel": "Answered question text", "label": "Texte d'une question ayant reçu une réponse", + "englishDefault": "Answered", "default": "Réponse donnée" }, { + "englishLabel": "Current question text", "label": "Texte de la question en cours", + "englishDefault": "Current question", "default": "Question en cours" } ] }, { + "englishLabel": "Disable backwards navigation", "label": "Disable backwards navigation", + "englishDescription": "This option will only allow you to move forward in Question Set", "description": "This option will only allow you to move forward in Question Set" }, { - "label": "Quiz terminé", + "englishLabel": "Randomize questions", + "label": "Randomize questions", + "englishDescription": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." + }, + { + "englishLabel": "Quiz finished", + "label": "Options pour les boutons \"Montrer la solution\" et \"Recommencer\".", "fields": [ { - "label": "Afficher les résultats" + "englishLabel": "Display results", + "label": "Ecraser le bouton \"Voir la solution\"" }, { - "label": "Message si pas de résultats", - "description": "Texte affiché sur la page finale si l'option \"Afficher les résultats\" est désactivée.", - "default": "Terminé" + "englishLabel": "No results message", + "label": "Ecraser le bouton \"Recommencer\"", + "englishDescription": "Text displayed on end page when \"Display results\" is disabled", + "description": "Cette option détermine si le bouton \"Recommencer\" sera affiché pour toutes les questions, désactivé pour toutes ou configuré pour chaque question individuellement.", + "englishDefault": "Finished", + "default": "Finished" }, { - "label": "Titre des commentaires", - "default": "Vos résultats :", - "description": "Ce titre sera affiché à la fin du quiz quand l'utilisateur aura répondu à toutes les questions." + "englishLabel": "Feedback heading", + "label": "Feedback heading", + "englishDefault": "Your result:", + "default": "Your result:", + "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", + "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." }, { - "label": "Texte d'affichage du score", - "description": "Texte utilisé pour afficher le score total de l'utilisateur. \"@score\" sera remplacé par le score de l'utilisateur, \"@total\" sera remplacé par le score maximum possible.", - "default": "Vous avez obtenu @score point(s) sur @total" + "englishLabel": "Score display text", + "label": "Score display text", + "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "englishDefault": "You got @score of @total points", + "default": "You got @score of @total points" }, { - "label": "Commentaire de félicitation", - "placeholder": "Bravo !", - "default": "Bravo !", - "description": "Ce commentaire sera affiché au-dessus du score de l'utilisateur si celui-ci réussit le quiz." + "englishLabel": "Quiz passed greeting", + "label": "Quiz passed greeting", + "englishDefault": "Congratulations!", + "default": "Congratulations!", + "englishDescription": "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." }, { - "label": "Commentaire en cas de succès", - "default": "Vous avez obtenu un très bon score !", - "description": "Commentaire affiché lors du passage du quiz avec succès." + "englishLabel": "Passed comment", + "label": "Passed comment", + "englishDefault": "You did very well!", + "default": "You did very well!", + "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", + "description": "This comment will be displayed after the score if the user has successfully passed the quiz." }, { - "label": "Commentaire en cas d'échec", - "default": "Vous n'avez pas réussi ce questionnaire.", - "description": "Ce commentaire sera affiché au-dessus du score de l'utilisateur si celui-ci échoue au quiz." + "englishLabel": "Quiz failed title", + "label": "Quiz failed title", + "englishDefault": "You did not pass this time.", + "default": "You did not pass this time.", + "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", + "description": "This text will be displayed above the score if the user has failed the quiz." }, { - "label": "Commentaire additionnel en cas d'échec", - "default": "Refaites un essai !", - "description": "Commentaire additionnel affiché lors de l'échec au quiz." + "englishLabel": "Failed comment", + "label": "Failed comment", + "englishDefault": "Have another try!", + "default": "Have another try!", + "englishDescription": "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": "Texte du bouton \"Solution\"", - "default": "Voir la solution", - "description": "Texte pour le bouton de solution." + "englishLabel": "Solution button label", + "label": "Solution button label", + "englishDefault": "Show solution", + "default": "Show solution", + "englishDescription": "Text for the solution button.", + "description": "Text for the solution button." }, { - "label": "Texte du bouton \"Recommencer\"", - "default": "Recommencer", - "description": "Texte pour le bouton Recommencer." + "englishLabel": "Retry button label", + "label": "Retry button label", + "englishDefault": "Retry", + "default": "Retry", + "englishDescription": "Text for the retry button.", + "description": "Text for the retry button." }, { - "label": "Texte pour le bouton de fin", - "default": "Terminer" + "englishLabel": "Finish button text", + "label": "Finish button text", + "englishDefault": "Finish", + "default": "Finish" }, { - "label": "Afficher une vidéo avant l'affichage des résultats du quiz" + "englishLabel": "Display video before quiz results", + "label": "Display video before quiz results" }, { - "label": "Activer le bouton \"Passer la vidéo\"" + "englishLabel": "Enable skip video button", + "label": "Enable skip video button" }, { - "label": "Texte du bouton \"Passer la vidéo\"", - "default": "Passer la vidéo" + "englishLabel": "Skip video button label", + "label": "Skip video button label", + "englishDefault": "Skip video", + "default": "Skip video" }, { - "label": "Vidéo en cas de succès", - "description": "Vidéo affichée si l'utilisateur réussit le quiz." + "englishLabel": "Passed video", + "label": "Passed video", + "englishDescription": "This video will be played if the user successfully passed the quiz.", + "description": "This video will be played if the user successfully passed the quiz." }, { - "label": "Vidéo en cas d'échec", - "description": "Vidéo affichée si l'utilisateur échoue au quiz." + "englishLabel": "Fail video", + "label": "Fail video", + "englishDescription": "This video will be played if the user failes the quiz.", + "description": "This video will be played if the user failes the quiz." } ] }, { - "label": "Options pour les boutons \"Montrer la solution\" et \"Recommencer\".", + "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Settings for \"Show solution\" and \"Retry\" buttons", "fields": [ { - "label": "Ecraser le bouton \"Voir la solution\"", - "description": "Cette option détermine si le bouton \"Voir la solution\" sera affiché pour toutes les questions, désactivé pour toutes ou configuré pour chaque question individuellement.", + "englishLabel": "Override \"Show Solution\" button", + "label": "Override \"Show Solution\" button", + "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", + "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "label": "Activé" + "englishLabel": "Enabled", + "label": "Enabled" }, { - "label": "Désactivé" + "englishLabel": "Disabled", + "label": "Disabled" } ] }, { - "label": "Ecraser le bouton \"Recommencer\"", - "description": "Cette option détermine si le bouton \"Recommencer\" sera affiché pour toutes les questions, désactivé pour toutes ou configuré pour chaque question individuellement.", + "englishLabel": "Override \"Retry\" button", + "label": "Override \"Retry\" button", + "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", + "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "label": "Activé" + "englishLabel": "Enabled", + "label": "Enabled" }, { - "label": "Désactivé" + "englishLabel": "Disabled", + "label": "Disabled" } ] } diff --git a/language/it.json b/language/it.json index e6a6f1a..e69d0f9 100644 --- a/language/it.json +++ b/language/it.json @@ -1,200 +1,319 @@ { "semantics": [ { + "englishLabel": "Quiz introduction", "label": "Introduzione quiz", "fields": [ { + "englishLabel": "Display introduction", "label": "Visualizza introduzione" }, { + "englishLabel": "Title", "label": "Titolo", + "englishDescription": "This title will be displayed above the introduction text.", "description": "Questo titolo verrà visualizzato sopra il testo introduttivo." }, { + "englishLabel": "Introduction text", "label": "Testo introduttivo", + "englishDescription": "This text will be displayed before the quiz starts.", "description": "Questo testo verrà visualizzato prima dell'inizio del quiz." }, { - "label": "Testo pulsante Start" + "englishLabel": "Start button text", + "label": "Testo pulsante Start", + "englishDefault": "Start Quiz", + "default": "Start Quiz" }, { + "englishLabel": "Background image", "label": "Immagine di sfondo", + "englishDescription": "An optional background image for the introduction.", "description": "Immagine di sfondo facoltativa per l'introduzione." } ] }, { + "englishLabel": "Background image", "label": "Immagine di sfondo", + "englishDescription": "An optional background image for the Question set.", "description": "Immagine di sfondo facoltativa per il set di domande." }, { + "englishLabel": "Progress indicator", "label": "Indicatore di avanzamento", + "englishDescription": "Question set progress indicator style.", "description": "Stile dell'indicatore di avanzamento del set di domande.", "options": [ { + "englishLabel": "Textual", "label": "Testuale" }, { + "englishLabel": "Dots", "label": "Punti" } ] }, { + "englishLabel": "Pass percentage", "label": "Percentuale superamento quiz", + "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "Percentuale minima del punteggio totale richiesto per passare il quiz." }, { + "englishLabel": "Questions", "label": "Domande", "widgets": [ { + "englishLabel": "Default", "label": "Predefinito" }, { + "englishLabel": "Textual", "label": "Testuale" } ], + "englishEntity": "question", "entity": "domanda", "field": { + "englishLabel": "Question type", "label": "Tipo di domanda", + "englishDescription": "Library for this question.", "description": "Biblioteca per questa domanda." } }, { + "englishLabel": "Interface texts in quiz", "label": "Testi di interfaccia nel quiz", "fields": [ { - "label": "Pulsante Indietro" + "englishLabel": "Back button", + "label": "Pulsante Indietro", + "englishDefault": "Previous question", + "default": "Previous question" }, { - "label": "Pulsante Prossimo" + "englishLabel": "Next button", + "label": "Pulsante Prossimo", + "englishDefault": "Next question", + "default": "Next question" }, { - "label": "Pulsante Fine" + "englishLabel": "Finish button", + "label": "Pulsante Fine", + "englishDefault": "Finish", + "default": "Finish" }, { + "englishLabel": "Progress text", "label": "Testo Avanzamento", - "description": "esto utilizzato se il testo Avanzamento è selezionato." + "englishDescription": "Text used if textual progress is selected.", + "description": "esto utilizzato se il testo Avanzamento è selezionato.", + "englishDefault": "Question: @current of @total questions", + "default": "Question: @current of @total questions" }, { + "englishLabel": "Label for jumping to a certain question", "label": "Label for jumping to a certain question", + "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", + "englishDefault": "Question %d of %total", "default": "Question %d of %total" }, { + "englishLabel": "Copyright dialog question label", "label": "Copyright dialog question label", + "englishDefault": "Question", "default": "Question" }, { + "englishLabel": "Readspeaker progress", "label": "Readspeaker progress", + "englishDescription": "May use @current and @total question variables", "description": "May use @current and @total question variables", + "englishDefault": "Question @current of @total", "default": "Question @current of @total" }, { + "englishLabel": "Unanswered question text", "label": "Unanswered question text", + "englishDefault": "Unanswered", "default": "Unanswered" }, { + "englishLabel": "Answered question text", "label": "Answered question text", + "englishDefault": "Answered", "default": "Answered" }, { + "englishLabel": "Current question text", "label": "Current question text", + "englishDefault": "Current question", "default": "Current question" } ] }, { + "englishLabel": "Disable backwards navigation", "label": "Disable backwards navigation", + "englishDescription": "This option will only allow you to move forward in Question Set", "description": "This option will only allow you to move forward in Question Set" }, { - "label": "Quiz terminato", + "englishLabel": "Randomize questions", + "label": "Randomize questions", + "englishDescription": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." + }, + { + "englishLabel": "Quiz finished", + "label": "Impostazioni per i pulsanti \"Mostra soluzione\" e \"Riprova\".", "fields": [ { - "label": "Visualizza risultati" + "englishLabel": "Display results", + "label": "Override \"Show Solution\" button" }, { - "label": "No results message", - "description": "Text displayed on end page when \"Display results\" is disabled", + "englishLabel": "No results message", + "label": "Override \"Retry\" button", + "englishDescription": "Text displayed on end page when \"Display results\" is disabled", + "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", + "englishDefault": "Finished", "default": "Finished" }, { - "label": "Intestazione Feedback", - "description": "Questa intestazione verrà visualizzata alla fine del quiz, dopo che l'utente avrà risposto a tutte le domande." + "englishLabel": "Feedback heading", + "label": "Feedback heading", + "englishDefault": "Your result:", + "default": "Your result:", + "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", + "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." }, { - "label": "Testo visualizza punteggio", - "description": "Testo utilizzato per visualizzare il punteggio Totale dell'utente. \"@score\" verrà rimpiazzato dal punteggio calcolato, \"@total\" sarà rimpiazzato dal punteggio massimo possibile. " + "englishLabel": "Score display text", + "label": "Score display text", + "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "englishDefault": "You got @score of @total points", + "default": "You got @score of @total points" }, { - "label": "Messaggio di superamento quiz", - "description": "Questo testo verrà visualizzato sopra il punteggio se l'utente ha superato con successo il quiz." + "englishLabel": "Quiz passed greeting", + "label": "Quiz passed greeting", + "englishDefault": "Congratulations!", + "default": "Congratulations!", + "englishDescription": "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." }, { - "label": "Commento di superamento quiz", - "description": "Questo commento verrà visualizzato dopo il punteggio se l'utente ha superato con successo il quiz." + "englishLabel": "Passed comment", + "label": "Passed comment", + "englishDefault": "You did very well!", + "default": "You did very well!", + "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", + "description": "This comment will be displayed after the score if the user has successfully passed the quiz." }, { - "label": "Titolo quiz fallito", - "description": "Questo testo verrà visualizzato sopra il punteggio se l'utente non ha superato il quiz." + "englishLabel": "Quiz failed title", + "label": "Quiz failed title", + "englishDefault": "You did not pass this time.", + "default": "You did not pass this time.", + "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", + "description": "This text will be displayed above the score if the user has failed the quiz." }, { - "label": "Commento quiz fallito", - "description": "Questo commento verrà visualizzato dopo il punteggio se l'utente non ha superato il quiz." + "englishLabel": "Failed comment", + "label": "Failed comment", + "englishDefault": "Have another try!", + "default": "Have another try!", + "englishDescription": "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": "Etichetta pulsante Soluzione", - "description": "Testo per il pulsante Soluzione." + "englishLabel": "Solution button label", + "label": "Solution button label", + "englishDefault": "Show solution", + "default": "Show solution", + "englishDescription": "Text for the solution button.", + "description": "Text for the solution button." }, { - "label": "Etichetta pulsante Riprova", - "description": "Testo per il pulsante Riprova." + "englishLabel": "Retry button label", + "label": "Retry button label", + "englishDefault": "Retry", + "default": "Retry", + "englishDescription": "Text for the retry button.", + "description": "Text for the retry button." }, { - "label": "Testo pulsante Fine" + "englishLabel": "Finish button text", + "label": "Finish button text", + "englishDefault": "Finish", + "default": "Finish" }, { - "label": "Visualizza il video prima dei risultati del quiz" + "englishLabel": "Display video before quiz results", + "label": "Display video before quiz results" }, { - "label": "Abilita pulsante Salta video" + "englishLabel": "Enable skip video button", + "label": "Enable skip video button" }, { - "label": "Etichetta pulsante Salta video" + "englishLabel": "Skip video button label", + "label": "Skip video button label", + "englishDefault": "Skip video", + "default": "Skip video" }, { - "label": "Video di superamento quiz", - "description": "Questo video verrà visualizzato sopra il punteggio se l'utente ha superato con successo il quiz." + "englishLabel": "Passed video", + "label": "Passed video", + "englishDescription": "This video will be played if the user successfully passed the quiz.", + "description": "This video will be played if the user successfully passed the quiz." }, { - "label": "Video quiz fallito", - "description": "Questo testo verrà visualizzato se l'utente non ha superato il quiz." + "englishLabel": "Fail video", + "label": "Fail video", + "englishDescription": "This video will be played if the user failes the quiz.", + "description": "This video will be played if the user failes the quiz." } ] }, { - "label": "Impostazioni per i pulsanti \"Mostra soluzione\" e \"Riprova\".", + "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Settings for \"Show solution\" and \"Retry\" buttons", "fields": [ { + "englishLabel": "Override \"Show Solution\" button", "label": "Override \"Show Solution\" button", + "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { + "englishLabel": "Enabled", "label": "Enabled" }, { + "englishLabel": "Disabled", "label": "Disabled" } ] }, { + "englishLabel": "Override \"Retry\" button", "label": "Override \"Retry\" button", + "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { + "englishLabel": "Enabled", "label": "Enabled" }, { + "englishLabel": "Disabled", "label": "Disabled" } ] diff --git a/language/nb.json b/language/nb.json index e436438..0f08875 100644 --- a/language/nb.json +++ b/language/nb.json @@ -1,213 +1,320 @@ { "semantics": [ { + "englishLabel": "Quiz introduction", "label": "Introduksjon", "fields": [ { + "englishLabel": "Display introduction", "label": "Vis introduksjon" }, { + "englishLabel": "Title", "label": "Tittel", + "englishDescription": "This title will be displayed above the introduction text.", "description": "Tittel for intoduksjonssiden." }, { + "englishLabel": "Introduction text", "label": "Introduksjonstekst", + "englishDescription": "This text will be displayed before the quiz starts.", "description": "Denne teksten vises før spørsmålssettet starter." }, { + "englishLabel": "Start button text", "label": "Tekst til \"Start\" knappen", + "englishDefault": "Start Quiz", "default": "Start" }, { + "englishLabel": "Background image", "label": "Bakgrunnsbilde", + "englishDescription": "An optional background image for the introduction.", "description": "Bakgrunnsbilde for introduksjonssiden" } ] }, { + "englishLabel": "Background image", "label": "Bakgrunnsbilde", + "englishDescription": "An optional background image for the Question set.", "description": "Bakgrunnsbilde for spørsmålssettet(ikke obligatorisk)." }, { + "englishLabel": "Progress indicator", "label": "Fremdriftsindikator", + "englishDescription": "Question set progress indicator style.", "description": "Velg om fremdriften skal angis som prikker(få spørsmål) eller som tekst(mange spørsmål).", "options": [ { + "englishLabel": "Textual", "label": "Angi fremdrift med tekst" }, { + "englishLabel": "Dots", "label": "Angi fremdrift med prikker" } ] }, { + "englishLabel": "Pass percentage", "label": "Krav for å bestå", + "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "Antall prosent riktig som kreves for å bestå spørsmålssettet." }, { + "englishLabel": "Questions", "label": "Spørsmål", + "widgets": [ + { + "englishLabel": "Default", + "label": "Default" + }, + { + "englishLabel": "Textual", + "label": "Textual" + } + ], + "englishEntity": "question", "entity": "spørsmål", "field": { + "englishLabel": "Question type", "label": "Spørsmål", - "fields": [ - { - "label": "Spørsmålstype", - "description": "Velg spørsmålstype for dette spørsmålet" - } - ] + "englishDescription": "Library for this question.", + "description": "Library for this question." } }, { + "englishLabel": "Interface texts in quiz", "label": "Ledetekster", "fields": [ { + "englishLabel": "Back button", "label": "Forrige-knappen", + "englishDefault": "Previous question", "default": "Forrige spørsmål" }, { + "englishLabel": "Next button", "label": "Neste-knappen", + "englishDefault": "Next question", "default": "Neste spørsmål" }, { + "englishLabel": "Finish button", "label": "Avslutt-knappen", + "englishDefault": "Finish", "default": "Avslutt" }, { + "englishLabel": "Progress text", "label": "Fremdriftstekst", + "englishDescription": "Text used if textual progress is selected.", "description": "Tekst brukt hvis tekstlig angivelse av fremdrift er valgt. Variabler: @current og @total", + "englishDefault": "Question: @current of @total questions", "default": "Deloppgave @current av @total" }, { + "englishLabel": "Label for jumping to a certain question", "label": "Merkelapp ved hopping til spørsmål", + "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "Du må bruke plassholderen '%d' istedenfor spørsmålsnummeret, og '%total' istedet for totalt antall spørsmål.", + "englishDefault": "Question %d of %total", "default": "Spørsmål %d av %total" }, { + "englishLabel": "Copyright dialog question label", "label": "Opphavsrett spørsmål-etikett", + "englishDefault": "Question", "default": "Spørsmål" }, { + "englishLabel": "Readspeaker progress", "label": "Fremdriftstekst for hjelpemiddelteknologi", + "englishDescription": "May use @current and @total question variables", "description": "Kan bruke @current og @total variabler", + "englishDefault": "Question @current of @total", "default": "Deloppgave @current av @total" }, { + "englishLabel": "Unanswered question text", "label": "Ikke svart på spørsmål-tekst", + "englishDefault": "Unanswered", "default": "Ikke svart" }, { + "englishLabel": "Answered question text", "label": "Svart på spørsmål-tekst", + "englishDefault": "Answered", "default": "Svar avgitt" }, { + "englishLabel": "Current question text", "label": "Aktivt spørsmål-tekst", + "englishDefault": "Current question", "default": "Aktivt spørsmål" } ] }, { + "englishLabel": "Disable backwards navigation", "label": "Slå av bakoverknapp", + "englishDescription": "This option will only allow you to move forward in Question Set", "description": "Slå på for å nekte å gå tilbake i Question Set" }, { - "label": "Spørsmålssett avslutning", + "englishLabel": "Randomize questions", + "label": "Random spørsmåler", + "englishDescription": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." + }, + { + "englishLabel": "Quiz finished", + "label": "Innstillinger for «Fasit»- og «Prøv igjen»-knapp", "fields": [ { - "label": "Vis resultater" + "englishLabel": "Display results", + "label": "Overstyr «Fasit»-knapp" }, { - "label": "Melding når resultater ikke vises", - "description": "Teksten vises på avslutnings-siden når resultater ikke vises", - "default": "Ferdig" + "englishLabel": "No results message", + "label": "Overstyr «Prøv igjen»-knapp", + "englishDescription": "Text displayed on end page when \"Display results\" is disabled", + "description": "Dette valget avgjør om «Prøv igjen»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", + "englishDefault": "Finished", + "default": "Finished" }, { - "label": "Overskrift over tilbakemeldinger", - "default": "Resultat:", - "description": "Denne overskriften vises over tilbakemeldingene på slutten av spørsmålssettet." + "englishLabel": "Feedback heading", + "label": "Feedback heading", + "englishDefault": "Your result:", + "default": "Your result:", + "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", + "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." }, { - "label": "Poengvisningstekst", - "default": "@score av @total poeng", - "description": "Tekst som viser brukerens oppnådde poeng. \"@score\" blir erstattet med utregnet resultat, \"@total\" blir erstattet med høyest mulige resultat." + "englishLabel": "Score display text", + "label": "Score display text", + "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "englishDefault": "You got @score of @total points", + "default": "You got @score of @total points" }, { - "label": "Tittel ved bestått", - "default": "Gratulerer!", - "description": "Denne tittelen vises dersom brukeren har bestått spørsmålssettet." + "englishLabel": "Quiz passed greeting", + "label": "Quiz passed greeting", + "englishDefault": "Congratulations!", + "default": "Congratulations!", + "englishDescription": "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." }, { - "label": "Kommentar ved bestått", - "default": "Dette gikk bra.", - "description": "Denne kommentaren vises dersom brukeren har bestått spørsmålssettet." + "englishLabel": "Passed comment", + "label": "Passed comment", + "englishDefault": "You did very well!", + "default": "You did very well!", + "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", + "description": "This comment will be displayed after the score if the user has successfully passed the quiz." }, { - "label": "Tittel ved ikke bestått", - "default": "Dette gikk ikke så bra!", - "description": "Denne tittelen vises dersom brukeren ikke har bestått spørsmålssettet." + "englishLabel": "Quiz failed title", + "label": "Quiz failed title", + "englishDefault": "You did not pass this time.", + "default": "You did not pass this time.", + "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", + "description": "This text will be displayed above the score if the user has failed the quiz." }, { - "label": "Kommentar ved ikke bestått", - "default": "Det er litt mange feil her. Prøv igjen!", - "description": "Denne kommentaren vises dersom brukeren ikke har bestått spørsmålssettet." + "englishLabel": "Failed comment", + "label": "Failed comment", + "englishDefault": "Have another try!", + "default": "Have another try!", + "englishDescription": "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": "Tekst til \"Fasit\" knapp", - "default": "Gå gjennom fasit", - "description": "" + "englishLabel": "Solution button label", + "label": "Solution button label", + "englishDefault": "Show solution", + "default": "Show solution", + "englishDescription": "Text for the solution button.", + "description": "Text for the solution button." }, { - "label": "Tekst til \"Prøv igjen\" knapp", - "default": "Prøv igjen!", - "description": "" + "englishLabel": "Retry button label", + "label": "Retry button label", + "englishDefault": "Retry", + "default": "Retry", + "englishDescription": "Text for the retry button.", + "description": "Text for the retry button." }, { - "label": "Tekst til \"Avslutt\" knapp", - "default": "Avslutt" + "englishLabel": "Finish button text", + "label": "Finish button text", + "englishDefault": "Finish", + "default": "Finish" }, { - "label": "Vis video før resultatene" + "englishLabel": "Display video before quiz results", + "label": "Display video before quiz results" }, { - "label": "Tillat å hoppe over video" + "englishLabel": "Enable skip video button", + "label": "Enable skip video button" }, { - "label": "Tekst til \"Hopp over video\" knapp", - "default": "Hopp over" + "englishLabel": "Skip video button label", + "label": "Skip video button label", + "englishDefault": "Skip video", + "default": "Skip video" }, { - "label": "Video ved bestått", - "description": "Denne videoen vil bli vist dersom brukeren består spørsmålssettet." + "englishLabel": "Passed video", + "label": "Passed video", + "englishDescription": "This video will be played if the user successfully passed the quiz.", + "description": "This video will be played if the user successfully passed the quiz." }, { - "label": "Video ved ikke bestått", - "description": "Denne videoen vil bli vist dersom brukeren ikke består spørsmålssettet." + "englishLabel": "Fail video", + "label": "Fail video", + "englishDescription": "This video will be played if the user failes the quiz.", + "description": "This video will be played if the user failes the quiz." } ] }, { - "label": "Innstillinger for «Fasit»- og «Prøv igjen»-knapp", + "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Settings for \"Show solution\" and \"Retry\" buttons", "fields": [ { - "label": "Overstyr «Fasit»-knapp", - "description": "Dette valget avgjør om «Fasit»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", + "englishLabel": "Override \"Show Solution\" button", + "label": "Override \"Show Solution\" button", + "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", + "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "label": "Aktivert" + "englishLabel": "Enabled", + "label": "Enabled" }, { - "label": "Deaktivert" + "englishLabel": "Disabled", + "label": "Disabled" } ] }, { - "label": "Overstyr «Prøv igjen»-knapp", - "description": "Dette valget avgjør om «Prøv igjen»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", + "englishLabel": "Override \"Retry\" button", + "label": "Override \"Retry\" button", + "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", + "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "label": "Aktivert" + "englishLabel": "Enabled", + "label": "Enabled" }, { - "label": "Deaktivert" + "englishLabel": "Disabled", + "label": "Disabled" } ] } diff --git a/language/nn.json b/language/nn.json index bf63599..a2ec7df 100644 --- a/language/nn.json +++ b/language/nn.json @@ -1,213 +1,320 @@ { "semantics": [ { + "englishLabel": "Quiz introduction", "label": "Introduksjon", "fields": [ { + "englishLabel": "Display introduction", "label": "Vis introduksjon" }, { + "englishLabel": "Title", "label": "Tittel", + "englishDescription": "This title will be displayed above the introduction text.", "description": "Tittel for intoduksjonssiden." }, { + "englishLabel": "Introduction text", "label": "Introduksjonstekst", + "englishDescription": "This text will be displayed before the quiz starts.", "description": "Denne teksten vises før spørsmålssettet starter." }, { + "englishLabel": "Start button text", "label": "Tekst til \"Start\" knappen", + "englishDefault": "Start Quiz", "default": "Start" }, { + "englishLabel": "Background image", "label": "Bakgrunnsbilde", + "englishDescription": "An optional background image for the introduction.", "description": "Bakgrunnsbilde for introduksjonssiden" } ] }, { + "englishLabel": "Background image", "label": "Bakgrunnsbilde", + "englishDescription": "An optional background image for the Question set.", "description": "Bakgrunnsbilde for spørsmålssettet(ikke obligatorisk)." }, { + "englishLabel": "Progress indicator", "label": "Fremdriftsindikator", + "englishDescription": "Question set progress indicator style.", "description": "Velg om fremdriften skal angis som prikker(få spørsmål) eller som tekst(mange spørsmål).", "options": [ { + "englishLabel": "Textual", "label": "Angi fremdrift med tekst" }, { + "englishLabel": "Dots", "label": "Angi fremdrift med prikker" } ] }, { + "englishLabel": "Pass percentage", "label": "Krav for å bestå", + "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "Antall prosent riktig som kreves for å bestå spørsmålssettet." }, { + "englishLabel": "Questions", "label": "Spørsmål", + "widgets": [ + { + "englishLabel": "Default", + "label": "Default" + }, + { + "englishLabel": "Textual", + "label": "Textual" + } + ], + "englishEntity": "question", "entity": "spørsmål", "field": { + "englishLabel": "Question type", "label": "Spørsmål", - "fields": [ - { - "label": "Spørsmålstype", - "description": "Velg spørsmålstype for dette spørsmålet" - } - ] + "englishDescription": "Library for this question.", + "description": "Library for this question." } }, { + "englishLabel": "Interface texts in quiz", "label": "Ledetekster", "fields": [ { + "englishLabel": "Back button", "label": "Førre-knappen", + "englishDefault": "Previous question", "default": "Førre" }, { + "englishLabel": "Next button", "label": "Neste-knappen", + "englishDefault": "Next question", "default": "Neste" }, { + "englishLabel": "Finish button", "label": "Avslutt-knappen", + "englishDefault": "Finish", "default": "Avslutt" }, { + "englishLabel": "Progress text", "label": "Fremdriftstekst", + "englishDescription": "Text used if textual progress is selected.", "description": "Tekst brukt hvis tekstlig angivelse av fremdrift er valgt. Variabler: @current og @total", + "englishDefault": "Question: @current of @total questions", "default": "Deloppgåve @current av @total" }, { + "englishLabel": "Label for jumping to a certain question", "label": "Merkelapp ved hopping til spørsmål", + "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "Du må bruke plassholderen '%d' istedenfor spørsmålsnummeret, og '%total' istedet for totalt antall spørsmål.", + "englishDefault": "Question %d of %total", "default": "Spørsmål %d av %total" }, { + "englishLabel": "Copyright dialog question label", "label": "Opphavsrett spørsmål-etikett", + "englishDefault": "Question", "default": "Spørsmål" }, { + "englishLabel": "Readspeaker progress", "label": "Fremdriftstekst for hjelpemiddelteknologi", + "englishDescription": "May use @current and @total question variables", "description": "Kan bruke @current og @total variabler", + "englishDefault": "Question @current of @total", "default": "Deloppgave @current av @total" }, { + "englishLabel": "Unanswered question text", "label": "Ikke svart på spørsmål-tekst", + "englishDefault": "Unanswered", "default": "Ikke svart" }, { + "englishLabel": "Answered question text", "label": "Svart på spørsmål-tekst", + "englishDefault": "Answered", "default": "Svar avgitt" }, { + "englishLabel": "Current question text", "label": "Aktivt spørsmål-tekst", + "englishDefault": "Current question", "default": "Aktivt spørsmål" } ] }, { + "englishLabel": "Disable backwards navigation", "label": "Slå av bakoverknapp", + "englishDescription": "This option will only allow you to move forward in Question Set", "description": "Slå på for å nekte å gå tilbake i Question Set" }, { - "label": "Spørsmålssett avslutning", + "englishLabel": "Randomize questions", + "label": "Random spørsmåler", + "englishDescription": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." + }, + { + "englishLabel": "Quiz finished", + "label": "Innstillinger for «Fasit»- og «Prøv igjen»-knapp", "fields": [ { - "label": "Vis resultat" + "englishLabel": "Display results", + "label": "Overstyr «Fasit»-knapp" }, { - "label": "Melding når resultater ikke vises", - "description": "Teksten vises på avslutnings-siden når resultater ikke vises", - "default": "Ferdig" + "englishLabel": "No results message", + "label": "Overstyr «Prøv igjen»-knapp", + "englishDescription": "Text displayed on end page when \"Display results\" is disabled", + "description": "Dette valget avgjør om «Prøv igjen»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", + "englishDefault": "Finished", + "default": "Finished" }, { - "label": "Overskrift over tilbakemeldingar", - "default": "Resultat:", - "description": "Denne overskriften vises over tilbakemeldingane på slutten av spørsmålssettet." + "englishLabel": "Feedback heading", + "label": "Feedback heading", + "englishDefault": "Your result:", + "default": "Your result:", + "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", + "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." }, { - "label": "Poengvisningstekst", - "default": "@score av @total poeng", - "description": "Tekst som viser brukerens oppnådde poeng. \"@score\" blir erstatta med utregna resultat, \"@total\" blir erstatta med høgest mulig resultat." + "englishLabel": "Score display text", + "label": "Score display text", + "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", + "englishDefault": "You got @score of @total points", + "default": "You got @score of @total points" }, { - "label": "Tittel ved bestått", - "default": "Gratulerer!", - "description": "Denne tittelen vises dersom brukeren har bestått spørsmålssettet." + "englishLabel": "Quiz passed greeting", + "label": "Quiz passed greeting", + "englishDefault": "Congratulations!", + "default": "Congratulations!", + "englishDescription": "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." }, { - "label": "Kommentar ved bestått", - "default": "Dette gjekk bra.", - "description": "Denne kommentaren vises dersom brukaren har bestått spørsmålssettet." + "englishLabel": "Passed comment", + "label": "Passed comment", + "englishDefault": "You did very well!", + "default": "You did very well!", + "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", + "description": "This comment will be displayed after the score if the user has successfully passed the quiz." }, { - "label": "Tittel ved ikkje bestått", - "default": "Dette gjekk ikkje så bra!", - "description": "Denne tittelen visast dersom brukaren ikkje har bestått spørsmålssettet." + "englishLabel": "Quiz failed title", + "label": "Quiz failed title", + "englishDefault": "You did not pass this time.", + "default": "You did not pass this time.", + "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", + "description": "This text will be displayed above the score if the user has failed the quiz." }, { - "label": "Kommentar ved ikkje bestått", - "default": "Det er litt mange feil her. Prøv igjen!", - "description": "Denne kommentaren vises dersom brukaren ikkje har bestått spørsmålssettet." + "englishLabel": "Failed comment", + "label": "Failed comment", + "englishDefault": "Have another try!", + "default": "Have another try!", + "englishDescription": "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": "Tekst til \"Fasit\" knapp", - "default": "Vis fasit", - "description": "" + "englishLabel": "Solution button label", + "label": "Solution button label", + "englishDefault": "Show solution", + "default": "Show solution", + "englishDescription": "Text for the solution button.", + "description": "Text for the solution button." }, { - "label": "Tekst til \"Prøv igjen\" knapp", - "default": "Prøv igjen", - "description": "" + "englishLabel": "Retry button label", + "label": "Retry button label", + "englishDefault": "Retry", + "default": "Retry", + "englishDescription": "Text for the retry button.", + "description": "Text for the retry button." }, { - "label": "Tekst til \"Avslutt\" knapp", - "default": "Avslutt" + "englishLabel": "Finish button text", + "label": "Finish button text", + "englishDefault": "Finish", + "default": "Finish" }, { - "label": "Vis video før resultata" + "englishLabel": "Display video before quiz results", + "label": "Display video before quiz results" }, { - "label": "Tillat å hoppe over video" + "englishLabel": "Enable skip video button", + "label": "Enable skip video button" }, { - "label": "Tekst til \"Hopp over video\" knapp", - "default": "Hopp over" + "englishLabel": "Skip video button label", + "label": "Skip video button label", + "englishDefault": "Skip video", + "default": "Skip video" }, { - "label": "Video ved bestått", - "description": "Denne videoen vil bli vist dersom brukaren består spørsmålssettet." + "englishLabel": "Passed video", + "label": "Passed video", + "englishDescription": "This video will be played if the user successfully passed the quiz.", + "description": "This video will be played if the user successfully passed the quiz." }, { - "label": "Video ved ikke bestått", - "description": "Denne videoen vil bli vist dersom brukaren ikkje består spørsmålssettet." + "englishLabel": "Fail video", + "label": "Fail video", + "englishDescription": "This video will be played if the user failes the quiz.", + "description": "This video will be played if the user failes the quiz." } ] }, { - "label": "Innstillinger for «Fasit»- og «Prøv igjen»-knapp", + "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Settings for \"Show solution\" and \"Retry\" buttons", "fields": [ { - "label": "Overstyr «Fasit»-knapp", - "description": "Dette valget avgjør om «Fasit»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", + "englishLabel": "Override \"Show Solution\" button", + "label": "Override \"Show Solution\" button", + "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", + "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "label": "Aktivert" + "englishLabel": "Enabled", + "label": "Enabled" }, { - "label": "Deaktivert" + "englishLabel": "Disabled", + "label": "Disabled" } ] }, { - "label": "Overstyr «Prøv igjen»-knapp", - "description": "Dette valget avgjør om «Prøv igjen»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", + "englishLabel": "Override \"Retry\" button", + "label": "Override \"Retry\" button", + "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", + "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "label": "Aktivert" + "englishLabel": "Enabled", + "label": "Enabled" }, { - "label": "Deaktivert" + "englishLabel": "Disabled", + "label": "Disabled" } ] } From a9d5c9b9a350f468c4b0ada4f9f9b66e52eea0bc Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Tue, 18 Oct 2016 15:06:44 +0200 Subject: [PATCH 18/62] Stop multiple classes being added to each question [HFP-56] --- js/questionset.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index fcc3e62..b0be1d5 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -135,7 +135,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { var renderSolutions = false; var showingSolutions = false; contentData = contentData || {}; - var answerIndex; // Bring question set up to date when resuming if (contentData.previousState) { @@ -200,20 +199,20 @@ H5P.QuestionSet = function (options, contentId, contentData) { /** * Randomizes elements in an array and updates a map of the order - * @param elements - * @param map - * @return {array} + * @param {array} elements + * @param {array} map + * @return {Object.} elements and indexes */ var randomizeElements = function (elements, map) { // Save the original order of the elements in a nested array [[element1,0],[element2,1]... - var tuples = elements.map(function(object, index) { return [object, index] }); + var elementsAndIndexes = elements.map(function(object, index) { return [object, index] }); - tuples = H5P.shuffleArray(tuples); + elementsAndIndexes = H5P.shuffleArray(elementsAndIndexes); // Retrieve elements and indexes - elements = tuples.map(d => d[0]); - map = tuples.map(d => d[1]); + elements = elementsAndIndexes.map(d => d[0]); + map = elementsAndIndexes.map(d => d[1]); return { elements:elements, @@ -225,6 +224,8 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Randomize questions only on instantiation if (params.randomQuestions && contentData.previousState === undefined) { + $('.question-container.h5p-question', $myDom).attr('class',''); + var result = randomizeElements(questionInstances,questionOrder); questionInstances = result.elements; questionOrder = result.map; @@ -457,6 +458,10 @@ H5P.QuestionSet = function (options, contentId, contentData) { var question = questionInstances[i]; + // Make sure styles are not being added twice + var lastClass = $('.question-container:eq(' + i + ')', $myDom).attr("class").split(' ').pop(); + $('.question-container:eq(' + i + ')', $myDom).removeClass(lastClass); + question.attach($('.question-container:eq(' + i + ')', $myDom)); //Show buttons if necessary From 96218e2a9bc747d332c401202a33ff5cf9173b09 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Tue, 18 Oct 2016 15:11:22 +0200 Subject: [PATCH 19/62] Update language files [HFP-56] --- language/ar.json | 187 ++++++++--------------------------------- language/de.json | 180 +++++++++------------------------------ language/fr.json | 199 +++++++++++-------------------------------- language/it.json | 185 ++++++++-------------------------------- language/nb.json | 215 ++++++++++++----------------------------------- language/nn.json | 215 ++++++++++++----------------------------------- 6 files changed, 273 insertions(+), 908 deletions(-) diff --git a/language/ar.json b/language/ar.json index 7dd3b11..db32167 100644 --- a/language/ar.json +++ b/language/ar.json @@ -1,319 +1,204 @@ { "semantics": [ { - "englishLabel": "Quiz introduction", "label": "مقدمة المسابقة", "fields": [ { - "englishLabel": "Display introduction", "label": "عرض المقدمة" }, { - "englishLabel": "Title", "label": "العنوان", - "englishDescription": "This title will be displayed above the introduction text.", "description": "سيتم عرض هذا العنوان فوق النص المقدمة" }, { - "englishLabel": "Introduction text", "label": "مقدمة النص", - "englishDescription": "This text will be displayed before the quiz starts.", "description": "سيتم عرض هذا النص قبل أن تبدأ هذه المسابقة" }, { - "englishLabel": "Start button text", - "label": "بدء زر النص", - "englishDefault": "Start Quiz", - "default": "Start Quiz" + "label": "بدء زر النص" }, { - "englishLabel": "Background image", "label": "صورة الخلفية", - "englishDescription": "An optional background image for the introduction.", "description": "إدخال صورة خلفية اختيارية" } ] }, { - "englishLabel": "Background image", "label": "صورة الخلفية", - "englishDescription": "An optional background image for the Question set.", "description": "صورة خلفية اختيارية لأسئلة" }, { - "englishLabel": "Progress indicator", "label": "مؤشر التقدم", - "englishDescription": "Question set progress indicator style.", "description": "أسئلة لتعيين نمط مؤشر التقدم", "options": [ { - "englishLabel": "Textual", "label": "النصية" }, { - "englishLabel": "Dots", "label": "النقاط" } ] }, { - "englishLabel": "Pass percentage", "label": "نسبة النجاح", - "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "النسبة المئوية لمجموع النقاط المطلوبة لاجتياز الاختبار" }, { - "englishLabel": "Questions", "label": "الأسئلة", "widgets": [ { - "englishLabel": "Default", "label": "الافتراضي" }, { - "englishLabel": "Textual", "label": "النصية" } ], - "englishEntity": "question", "entity": "السؤال", "field": { - "englishLabel": "Question type", "label": "نوع السؤال", - "englishDescription": "Library for this question.", "description": "مكتبة لهذا السؤال" } }, { - "englishLabel": "Interface texts in quiz", "label": "واجهة النصوص لهذه المسابقة", "fields": [ { - "englishLabel": "Back button", - "label": "زر الرجوع", - "englishDefault": "Previous question", - "default": "Previous question" + "label": "زر الرجوع" }, { - "englishLabel": "Next button", - "label": "زر التقدم", - "englishDefault": "Next question", - "default": "Next question" + "label": "زر التقدم" }, { - "englishLabel": "Finish button", - "label": "زر الانتهاء", - "englishDefault": "Finish", - "default": "Finish" + "label": "زر الانتهاء" }, { - "englishLabel": "Progress text", "label": "نص التقدم", - "englishDescription": "Text used if textual progress is selected.", - "description": "النص المستخدم إذا تم تحديد التقدم نصيا", - "englishDefault": "Question: @current of @total questions", - "default": "Question: @current of @total questions" + "description": "النص المستخدم إذا تم تحديد التقدم نصيا" }, { - "englishLabel": "Label for jumping to a certain question", "label": "Label for jumping to a certain question", - "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", - "englishDefault": "Question %d of %total", "default": "Question %d of %total" }, { - "englishLabel": "Copyright dialog question label", "label": "Copyright dialog question label", - "englishDefault": "Question", "default": "Question" }, { - "englishLabel": "Readspeaker progress", "label": "Readspeaker progress", - "englishDescription": "May use @current and @total question variables", "description": "May use @current and @total question variables", - "englishDefault": "Question @current of @total", "default": "Question @current of @total" }, { - "englishLabel": "Unanswered question text", "label": "Unanswered question text", - "englishDefault": "Unanswered", "default": "Unanswered" }, { - "englishLabel": "Answered question text", "label": "Answered question text", - "englishDefault": "Answered", "default": "Answered" }, { - "englishLabel": "Current question text", "label": "Current question text", - "englishDefault": "Current question", "default": "Current question" } ] }, { - "englishLabel": "Disable backwards navigation", "label": "Disable backwards navigation", - "englishDescription": "This option will only allow you to move forward in Question Set", "description": "This option will only allow you to move forward in Question Set" }, { - "englishLabel": "Randomize questions", "label": "Randomize questions", - "englishDescription": "Enable to randomize the order of questions on display.", - "description": "Enable to randomize the order of questions on display." + "description": "Enable to randomize the order of questions on display.", }, { - "englishLabel": "Quiz finished", - "label": "إعدادات زر \"مشاهدة حل \" وزر \"إعادة المحاولة\" ", + "label": "انتهاء المسابقة", "fields": [ { - "englishLabel": "Display results", - "label": "Override \"Show Solution\" button" + "label": "عرض النتائج" }, { - "englishLabel": "No results message", - "label": "Override \"Retry\" button", - "englishDescription": "Text displayed on end page when \"Display results\" is disabled", - "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", - "englishDefault": "Finished", + "label": "No results message", + "description": "Text displayed on end page when \"Display results\" is disabled", "default": "Finished" }, { - "englishLabel": "Feedback heading", - "label": "Feedback heading", - "englishDefault": "Your result:", - "default": "Your result:", - "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", - "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." + "label": "نص راس الملاحظات", + "description": "سيتم عرض هذا العنوان في نهاية هذه المسابقة حيثما أجاب المستخدم على جميع الأسئلة المستعملة" }, { - "englishLabel": "Score display text", - "label": "Score display text", - "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "englishDefault": "You got @score of @total points", - "default": "You got @score of @total points" + "label": "عرض نص النتيجة", + "description": "النص يستخدم لعرض مجموع النقاط للمستخدم \"@score\" سوف تحل محلها النتيجة المحسوبة, \"@total\" حسب أقصى درجة ممكنة" }, { - "englishLabel": "Quiz passed greeting", - "label": "Quiz passed greeting", - "englishDefault": "Congratulations!", - "default": "Congratulations!", - "englishDescription": "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." + "label": "تعليق النجاح بالمسابقة", + "description": "سيتم عرض هذا النص أعلاه النتيجة إذا انقضى المستخدم بنجاح هذه المسابقة" }, { - "englishLabel": "Passed comment", - "label": "Passed comment", - "englishDefault": "You did very well!", - "default": "You did very well!", - "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", - "description": "This comment will be displayed after the score if the user has successfully passed the quiz." + "label": "ملاحظة النجاح", + "description": "سيتم عرض هذه الملاحظة بعد النتيجة إذا انقضى المستخدم بنجاح هذه المسابقة" }, { - "englishLabel": "Quiz failed title", - "label": "Quiz failed title", - "englishDefault": "You did not pass this time.", - "default": "You did not pass this time.", - "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", - "description": "This text will be displayed above the score if the user has failed the quiz." + "label": "تعليق الرسوب بالمسابقة", + "description": "سيتم عرض هذا النص أعلاه النتيجة إذا كان المستخدم قد فشلت في المسابقة" }, { - "englishLabel": "Failed comment", - "label": "Failed comment", - "englishDefault": "Have another try!", - "default": "Have another try!", - "englishDescription": "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": "ملاحظة الرسوب", + "description": "سيتم عرض هذه الملاحظة بعد النتيجة إذا كان المستخدم قد فشلت في المسابقة" }, { - "englishLabel": "Solution button label", - "label": "Solution button label", - "englishDefault": "Show solution", - "default": "Show solution", - "englishDescription": "Text for the solution button.", - "description": "Text for the solution button." + "label": "تسمية زر اظهار الحل", + "description": "نص زر الحل" }, { - "englishLabel": "Retry button label", - "label": "Retry button label", - "englishDefault": "Retry", - "default": "Retry", - "englishDescription": "Text for the retry button.", - "description": "Text for the retry button." + "label": "تسمية زر إعادة المحاولة", + "description": "نص زر إعادة المحاولة" }, { - "englishLabel": "Finish button text", - "label": "Finish button text", - "englishDefault": "Finish", - "default": "Finish" + "label": "نص زر الانتهاء" }, { - "englishLabel": "Display video before quiz results", - "label": "Display video before quiz results" + "label": "عرض الفيديو قبل نتائج المسابقة" }, { - "englishLabel": "Enable skip video button", - "label": "Enable skip video button" + "label": "تفعيل زر تخطى الفيديو" }, { - "englishLabel": "Skip video button label", - "label": "Skip video button label", - "englishDefault": "Skip video", - "default": "Skip video" + "label": "تسمية زر تخطى الفيديو" }, { - "englishLabel": "Passed video", - "label": "Passed video", - "englishDescription": "This video will be played if the user successfully passed the quiz.", - "description": "This video will be played if the user successfully passed the quiz." + "label": "فيديو النجاح بالمسابقة", + "description": "سيتم تشغيل هذا الفيديو إذا كان المستخدم ناجحا بهذه المسابقة" }, { - "englishLabel": "Fail video", - "label": "Fail video", - "englishDescription": "This video will be played if the user failes the quiz.", - "description": "This video will be played if the user failes the quiz." + "label": "فيديو الرسوب بالمسابقة", + "description": "سيتم تشغيل هذا الفيديو إذا كان المستخدم راسبا بهذه المسابقة" } ] }, { - "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", - "label": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "إعدادات زر \"مشاهدة حل \" وزر \"إعادة المحاولة\" ", "fields": [ { - "englishLabel": "Override \"Show Solution\" button", "label": "Override \"Show Solution\" button", - "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "englishLabel": "Enabled", "label": "Enabled" }, { - "englishLabel": "Disabled", "label": "Disabled" } ] }, { - "englishLabel": "Override \"Retry\" button", "label": "Override \"Retry\" button", - "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "englishLabel": "Enabled", "label": "Enabled" }, { - "englishLabel": "Disabled", "label": "Disabled" } ] @@ -321,4 +206,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/language/de.json b/language/de.json index a08d83d..7c6d5e8 100644 --- a/language/de.json +++ b/language/de.json @@ -1,319 +1,219 @@ { "semantics": [ { - "englishLabel": "Quiz introduction", "label": "Quiz Einführung", "fields": [ { - "englishLabel": "Display introduction", "label": "Zeige Einführung" }, { - "englishLabel": "Title", "label": "Titel", - "englishDescription": "This title will be displayed above the introduction text.", "description": "Dieser Titel wird über dem Einführungstext angezeigt." }, { - "englishLabel": "Introduction text", "label": "Einführungstext", - "englishDescription": "This text will be displayed before the quiz starts.", "description": "Dieser Text wird angezeigt, bevor das Quiz anfängt." }, { - "englishLabel": "Start button text", "label": "Start Button Text", - "englishDefault": "Start Quiz", "default": "Starte Quiz" }, { - "englishLabel": "Background image", "label": "Hintergrundbild", - "englishDescription": "An optional background image for the introduction.", "description": "Ein optionales Hintergrundbild für die Einführung." } ] }, { - "englishLabel": "Background image", "label": "Hintergrundbild", - "englishDescription": "An optional background image for the Question set.", "description": "Ein optionales Hintergrundbild für das Frage Set." }, { - "englishLabel": "Progress indicator", "label": "Fortschrittsanzeige", - "englishDescription": "Question set progress indicator style.", "description": "Anzeigestil für die Fortschrittsanzeige des Frage Sets.", "options": [ { - "englishLabel": "Textual", "label": "Text" }, { - "englishLabel": "Dots", "label": "Punkte" } ] }, { - "englishLabel": "Pass percentage", "label": "Prozent bearbeitet", - "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "Prozent der Gesamtpunkte sind notwendig um das Quiz zu bestehen." }, { - "englishLabel": "Questions", "label": "Fragen", "widgets": [ { - "englishLabel": "Default", "label": "Vorgabe" }, { - "englishLabel": "Textual", "label": "Text" } ], - "englishEntity": "question", "entity": "Frage", "field": { - "englishLabel": "Question type", "label": "Fragentyp", - "englishDescription": "Library for this question.", "description": "Bibliothek für diese Frage." } }, { - "englishLabel": "Interface texts in quiz", "label": "Anzeigetexte im Quiz", "fields": [ { - "englishLabel": "Back button", "label": "Rückwärts Button", - "englishDefault": "Previous question", "default": "vorherige" }, { - "englishLabel": "Next button", "label": "Weiter Button", - "englishDefault": "Next question", "default": "weiter" }, { - "englishLabel": "Finish button", "label": "Ende Button", - "englishDefault": "Finish", "default": "beenden" }, { - "englishLabel": "Progress text", "label": "Fortschrittstext", - "englishDescription": "Text used if textual progress is selected.", "description": "Verwendeter Text wenn Text Fortschrittsanzeige gewählt wurde.", - "englishDefault": "Question: @current of @total questions", "default": "Aktuelle Frage: @current von @total Fragen" }, { - "englishLabel": "Label for jumping to a certain question", "label": "Label for jumping to a certain question", - "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", - "englishDefault": "Question %d of %total", "default": "Question %d of %total" }, { - "englishLabel": "Copyright dialog question label", "label": "Copyright dialog question label", - "englishDefault": "Question", "default": "Question" }, { - "englishLabel": "Readspeaker progress", "label": "Readspeaker progress", - "englishDescription": "May use @current and @total question variables", "description": "May use @current and @total question variables", - "englishDefault": "Question @current of @total", "default": "Question @current of @total" }, { - "englishLabel": "Unanswered question text", "label": "Unanswered question text", - "englishDefault": "Unanswered", "default": "Unanswered" }, { - "englishLabel": "Answered question text", "label": "Answered question text", - "englishDefault": "Answered", "default": "Answered" }, { - "englishLabel": "Current question text", "label": "Current question text", - "englishDefault": "Current question", "default": "Current question" } ] }, { - "englishLabel": "Disable backwards navigation", "label": "Disable backwards navigation", - "englishDescription": "This option will only allow you to move forward in Question Set", "description": "This option will only allow you to move forward in Question Set" }, { - "englishLabel": "Randomize questions", "label": "Randomize questions", - "englishDescription": "Enable to randomize the order of questions on display.", - "description": "Enable to randomize the order of questions on display." + "description": "Enable to randomize the order of questions on display.", }, { - "englishLabel": "Quiz finished", - "label": "Einstellungen für \"Zeige die Lösung\" Button und \"Nochmal\".", + "label": "Quiz beendet", "fields": [ { - "englishLabel": "Display results", - "label": "Override \"Show Solution\" button" + "label": "Ergebnisanzeige" }, { - "englishLabel": "No results message", - "label": "Override \"Retry\" button", - "englishDescription": "Text displayed on end page when \"Display results\" is disabled", - "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", - "englishDefault": "Finished", + "label": "No results message", + "description": "Text displayed on end page when \"Display results\" is disabled", "default": "Finished" }, { - "englishLabel": "Feedback heading", - "label": "Feedback heading", - "englishDefault": "Your result:", - "default": "Your result:", - "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", - "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." + "label": "Kopfzeile Feedback", + "default": "Dein Ergebnis:", + "description": "diese Kopfzeile wird am Ende des Quiz angezeigt, wenn der Benutzer alle Fragen beantwortet hat." }, { - "englishLabel": "Score display text", - "label": "Score display text", - "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "englishDefault": "You got @score of @total points", - "default": "You got @score of @total points" + "label": "Punkt Anzeige Text", + "description": "Dieser Text wird verwendet um die Gesamtpunkte des Benutzers anzuzeigen. \"@score\" wird durch die errechneten Punkte ersetzt, \"@total\" wird durch die maximal erreichbaren Punkte ersetzt.", + "default": "Du hast @score Punkte von @total möglichen." }, { - "englishLabel": "Quiz passed greeting", - "label": "Quiz passed greeting", - "englishDefault": "Congratulations!", - "default": "Congratulations!", - "englishDescription": "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." + "label": "Quiz bestanden Mitteilung", + "default": "Gratulation!", + "description": "Dieser Text wird oberhalb der Punkte angezeigt, wenn der Benutzer das Quiz erfolgreich abgeschlossen hat." }, { - "englishLabel": "Passed comment", - "label": "Passed comment", - "englishDefault": "You did very well!", - "default": "You did very well!", - "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", - "description": "This comment will be displayed after the score if the user has successfully passed the quiz." + "label": "Bestanden Kommentar", + "default": "Gut gemacht!", + "description": "dieser Kommentar wird nach den Punkten angezeigt, wenn der Benutzer das Quiz erfolgreich bestanden hat." }, { - "englishLabel": "Quiz failed title", - "label": "Quiz failed title", - "englishDefault": "You did not pass this time.", - "default": "You did not pass this time.", - "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", - "description": "This text will be displayed above the score if the user has failed the quiz." + "label": "Quiz nicht bestanden Titel", + "default": "Diese Mal hast du nicht bestanden.", + "description": "dieser Text wird oberhalb der Punkte angezeigt, wenn der Benutzer das Quiz nicht bestanden hat." }, { - "englishLabel": "Failed comment", - "label": "Failed comment", - "englishDefault": "Have another try!", - "default": "Have another try!", - "englishDescription": "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": "Nicht bestanden Kommentar", + "default": "Versuche es noch einmal!", + "description": "Dieser Kommentar wird nach den Punkten angezeigt, wenn der Benutzer das Quiz nicht bestanden hat." }, { - "englishLabel": "Solution button label", - "label": "Solution button label", - "englishDefault": "Show solution", - "default": "Show solution", - "englishDescription": "Text for the solution button.", - "description": "Text for the solution button." + "label": "Lösungs Button Beschriftung", + "default": "Zeige die Lösung", + "description": "Text für den Lösungs Button." }, { - "englishLabel": "Retry button label", - "label": "Retry button label", - "englishDefault": "Retry", - "default": "Retry", - "englishDescription": "Text for the retry button.", - "description": "Text for the retry button." + "label": "Wiederholen Button Beschriftung", + "default": "Versuch es nochmal", + "description": "Text für den Wiederholen Button." }, { - "englishLabel": "Finish button text", - "label": "Finish button text", - "englishDefault": "Finish", - "default": "Finish" + "label": "Beende Button Text", + "default": "Beenden" }, { - "englishLabel": "Display video before quiz results", - "label": "Display video before quiz results" + "label": "Zeige Video vor den Quizergebnissen" }, { - "englishLabel": "Enable skip video button", - "label": "Enable skip video button" + "label": "Aktiviere Skip Video Button" }, { - "englishLabel": "Skip video button label", - "label": "Skip video button label", - "englishDefault": "Skip video", - "default": "Skip video" + "label": "Skip Video Button Beschriftung", + "default": "Überspringe Video" }, { - "englishLabel": "Passed video", - "label": "Passed video", - "englishDescription": "This video will be played if the user successfully passed the quiz.", - "description": "This video will be played if the user successfully passed the quiz." + "label": "Bestanden Video", + "description": "Dieses Video wird angezeigt, wenn der Benutzer das Quiz erfolgreich bestanden hat." }, { - "englishLabel": "Fail video", - "label": "Fail video", - "englishDescription": "This video will be played if the user failes the quiz.", - "description": "This video will be played if the user failes the quiz." + "label": "Nicht bestanden Video", + "description": "Dieses Video wird angezeigt, wenn der Benutzer das Quiz nicht bestanden hat." } ] }, { - "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", - "label": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Einstellungen für \"Zeige die Lösung\" Button und \"Nochmal\".", "fields": [ { - "englishLabel": "Override \"Show Solution\" button", "label": "Override \"Show Solution\" button", - "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "englishLabel": "Enabled", "label": "Enabled" }, { - "englishLabel": "Disabled", "label": "Disabled" } ] }, { - "englishLabel": "Override \"Retry\" button", "label": "Override \"Retry\" button", - "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "englishLabel": "Enabled", "label": "Enabled" }, { - "englishLabel": "Disabled", "label": "Disabled" } ] diff --git a/language/fr.json b/language/fr.json index 7c68e5c..b06cf26 100644 --- a/language/fr.json +++ b/language/fr.json @@ -1,320 +1,221 @@ { "semantics": [ { - "englishLabel": "Quiz introduction", "label": "Introduction du Quiz ", "fields": [ { - "englishLabel": "Display introduction", "label": "Afficher l'introduction" }, { - "englishLabel": "Title", "label": "Titre", - "englishDescription": "This title will be displayed above the introduction text.", "description": "Ce titre sera affiché au-dessus de votre texte d'introduction." }, { - "englishLabel": "Introduction text", "label": "Texte d'introduction ", - "englishDescription": "This text will be displayed before the quiz starts.", "description": "Ce texte sera affiché avant le démarrage du quiz." }, { - "englishLabel": "Start button text", "label": "Texte du bouton de démarrage", - "englishDefault": "Start Quiz", "default": "Commencer" }, { - "englishLabel": "Background image", "label": "Image d'arrière-plan", - "englishDescription": "An optional background image for the introduction.", "description": "Image d'arrière-plan optionnelle pour l'introduction." } ] }, { - "englishLabel": "Background image", "label": "Image d'arrière-plan", - "englishDescription": "An optional background image for the Question set.", "description": "Image d'arrière-plan optionnelle pour la série de questions." }, { - "englishLabel": "Progress indicator", "label": "Indicateur de progression", - "englishDescription": "Question set progress indicator style.", "description": "Style de l'indicateur de progression de la série de questions.", "options": [ { - "englishLabel": "Textual", "label": "Texte" }, { - "englishLabel": "Dots", "label": "Points" } ] }, { - "englishLabel": "Pass percentage", "label": "Pourcentage de réussite", - "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "Pourcentage exigé pour considérer que le quiz est réussi." }, { - "englishLabel": "Questions", "label": "Questions", "widgets": [ { - "englishLabel": "Default", "label": "Par défaut" }, { - "englishLabel": "Textual", "label": "Texte" } ], - "englishEntity": "question", "entity": "question", "field": { - "englishLabel": "Question type", "label": "Type de question", - "englishDescription": "Library for this question.", "description": "Types possibles pour cette question." } }, { - "englishLabel": "Interface texts in quiz", "label": "Textes de l'interface du quiz", "fields": [ { - "englishLabel": "Back button", "label": "Bouton précédent", - "englishDefault": "Previous question", "default": "Retour" }, { - "englishLabel": "Next button", "label": "Bouton suivant", - "englishDefault": "Next question", "default": "Suite" }, { - "englishLabel": "Finish button", "label": "Bouton fin", - "englishDefault": "Finish", "default": "Terminer" }, { - "englishLabel": "Progress text", "label": "Texte de progression", - "englishDescription": "Text used if textual progress is selected.", "description": "Texte utilisé si la progression textuelle a été sélectionnée.", - "englishDefault": "Question: @current of @total questions", "default": "Question @current sur @total" }, { - "englishLabel": "Label for jumping to a certain question", "label": "Texte pour aller directement à une question", - "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "Vous devez utiliser la variable '%d' à la place du numéro de la question et %total à la place du nombre total de questions.", - "englishDefault": "Question %d of %total", "default": "Question %d sur %total" }, { - "englishLabel": "Copyright dialog question label", "label": "Texte de la question de la boîte de dialogue de copyright", - "englishDefault": "Question", "default": "Question" }, { - "englishLabel": "Readspeaker progress", "label": "Progression pour la synthèse vocale", - "englishDescription": "May use @current and @total question variables", "description": "Vous pouvez utiliser les variables @current et @total", - "englishDefault": "Question @current of @total", "default": "Question @current sur @total" }, { - "englishLabel": "Unanswered question text", "label": "Texte d'une question sans réponse", - "englishDefault": "Unanswered", "default": "Pas de réponse donnée" }, { - "englishLabel": "Answered question text", "label": "Texte d'une question ayant reçu une réponse", - "englishDefault": "Answered", "default": "Réponse donnée" }, { - "englishLabel": "Current question text", "label": "Texte de la question en cours", - "englishDefault": "Current question", "default": "Question en cours" } ] }, { - "englishLabel": "Disable backwards navigation", "label": "Disable backwards navigation", - "englishDescription": "This option will only allow you to move forward in Question Set", "description": "This option will only allow you to move forward in Question Set" }, { - "englishLabel": "Randomize questions", "label": "Randomize questions", - "englishDescription": "Enable to randomize the order of questions on display.", - "description": "Enable to randomize the order of questions on display." + "description": "Enable to randomize the order of questions on display.", }, { - "englishLabel": "Quiz finished", - "label": "Options pour les boutons \"Montrer la solution\" et \"Recommencer\".", + "label": "Quiz terminé", "fields": [ { - "englishLabel": "Display results", - "label": "Ecraser le bouton \"Voir la solution\"" + "label": "Afficher les résultats" }, { - "englishLabel": "No results message", - "label": "Ecraser le bouton \"Recommencer\"", - "englishDescription": "Text displayed on end page when \"Display results\" is disabled", - "description": "Cette option détermine si le bouton \"Recommencer\" sera affiché pour toutes les questions, désactivé pour toutes ou configuré pour chaque question individuellement.", - "englishDefault": "Finished", - "default": "Finished" + "label": "Message si pas de résultats", + "description": "Texte affiché sur la page finale si l'option \"Afficher les résultats\" est désactivée.", + "default": "Terminé" }, { - "englishLabel": "Feedback heading", - "label": "Feedback heading", - "englishDefault": "Your result:", - "default": "Your result:", - "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", - "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." + "label": "Titre des commentaires", + "default": "Vos résultats :", + "description": "Ce titre sera affiché à la fin du quiz quand l'utilisateur aura répondu à toutes les questions." }, { - "englishLabel": "Score display text", - "label": "Score display text", - "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "englishDefault": "You got @score of @total points", - "default": "You got @score of @total points" + "label": "Texte d'affichage du score", + "description": "Texte utilisé pour afficher le score total de l'utilisateur. \"@score\" sera remplacé par le score de l'utilisateur, \"@total\" sera remplacé par le score maximum possible.", + "default": "Vous avez obtenu @score point(s) sur @total" }, { - "englishLabel": "Quiz passed greeting", - "label": "Quiz passed greeting", - "englishDefault": "Congratulations!", - "default": "Congratulations!", - "englishDescription": "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." + "label": "Commentaire de félicitation", + "placeholder": "Bravo !", + "default": "Bravo !", + "description": "Ce commentaire sera affiché au-dessus du score de l'utilisateur si celui-ci réussit le quiz." }, { - "englishLabel": "Passed comment", - "label": "Passed comment", - "englishDefault": "You did very well!", - "default": "You did very well!", - "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", - "description": "This comment will be displayed after the score if the user has successfully passed the quiz." + "label": "Commentaire en cas de succès", + "default": "Vous avez obtenu un très bon score !", + "description": "Commentaire affiché lors du passage du quiz avec succès." }, { - "englishLabel": "Quiz failed title", - "label": "Quiz failed title", - "englishDefault": "You did not pass this time.", - "default": "You did not pass this time.", - "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", - "description": "This text will be displayed above the score if the user has failed the quiz." + "label": "Commentaire en cas d'échec", + "default": "Vous n'avez pas réussi ce questionnaire.", + "description": "Ce commentaire sera affiché au-dessus du score de l'utilisateur si celui-ci échoue au quiz." }, { - "englishLabel": "Failed comment", - "label": "Failed comment", - "englishDefault": "Have another try!", - "default": "Have another try!", - "englishDescription": "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": "Commentaire additionnel en cas d'échec", + "default": "Refaites un essai !", + "description": "Commentaire additionnel affiché lors de l'échec au quiz." }, { - "englishLabel": "Solution button label", - "label": "Solution button label", - "englishDefault": "Show solution", - "default": "Show solution", - "englishDescription": "Text for the solution button.", - "description": "Text for the solution button." + "label": "Texte du bouton \"Solution\"", + "default": "Voir la solution", + "description": "Texte pour le bouton de solution." }, { - "englishLabel": "Retry button label", - "label": "Retry button label", - "englishDefault": "Retry", - "default": "Retry", - "englishDescription": "Text for the retry button.", - "description": "Text for the retry button." + "label": "Texte du bouton \"Recommencer\"", + "default": "Recommencer", + "description": "Texte pour le bouton Recommencer." }, { - "englishLabel": "Finish button text", - "label": "Finish button text", - "englishDefault": "Finish", - "default": "Finish" + "label": "Texte pour le bouton de fin", + "default": "Terminer" }, { - "englishLabel": "Display video before quiz results", - "label": "Display video before quiz results" + "label": "Afficher une vidéo avant l'affichage des résultats du quiz" }, { - "englishLabel": "Enable skip video button", - "label": "Enable skip video button" + "label": "Activer le bouton \"Passer la vidéo\"" }, { - "englishLabel": "Skip video button label", - "label": "Skip video button label", - "englishDefault": "Skip video", - "default": "Skip video" + "label": "Texte du bouton \"Passer la vidéo\"", + "default": "Passer la vidéo" }, { - "englishLabel": "Passed video", - "label": "Passed video", - "englishDescription": "This video will be played if the user successfully passed the quiz.", - "description": "This video will be played if the user successfully passed the quiz." + "label": "Vidéo en cas de succès", + "description": "Vidéo affichée si l'utilisateur réussit le quiz." }, { - "englishLabel": "Fail video", - "label": "Fail video", - "englishDescription": "This video will be played if the user failes the quiz.", - "description": "This video will be played if the user failes the quiz." + "label": "Vidéo en cas d'échec", + "description": "Vidéo affichée si l'utilisateur échoue au quiz." } ] }, { - "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", - "label": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Options pour les boutons \"Montrer la solution\" et \"Recommencer\".", "fields": [ { - "englishLabel": "Override \"Show Solution\" button", - "label": "Override \"Show Solution\" button", - "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", - "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", + "label": "Ecraser le bouton \"Voir la solution\"", + "description": "Cette option détermine si le bouton \"Voir la solution\" sera affiché pour toutes les questions, désactivé pour toutes ou configuré pour chaque question individuellement.", "options": [ { - "englishLabel": "Enabled", - "label": "Enabled" + "label": "Activé" }, { - "englishLabel": "Disabled", - "label": "Disabled" + "label": "Désactivé" } ] }, { - "englishLabel": "Override \"Retry\" button", - "label": "Override \"Retry\" button", - "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", - "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", + "label": "Ecraser le bouton \"Recommencer\"", + "description": "Cette option détermine si le bouton \"Recommencer\" sera affiché pour toutes les questions, désactivé pour toutes ou configuré pour chaque question individuellement.", "options": [ { - "englishLabel": "Enabled", - "label": "Enabled" + "label": "Activé" }, { - "englishLabel": "Disabled", - "label": "Disabled" + "label": "Désactivé" } ] } diff --git a/language/it.json b/language/it.json index e69d0f9..7faa99d 100644 --- a/language/it.json +++ b/language/it.json @@ -1,319 +1,204 @@ { "semantics": [ { - "englishLabel": "Quiz introduction", "label": "Introduzione quiz", "fields": [ { - "englishLabel": "Display introduction", "label": "Visualizza introduzione" }, { - "englishLabel": "Title", "label": "Titolo", - "englishDescription": "This title will be displayed above the introduction text.", "description": "Questo titolo verrà visualizzato sopra il testo introduttivo." }, { - "englishLabel": "Introduction text", "label": "Testo introduttivo", - "englishDescription": "This text will be displayed before the quiz starts.", "description": "Questo testo verrà visualizzato prima dell'inizio del quiz." }, { - "englishLabel": "Start button text", - "label": "Testo pulsante Start", - "englishDefault": "Start Quiz", - "default": "Start Quiz" + "label": "Testo pulsante Start" }, { - "englishLabel": "Background image", "label": "Immagine di sfondo", - "englishDescription": "An optional background image for the introduction.", "description": "Immagine di sfondo facoltativa per l'introduzione." } ] }, { - "englishLabel": "Background image", "label": "Immagine di sfondo", - "englishDescription": "An optional background image for the Question set.", "description": "Immagine di sfondo facoltativa per il set di domande." }, { - "englishLabel": "Progress indicator", "label": "Indicatore di avanzamento", - "englishDescription": "Question set progress indicator style.", "description": "Stile dell'indicatore di avanzamento del set di domande.", "options": [ { - "englishLabel": "Textual", "label": "Testuale" }, { - "englishLabel": "Dots", "label": "Punti" } ] }, { - "englishLabel": "Pass percentage", "label": "Percentuale superamento quiz", - "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "Percentuale minima del punteggio totale richiesto per passare il quiz." }, { - "englishLabel": "Questions", "label": "Domande", "widgets": [ { - "englishLabel": "Default", "label": "Predefinito" }, { - "englishLabel": "Textual", "label": "Testuale" } ], - "englishEntity": "question", "entity": "domanda", "field": { - "englishLabel": "Question type", "label": "Tipo di domanda", - "englishDescription": "Library for this question.", "description": "Biblioteca per questa domanda." } }, { - "englishLabel": "Interface texts in quiz", "label": "Testi di interfaccia nel quiz", "fields": [ { - "englishLabel": "Back button", - "label": "Pulsante Indietro", - "englishDefault": "Previous question", - "default": "Previous question" + "label": "Pulsante Indietro" }, { - "englishLabel": "Next button", - "label": "Pulsante Prossimo", - "englishDefault": "Next question", - "default": "Next question" + "label": "Pulsante Prossimo" }, { - "englishLabel": "Finish button", - "label": "Pulsante Fine", - "englishDefault": "Finish", - "default": "Finish" + "label": "Pulsante Fine" }, { - "englishLabel": "Progress text", "label": "Testo Avanzamento", - "englishDescription": "Text used if textual progress is selected.", - "description": "esto utilizzato se il testo Avanzamento è selezionato.", - "englishDefault": "Question: @current of @total questions", - "default": "Question: @current of @total questions" + "description": "esto utilizzato se il testo Avanzamento è selezionato." }, { - "englishLabel": "Label for jumping to a certain question", "label": "Label for jumping to a certain question", - "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", - "englishDefault": "Question %d of %total", "default": "Question %d of %total" }, { - "englishLabel": "Copyright dialog question label", "label": "Copyright dialog question label", - "englishDefault": "Question", "default": "Question" }, { - "englishLabel": "Readspeaker progress", "label": "Readspeaker progress", - "englishDescription": "May use @current and @total question variables", "description": "May use @current and @total question variables", - "englishDefault": "Question @current of @total", "default": "Question @current of @total" }, { - "englishLabel": "Unanswered question text", "label": "Unanswered question text", - "englishDefault": "Unanswered", "default": "Unanswered" }, { - "englishLabel": "Answered question text", "label": "Answered question text", - "englishDefault": "Answered", "default": "Answered" }, { - "englishLabel": "Current question text", "label": "Current question text", - "englishDefault": "Current question", "default": "Current question" } ] }, { - "englishLabel": "Disable backwards navigation", "label": "Disable backwards navigation", - "englishDescription": "This option will only allow you to move forward in Question Set", "description": "This option will only allow you to move forward in Question Set" }, { - "englishLabel": "Randomize questions", "label": "Randomize questions", - "englishDescription": "Enable to randomize the order of questions on display.", - "description": "Enable to randomize the order of questions on display." + "description": "Enable to randomize the order of questions on display.", }, { - "englishLabel": "Quiz finished", - "label": "Impostazioni per i pulsanti \"Mostra soluzione\" e \"Riprova\".", + "label": "Quiz terminato", "fields": [ { - "englishLabel": "Display results", - "label": "Override \"Show Solution\" button" + "label": "Visualizza risultati" }, { - "englishLabel": "No results message", - "label": "Override \"Retry\" button", - "englishDescription": "Text displayed on end page when \"Display results\" is disabled", - "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", - "englishDefault": "Finished", + "label": "No results message", + "description": "Text displayed on end page when \"Display results\" is disabled", "default": "Finished" }, { - "englishLabel": "Feedback heading", - "label": "Feedback heading", - "englishDefault": "Your result:", - "default": "Your result:", - "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", - "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." + "label": "Intestazione Feedback", + "description": "Questa intestazione verrà visualizzata alla fine del quiz, dopo che l'utente avrà risposto a tutte le domande." }, { - "englishLabel": "Score display text", - "label": "Score display text", - "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "englishDefault": "You got @score of @total points", - "default": "You got @score of @total points" + "label": "Testo visualizza punteggio", + "description": "Testo utilizzato per visualizzare il punteggio Totale dell'utente. \"@score\" verrà rimpiazzato dal punteggio calcolato, \"@total\" sarà rimpiazzato dal punteggio massimo possibile. " }, { - "englishLabel": "Quiz passed greeting", - "label": "Quiz passed greeting", - "englishDefault": "Congratulations!", - "default": "Congratulations!", - "englishDescription": "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." + "label": "Messaggio di superamento quiz", + "description": "Questo testo verrà visualizzato sopra il punteggio se l'utente ha superato con successo il quiz." }, { - "englishLabel": "Passed comment", - "label": "Passed comment", - "englishDefault": "You did very well!", - "default": "You did very well!", - "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", - "description": "This comment will be displayed after the score if the user has successfully passed the quiz." + "label": "Commento di superamento quiz", + "description": "Questo commento verrà visualizzato dopo il punteggio se l'utente ha superato con successo il quiz." }, { - "englishLabel": "Quiz failed title", - "label": "Quiz failed title", - "englishDefault": "You did not pass this time.", - "default": "You did not pass this time.", - "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", - "description": "This text will be displayed above the score if the user has failed the quiz." + "label": "Titolo quiz fallito", + "description": "Questo testo verrà visualizzato sopra il punteggio se l'utente non ha superato il quiz." }, { - "englishLabel": "Failed comment", - "label": "Failed comment", - "englishDefault": "Have another try!", - "default": "Have another try!", - "englishDescription": "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": "Commento quiz fallito", + "description": "Questo commento verrà visualizzato dopo il punteggio se l'utente non ha superato il quiz." }, { - "englishLabel": "Solution button label", - "label": "Solution button label", - "englishDefault": "Show solution", - "default": "Show solution", - "englishDescription": "Text for the solution button.", - "description": "Text for the solution button." + "label": "Etichetta pulsante Soluzione", + "description": "Testo per il pulsante Soluzione." }, { - "englishLabel": "Retry button label", - "label": "Retry button label", - "englishDefault": "Retry", - "default": "Retry", - "englishDescription": "Text for the retry button.", - "description": "Text for the retry button." + "label": "Etichetta pulsante Riprova", + "description": "Testo per il pulsante Riprova." }, { - "englishLabel": "Finish button text", - "label": "Finish button text", - "englishDefault": "Finish", - "default": "Finish" + "label": "Testo pulsante Fine" }, { - "englishLabel": "Display video before quiz results", - "label": "Display video before quiz results" + "label": "Visualizza il video prima dei risultati del quiz" }, { - "englishLabel": "Enable skip video button", - "label": "Enable skip video button" + "label": "Abilita pulsante Salta video" }, { - "englishLabel": "Skip video button label", - "label": "Skip video button label", - "englishDefault": "Skip video", - "default": "Skip video" + "label": "Etichetta pulsante Salta video" }, { - "englishLabel": "Passed video", - "label": "Passed video", - "englishDescription": "This video will be played if the user successfully passed the quiz.", - "description": "This video will be played if the user successfully passed the quiz." + "label": "Video di superamento quiz", + "description": "Questo video verrà visualizzato sopra il punteggio se l'utente ha superato con successo il quiz." }, { - "englishLabel": "Fail video", - "label": "Fail video", - "englishDescription": "This video will be played if the user failes the quiz.", - "description": "This video will be played if the user failes the quiz." + "label": "Video quiz fallito", + "description": "Questo testo verrà visualizzato se l'utente non ha superato il quiz." } ] }, { - "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", - "label": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Impostazioni per i pulsanti \"Mostra soluzione\" e \"Riprova\".", "fields": [ { - "englishLabel": "Override \"Show Solution\" button", "label": "Override \"Show Solution\" button", - "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "englishLabel": "Enabled", "label": "Enabled" }, { - "englishLabel": "Disabled", "label": "Disabled" } ] }, { - "englishLabel": "Override \"Retry\" button", "label": "Override \"Retry\" button", - "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "options": [ { - "englishLabel": "Enabled", "label": "Enabled" }, { - "englishLabel": "Disabled", "label": "Disabled" } ] diff --git a/language/nb.json b/language/nb.json index 0f08875..9005235 100644 --- a/language/nb.json +++ b/language/nb.json @@ -1,320 +1,217 @@ { "semantics": [ { - "englishLabel": "Quiz introduction", "label": "Introduksjon", "fields": [ { - "englishLabel": "Display introduction", "label": "Vis introduksjon" }, { - "englishLabel": "Title", "label": "Tittel", - "englishDescription": "This title will be displayed above the introduction text.", "description": "Tittel for intoduksjonssiden." }, { - "englishLabel": "Introduction text", "label": "Introduksjonstekst", - "englishDescription": "This text will be displayed before the quiz starts.", "description": "Denne teksten vises før spørsmålssettet starter." }, { - "englishLabel": "Start button text", "label": "Tekst til \"Start\" knappen", - "englishDefault": "Start Quiz", "default": "Start" }, { - "englishLabel": "Background image", "label": "Bakgrunnsbilde", - "englishDescription": "An optional background image for the introduction.", "description": "Bakgrunnsbilde for introduksjonssiden" } ] }, { - "englishLabel": "Background image", "label": "Bakgrunnsbilde", - "englishDescription": "An optional background image for the Question set.", "description": "Bakgrunnsbilde for spørsmålssettet(ikke obligatorisk)." }, { - "englishLabel": "Progress indicator", "label": "Fremdriftsindikator", - "englishDescription": "Question set progress indicator style.", "description": "Velg om fremdriften skal angis som prikker(få spørsmål) eller som tekst(mange spørsmål).", "options": [ { - "englishLabel": "Textual", "label": "Angi fremdrift med tekst" }, { - "englishLabel": "Dots", "label": "Angi fremdrift med prikker" } ] }, { - "englishLabel": "Pass percentage", "label": "Krav for å bestå", - "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "Antall prosent riktig som kreves for å bestå spørsmålssettet." }, { - "englishLabel": "Questions", "label": "Spørsmål", - "widgets": [ - { - "englishLabel": "Default", - "label": "Default" - }, - { - "englishLabel": "Textual", - "label": "Textual" - } - ], - "englishEntity": "question", "entity": "spørsmål", "field": { - "englishLabel": "Question type", "label": "Spørsmål", - "englishDescription": "Library for this question.", - "description": "Library for this question." + "fields": [ + { + "label": "Spørsmålstype", + "description": "Velg spørsmålstype for dette spørsmålet" + } + ] } }, { - "englishLabel": "Interface texts in quiz", "label": "Ledetekster", "fields": [ { - "englishLabel": "Back button", "label": "Forrige-knappen", - "englishDefault": "Previous question", "default": "Forrige spørsmål" }, { - "englishLabel": "Next button", "label": "Neste-knappen", - "englishDefault": "Next question", "default": "Neste spørsmål" }, { - "englishLabel": "Finish button", "label": "Avslutt-knappen", - "englishDefault": "Finish", "default": "Avslutt" }, { - "englishLabel": "Progress text", "label": "Fremdriftstekst", - "englishDescription": "Text used if textual progress is selected.", "description": "Tekst brukt hvis tekstlig angivelse av fremdrift er valgt. Variabler: @current og @total", - "englishDefault": "Question: @current of @total questions", "default": "Deloppgave @current av @total" }, { - "englishLabel": "Label for jumping to a certain question", "label": "Merkelapp ved hopping til spørsmål", - "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "Du må bruke plassholderen '%d' istedenfor spørsmålsnummeret, og '%total' istedet for totalt antall spørsmål.", - "englishDefault": "Question %d of %total", "default": "Spørsmål %d av %total" }, { - "englishLabel": "Copyright dialog question label", "label": "Opphavsrett spørsmål-etikett", - "englishDefault": "Question", "default": "Spørsmål" }, { - "englishLabel": "Readspeaker progress", "label": "Fremdriftstekst for hjelpemiddelteknologi", - "englishDescription": "May use @current and @total question variables", "description": "Kan bruke @current og @total variabler", - "englishDefault": "Question @current of @total", "default": "Deloppgave @current av @total" }, { - "englishLabel": "Unanswered question text", "label": "Ikke svart på spørsmål-tekst", - "englishDefault": "Unanswered", "default": "Ikke svart" }, { - "englishLabel": "Answered question text", "label": "Svart på spørsmål-tekst", - "englishDefault": "Answered", "default": "Svar avgitt" }, { - "englishLabel": "Current question text", "label": "Aktivt spørsmål-tekst", - "englishDefault": "Current question", "default": "Aktivt spørsmål" } ] }, { - "englishLabel": "Disable backwards navigation", "label": "Slå av bakoverknapp", - "englishDescription": "This option will only allow you to move forward in Question Set", "description": "Slå på for å nekte å gå tilbake i Question Set" }, { - "englishLabel": "Randomize questions", - "label": "Random spørsmåler", - "englishDescription": "Enable to randomize the order of questions on display.", - "description": "Enable to randomize the order of questions on display." + "label": "Randomize questions", + "description": "Enable to randomize the order of questions on display.", }, { - "englishLabel": "Quiz finished", - "label": "Innstillinger for «Fasit»- og «Prøv igjen»-knapp", + "label": "Spørsmålssett avslutning", "fields": [ { - "englishLabel": "Display results", - "label": "Overstyr «Fasit»-knapp" + "label": "Vis resultater" }, { - "englishLabel": "No results message", - "label": "Overstyr «Prøv igjen»-knapp", - "englishDescription": "Text displayed on end page when \"Display results\" is disabled", - "description": "Dette valget avgjør om «Prøv igjen»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", - "englishDefault": "Finished", - "default": "Finished" + "label": "Melding når resultater ikke vises", + "description": "Teksten vises på avslutnings-siden når resultater ikke vises", + "default": "Ferdig" }, { - "englishLabel": "Feedback heading", - "label": "Feedback heading", - "englishDefault": "Your result:", - "default": "Your result:", - "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", - "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." + "label": "Overskrift over tilbakemeldinger", + "default": "Resultat:", + "description": "Denne overskriften vises over tilbakemeldingene på slutten av spørsmålssettet." }, { - "englishLabel": "Score display text", - "label": "Score display text", - "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "englishDefault": "You got @score of @total points", - "default": "You got @score of @total points" + "label": "Poengvisningstekst", + "default": "@score av @total poeng", + "description": "Tekst som viser brukerens oppnådde poeng. \"@score\" blir erstattet med utregnet resultat, \"@total\" blir erstattet med høyest mulige resultat." }, { - "englishLabel": "Quiz passed greeting", - "label": "Quiz passed greeting", - "englishDefault": "Congratulations!", - "default": "Congratulations!", - "englishDescription": "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." + "label": "Tittel ved bestått", + "default": "Gratulerer!", + "description": "Denne tittelen vises dersom brukeren har bestått spørsmålssettet." }, { - "englishLabel": "Passed comment", - "label": "Passed comment", - "englishDefault": "You did very well!", - "default": "You did very well!", - "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", - "description": "This comment will be displayed after the score if the user has successfully passed the quiz." + "label": "Kommentar ved bestått", + "default": "Dette gikk bra.", + "description": "Denne kommentaren vises dersom brukeren har bestått spørsmålssettet." }, { - "englishLabel": "Quiz failed title", - "label": "Quiz failed title", - "englishDefault": "You did not pass this time.", - "default": "You did not pass this time.", - "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", - "description": "This text will be displayed above the score if the user has failed the quiz." + "label": "Tittel ved ikke bestått", + "default": "Dette gikk ikke så bra!", + "description": "Denne tittelen vises dersom brukeren ikke har bestått spørsmålssettet." }, { - "englishLabel": "Failed comment", - "label": "Failed comment", - "englishDefault": "Have another try!", - "default": "Have another try!", - "englishDescription": "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": "Kommentar ved ikke bestått", + "default": "Det er litt mange feil her. Prøv igjen!", + "description": "Denne kommentaren vises dersom brukeren ikke har bestått spørsmålssettet." }, { - "englishLabel": "Solution button label", - "label": "Solution button label", - "englishDefault": "Show solution", - "default": "Show solution", - "englishDescription": "Text for the solution button.", - "description": "Text for the solution button." + "label": "Tekst til \"Fasit\" knapp", + "default": "Gå gjennom fasit", + "description": "" }, { - "englishLabel": "Retry button label", - "label": "Retry button label", - "englishDefault": "Retry", - "default": "Retry", - "englishDescription": "Text for the retry button.", - "description": "Text for the retry button." + "label": "Tekst til \"Prøv igjen\" knapp", + "default": "Prøv igjen!", + "description": "" }, { - "englishLabel": "Finish button text", - "label": "Finish button text", - "englishDefault": "Finish", - "default": "Finish" + "label": "Tekst til \"Avslutt\" knapp", + "default": "Avslutt" }, { - "englishLabel": "Display video before quiz results", - "label": "Display video before quiz results" + "label": "Vis video før resultatene" }, { - "englishLabel": "Enable skip video button", - "label": "Enable skip video button" + "label": "Tillat å hoppe over video" }, { - "englishLabel": "Skip video button label", - "label": "Skip video button label", - "englishDefault": "Skip video", - "default": "Skip video" + "label": "Tekst til \"Hopp over video\" knapp", + "default": "Hopp over" }, { - "englishLabel": "Passed video", - "label": "Passed video", - "englishDescription": "This video will be played if the user successfully passed the quiz.", - "description": "This video will be played if the user successfully passed the quiz." + "label": "Video ved bestått", + "description": "Denne videoen vil bli vist dersom brukeren består spørsmålssettet." }, { - "englishLabel": "Fail video", - "label": "Fail video", - "englishDescription": "This video will be played if the user failes the quiz.", - "description": "This video will be played if the user failes the quiz." + "label": "Video ved ikke bestått", + "description": "Denne videoen vil bli vist dersom brukeren ikke består spørsmålssettet." } ] }, { - "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", - "label": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Innstillinger for «Fasit»- og «Prøv igjen»-knapp", "fields": [ { - "englishLabel": "Override \"Show Solution\" button", - "label": "Override \"Show Solution\" button", - "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", - "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", + "label": "Overstyr «Fasit»-knapp", + "description": "Dette valget avgjør om «Fasit»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", "options": [ { - "englishLabel": "Enabled", - "label": "Enabled" + "label": "Aktivert" }, { - "englishLabel": "Disabled", - "label": "Disabled" + "label": "Deaktivert" } ] }, { - "englishLabel": "Override \"Retry\" button", - "label": "Override \"Retry\" button", - "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", - "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", + "label": "Overstyr «Prøv igjen»-knapp", + "description": "Dette valget avgjør om «Prøv igjen»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", "options": [ { - "englishLabel": "Enabled", - "label": "Enabled" + "label": "Aktivert" }, { - "englishLabel": "Disabled", - "label": "Disabled" + "label": "Deaktivert" } ] } diff --git a/language/nn.json b/language/nn.json index a2ec7df..fcd32d2 100644 --- a/language/nn.json +++ b/language/nn.json @@ -1,320 +1,217 @@ { "semantics": [ { - "englishLabel": "Quiz introduction", "label": "Introduksjon", "fields": [ { - "englishLabel": "Display introduction", "label": "Vis introduksjon" }, { - "englishLabel": "Title", "label": "Tittel", - "englishDescription": "This title will be displayed above the introduction text.", "description": "Tittel for intoduksjonssiden." }, { - "englishLabel": "Introduction text", "label": "Introduksjonstekst", - "englishDescription": "This text will be displayed before the quiz starts.", "description": "Denne teksten vises før spørsmålssettet starter." }, { - "englishLabel": "Start button text", "label": "Tekst til \"Start\" knappen", - "englishDefault": "Start Quiz", "default": "Start" }, { - "englishLabel": "Background image", "label": "Bakgrunnsbilde", - "englishDescription": "An optional background image for the introduction.", "description": "Bakgrunnsbilde for introduksjonssiden" } ] }, { - "englishLabel": "Background image", "label": "Bakgrunnsbilde", - "englishDescription": "An optional background image for the Question set.", "description": "Bakgrunnsbilde for spørsmålssettet(ikke obligatorisk)." }, { - "englishLabel": "Progress indicator", "label": "Fremdriftsindikator", - "englishDescription": "Question set progress indicator style.", "description": "Velg om fremdriften skal angis som prikker(få spørsmål) eller som tekst(mange spørsmål).", "options": [ { - "englishLabel": "Textual", "label": "Angi fremdrift med tekst" }, { - "englishLabel": "Dots", "label": "Angi fremdrift med prikker" } ] }, { - "englishLabel": "Pass percentage", "label": "Krav for å bestå", - "englishDescription": "Percentage of Total score required for passing the quiz.", "description": "Antall prosent riktig som kreves for å bestå spørsmålssettet." }, { - "englishLabel": "Questions", "label": "Spørsmål", - "widgets": [ - { - "englishLabel": "Default", - "label": "Default" - }, - { - "englishLabel": "Textual", - "label": "Textual" - } - ], - "englishEntity": "question", "entity": "spørsmål", "field": { - "englishLabel": "Question type", "label": "Spørsmål", - "englishDescription": "Library for this question.", - "description": "Library for this question." + "fields": [ + { + "label": "Spørsmålstype", + "description": "Velg spørsmålstype for dette spørsmålet" + } + ] } }, { - "englishLabel": "Interface texts in quiz", "label": "Ledetekster", "fields": [ { - "englishLabel": "Back button", "label": "Førre-knappen", - "englishDefault": "Previous question", "default": "Førre" }, { - "englishLabel": "Next button", "label": "Neste-knappen", - "englishDefault": "Next question", "default": "Neste" }, { - "englishLabel": "Finish button", "label": "Avslutt-knappen", - "englishDefault": "Finish", "default": "Avslutt" }, { - "englishLabel": "Progress text", "label": "Fremdriftstekst", - "englishDescription": "Text used if textual progress is selected.", "description": "Tekst brukt hvis tekstlig angivelse av fremdrift er valgt. Variabler: @current og @total", - "englishDefault": "Question: @current of @total questions", "default": "Deloppgåve @current av @total" }, { - "englishLabel": "Label for jumping to a certain question", "label": "Merkelapp ved hopping til spørsmål", - "englishDescription": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "description": "Du må bruke plassholderen '%d' istedenfor spørsmålsnummeret, og '%total' istedet for totalt antall spørsmål.", - "englishDefault": "Question %d of %total", "default": "Spørsmål %d av %total" }, { - "englishLabel": "Copyright dialog question label", "label": "Opphavsrett spørsmål-etikett", - "englishDefault": "Question", "default": "Spørsmål" }, { - "englishLabel": "Readspeaker progress", "label": "Fremdriftstekst for hjelpemiddelteknologi", - "englishDescription": "May use @current and @total question variables", "description": "Kan bruke @current og @total variabler", - "englishDefault": "Question @current of @total", "default": "Deloppgave @current av @total" }, { - "englishLabel": "Unanswered question text", "label": "Ikke svart på spørsmål-tekst", - "englishDefault": "Unanswered", "default": "Ikke svart" }, { - "englishLabel": "Answered question text", "label": "Svart på spørsmål-tekst", - "englishDefault": "Answered", "default": "Svar avgitt" }, { - "englishLabel": "Current question text", "label": "Aktivt spørsmål-tekst", - "englishDefault": "Current question", "default": "Aktivt spørsmål" } ] }, { - "englishLabel": "Disable backwards navigation", "label": "Slå av bakoverknapp", - "englishDescription": "This option will only allow you to move forward in Question Set", "description": "Slå på for å nekte å gå tilbake i Question Set" }, { - "englishLabel": "Randomize questions", - "label": "Random spørsmåler", - "englishDescription": "Enable to randomize the order of questions on display.", - "description": "Enable to randomize the order of questions on display." + "label": "Randomize questions", + "description": "Enable to randomize the order of questions on display.", }, { - "englishLabel": "Quiz finished", - "label": "Innstillinger for «Fasit»- og «Prøv igjen»-knapp", + "label": "Spørsmålssett avslutning", "fields": [ { - "englishLabel": "Display results", - "label": "Overstyr «Fasit»-knapp" + "label": "Vis resultat" }, { - "englishLabel": "No results message", - "label": "Overstyr «Prøv igjen»-knapp", - "englishDescription": "Text displayed on end page when \"Display results\" is disabled", - "description": "Dette valget avgjør om «Prøv igjen»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", - "englishDefault": "Finished", - "default": "Finished" + "label": "Melding når resultater ikke vises", + "description": "Teksten vises på avslutnings-siden når resultater ikke vises", + "default": "Ferdig" }, { - "englishLabel": "Feedback heading", - "label": "Feedback heading", - "englishDefault": "Your result:", - "default": "Your result:", - "englishDescription": "This heading will be displayed at the end of the quiz when the user has answered all questions.", - "description": "This heading will be displayed at the end of the quiz when the user has answered all questions." + "label": "Overskrift over tilbakemeldingar", + "default": "Resultat:", + "description": "Denne overskriften vises over tilbakemeldingane på slutten av spørsmålssettet." }, { - "englishLabel": "Score display text", - "label": "Score display text", - "englishDescription": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", - "englishDefault": "You got @score of @total points", - "default": "You got @score of @total points" + "label": "Poengvisningstekst", + "default": "@score av @total poeng", + "description": "Tekst som viser brukerens oppnådde poeng. \"@score\" blir erstatta med utregna resultat, \"@total\" blir erstatta med høgest mulig resultat." }, { - "englishLabel": "Quiz passed greeting", - "label": "Quiz passed greeting", - "englishDefault": "Congratulations!", - "default": "Congratulations!", - "englishDescription": "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." + "label": "Tittel ved bestått", + "default": "Gratulerer!", + "description": "Denne tittelen vises dersom brukeren har bestått spørsmålssettet." }, { - "englishLabel": "Passed comment", - "label": "Passed comment", - "englishDefault": "You did very well!", - "default": "You did very well!", - "englishDescription": "This comment will be displayed after the score if the user has successfully passed the quiz.", - "description": "This comment will be displayed after the score if the user has successfully passed the quiz." + "label": "Kommentar ved bestått", + "default": "Dette gjekk bra.", + "description": "Denne kommentaren vises dersom brukaren har bestått spørsmålssettet." }, { - "englishLabel": "Quiz failed title", - "label": "Quiz failed title", - "englishDefault": "You did not pass this time.", - "default": "You did not pass this time.", - "englishDescription": "This text will be displayed above the score if the user has failed the quiz.", - "description": "This text will be displayed above the score if the user has failed the quiz." + "label": "Tittel ved ikkje bestått", + "default": "Dette gjekk ikkje så bra!", + "description": "Denne tittelen visast dersom brukaren ikkje har bestått spørsmålssettet." }, { - "englishLabel": "Failed comment", - "label": "Failed comment", - "englishDefault": "Have another try!", - "default": "Have another try!", - "englishDescription": "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": "Kommentar ved ikkje bestått", + "default": "Det er litt mange feil her. Prøv igjen!", + "description": "Denne kommentaren vises dersom brukaren ikkje har bestått spørsmålssettet." }, { - "englishLabel": "Solution button label", - "label": "Solution button label", - "englishDefault": "Show solution", - "default": "Show solution", - "englishDescription": "Text for the solution button.", - "description": "Text for the solution button." + "label": "Tekst til \"Fasit\" knapp", + "default": "Vis fasit", + "description": "" }, { - "englishLabel": "Retry button label", - "label": "Retry button label", - "englishDefault": "Retry", - "default": "Retry", - "englishDescription": "Text for the retry button.", - "description": "Text for the retry button." + "label": "Tekst til \"Prøv igjen\" knapp", + "default": "Prøv igjen", + "description": "" }, { - "englishLabel": "Finish button text", - "label": "Finish button text", - "englishDefault": "Finish", - "default": "Finish" + "label": "Tekst til \"Avslutt\" knapp", + "default": "Avslutt" }, { - "englishLabel": "Display video before quiz results", - "label": "Display video before quiz results" + "label": "Vis video før resultata" }, { - "englishLabel": "Enable skip video button", - "label": "Enable skip video button" + "label": "Tillat å hoppe over video" }, { - "englishLabel": "Skip video button label", - "label": "Skip video button label", - "englishDefault": "Skip video", - "default": "Skip video" + "label": "Tekst til \"Hopp over video\" knapp", + "default": "Hopp over" }, { - "englishLabel": "Passed video", - "label": "Passed video", - "englishDescription": "This video will be played if the user successfully passed the quiz.", - "description": "This video will be played if the user successfully passed the quiz." + "label": "Video ved bestått", + "description": "Denne videoen vil bli vist dersom brukaren består spørsmålssettet." }, { - "englishLabel": "Fail video", - "label": "Fail video", - "englishDescription": "This video will be played if the user failes the quiz.", - "description": "This video will be played if the user failes the quiz." + "label": "Video ved ikke bestått", + "description": "Denne videoen vil bli vist dersom brukaren ikkje består spørsmålssettet." } ] }, { - "englishLabel": "Settings for \"Show solution\" and \"Retry\" buttons", - "label": "Settings for \"Show solution\" and \"Retry\" buttons", + "label": "Innstillinger for «Fasit»- og «Prøv igjen»-knapp", "fields": [ { - "englishLabel": "Override \"Show Solution\" button", - "label": "Override \"Show Solution\" button", - "englishDescription": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", - "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", + "label": "Overstyr «Fasit»-knapp", + "description": "Dette valget avgjør om «Fasit»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", "options": [ { - "englishLabel": "Enabled", - "label": "Enabled" + "label": "Aktivert" }, { - "englishLabel": "Disabled", - "label": "Disabled" + "label": "Deaktivert" } ] }, { - "englishLabel": "Override \"Retry\" button", - "label": "Override \"Retry\" button", - "englishDescription": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", - "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", + "label": "Overstyr «Prøv igjen»-knapp", + "description": "Dette valget avgjør om «Prøv igjen»-knappen vil vises for alle spørsmål, skjules for alle eller konfigureres individuelt for hvert spørsmål.", "options": [ { - "englishLabel": "Enabled", - "label": "Enabled" + "label": "Aktivert" }, { - "englishLabel": "Disabled", - "label": "Disabled" + "label": "Deaktivert" } ] } From 207914b411af635701e9d3213836a5a5bcadcdac Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Tue, 18 Oct 2016 15:32:16 +0200 Subject: [PATCH 20/62] Update retrieval of previous content --- js/questionset.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/questionset.js b/js/questionset.js index b0be1d5..21c9a97 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -187,7 +187,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { var hasAnswers = contentData.previousState && contentData.previousState.answers; var questionInstance = H5P.newRunnable(question, contentId, undefined, undefined, { - previousState: hasAnswers ? contentData.previousState.answers[questionOrder[i]] : undefined, + previousState: hasAnswers ? contentData.previousState.answers[i] : undefined, parent: self }); questionInstance.on('resize', function () { From d9e38ec99475f57cb69af3ca3916315f2e6268fe Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Tue, 18 Oct 2016 15:35:00 +0200 Subject: [PATCH 21/62] Update semantics.json --- semantics.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/semantics.json b/semantics.json index 91ef9e0..3a174e5 100644 --- a/semantics.json +++ b/semantics.json @@ -207,7 +207,7 @@ "type": "boolean", "label": "Randomize questions", "description": "Enable to randomize the order of questions on display.", - "default": true + "default": false }, { "name": "endGame", From 6fdeb26e0ded802354af44d3c794f9ee6e427c02 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Wed, 19 Oct 2016 08:22:21 +0200 Subject: [PATCH 22/62] Fix to allow disabling of backwards navigation --- js/questionset.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 21c9a97..9d3abe0 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -248,7 +248,8 @@ H5P.QuestionSet = function (options, contentId, contentData) { var _updateButtons = function () { // Verify that current question is answered when backward nav is disabled if (params.disableBackwardsNavigation) { - if (questionInstances[currentQuestion].getAnswerGiven()) { + if (questionInstances[currentQuestion].getAnswerGiven() + && questionInstances.length-1 !== currentQuestion) { questionInstances[currentQuestion].showButton('next'); } else { @@ -476,7 +477,8 @@ H5P.QuestionSet = function (options, contentId, contentData) { } if(questionInstances[0] !== question - && question.hasButton('prev')) { + && question.hasButton('prev') + && !params.disableBackwardsNavigation) { question.showButton('prev'); } From 2ebe9ad987936e588c47b37532f5df63c2f2fcc5 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Wed, 19 Oct 2016 08:50:04 +0200 Subject: [PATCH 23/62] Rename variables in randomize function [HFP-56] --- js/questionset.js | 44 ++++++++++++++++++++------------------------ semantics.json | 2 +- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 9d3abe0..7f0218d 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -198,37 +198,34 @@ H5P.QuestionSet = function (options, contentId, contentData) { } /** - * Randomizes elements in an array and updates a map of the order - * @param {array} elements - * @param {array} map - * @return {Object.} elements and indexes + * Randomizes questions in an array and updates an array containing their order + * @param {array} questions + * @param {array} questionOrder + * @return {Object.} questionOrdering */ - var randomizeElements = function (elements, map) { + var randomizeQuestionOrdering = function (questions, questionOrder) { - // Save the original order of the elements in a nested array [[element1,0],[element2,1]... - var elementsAndIndexes = elements.map(function(object, index) { return [object, index] }); + // Save the original order of the questions in a nested array [[question0,0],[question1,1]... + var questionOrdering = questions.map(function(object, index) { return [object, index] }); - elementsAndIndexes = H5P.shuffleArray(elementsAndIndexes); + questionOrdering = H5P.shuffleArray(questionOrdering); - // Retrieve elements and indexes - elements = elementsAndIndexes.map(d => d[0]); - map = elementsAndIndexes.map(d => d[1]); + // Retrieve questions and indexes + questions = questionOrdering.map(d => d[0]); + questionOrder = questionOrdering.map(d => d[1]); return { - elements:elements, - map:map + questions:questions, + questionOrder:questionOrder }; } // Randomize questions only on instantiation if (params.randomQuestions && contentData.previousState === undefined) { - - $('.question-container.h5p-question', $myDom).attr('class',''); - - var result = randomizeElements(questionInstances,questionOrder); - questionInstances = result.elements; - questionOrder = result.map; + var result = randomizeQuestionOrdering(questionInstances,questionOrder); + questionInstances = result.questions; + questionOrder = result.questionOrder; } // Resize all interactions on resize @@ -445,9 +442,9 @@ H5P.QuestionSet = function (options, contentId, contentData) { */ var randomizeQuestions = function () { - var result = randomizeElements(questionInstances,questionOrder); - questionInstances = result.elements; - questionOrder = result.map; + var result = randomizeQuestionOrdering(questionInstances,questionOrder); + questionInstances = result.questions; + questionOrder = result.questionOrder; // Find all question containers and detach questions from them $('.question-container', $myDom).each(function (){ @@ -460,8 +457,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { var question = questionInstances[i]; // Make sure styles are not being added twice - var lastClass = $('.question-container:eq(' + i + ')', $myDom).attr("class").split(' ').pop(); - $('.question-container:eq(' + i + ')', $myDom).removeClass(lastClass); + $('.question-container:eq(' + i + ')', $myDom).attr('class', 'question-container'); question.attach($('.question-container:eq(' + i + ')', $myDom)); diff --git a/semantics.json b/semantics.json index 91ef9e0..3a174e5 100644 --- a/semantics.json +++ b/semantics.json @@ -207,7 +207,7 @@ "type": "boolean", "label": "Randomize questions", "description": "Enable to randomize the order of questions on display.", - "default": true + "default": false }, { "name": "endGame", From 1b8abad5449bd4ed4b987816df9f507196d21a67 Mon Sep 17 00:00:00 2001 From: thomasmars Date: Wed, 19 Oct 2016 15:28:31 +0200 Subject: [PATCH 24/62] Make sure the shuffled question order is properly mapped to the original order. HFP-56 --- js/questionset.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 7f0218d..7aa037b 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -212,11 +212,11 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Retrieve questions and indexes questions = questionOrdering.map(d => d[0]); - questionOrder = questionOrdering.map(d => d[1]); + var newOrder = questionOrdering.map(d => questionOrder[d[1]]) return { questions:questions, - questionOrder:questionOrder + questionOrder:newOrder }; } From 453addfa4711a43eda365063d9811d6a5d8961eb Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Wed, 19 Oct 2016 15:31:17 +0200 Subject: [PATCH 25/62] Validate language json files --- language/ar.json | 2 +- language/de.json | 2 +- language/fr.json | 2 +- language/it.json | 2 +- language/nb.json | 2 +- language/nn.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/language/ar.json b/language/ar.json index db32167..52c80d5 100644 --- a/language/ar.json +++ b/language/ar.json @@ -109,7 +109,7 @@ }, { "label": "Randomize questions", - "description": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." }, { "label": "انتهاء المسابقة", diff --git a/language/de.json b/language/de.json index 7c6d5e8..c78ae77 100644 --- a/language/de.json +++ b/language/de.json @@ -114,7 +114,7 @@ }, { "label": "Randomize questions", - "description": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." }, { "label": "Quiz beendet", diff --git a/language/fr.json b/language/fr.json index b06cf26..785df45 100644 --- a/language/fr.json +++ b/language/fr.json @@ -114,7 +114,7 @@ }, { "label": "Randomize questions", - "description": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." }, { "label": "Quiz terminé", diff --git a/language/it.json b/language/it.json index 7faa99d..f0e8935 100644 --- a/language/it.json +++ b/language/it.json @@ -109,7 +109,7 @@ }, { "label": "Randomize questions", - "description": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." }, { "label": "Quiz terminato", diff --git a/language/nb.json b/language/nb.json index 9005235..9b7db6a 100644 --- a/language/nb.json +++ b/language/nb.json @@ -111,7 +111,7 @@ }, { "label": "Randomize questions", - "description": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." }, { "label": "Spørsmålssett avslutning", diff --git a/language/nn.json b/language/nn.json index fcd32d2..0501d0a 100644 --- a/language/nn.json +++ b/language/nn.json @@ -111,7 +111,7 @@ }, { "label": "Randomize questions", - "description": "Enable to randomize the order of questions on display.", + "description": "Enable to randomize the order of questions on display." }, { "label": "Spørsmålssett avslutning", From 06060af419ad58e7f0263f895f87456d62c03ddf Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Thu, 20 Oct 2016 08:18:43 +0200 Subject: [PATCH 26/62] Add safety check --- js/questionset.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/js/questionset.js b/js/questionset.js index 7aa037b..ac75666 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -212,7 +212,15 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Retrieve questions and indexes questions = questionOrdering.map(d => d[0]); - var newOrder = questionOrdering.map(d => questionOrder[d[1]]) + + // Use the previous question order if it exists + var newOrder; + if (questionOrder) { + newOrder = questionOrdering.map(d => questionOrder[d[1]]); + } + else{ + newOrder = questionOrdering.map(d => d[1]); + } return { questions:questions, From 024d46da382020cdc3ddea8c7b85809e73e3f69b Mon Sep 17 00:00:00 2001 From: thomasmars Date: Thu, 20 Oct 2016 11:13:18 +0200 Subject: [PATCH 27/62] Made truncated buttons look normal. HFP-109 --- css/questionset.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/css/questionset.css b/css/questionset.css index 5f07c33..22e65d2 100644 --- a/css/questionset.css +++ b/css/questionset.css @@ -161,6 +161,12 @@ width: 2.1875em; } +.h5p-question .h5p-question-prev.truncated, +.h5p-question .h5p-question-next.truncated { + padding: 0; + line-height: 2.2335em; +} + .h5p-question .h5p-question-next, .h5p-question .h5p-question-finish { margin: 0 0 1.5em 0.5em; From 3285a8fa4a1353d2137e4ecd45eca77830fab707 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Thu, 20 Oct 2016 13:36:40 +0200 Subject: [PATCH 28/62] Add functionality to create question pools [HFP-57] --- js/questionset.js | 118 +++++++++++++++++++++++++++++++++------------- semantics.json | 7 +++ 2 files changed, 91 insertions(+), 34 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index ac75666..5135d81 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -126,6 +126,9 @@ H5P.QuestionSet = function (options, contentId, contentData) { var endTemplate = new EJS({text: resulttemplate}); var params = $.extend(true, {}, defaults, options); + var poolSize; // Number of questions to be pooled into a subset + var poolQuestions; // Questions in a pool + var poolOrder; // Order of questions in a pool var currentQuestion = 0; var questionInstances = []; var questionOrder; //Stores order of questions to allow resuming of question set @@ -144,7 +147,85 @@ H5P.QuestionSet = function (options, contentId, contentData) { questionOrder = contentData.previousState.order; } + // Create a pool of questions if necessary + /** + * Randomizes questions in an array and updates an array containing their order + * @param {array} questions + * @param {array} questionOrder + * @return {Object.} questionOrdering + */ + var randomizeQuestionOrdering = function (questions, questionOrder) { + + // Save the original order of the questions in a nested array [[question0,0],[question1,1]... + var questionOrdering = questions.map(function(object, index) { return [object, index] }); + + questionOrdering = H5P.shuffleArray(questionOrdering); + + // Retrieve questions and indexes + questions = questionOrdering.map(d => d[0]); + + // Use the previous question order if it exists + var newOrder; + if (questionOrder) { + newOrder = questionOrdering.map(d => questionOrder[d[1]]); + } + else{ + newOrder = questionOrdering.map(d => d[1]); + } + + return { + questions:questions, + questionOrder:newOrder + }; + + } + + // Create a pool (a subset) of questions if necessary + if (params.poolSize) { + + // If a previous pool exists, recreate it + if(contentData.previousState && contentData.previousState.poolOrder) { + poolOrder = contentData.previousState.poolOrder; + + // Recreate the pool from the saved data + var pool = []; + for (var i = 0; i < poolOrder.length; i++) { + pool[i] = params.questions[poolOrder[i]]; + } + + // Replace original questions with just the ones in the pool + params.questions = pool; + } + + // Otherwise create a new pool + else { + + // Sanitize input + if (params.poolSize > params.questions.length) { + poolSize = params.questions.length; + } + else { + poolSize = params.poolSize; + } + + // Randomize and get the results + var poolResult = randomizeQuestionOrdering(params.questions, poolOrder); + poolQuestions = poolResult.questions; + poolOrder = poolResult.questionOrder; + + // Discard extra questions + poolQuestions = poolQuestions.slice(0,poolSize); + poolOrder = poolOrder.slice(0,poolSize); + + // Replace original questions with just the ones in the pool + params.questions = poolQuestions; + } + + } + + // Create the html template for the question container var $template = $(template.render(params)); + // Set overrides for questions var override; if (params.override.showSolutionButton || params.override.retryButton) { @@ -171,7 +252,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { question = params.questions[questionOrder[i]]; } else { - // Use generic order when initialzing for the first time + // Use a generic order when initialzing for the first time question = params.questions[i]; } @@ -197,38 +278,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { questionInstances.push(questionInstance); } - /** - * Randomizes questions in an array and updates an array containing their order - * @param {array} questions - * @param {array} questionOrder - * @return {Object.} questionOrdering - */ - var randomizeQuestionOrdering = function (questions, questionOrder) { - - // Save the original order of the questions in a nested array [[question0,0],[question1,1]... - var questionOrdering = questions.map(function(object, index) { return [object, index] }); - - questionOrdering = H5P.shuffleArray(questionOrdering); - - // Retrieve questions and indexes - questions = questionOrdering.map(d => d[0]); - - // Use the previous question order if it exists - var newOrder; - if (questionOrder) { - newOrder = questionOrdering.map(d => questionOrder[d[1]]); - } - else{ - newOrder = questionOrdering.map(d => d[1]); - } - - return { - questions:questions, - questionOrder:newOrder - }; - - } - // Randomize questions only on instantiation if (params.randomQuestions && contentData.previousState === undefined) { var result = randomizeQuestionOrdering(questionInstances,questionOrder); @@ -1015,7 +1064,8 @@ H5P.QuestionSet = function (options, contentId, contentData) { answers: questionInstances.map(function (qi) { return qi.getCurrentState(); }), - order: questionOrder + order: questionOrder, + poolOrder: poolOrder }; }; }; diff --git a/semantics.json b/semantics.json index 3a174e5..23b8bb2 100644 --- a/semantics.json +++ b/semantics.json @@ -209,6 +209,13 @@ "description": "Enable to randomize the order of questions on display.", "default": false }, + { + "name": "poolSize", + "type": "number", + "label": "Number of questions to be shown:", + "description": "Create a randomized batch of questions from the total.", + "optional": true + }, { "name": "endGame", "type": "group", From 035b9582547062e23154df8db737a1bf40b78bb5 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Thu, 20 Oct 2016 13:55:10 +0200 Subject: [PATCH 29/62] Update language files for question pool [HFP-57] --- language/ar.json | 4 ++++ language/de.json | 4 ++++ language/fr.json | 4 ++++ language/it.json | 4 ++++ language/nb.json | 4 ++++ language/nn.json | 4 ++++ 6 files changed, 24 insertions(+) diff --git a/language/ar.json b/language/ar.json index 52c80d5..838ccf7 100644 --- a/language/ar.json +++ b/language/ar.json @@ -111,6 +111,10 @@ "label": "Randomize questions", "description": "Enable to randomize the order of questions on display." }, + { + "label": "Number of questions to be shown:", + "description": "Create a randomized batch of questions from the total." + }, { "label": "انتهاء المسابقة", "fields": [ diff --git a/language/de.json b/language/de.json index c78ae77..f76f891 100644 --- a/language/de.json +++ b/language/de.json @@ -116,6 +116,10 @@ "label": "Randomize questions", "description": "Enable to randomize the order of questions on display." }, + { + "label": "Number of questions to be shown:", + "description": "Create a randomized batch of questions from the total." + }, { "label": "Quiz beendet", "fields": [ diff --git a/language/fr.json b/language/fr.json index 785df45..8819830 100644 --- a/language/fr.json +++ b/language/fr.json @@ -116,6 +116,10 @@ "label": "Randomize questions", "description": "Enable to randomize the order of questions on display." }, + { + "label": "Number of questions to be shown:", + "description": "Create a randomized batch of questions from the total." + }, { "label": "Quiz terminé", "fields": [ diff --git a/language/it.json b/language/it.json index f0e8935..d520b11 100644 --- a/language/it.json +++ b/language/it.json @@ -111,6 +111,10 @@ "label": "Randomize questions", "description": "Enable to randomize the order of questions on display." }, + { + "label": "Number of questions to be shown:", + "description": "Create a randomized batch of questions from the total." + }, { "label": "Quiz terminato", "fields": [ diff --git a/language/nb.json b/language/nb.json index 9b7db6a..077eb71 100644 --- a/language/nb.json +++ b/language/nb.json @@ -113,6 +113,10 @@ "label": "Randomize questions", "description": "Enable to randomize the order of questions on display." }, + { + "label": "Number of questions to be shown:", + "description": "Create a randomized batch of questions from the total." + }, { "label": "Spørsmålssett avslutning", "fields": [ diff --git a/language/nn.json b/language/nn.json index 0501d0a..eb95e40 100644 --- a/language/nn.json +++ b/language/nn.json @@ -113,6 +113,10 @@ "label": "Randomize questions", "description": "Enable to randomize the order of questions on display." }, + { + "label": "Number of questions to be shown:", + "description": "Create a randomized batch of questions from the total." + }, { "label": "Spørsmålssett avslutning", "fields": [ From 3ac92b078b9a9e8eb33fff8e30d887a4893d75c0 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Thu, 20 Oct 2016 15:45:58 +0200 Subject: [PATCH 30/62] Replace 'arrow functions' with 'for loops' [HFP-57] --- js/questionset.js | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 5135d81..d8043df 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -156,23 +156,32 @@ H5P.QuestionSet = function (options, contentId, contentData) { */ var randomizeQuestionOrdering = function (questions, questionOrder) { - // Save the original order of the questions in a nested 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(object, index) { return [object, index] }); + // Shuffle the multidimensional array questionOrdering = H5P.shuffleArray(questionOrdering); - // Retrieve questions and indexes - questions = questionOrdering.map(d => d[0]); - - // Use the previous question order if it exists - var newOrder; - if (questionOrder) { - newOrder = questionOrdering.map(d => questionOrder[d[1]]); - } - else{ - newOrder = questionOrdering.map(d => d[1]); + // Retrieve question objects from the first index + var questions = []; + for (var i = 0; i < questionOrdering.length; i++) { + questions[i] = questionOrdering[i][0]; } + // Retrieve the new shuffled order from the second index + var newOrder = []; + for (var i = 0; i< questionOrdering.length; i++) { + + // Use a previous order if it exists + if(questionOrder) { + newOrder[i] = questionOrder[questionOrdering[i][1]]; + } + else { + newOrder[i] = questionOrdering[i][1]; + } + } + + // Return the questions in their new order *with* their new order return { questions:questions, questionOrder:newOrder From 4f38f4d25b3c9356d74257e8086f813e3891d0df Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Fri, 21 Oct 2016 08:38:13 +0200 Subject: [PATCH 31/62] Change ordering of pool size check --- js/questionset.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index d8043df..cfd3bc9 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -181,17 +181,24 @@ H5P.QuestionSet = function (options, contentId, contentData) { } } - // Return the questions in their new order *with* their new order + // Return the questions in their new order *with* their new order return { questions:questions, questionOrder:newOrder }; - } // Create a pool (a subset) of questions if necessary if (params.poolSize) { + // Sanitize input + if (params.poolSize > params.questions.length) { + poolSize = params.questions.length; + } + else { + poolSize = params.poolSize; + } + // If a previous pool exists, recreate it if(contentData.previousState && contentData.previousState.poolOrder) { poolOrder = contentData.previousState.poolOrder; @@ -209,14 +216,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Otherwise create a new pool else { - // Sanitize input - if (params.poolSize > params.questions.length) { - poolSize = params.questions.length; - } - else { - poolSize = params.poolSize; - } - // Randomize and get the results var poolResult = randomizeQuestionOrdering(params.questions, poolOrder); poolQuestions = poolResult.questions; @@ -229,7 +228,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Replace original questions with just the ones in the pool params.questions = poolQuestions; } - } // Create the html template for the question container From db888331479c356c828e20af51340cf8ed02bc4c Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Fri, 21 Oct 2016 12:56:11 +0200 Subject: [PATCH 32/62] Rename variables --- js/questionset.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/questionset.js b/js/questionset.js index cfd3bc9..0b48e44 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -157,7 +157,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { var randomizeQuestionOrdering = function (questions, questionOrder) { // Save the original order of the questions in a multidimensional array [[question0,0],[question1,1]... - var questionOrdering = questions.map(function(object, index) { return [object, index] }); + var questionOrdering = questions.map(function(questionInstance, index) { return [questionInstance, index] }); // Shuffle the multidimensional array questionOrdering = H5P.shuffleArray(questionOrdering); From 969526fece13eaccc298907ec07094a1965afdcb Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Fri, 21 Oct 2016 14:21:38 +0200 Subject: [PATCH 33/62] Minor refactoring [HFP-57] --- js/questionset.js | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index cfd3bc9..dd1a239 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -126,8 +126,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { var endTemplate = new EJS({text: resulttemplate}); var params = $.extend(true, {}, defaults, options); - var poolSize; // Number of questions to be pooled into a subset - var poolQuestions; // Questions in a pool var poolOrder; // Order of questions in a pool var currentQuestion = 0; var questionInstances = []; @@ -183,21 +181,13 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Return the questions in their new order *with* their new order return { - questions:questions, - questionOrder:newOrder + questions: questions, + questionOrder: newOrder }; } // Create a pool (a subset) of questions if necessary - if (params.poolSize) { - - // Sanitize input - if (params.poolSize > params.questions.length) { - poolSize = params.questions.length; - } - else { - poolSize = params.poolSize; - } + if (params.poolSize && params.poolSize < params.questions.length) { // If a previous pool exists, recreate it if(contentData.previousState && contentData.previousState.poolOrder) { @@ -212,18 +202,16 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Replace original questions with just the ones in the pool params.questions = pool; } - - // Otherwise create a new pool - else { - + else { // Otherwise create a new pool // Randomize and get the results var poolResult = randomizeQuestionOrdering(params.questions, poolOrder); - poolQuestions = poolResult.questions; + var poolQuestions = poolResult.questions; poolOrder = poolResult.questionOrder; // Discard extra questions - poolQuestions = poolQuestions.slice(0,poolSize); - poolOrder = poolOrder.slice(0,poolSize); + + poolQuestions = poolQuestions.slice(0, params.poolSize); + poolOrder = poolOrder.slice(0, params.poolSize); // Replace original questions with just the ones in the pool params.questions = poolQuestions; From ebcb050083e2f698a8d1e7a38e99d93ab3039d60 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Tue, 25 Oct 2016 13:36:11 +0200 Subject: [PATCH 34/62] Made poolSize being minimum 1 --- semantics.json | 1 + 1 file changed, 1 insertion(+) diff --git a/semantics.json b/semantics.json index 23b8bb2..0e4698b 100644 --- a/semantics.json +++ b/semantics.json @@ -212,6 +212,7 @@ { "name": "poolSize", "type": "number", + "min": 1, "label": "Number of questions to be shown:", "description": "Create a randomized batch of questions from the total.", "optional": true From 4a853424079fdb9c7861c9144bb27168f854d483 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Tue, 25 Oct 2016 19:11:59 +0200 Subject: [PATCH 35/62] Bumped minor --- library.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library.json b/library.json index 232a3be..1191c1b 100644 --- a/library.json +++ b/library.json @@ -3,8 +3,8 @@ "description": "Put together a set of different questions that has to be solved. (Quiz)", "contentType": "question", "majorVersion": 1, - "minorVersion": 9, - "patchVersion": 1, + "minorVersion": 10, + "patchVersion": 0, "embedTypes": [ "iframe" ], From 763d2dd41088419d6d118159f2736ee31e051fb7 Mon Sep 17 00:00:00 2001 From: Tom Arild Jakobsen Date: Mon, 14 Nov 2016 10:05:22 +0100 Subject: [PATCH 36/62] Hotfix --- js/questionset.js | 165 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 115 insertions(+), 50 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 9503447..4c40277 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -126,6 +126,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { var endTemplate = new EJS({text: resulttemplate}); var params = $.extend(true, {}, defaults, options); + var initialParams = $.extend(true, {}, defaults, options); var poolOrder; // Order of questions in a pool var currentQuestion = 0; var questionInstances = []; @@ -184,7 +185,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { questions: questions, questionOrder: newOrder }; - } + }; // Create a pool (a subset) of questions if necessary if (params.poolSize && params.poolSize < params.questions.length) { @@ -477,7 +478,61 @@ H5P.QuestionSet = function (options, contentId, contentData) { //Force the last page to be reRendered rendered = false; - if (params.randomQuestions) { + if(params.poolSize > 0){ + questionInstances = []; + + // Make new pool from params.questions + // Randomize and get the results + var poolResult = randomizeQuestionOrdering(initialParams.questions, poolOrder); + var poolQuestions = poolResult.questions; + poolOrder = poolResult.questionOrder; + + // Discard extra questions + poolQuestions = poolQuestions.slice(0, params.poolSize); + poolOrder = poolOrder.slice(0, params.poolSize); + + // Replace original questions with just the ones in the pool + params.questions = poolQuestions; + + // Create question instances from questions + // Instantiate question instances + for (var i = 0; i < params.questions.length; i++) { + + var question; + // If a previous order exists, use it + if (questionOrder !== undefined) { + question = params.questions[questionOrder[i]]; + } + else { + // Use a generic order when initialzing for the first time + question = params.questions[i]; + } + + if (override) { + // Extend subcontent with the overrided settings. + $.extend(question.params.behaviour, override); + } + + question.params = question.params || {}; + question.params.overrideSettings = question.params.overrideSettings || {}; + question.params.overrideSettings.$confirmationDialogParent = $template.last(); + question.params.overrideSettings.instance = this; + var hasAnswers = contentData.previousState && contentData.previousState.answers; + var questionInstance = H5P.newRunnable(question, contentId, undefined, undefined, + { + previousState: hasAnswers ? contentData.previousState.answers[i] : undefined, + parent: self + }); + questionInstance.on('resize', function () { + up = true; + self.trigger('resize'); + }); + questionInstances.push(questionInstance); + } + + // Update buttons + initializeQuestion(); + } else if (params.randomQuestions) { randomizeQuestions(); } @@ -498,6 +553,11 @@ H5P.QuestionSet = function (options, contentId, contentData) { questionInstances = result.questions; questionOrder = result.questionOrder; + replaceQuestionsInDOM(questionInstances); + }; + + var replaceQuestionsInDOM = function (questionInstances) { + // Find all question containers and detach questions from them $('.question-container', $myDom).each(function (){ $(this).children().detach(); @@ -514,20 +574,22 @@ H5P.QuestionSet = function (options, contentId, contentData) { question.attach($('.question-container:eq(' + i + ')', $myDom)); //Show buttons if necessary + console.log('replaceQuestionsInDOM', questionInstances[0].getAnswerGiven()); + debugger; if(questionInstances[questionInstances.length -1] === question && question.hasButton('finish')) { - question.showButton('finish'); + question.showButton('finish'); } if(questionInstances[questionInstances.length -1] !== question && question.hasButton('next')) { - question.showButton('next'); + question.showButton('next'); } if(questionInstances[0] !== question && question.hasButton('prev') && !params.disableBackwardsNavigation) { - question.showButton('prev'); + question.showButton('prev'); } // Hide relevant buttons since the order has changed @@ -542,10 +604,8 @@ H5P.QuestionSet = function (options, contentId, contentData) { if (questionInstances[questionInstances.length-1] !== question) { question.hideButton('finish'); } - } - - } + }; var moveQuestion = function (direction) { if (params.disableBackwardsNavigation && !questionInstances[currentQuestion].getAnswerGiven()) { @@ -762,47 +822,14 @@ H5P.QuestionSet = function (options, contentId, contentData) { self.trigger('resize'); }; + var registerImageLoadedListener = function (question) { + H5P.on(question, 'imageLoaded', function () { + self.trigger('resize'); + }); + }; + // Function for attaching the multichoice to a DOM element. - this.attach = function (target) { - if (this.isRoot()) { - this.setActivityStarted(); - } - if (typeof(target) === "string") { - $myDom = $('#' + target); - } - else { - $myDom = $(target); - } - - // Render own DOM into target. - $myDom.children().remove(); - $myDom.append($template); - if (params.backgroundImage !== undefined) { - $myDom.css({ - overflow: 'hidden', - background: '#fff url("' + H5P.getPath(params.backgroundImage.path, contentId) + '") no-repeat 50% 50%', - backgroundSize: '100% auto' - }); - } - - if (params.introPage.backgroundImage !== undefined) { - var $intro = $myDom.find('.intro-page'); - if ($intro.length) { - var bgImg = params.introPage.backgroundImage; - var bgImgRatio = (bgImg.height / bgImg.width); - $intro.css({ - background: '#fff url("' + H5P.getPath(bgImg.path, contentId) + '") no-repeat 50% 50%', - backgroundSize: 'auto 100%', - minHeight: bgImgRatio * +window.getComputedStyle($intro[0]).width.replace('px','') - }); - } - } - var registerImageLoadedListener = function (question) { - H5P.on(question, 'imageLoaded', function () { - self.trigger('resize'); - }); - }; - + function initializeQuestion() { // Attach questions for (var i = 0; i < questionInstances.length; i++) { var question = questionInstances[i]; @@ -838,8 +865,8 @@ H5P.QuestionSet = function (options, contentId, contentData) { question.on('xAPI', function (event) { var shortVerb = event.getVerb(); if (shortVerb === 'interacted' || - shortVerb === 'answered' || - shortVerb === 'attempted') { + shortVerb === 'answered' || + shortVerb === 'attempted') { toggleAnsweredDot(currentQuestion, questionInstances[currentQuestion].getAnswerGiven()); _updateButtons(); @@ -857,6 +884,44 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Mark question if answered toggleAnsweredDot(i, question.getAnswerGiven()); } + } + + this.attach = function (target) { + if (this.isRoot()) { + this.setActivityStarted(); + } + if (typeof(target) === "string") { + $myDom = $('#' + target); + } + else { + $myDom = $(target); + } + + // Render own DOM into target. + $myDom.children().remove(); + $myDom.append($template); + if (params.backgroundImage !== undefined) { + $myDom.css({ + overflow: 'hidden', + background: '#fff url("' + H5P.getPath(params.backgroundImage.path, contentId) + '") no-repeat 50% 50%', + backgroundSize: '100% auto' + }); + } + + if (params.introPage.backgroundImage !== undefined) { + var $intro = $myDom.find('.intro-page'); + if ($intro.length) { + var bgImg = params.introPage.backgroundImage; + var bgImgRatio = (bgImg.height / bgImg.width); + $intro.css({ + background: '#fff url("' + H5P.getPath(bgImg.path, contentId) + '") no-repeat 50% 50%', + backgroundSize: 'auto 100%', + minHeight: bgImgRatio * +window.getComputedStyle($intro[0]).width.replace('px','') + }); + } + } + + initializeQuestion(); // Allow other libraries to add transitions after the questions have been inited $('.questionset', $myDom).addClass('started'); From 1abac682cbc5c26d708e4cefdd118db11fc91128 Mon Sep 17 00:00:00 2001 From: Tom Arild Jakobsen Date: Mon, 14 Nov 2016 10:05:22 +0100 Subject: [PATCH 37/62] Hotfix. Relates to #HFP-200 --- js/questionset.js | 165 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 115 insertions(+), 50 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 9503447..4c40277 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -126,6 +126,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { var endTemplate = new EJS({text: resulttemplate}); var params = $.extend(true, {}, defaults, options); + var initialParams = $.extend(true, {}, defaults, options); var poolOrder; // Order of questions in a pool var currentQuestion = 0; var questionInstances = []; @@ -184,7 +185,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { questions: questions, questionOrder: newOrder }; - } + }; // Create a pool (a subset) of questions if necessary if (params.poolSize && params.poolSize < params.questions.length) { @@ -477,7 +478,61 @@ H5P.QuestionSet = function (options, contentId, contentData) { //Force the last page to be reRendered rendered = false; - if (params.randomQuestions) { + if(params.poolSize > 0){ + questionInstances = []; + + // Make new pool from params.questions + // Randomize and get the results + var poolResult = randomizeQuestionOrdering(initialParams.questions, poolOrder); + var poolQuestions = poolResult.questions; + poolOrder = poolResult.questionOrder; + + // Discard extra questions + poolQuestions = poolQuestions.slice(0, params.poolSize); + poolOrder = poolOrder.slice(0, params.poolSize); + + // Replace original questions with just the ones in the pool + params.questions = poolQuestions; + + // Create question instances from questions + // Instantiate question instances + for (var i = 0; i < params.questions.length; i++) { + + var question; + // If a previous order exists, use it + if (questionOrder !== undefined) { + question = params.questions[questionOrder[i]]; + } + else { + // Use a generic order when initialzing for the first time + question = params.questions[i]; + } + + if (override) { + // Extend subcontent with the overrided settings. + $.extend(question.params.behaviour, override); + } + + question.params = question.params || {}; + question.params.overrideSettings = question.params.overrideSettings || {}; + question.params.overrideSettings.$confirmationDialogParent = $template.last(); + question.params.overrideSettings.instance = this; + var hasAnswers = contentData.previousState && contentData.previousState.answers; + var questionInstance = H5P.newRunnable(question, contentId, undefined, undefined, + { + previousState: hasAnswers ? contentData.previousState.answers[i] : undefined, + parent: self + }); + questionInstance.on('resize', function () { + up = true; + self.trigger('resize'); + }); + questionInstances.push(questionInstance); + } + + // Update buttons + initializeQuestion(); + } else if (params.randomQuestions) { randomizeQuestions(); } @@ -498,6 +553,11 @@ H5P.QuestionSet = function (options, contentId, contentData) { questionInstances = result.questions; questionOrder = result.questionOrder; + replaceQuestionsInDOM(questionInstances); + }; + + var replaceQuestionsInDOM = function (questionInstances) { + // Find all question containers and detach questions from them $('.question-container', $myDom).each(function (){ $(this).children().detach(); @@ -514,20 +574,22 @@ H5P.QuestionSet = function (options, contentId, contentData) { question.attach($('.question-container:eq(' + i + ')', $myDom)); //Show buttons if necessary + console.log('replaceQuestionsInDOM', questionInstances[0].getAnswerGiven()); + debugger; if(questionInstances[questionInstances.length -1] === question && question.hasButton('finish')) { - question.showButton('finish'); + question.showButton('finish'); } if(questionInstances[questionInstances.length -1] !== question && question.hasButton('next')) { - question.showButton('next'); + question.showButton('next'); } if(questionInstances[0] !== question && question.hasButton('prev') && !params.disableBackwardsNavigation) { - question.showButton('prev'); + question.showButton('prev'); } // Hide relevant buttons since the order has changed @@ -542,10 +604,8 @@ H5P.QuestionSet = function (options, contentId, contentData) { if (questionInstances[questionInstances.length-1] !== question) { question.hideButton('finish'); } - } - - } + }; var moveQuestion = function (direction) { if (params.disableBackwardsNavigation && !questionInstances[currentQuestion].getAnswerGiven()) { @@ -762,47 +822,14 @@ H5P.QuestionSet = function (options, contentId, contentData) { self.trigger('resize'); }; + var registerImageLoadedListener = function (question) { + H5P.on(question, 'imageLoaded', function () { + self.trigger('resize'); + }); + }; + // Function for attaching the multichoice to a DOM element. - this.attach = function (target) { - if (this.isRoot()) { - this.setActivityStarted(); - } - if (typeof(target) === "string") { - $myDom = $('#' + target); - } - else { - $myDom = $(target); - } - - // Render own DOM into target. - $myDom.children().remove(); - $myDom.append($template); - if (params.backgroundImage !== undefined) { - $myDom.css({ - overflow: 'hidden', - background: '#fff url("' + H5P.getPath(params.backgroundImage.path, contentId) + '") no-repeat 50% 50%', - backgroundSize: '100% auto' - }); - } - - if (params.introPage.backgroundImage !== undefined) { - var $intro = $myDom.find('.intro-page'); - if ($intro.length) { - var bgImg = params.introPage.backgroundImage; - var bgImgRatio = (bgImg.height / bgImg.width); - $intro.css({ - background: '#fff url("' + H5P.getPath(bgImg.path, contentId) + '") no-repeat 50% 50%', - backgroundSize: 'auto 100%', - minHeight: bgImgRatio * +window.getComputedStyle($intro[0]).width.replace('px','') - }); - } - } - var registerImageLoadedListener = function (question) { - H5P.on(question, 'imageLoaded', function () { - self.trigger('resize'); - }); - }; - + function initializeQuestion() { // Attach questions for (var i = 0; i < questionInstances.length; i++) { var question = questionInstances[i]; @@ -838,8 +865,8 @@ H5P.QuestionSet = function (options, contentId, contentData) { question.on('xAPI', function (event) { var shortVerb = event.getVerb(); if (shortVerb === 'interacted' || - shortVerb === 'answered' || - shortVerb === 'attempted') { + shortVerb === 'answered' || + shortVerb === 'attempted') { toggleAnsweredDot(currentQuestion, questionInstances[currentQuestion].getAnswerGiven()); _updateButtons(); @@ -857,6 +884,44 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Mark question if answered toggleAnsweredDot(i, question.getAnswerGiven()); } + } + + this.attach = function (target) { + if (this.isRoot()) { + this.setActivityStarted(); + } + if (typeof(target) === "string") { + $myDom = $('#' + target); + } + else { + $myDom = $(target); + } + + // Render own DOM into target. + $myDom.children().remove(); + $myDom.append($template); + if (params.backgroundImage !== undefined) { + $myDom.css({ + overflow: 'hidden', + background: '#fff url("' + H5P.getPath(params.backgroundImage.path, contentId) + '") no-repeat 50% 50%', + backgroundSize: '100% auto' + }); + } + + if (params.introPage.backgroundImage !== undefined) { + var $intro = $myDom.find('.intro-page'); + if ($intro.length) { + var bgImg = params.introPage.backgroundImage; + var bgImgRatio = (bgImg.height / bgImg.width); + $intro.css({ + background: '#fff url("' + H5P.getPath(bgImg.path, contentId) + '") no-repeat 50% 50%', + backgroundSize: 'auto 100%', + minHeight: bgImgRatio * +window.getComputedStyle($intro[0]).width.replace('px','') + }); + } + } + + initializeQuestion(); // Allow other libraries to add transitions after the questions have been inited $('.questionset', $myDom).addClass('started'); From a95d0be8e08bca3196fb0496a06a9913511ee0ff Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Mon, 14 Nov 2016 11:31:15 +0100 Subject: [PATCH 38/62] Refactor createion of question pools. Refers to [H5P-56] --- js/questionset.js | 127 +++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 76 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 4c40277..f2bd8b4 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -1,4 +1,4 @@ -var H5P = H5P || {}; +H5P = H5P || {}; /** * Will render a Question with multiple choices for answers. @@ -153,7 +153,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { * @param {array} questionOrder * @return {Object.} questionOrdering */ - var randomizeQuestionOrdering = function (questions, questionOrder) { + var randomizeQuestionOrdering = function (questions) { // 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] }); @@ -172,7 +172,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { for (var i = 0; i< questionOrdering.length; i++) { // Use a previous order if it exists - if(questionOrder) { + if(contentData.previousState && contentData.previousState.questionOrder) { newOrder[i] = questionOrder[questionOrdering[i][1]]; } else { @@ -180,7 +180,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { } } - // Return the questions in their new order *with* their new order + // Return the questions in their new order *with* their new indexes return { questions: questions, questionOrder: newOrder @@ -188,7 +188,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { }; // Create a pool (a subset) of questions if necessary - if (params.poolSize && params.poolSize < params.questions.length) { + if (params.poolSize > 0) { // If a previous pool exists, recreate it if(contentData.previousState && contentData.previousState.poolOrder) { @@ -205,7 +205,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { } else { // Otherwise create a new pool // Randomize and get the results - var poolResult = randomizeQuestionOrdering(params.questions, poolOrder); + var poolResult = randomizeQuestionOrdering(params.questions); var poolQuestions = poolResult.questions; poolOrder = poolResult.questionOrder; @@ -239,44 +239,54 @@ H5P.QuestionSet = function (options, contentId, contentData) { } } - // Instantiate question instances - for (var i = 0; i < params.questions.length; i++) { + var createQuestionInstancesFromQuestions = function(questions){ - var question; - // If a previous order exists, use it - if (questionOrder !== undefined) { - question = params.questions[questionOrder[i]]; - } - else { - // Use a generic order when initialzing for the first time - question = params.questions[i]; - } + var result = []; + // Create question instances from questions + // Instantiate question instances + for (var i = 0; i < params.questions.length; i++) { - if (override) { - // Extend subcontent with the overrided settings. - $.extend(question.params.behaviour, override); - } + var question; + // If a previous order exists, use it + if (questionOrder !== undefined) { + question = params.questions[questionOrder[i]]; + } + else { + // Use a generic order when initialzing for the first time + question = params.questions[i]; + } - question.params = question.params || {}; - question.params.overrideSettings = question.params.overrideSettings || {}; - question.params.overrideSettings.$confirmationDialogParent = $template.last(); - question.params.overrideSettings.instance = this; - var hasAnswers = contentData.previousState && contentData.previousState.answers; - var questionInstance = H5P.newRunnable(question, contentId, undefined, undefined, - { - previousState: hasAnswers ? contentData.previousState.answers[i] : undefined, - parent: self + if (override) { + // Extend subcontent with the overrided settings. + $.extend(question.params.behaviour, override); + } + + question.params = question.params || {}; + question.params.overrideSettings = question.params.overrideSettings || {}; + question.params.overrideSettings.$confirmationDialogParent = $template.last(); + question.params.overrideSettings.instance = this; + var hasAnswers = contentData.previousState && contentData.previousState.answers; + var questionInstance = H5P.newRunnable(question, contentId, undefined, undefined, + { + previousState: hasAnswers ? contentData.previousState.answers[i] : undefined, + parent: self + }); + questionInstance.on('resize', function () { + up = true; + self.trigger('resize'); }); - questionInstance.on('resize', function () { - up = true; - self.trigger('resize'); - }); - questionInstances.push(questionInstance); + result.push(questionInstance); + } + + return result; } + // Create question instances from questions given by params + questionInstances = createQuestionInstancesFromQuestions(params.questions); + // Randomize questions only on instantiation if (params.randomQuestions && contentData.previousState === undefined) { - var result = randomizeQuestionOrdering(questionInstances,questionOrder); + var result = randomizeQuestionOrdering(questionInstances); questionInstances = result.questions; questionOrder = result.questionOrder; } @@ -479,11 +489,10 @@ H5P.QuestionSet = function (options, contentId, contentData) { rendered = false; if(params.poolSize > 0){ - questionInstances = []; // Make new pool from params.questions // Randomize and get the results - var poolResult = randomizeQuestionOrdering(initialParams.questions, poolOrder); + var poolResult = randomizeQuestionOrdering(initialParams.questions); var poolQuestions = poolResult.questions; poolOrder = poolResult.questionOrder; @@ -494,44 +503,12 @@ H5P.QuestionSet = function (options, contentId, contentData) { // Replace original questions with just the ones in the pool params.questions = poolQuestions; - // Create question instances from questions - // Instantiate question instances - for (var i = 0; i < params.questions.length; i++) { - - var question; - // If a previous order exists, use it - if (questionOrder !== undefined) { - question = params.questions[questionOrder[i]]; - } - else { - // Use a generic order when initialzing for the first time - question = params.questions[i]; - } - - if (override) { - // Extend subcontent with the overrided settings. - $.extend(question.params.behaviour, override); - } - - question.params = question.params || {}; - question.params.overrideSettings = question.params.overrideSettings || {}; - question.params.overrideSettings.$confirmationDialogParent = $template.last(); - question.params.overrideSettings.instance = this; - var hasAnswers = contentData.previousState && contentData.previousState.answers; - var questionInstance = H5P.newRunnable(question, contentId, undefined, undefined, - { - previousState: hasAnswers ? contentData.previousState.answers[i] : undefined, - parent: self - }); - questionInstance.on('resize', function () { - up = true; - self.trigger('resize'); - }); - questionInstances.push(questionInstance); - } + // Recreate the question instances + questionInstances = createQuestionInstancesFromQuestions(params.questions); // Update buttons initializeQuestion(); + } else if (params.randomQuestions) { randomizeQuestions(); } @@ -549,7 +526,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { */ var randomizeQuestions = function () { - var result = randomizeQuestionOrdering(questionInstances,questionOrder); + var result = randomizeQuestionOrdering(questionInstances); questionInstances = result.questions; questionOrder = result.questionOrder; @@ -574,8 +551,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { question.attach($('.question-container:eq(' + i + ')', $myDom)); //Show buttons if necessary - console.log('replaceQuestionsInDOM', questionInstances[0].getAnswerGiven()); - debugger; if(questionInstances[questionInstances.length -1] === question && question.hasButton('finish')) { question.showButton('finish'); From 568e0992e55a20a03043ac300688ffa25341abb3 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Mon, 14 Nov 2016 15:22:43 +0100 Subject: [PATCH 39/62] Add comments and ensure questions are created without previous state. [HFP-56] --- js/questionset.js | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index f2bd8b4..a2bea2e 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -146,11 +146,9 @@ H5P.QuestionSet = function (options, contentId, contentData) { questionOrder = contentData.previousState.order; } - // Create a pool of questions if necessary /** * Randomizes questions in an array and updates an array containing their order * @param {array} questions - * @param {array} questionOrder * @return {Object.} questionOrdering */ var randomizeQuestionOrdering = function (questions) { @@ -239,21 +237,26 @@ H5P.QuestionSet = function (options, contentId, contentData) { } } - var createQuestionInstancesFromQuestions = function(questions){ - + /** + * Generates question instances from H5P objects + * + * @param {object} questions H5P content types to be created as instances + * @return {array} Array of questions instances + */ + var createQuestionInstancesFromQuestions = function(questions) { var result = []; // Create question instances from questions // Instantiate question instances - for (var i = 0; i < params.questions.length; i++) { + for (var i = 0; i < questions.length; i++) { var question; // If a previous order exists, use it if (questionOrder !== undefined) { - question = params.questions[questionOrder[i]]; + question = questions[questionOrder[i]]; } else { // Use a generic order when initialzing for the first time - question = params.questions[i]; + question = questions[i]; } if (override) { @@ -451,7 +454,12 @@ H5P.QuestionSet = function (options, contentId, contentData) { * @public */ var resetTask = function () { + + // Clear previous state to ensure questions are created cleanly + contentData.previousState = []; + showingSolutions = false; + for (var i = 0; i < questionInstances.length; i++) { try { questionInstances[i].resetTask(); @@ -533,6 +541,12 @@ H5P.QuestionSet = function (options, contentId, contentData) { replaceQuestionsInDOM(questionInstances); }; + + /** + * Empty the DOM of all questions, attach new questions and update buttons + * + * @param {type} questionInstances Array of questions to be attached to the DOM + */ var replaceQuestionsInDOM = function (questionInstances) { // Find all question containers and detach questions from them @@ -803,7 +817,11 @@ H5P.QuestionSet = function (options, contentId, contentData) { }); }; - // Function for attaching the multichoice to a DOM element. + + /** + * Initialize a question and attach it to the DOM + * + */ function initializeQuestion() { // Attach questions for (var i = 0; i < questionInstances.length; i++) { From 163e3140599db7ba6026c7e2280d34ba6e9bdd56 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Mon, 14 Nov 2016 15:53:27 +0100 Subject: [PATCH 40/62] Make sure styles are not being added twice to questions [HFP-56] --- js/questionset.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/questionset.js b/js/questionset.js index a2bea2e..97ef90b 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -455,7 +455,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { */ var resetTask = function () { - // Clear previous state to ensure questions are created cleanly + // Clear previous state to ensure questions are created cleanly contentData.previousState = []; showingSolutions = false; @@ -827,6 +827,9 @@ H5P.QuestionSet = function (options, contentId, contentData) { for (var i = 0; i < questionInstances.length; i++) { var question = questionInstances[i]; + // Make sure styles are not being added twice + $('.question-container:eq(' + i + ')', $myDom).attr('class', 'question-container'); + question.attach($('.question-container:eq(' + i + ')', $myDom)); // Listen for image resize From 34c951841a612666a1225d075f03eb08432f0569 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Tue, 15 Nov 2016 12:44:17 +0100 Subject: [PATCH 41/62] Prepared release --- library.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.json b/library.json index 1191c1b..7085667 100644 --- a/library.json +++ b/library.json @@ -4,7 +4,7 @@ "contentType": "question", "majorVersion": 1, "minorVersion": 10, - "patchVersion": 0, + "patchVersion": 1, "embedTypes": [ "iframe" ], From 23a7988ddc56cd6c7645cb031f7281697813c747 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Thu, 17 Nov 2016 13:38:43 +0100 Subject: [PATCH 42/62] -mAdded link option to tip and feedback for multiple choice [HfP-196] --- library.json | 6 +++--- semantics.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/library.json b/library.json index 7085667..bcd1012 100644 --- a/library.json +++ b/library.json @@ -3,8 +3,8 @@ "description": "Put together a set of different questions that has to be solved. (Quiz)", "contentType": "question", "majorVersion": 1, - "minorVersion": 10, - "patchVersion": 1, + "minorVersion": 11, + "patchVersion": 0, "embedTypes": [ "iframe" ], @@ -61,4 +61,4 @@ "minorVersion": 1 } ] -} +} \ No newline at end of file diff --git a/semantics.json b/semantics.json index 0e4698b..9f33e2f 100644 --- a/semantics.json +++ b/semantics.json @@ -110,7 +110,7 @@ "label": "Question type", "description": "Library for this question.", "options": [ - "H5P.MultiChoice 1.8", + "H5P.MultiChoice 1.9", "H5P.DragQuestion 1.7", "H5P.Blanks 1.7", "H5P.MarkTheWords 1.6", @@ -409,4 +409,4 @@ } ] } -] +] \ No newline at end of file From cf0611734faa56fd9c0a3266e69d3d398b687ba8 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Mon, 21 Nov 2016 12:30:53 +0100 Subject: [PATCH 43/62] Edit README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 75e49ea..db79e08 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ H5P Question Set ========== -Test your users with by putting together multiple tasks into a question set(quiz). +Test your users with by putting together multiple tasks into a question set(quiz) ## License From f2bb7e9172541da6a17b05a3b809fe29d5ab227d Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Wed, 23 Nov 2016 09:31:54 +0100 Subject: [PATCH 44/62] Code formatting --- js/questionset.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 97ef90b..ed41f73 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -541,7 +541,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { replaceQuestionsInDOM(questionInstances); }; - /** * Empty the DOM of all questions, attach new questions and update buttons * @@ -817,7 +816,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { }); }; - /** * Initialize a question and attach it to the DOM * @@ -1009,7 +1007,6 @@ H5P.QuestionSet = function (options, contentId, contentData) { return score; }; - /** * @deprecated since version 1.9.2 * @returns {number} From 7a3e8d8292059980ca0e6372ff67828f695683d5 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Wed, 23 Nov 2016 10:19:32 +0100 Subject: [PATCH 45/62] Add function getXAPIData() to allow the creation of a report HFP-255 --- js/questionset.js | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/js/questionset.js b/js/questionset.js index ed41f73..32c6d63 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -1121,6 +1121,58 @@ H5P.QuestionSet = function (options, contentId, contentData) { poolOrder: poolOrder }; }; + + /** + * Generate xAPI object definition used in xAPI statements. + * @return {Object} + */ + var getxAPIDefinition = function () { + var definition = {}; + + definition.interactionType = 'compound'; + definition.type = 'http://adlnet.gov/expapi/activities/cmi.interaction'; + definition.description = { + 'en-US': 'Question Set' + }; + + return definition; + }; + + /** + * Add the question itself to the definition part of an xAPIEvent + */ + var addQuestionToXAPI = function(xAPIEvent) { + var definition = xAPIEvent.getVerifiedStatementValue(['object', 'definition']); + $.extend(definition, getxAPIDefinition()); + }; + + /** + * Get xAPI data from sub content types + * + * @param {Object} metaContentType + * @returns {array} + */ + var getXAPIDataFromChildren = function(metaContentType) { + return metaContentType.getQuestions().map(function(question) { + return question.getXAPIData(); + }); + } + + /** + * Get xAPI data. + * Contract used by report rendering engine. + * + * @see contract at {@link https://h5p.org/documentation/developers/contracts#guides-header-6} + */ + this.getXAPIData = function(){ + var xAPIEvent = this.createXAPIEventTemplate('answered'); + addQuestionToXAPI(xAPIEvent); + var childrenData = getXAPIDataFromChildren(this); + return { + statement: xAPIEvent.data.statement, + children: childrenData + } + }; }; H5P.QuestionSet.prototype = Object.create(H5P.EventDispatcher.prototype); From 29d122be50f3f3fea43d94fb15396189711ab6c8 Mon Sep 17 00:00:00 2001 From: Timothy Lim Date: Wed, 23 Nov 2016 14:39:57 +0100 Subject: [PATCH 46/62] Update questionset.js --- js/questionset.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/questionset.js b/js/questionset.js index 32c6d63..476cb59 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -1132,7 +1132,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { definition.interactionType = 'compound'; definition.type = 'http://adlnet.gov/expapi/activities/cmi.interaction'; definition.description = { - 'en-US': 'Question Set' + 'en-US': '' }; return definition; From 5b0736f0e8b2a3be0b5617c02228606c5939f803 Mon Sep 17 00:00:00 2001 From: thomasmars Date: Thu, 24 Nov 2016 17:29:47 +0100 Subject: [PATCH 47/62] Added score to getXAPIData call HFP-255 --- js/questionset.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/js/questionset.js b/js/questionset.js index 476cb59..0fdd085 100644 --- a/js/questionset.js +++ b/js/questionset.js @@ -1132,7 +1132,7 @@ H5P.QuestionSet = function (options, contentId, contentData) { definition.interactionType = 'compound'; definition.type = 'http://adlnet.gov/expapi/activities/cmi.interaction'; definition.description = { - 'en-US': '' + 'en-US': '' }; return definition; @@ -1150,13 +1150,13 @@ H5P.QuestionSet = function (options, contentId, contentData) { * Get xAPI data from sub content types * * @param {Object} metaContentType - * @returns {array} + * @returns {array} */ var getXAPIDataFromChildren = function(metaContentType) { return metaContentType.getQuestions().map(function(question) { return question.getXAPIData(); }); - } + }; /** * Get xAPI data. @@ -1166,11 +1166,16 @@ H5P.QuestionSet = function (options, contentId, contentData) { */ this.getXAPIData = function(){ var xAPIEvent = this.createXAPIEventTemplate('answered'); - addQuestionToXAPI(xAPIEvent); - var childrenData = getXAPIDataFromChildren(this); + addQuestionToXAPI(xAPIEvent); + xAPIEvent.setScoredResult(this.getScore(), + this.getMaxScore(), + this, + true, + this.getScore() === this.getMaxScore() + ); return { statement: xAPIEvent.data.statement, - children: childrenData + children: getXAPIDataFromChildren(this) } }; }; From 541bf90762c16f3e583fee881b397cb4bbc8c54c Mon Sep 17 00:00:00 2001 From: thomasmars Date: Fri, 25 Nov 2016 09:29:08 +0100 Subject: [PATCH 48/62] Increased patch version, prepared for release --- library.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.json b/library.json index 7085667..098e93a 100644 --- a/library.json +++ b/library.json @@ -4,7 +4,7 @@ "contentType": "question", "majorVersion": 1, "minorVersion": 10, - "patchVersion": 1, + "patchVersion": 2, "embedTypes": [ "iframe" ], From 7b5f1aa3922dbabc2b3185843a31efb33bee1cfd Mon Sep 17 00:00:00 2001 From: Jamesap Date: Thu, 1 Dec 2016 14:46:58 +0100 Subject: [PATCH 49/62] Updating french language --- language/fr.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/language/fr.json b/language/fr.json index 8819830..dc445fa 100644 --- a/language/fr.json +++ b/language/fr.json @@ -109,16 +109,16 @@ ] }, { - "label": "Disable backwards navigation", - "description": "This option will only allow you to move forward in Question Set" + "label": "Désactiver la possibilité de naviguer en arrière", + "description": "Cette option ne permettra plus que la navigation en avant au sein du module Question Set" }, { - "label": "Randomize questions", - "description": "Enable to randomize the order of questions on display." + "label": "Afficher les question dans un ordre aléatoire", + "description": "Ceci permet d'afficher les questions dans un ordre aléatoire." }, { - "label": "Number of questions to be shown:", - "description": "Create a randomized batch of questions from the total." + "label": "Nombre de questions à afficher:", + "description": "Génère aléatoire un jeu de question parmi toutes les questions disponibles." }, { "label": "Quiz terminé", From 5d29e756dc06ce655b554df943e2f85088a746ed Mon Sep 17 00:00:00 2001 From: jelenamilinovic Date: Mon, 12 Dec 2016 15:54:29 +0100 Subject: [PATCH 50/62] add importance to semantics HFP-346 --- semantics.json | 53 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/semantics.json b/semantics.json index 9f33e2f..61b716c 100644 --- a/semantics.json +++ b/semantics.json @@ -3,16 +3,19 @@ "name": "introPage", "type": "group", "label": "Quiz introduction", + "importance":"medium", "fields": [ { "name": "showIntroPage", "type": "boolean", - "label": "Display introduction" + "label": "Display introduction", + "importance":"low" }, { "name": "title", "type": "text", "label": "Title", + "importance":"high", "optional": true, "description": "This title will be displayed above the introduction text.", "tags": [ @@ -27,6 +30,7 @@ "type": "text", "widget": "html", "label": "Introduction text", + "importance":"medium", "optional": true, "description": "This text will be displayed before the quiz starts.", "enterMode": "p", @@ -42,6 +46,7 @@ "name": "startButtonText", "type": "text", "label": "Start button text", + "importance":"low", "optional": true, "default": "Start Quiz" }, @@ -49,6 +54,7 @@ "name": "backgroundImage", "type": "image", "label": "Background image", + "importance":"low", "optional": true, "description": "An optional background image for the introduction." } @@ -58,6 +64,7 @@ "name": "backgroundImage", "type": "image", "label": "Background image", + "importance":"low", "optional": true, "description": "An optional background image for the Question set." }, @@ -65,6 +72,7 @@ "name": "progressType", "type": "select", "label": "Progress indicator", + "importance":"low", "description": "Question set progress indicator style.", "options": [ { @@ -82,6 +90,7 @@ "name": "passPercentage", "type": "number", "label": "Pass percentage", + "importance":"low", "description": "Percentage of Total score required for passing the quiz.", "min": 0, "max": 100, @@ -91,6 +100,7 @@ { "name": "questions", "label": "Questions", + "importance":"high", "type": "list", "widgets": [ { @@ -108,6 +118,7 @@ "name": "question", "type": "library", "label": "Question type", + "importance":"high", "description": "Library for this question.", "options": [ "H5P.MultiChoice 1.9", @@ -123,30 +134,35 @@ "name": "texts", "type": "group", "label": "Interface texts in quiz", + "importance":"low", "common": true, "fields": [ { "name": "prevButton", "type": "text", "label": "Back button", + "importance":"low", "default": "Previous question" }, { "name": "nextButton", "type": "text", "label": "Next button", + "importance":"low", "default": "Next question" }, { "name": "finishButton", "type": "text", "label": "Finish button", + "importance":"low", "default": "Finish" }, { "name": "textualProgress", "type": "text", "label": "Progress text", + "importance":"low", "description": "Text used if textual progress is selected.", "default": "Question: @current of @total questions", "tags": [ @@ -158,6 +174,7 @@ "name": "jumpToQuestion", "type": "text", "label": "Label for jumping to a certain question", + "importance":"low", "description": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "default": "Question %d of %total" }, @@ -165,12 +182,14 @@ "name": "questionLabel", "type": "text", "label": "Copyright dialog question label", + "importance":"low", "default": "Question" }, { "name": "readSpeakerProgress", "type": "text", "label": "Readspeaker progress", + "importance":"low", "description": "May use @current and @total question variables", "default": "Question @current of @total" }, @@ -178,18 +197,21 @@ "name": "unansweredText", "type": "text", "label": "Unanswered question text", + "importance":"low", "default": "Unanswered" }, { "name": "answeredText", "type": "text", "label": "Answered question text", + "importance":"low", "default": "Answered" }, { "name": "currentQuestionText", "type": "text", "label": "Current question text", + "importance":"low", "default": "Current question" } ] @@ -198,6 +220,7 @@ "name": "disableBackwardsNavigation", "type": "boolean", "label": "Disable backwards navigation", + "importance":"low", "description": "This option will only allow you to move forward in Question Set", "optional": true, "default": false @@ -206,6 +229,7 @@ "name": "randomQuestions", "type": "boolean", "label": "Randomize questions", + "importance":"low", "description": "Enable to randomize the order of questions on display.", "default": false }, @@ -214,6 +238,7 @@ "type": "number", "min": 1, "label": "Number of questions to be shown:", + "importance":"low", "description": "Create a randomized batch of questions from the total.", "optional": true }, @@ -221,17 +246,20 @@ "name": "endGame", "type": "group", "label": "Quiz finished", + "importance":"medium", "fields": [ { "name": "showResultPage", "type": "boolean", "label": "Display results", + "importance":"low", "default": true }, { "name": "noResultMessage", "type": "text", "label": "No results message", + "importance":"low", "description": "Text displayed on end page when \"Display results\" is disabled", "default": "Finished", "optional": true @@ -240,6 +268,7 @@ "name": "message", "type": "text", "label": "Feedback heading", + "importance":"low", "default": "Your result:", "optional": true, "description": "This heading will be displayed at the end of the quiz when the user has answered all questions.", @@ -252,6 +281,7 @@ "name": "scoreString", "type": "text", "label": "Score display text", + "importance":"low", "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", "default": "You got @score of @total points", "optional": true @@ -260,6 +290,7 @@ "name": "successGreeting", "type": "text", "label": "Quiz passed greeting", + "importance":"low", "placeholder": "Congratulations!", "default": "Congratulations!", "optional": true, @@ -274,6 +305,7 @@ "type": "text", "widget": "html", "label": "Passed comment", + "importance":"low", "default": "You did very well!", "optional": true, "description": "This comment will be displayed after the score if the user has successfully passed the quiz.", @@ -290,6 +322,7 @@ "name": "failGreeting", "type": "text", "label": "Quiz failed title", + "importance":"low", "default": "You did not pass this time.", "optional": true, "description": "This text will be displayed above the score if the user has failed the quiz.", @@ -303,6 +336,7 @@ "type": "text", "widget": "html", "label": "Failed comment", + "importance":"low", "default": "Have another try!", "optional": true, "description": "This comment will be displayed after the score if the user has failed the quiz.", @@ -319,6 +353,7 @@ "name": "solutionButtonText", "type": "text", "label": "Solution button label", + "importance":"low", "default": "Show solution", "description": "Text for the solution button." }, @@ -326,6 +361,7 @@ "name": "retryButtonText", "type": "text", "label": "Retry button label", + "importance":"low", "default": "Retry", "description": "Text for the retry button." }, @@ -333,28 +369,33 @@ "name": "finishButtonText", "type": "text", "label": "Finish button text", + "importance":"low", "default": "Finish" }, { "name": "showAnimations", "type": "boolean", - "label": "Display video before quiz results" + "label": "Display video before quiz results", + "importance":"low" }, { "name": "skippable", "type": "boolean", - "label": "Enable skip video button" + "label": "Enable skip video button", + "importance":"low" }, { "name": "skipButtonText", "type": "text", "label": "Skip video button label", + "importance":"low", "default": "Skip video" }, { "name": "successVideo", "type": "video", "label": "Passed video", + "importance":"low", "optional": true, "description": "This video will be played if the user successfully passed the quiz." }, @@ -362,6 +403,7 @@ "name": "failVideo", "type": "video", "label": "Fail video", + "importance":"low", "optional": true, "description": "This video will be played if the user failes the quiz." } @@ -371,12 +413,14 @@ "name": "override", "type": "group", "label": "Settings for \"Show solution\" and \"Retry\" buttons", + "importance":"low", "optional": true, "fields": [ { "name": "showSolutionButton", "type": "select", "label": "Override \"Show Solution\" button", + "importance":"low", "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "optional": true, "options": [ @@ -394,6 +438,7 @@ "name": "retryButton", "type": "select", "label": "Override \"Retry\" button", + "importance":"low", "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "optional": true, "options": [ @@ -409,4 +454,4 @@ } ] } -] \ No newline at end of file +] From fe0ca6bcae23e450f4fc8a97e57e1587d7f492c9 Mon Sep 17 00:00:00 2001 From: Frode Petterson Date: Fri, 16 Dec 2016 11:36:39 +0100 Subject: [PATCH 51/62] Clean up semantics syntax --- semantics.json | 90 +++++++++++++++++++++++++------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/semantics.json b/semantics.json index 61b716c..b0f4de1 100644 --- a/semantics.json +++ b/semantics.json @@ -3,19 +3,19 @@ "name": "introPage", "type": "group", "label": "Quiz introduction", - "importance":"medium", + "importance": "medium", "fields": [ { "name": "showIntroPage", "type": "boolean", "label": "Display introduction", - "importance":"low" + "importance": "low" }, { "name": "title", "type": "text", "label": "Title", - "importance":"high", + "importance": "high", "optional": true, "description": "This title will be displayed above the introduction text.", "tags": [ @@ -30,7 +30,7 @@ "type": "text", "widget": "html", "label": "Introduction text", - "importance":"medium", + "importance": "medium", "optional": true, "description": "This text will be displayed before the quiz starts.", "enterMode": "p", @@ -46,7 +46,7 @@ "name": "startButtonText", "type": "text", "label": "Start button text", - "importance":"low", + "importance": "low", "optional": true, "default": "Start Quiz" }, @@ -54,7 +54,7 @@ "name": "backgroundImage", "type": "image", "label": "Background image", - "importance":"low", + "importance": "low", "optional": true, "description": "An optional background image for the introduction." } @@ -64,7 +64,7 @@ "name": "backgroundImage", "type": "image", "label": "Background image", - "importance":"low", + "importance": "low", "optional": true, "description": "An optional background image for the Question set." }, @@ -72,7 +72,7 @@ "name": "progressType", "type": "select", "label": "Progress indicator", - "importance":"low", + "importance": "low", "description": "Question set progress indicator style.", "options": [ { @@ -90,7 +90,7 @@ "name": "passPercentage", "type": "number", "label": "Pass percentage", - "importance":"low", + "importance": "low", "description": "Percentage of Total score required for passing the quiz.", "min": 0, "max": 100, @@ -100,7 +100,7 @@ { "name": "questions", "label": "Questions", - "importance":"high", + "importance": "high", "type": "list", "widgets": [ { @@ -118,7 +118,7 @@ "name": "question", "type": "library", "label": "Question type", - "importance":"high", + "importance": "high", "description": "Library for this question.", "options": [ "H5P.MultiChoice 1.9", @@ -134,35 +134,35 @@ "name": "texts", "type": "group", "label": "Interface texts in quiz", - "importance":"low", + "importance": "low", "common": true, "fields": [ { "name": "prevButton", "type": "text", "label": "Back button", - "importance":"low", + "importance": "low", "default": "Previous question" }, { "name": "nextButton", "type": "text", "label": "Next button", - "importance":"low", + "importance": "low", "default": "Next question" }, { "name": "finishButton", "type": "text", "label": "Finish button", - "importance":"low", + "importance": "low", "default": "Finish" }, { "name": "textualProgress", "type": "text", "label": "Progress text", - "importance":"low", + "importance": "low", "description": "Text used if textual progress is selected.", "default": "Question: @current of @total questions", "tags": [ @@ -174,7 +174,7 @@ "name": "jumpToQuestion", "type": "text", "label": "Label for jumping to a certain question", - "importance":"low", + "importance": "low", "description": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", "default": "Question %d of %total" }, @@ -182,14 +182,14 @@ "name": "questionLabel", "type": "text", "label": "Copyright dialog question label", - "importance":"low", + "importance": "low", "default": "Question" }, { "name": "readSpeakerProgress", "type": "text", "label": "Readspeaker progress", - "importance":"low", + "importance": "low", "description": "May use @current and @total question variables", "default": "Question @current of @total" }, @@ -197,21 +197,21 @@ "name": "unansweredText", "type": "text", "label": "Unanswered question text", - "importance":"low", + "importance": "low", "default": "Unanswered" }, { "name": "answeredText", "type": "text", "label": "Answered question text", - "importance":"low", + "importance": "low", "default": "Answered" }, { "name": "currentQuestionText", "type": "text", "label": "Current question text", - "importance":"low", + "importance": "low", "default": "Current question" } ] @@ -220,7 +220,7 @@ "name": "disableBackwardsNavigation", "type": "boolean", "label": "Disable backwards navigation", - "importance":"low", + "importance": "low", "description": "This option will only allow you to move forward in Question Set", "optional": true, "default": false @@ -229,7 +229,7 @@ "name": "randomQuestions", "type": "boolean", "label": "Randomize questions", - "importance":"low", + "importance": "low", "description": "Enable to randomize the order of questions on display.", "default": false }, @@ -238,7 +238,7 @@ "type": "number", "min": 1, "label": "Number of questions to be shown:", - "importance":"low", + "importance": "low", "description": "Create a randomized batch of questions from the total.", "optional": true }, @@ -246,20 +246,20 @@ "name": "endGame", "type": "group", "label": "Quiz finished", - "importance":"medium", + "importance": "medium", "fields": [ { "name": "showResultPage", "type": "boolean", "label": "Display results", - "importance":"low", + "importance": "low", "default": true }, { "name": "noResultMessage", "type": "text", "label": "No results message", - "importance":"low", + "importance": "low", "description": "Text displayed on end page when \"Display results\" is disabled", "default": "Finished", "optional": true @@ -268,7 +268,7 @@ "name": "message", "type": "text", "label": "Feedback heading", - "importance":"low", + "importance": "low", "default": "Your result:", "optional": true, "description": "This heading will be displayed at the end of the quiz when the user has answered all questions.", @@ -281,7 +281,7 @@ "name": "scoreString", "type": "text", "label": "Score display text", - "importance":"low", + "importance": "low", "description": "Text used to display Total user score. \"@score\" will be replaced by calculated score, \"@total\" will be replaced by maximum possible score. ", "default": "You got @score of @total points", "optional": true @@ -290,7 +290,7 @@ "name": "successGreeting", "type": "text", "label": "Quiz passed greeting", - "importance":"low", + "importance": "low", "placeholder": "Congratulations!", "default": "Congratulations!", "optional": true, @@ -305,7 +305,7 @@ "type": "text", "widget": "html", "label": "Passed comment", - "importance":"low", + "importance": "low", "default": "You did very well!", "optional": true, "description": "This comment will be displayed after the score if the user has successfully passed the quiz.", @@ -322,7 +322,7 @@ "name": "failGreeting", "type": "text", "label": "Quiz failed title", - "importance":"low", + "importance": "low", "default": "You did not pass this time.", "optional": true, "description": "This text will be displayed above the score if the user has failed the quiz.", @@ -336,7 +336,7 @@ "type": "text", "widget": "html", "label": "Failed comment", - "importance":"low", + "importance": "low", "default": "Have another try!", "optional": true, "description": "This comment will be displayed after the score if the user has failed the quiz.", @@ -353,7 +353,7 @@ "name": "solutionButtonText", "type": "text", "label": "Solution button label", - "importance":"low", + "importance": "low", "default": "Show solution", "description": "Text for the solution button." }, @@ -361,7 +361,7 @@ "name": "retryButtonText", "type": "text", "label": "Retry button label", - "importance":"low", + "importance": "low", "default": "Retry", "description": "Text for the retry button." }, @@ -369,33 +369,33 @@ "name": "finishButtonText", "type": "text", "label": "Finish button text", - "importance":"low", + "importance": "low", "default": "Finish" }, { "name": "showAnimations", "type": "boolean", "label": "Display video before quiz results", - "importance":"low" + "importance": "low" }, { "name": "skippable", "type": "boolean", "label": "Enable skip video button", - "importance":"low" + "importance": "low" }, { "name": "skipButtonText", "type": "text", "label": "Skip video button label", - "importance":"low", + "importance": "low", "default": "Skip video" }, { "name": "successVideo", "type": "video", "label": "Passed video", - "importance":"low", + "importance": "low", "optional": true, "description": "This video will be played if the user successfully passed the quiz." }, @@ -403,7 +403,7 @@ "name": "failVideo", "type": "video", "label": "Fail video", - "importance":"low", + "importance": "low", "optional": true, "description": "This video will be played if the user failes the quiz." } @@ -413,14 +413,14 @@ "name": "override", "type": "group", "label": "Settings for \"Show solution\" and \"Retry\" buttons", - "importance":"low", + "importance": "low", "optional": true, "fields": [ { "name": "showSolutionButton", "type": "select", "label": "Override \"Show Solution\" button", - "importance":"low", + "importance": "low", "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", "optional": true, "options": [ @@ -438,7 +438,7 @@ "name": "retryButton", "type": "select", "label": "Override \"Retry\" button", - "importance":"low", + "importance": "low", "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", "optional": true, "options": [ From c8dcb29ef54123a72ad6e29185478633a0708b3a Mon Sep 17 00:00:00 2001 From: otacke Date: Sat, 31 Dec 2016 12:54:59 +0100 Subject: [PATCH 52/62] improve German translation and add missing fields --- language/de.json | 146 ++++++++++++++++++++++++----------------------- 1 file changed, 74 insertions(+), 72 deletions(-) diff --git a/language/de.json b/language/de.json index f76f891..add2aeb 100644 --- a/language/de.json +++ b/language/de.json @@ -1,7 +1,7 @@ { "semantics": [ { - "label": "Quiz Einführung", + "label": "Quiz-Einführung", "fields": [ { "label": "Zeige Einführung" @@ -15,7 +15,7 @@ "description": "Dieser Text wird angezeigt, bevor das Quiz anfängt." }, { - "label": "Start Button Text", + "label": "Beschriftung des \"Start\"-Buttons", "default": "Starte Quiz" }, { @@ -26,11 +26,11 @@ }, { "label": "Hintergrundbild", - "description": "Ein optionales Hintergrundbild für das Frage Set." + "description": "Ein optionales Hintergrundbild für das Fragenset." }, { "label": "Fortschrittsanzeige", - "description": "Anzeigestil für die Fortschrittsanzeige des Frage Sets.", + "description": "Anzeigestil für die Fortschrittsanzeige des Fragensets.", "options": [ { "label": "Text" @@ -38,11 +38,12 @@ { "label": "Punkte" } - ] + ], + "default": "punkte" }, { "label": "Prozent bearbeitet", - "description": "Prozent der Gesamtpunkte sind notwendig um das Quiz zu bestehen." + "description": "Prozentsatz der Gesamtpunkte, die notwendig sind, um das Quiz zu bestehen." }, { "label": "Fragen", @@ -64,61 +65,61 @@ "label": "Anzeigetexte im Quiz", "fields": [ { - "label": "Rückwärts Button", - "default": "vorherige" + "label": "Beschriftung des \"Zurück\"-Buttons", + "default": "Zurück" }, { - "label": "Weiter Button", - "default": "weiter" + "label": "Beschriftung des \"Weiter\"-Buttons", + "default": "Weiter" }, { - "label": "Ende Button", - "default": "beenden" + "label": "Beschriftung des \"Beenden\"-Buttons", + "default": "Beenden" }, { "label": "Fortschrittstext", - "description": "Verwendeter Text wenn Text Fortschrittsanzeige gewählt wurde.", + "description": "Verwendeter Text, wenn Fortschrittsanzeige in Textform gewählt wurde.", "default": "Aktuelle Frage: @current von @total Fragen" }, { - "label": "Label for jumping to a certain question", - "description": "You must use the placeholder '%d' instead of the question number, and %total instead of total amount of questions.", - "default": "Question %d of %total" + "label": "Beschriftung für das Springen zu einem bestimmten Punkt", + "description": "Nutze den Platzhalter '%d' für die Fragennummer und %total für die Gesamtzahl der Fragen.", + "default": "Frage %d von %total" }, { - "label": "Copyright dialog question label", - "default": "Question" + "label": "Beschriftung für eine Frage zum Urheberrechtsdialog", + "default": "Frage" }, { - "label": "Readspeaker progress", - "description": "May use @current and @total question variables", - "default": "Question @current of @total" + "label": "Fortschritt \"Readspeaker\"", + "description": "Variablen: @current und @total", + "default": "Frage @current von @total" }, { - "label": "Unanswered question text", - "default": "Unanswered" + "label": "Text für unbeantwortete Fragen", + "default": "Unbeantwortet" }, { - "label": "Answered question text", - "default": "Answered" + "label": "Text für beantwortete Fragen", + "default": "Beantwortet" }, { - "label": "Current question text", - "default": "Current question" + "label": "Text fpr aktuelle Frage", + "default": "Aktuelle Frage" } ] }, { - "label": "Disable backwards navigation", - "description": "This option will only allow you to move forward in Question Set" + "label": "Möglichkeit zum Rückwärts-Springen deaktivieren", + "description": "Wenn aktiviert, kann der Nutzer nur vorwärts durch das Fragenset navigieren." }, { - "label": "Randomize questions", - "description": "Enable to randomize the order of questions on display." + "label": "Fragen zufällig anordnen", + "description": "Aktivieren, um die Reihenfolge der Fragen zufällig zu bestimmen." }, { - "label": "Number of questions to be shown:", - "description": "Create a randomized batch of questions from the total." + "label": "Anzahl der anzuzeigenden Fragen:", + "description": "Kann benutzt werden, um eine zufällige Auswahl auf mehreren Fragen zu treffen." }, { "label": "Quiz beendet", @@ -127,98 +128,99 @@ "label": "Ergebnisanzeige" }, { - "label": "No results message", - "description": "Text displayed on end page when \"Display results\" is disabled", - "default": "Finished" + "label": "Hinweis bei keinen Ergebnissen", + "description": "Text, der am Ende angezeigt wird, falls \"Ergebnisse anzeigen\" deaktiviert ist", + "default": "Beendet" }, { - "label": "Kopfzeile Feedback", + "label": "Kopfzeile für die Rückmeldungen", "default": "Dein Ergebnis:", - "description": "diese Kopfzeile wird am Ende des Quiz angezeigt, wenn der Benutzer alle Fragen beantwortet hat." + "description": "diese Kopfzeile wird am Ende des Quizzes angezeigt, wenn der Nutzer alle Fragen beantwortet hat." }, { - "label": "Punkt Anzeige Text", - "description": "Dieser Text wird verwendet um die Gesamtpunkte des Benutzers anzuzeigen. \"@score\" wird durch die errechneten Punkte ersetzt, \"@total\" wird durch die maximal erreichbaren Punkte ersetzt.", + "label": "Text für die Punkteanzeige", + "description": "Dieser Text wird verwendet, um die Gesamtpunkte des Nutzers anzuzeigen. \"@score\" wird durch die errechnete Punktzahl ersetzt, \"@total\" wird durch die maximal erreichbare Punktzahl ersetzt.", "default": "Du hast @score Punkte von @total möglichen." }, { - "label": "Quiz bestanden Mitteilung", - "default": "Gratulation!", - "description": "Dieser Text wird oberhalb der Punkte angezeigt, wenn der Benutzer das Quiz erfolgreich abgeschlossen hat." + "label": "Kopfzeile für \"Quiz bestanden\"", + "placeholder": "Glückwunsch!", + "default": "Glückwunsch!", + "description": "Dieser Text wird oberhalb der Punkte angezeigt, wenn der Nutzer das Quiz erfolgreich abgeschlossen hat." }, { - "label": "Bestanden Kommentar", + "label": "Kommentar für bestandenes Quiz", "default": "Gut gemacht!", - "description": "dieser Kommentar wird nach den Punkten angezeigt, wenn der Benutzer das Quiz erfolgreich bestanden hat." + "description": "Dieser Kommentar wird nach den Punkten angezeigt, wenn der Nutzer das Quiz erfolgreich bestanden hat." }, { - "label": "Quiz nicht bestanden Titel", + "label": "Kopfzeile für nicht bestandenes Quiz", "default": "Diese Mal hast du nicht bestanden.", - "description": "dieser Text wird oberhalb der Punkte angezeigt, wenn der Benutzer das Quiz nicht bestanden hat." + "description": "Dieser Text wird oberhalb der Punkte angezeigt, wenn der Nutzer das Quiz nicht bestanden hat." }, { - "label": "Nicht bestanden Kommentar", + "label": "Kommentar für nicht bestandenes Quiz", "default": "Versuche es noch einmal!", - "description": "Dieser Kommentar wird nach den Punkten angezeigt, wenn der Benutzer das Quiz nicht bestanden hat." + "description": "Dieser Kommentar wird nach den Punkten angezeigt, wenn der Nutzer das Quiz nicht bestanden hat." }, { - "label": "Lösungs Button Beschriftung", - "default": "Zeige die Lösung", - "description": "Text für den Lösungs Button." + "label": "Beschriftung des \"Lösung zeigen\"-Buttons", + "default": "Lösung zeigen", + "description": "Beschriftung des \"Lösung zeigen\"-Buttons" }, { - "label": "Wiederholen Button Beschriftung", - "default": "Versuch es nochmal", - "description": "Text für den Wiederholen Button." + "label": "Beschriftung des \"Wiederholen\"-Buttons", + "default": "Wiederholen", + "description": "Beschriftung des \"Wiederholen\"-Buttons" }, { - "label": "Beende Button Text", + "label": "Beschriftung des \"Beenden\"-Buttons", "default": "Beenden" }, { "label": "Zeige Video vor den Quizergebnissen" }, { - "label": "Aktiviere Skip Video Button" + "label": "Aktiviere \"Video überspringen\"-Button" }, { - "label": "Skip Video Button Beschriftung", - "default": "Überspringe Video" + "label": "Beschriftung des \"Video überspringen\"-Buttons", + "default": "Video überspringen" }, { - "label": "Bestanden Video", - "description": "Dieses Video wird angezeigt, wenn der Benutzer das Quiz erfolgreich bestanden hat." + "label": "Bestanden-Video", + "description": "Dieses Video wird angezeigt, wenn der Nutzer das Quiz erfolgreich bestanden hat." }, { - "label": "Nicht bestanden Video", - "description": "Dieses Video wird angezeigt, wenn der Benutzer das Quiz nicht bestanden hat." + "label": "Nicht-bestanden-Video", + "description": "Dieses Video wird angezeigt, wenn der Nutzer das Quiz nicht bestanden hat." } ] }, { - "label": "Einstellungen für \"Zeige die Lösung\" Button und \"Nochmal\".", + "label": "Einstellungen für \"Lösung zeigen\"-Button und \"Nochmal\".", "fields": [ { - "label": "Override \"Show Solution\" button", - "description": "This option determines if the \"Show Solution\" button will be shown for all questions, disabled for all or configured for each question individually.", + "label": "Überschreiben des \"Lösungen anzeigen\"-Buttons", + "description": "Diese Option gibt an, ob der \"Lösung anzeigen\"-Button für alle Fragen angezeigt, ausgeblendet oder für jede Frage individuell konfiguriert wird.", "options": [ { - "label": "Enabled" + "label": "Anzeigen" }, { - "label": "Disabled" + "label": "Ausblenden" } ] }, { - "label": "Override \"Retry\" button", - "description": "This option determines if the \"Retry\" button will be shown for all questions, disabled for all or configured for each question individually.", + "label": "Überschreiben des \"Wiederholen\"-Buttons", + "description": "Diese Option gibt an, ob der \"Wiederholen\" Button für alle Fragen angezeigt, ausgeblendet oder für jede Frage individuell konfiguriert wird.", "options": [ { - "label": "Enabled" + "label": "Anzeigen" }, { - "label": "Disabled" + "label": "Ausblenden" } ] } From a55c7e76351d1be94df4bd2a5f6d3d2150b1525a Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Wed, 11 Jan 2017 15:20:14 +0100 Subject: [PATCH 53/62] Bumped patch - preparing release --- library.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library.json b/library.json index 68e58ee..4f25865 100644 --- a/library.json +++ b/library.json @@ -4,7 +4,7 @@ "contentType": "question", "majorVersion": 1, "minorVersion": 11, - "patchVersion": 0, + "patchVersion": 1, "embedTypes": [ "iframe" ], @@ -61,4 +61,4 @@ "minorVersion": 1 } ] -} +} \ No newline at end of file From 8b8fa35ed551c7b165061a5d26f94bc2913154d5 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Thu, 12 Jan 2017 15:16:57 +0100 Subject: [PATCH 54/62] Added nb translations for widget labels --- language/nb.json | 8 ++++++++ language/nn.json | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/language/nb.json b/language/nb.json index 077eb71..fca3a8d 100644 --- a/language/nb.json +++ b/language/nb.json @@ -47,6 +47,14 @@ { "label": "Spørsmål", "entity": "spørsmål", + "widgets": [ + { + "label": "Standard" + }, + { + "label": "Tekstlig" + } + ], "field": { "label": "Spørsmål", "fields": [ diff --git a/language/nn.json b/language/nn.json index eb95e40..0f70073 100644 --- a/language/nn.json +++ b/language/nn.json @@ -47,6 +47,14 @@ { "label": "Spørsmål", "entity": "spørsmål", + "widgets": [ + { + "label": "Standard" + }, + { + "label": "Tekstlig" + } + ], "field": { "label": "Spørsmål", "fields": [ From e32ce0d1ee654ac7e705b232859d9dd36cc7066a Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Thu, 12 Jan 2017 15:44:11 +0100 Subject: [PATCH 55/62] Fixed translation problems for de, nb and nn --- language/de.json | 3 +-- language/nb.json | 9 ++------- language/nn.json | 9 ++------- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/language/de.json b/language/de.json index add2aeb..1713d8b 100644 --- a/language/de.json +++ b/language/de.json @@ -38,8 +38,7 @@ { "label": "Punkte" } - ], - "default": "punkte" + ] }, { "label": "Prozent bearbeitet", diff --git a/language/nb.json b/language/nb.json index fca3a8d..4c2aa48 100644 --- a/language/nb.json +++ b/language/nb.json @@ -56,13 +56,8 @@ } ], "field": { - "label": "Spørsmål", - "fields": [ - { - "label": "Spørsmålstype", - "description": "Velg spørsmålstype for dette spørsmålet" - } - ] + "label": "Spørsmåltype", + "description": "Velg spørsmålstype for dette spørsmålet" } }, { diff --git a/language/nn.json b/language/nn.json index 0f70073..33507d1 100644 --- a/language/nn.json +++ b/language/nn.json @@ -56,13 +56,8 @@ } ], "field": { - "label": "Spørsmål", - "fields": [ - { - "label": "Spørsmålstype", - "description": "Velg spørsmålstype for dette spørsmålet" - } - ] + "label": "Spørsmålstype", + "description": "Velg spørsmålstype for dette spørsmålet" } }, { From 4a230144da703e22530743d8995a4a0acf1aa7f5 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Tue, 17 Jan 2017 13:49:30 +0100 Subject: [PATCH 56/62] Bumped minor version --- library.json | 8 ++++---- semantics.json | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/library.json b/library.json index 4f25865..2b852cc 100644 --- a/library.json +++ b/library.json @@ -4,7 +4,7 @@ "contentType": "question", "majorVersion": 1, "minorVersion": 11, - "patchVersion": 1, + "patchVersion": 0, "embedTypes": [ "iframe" ], @@ -53,12 +53,12 @@ { "machineName": "H5PEditor.VerticalTabs", "majorVersion": 1, - "minorVersion": 2 + "minorVersion": 3 }, { "machineName": "H5PEditor.QuestionSetTextualEditor", "majorVersion": 1, - "minorVersion": 1 + "minorVersion": 2 } ] -} \ No newline at end of file +} diff --git a/semantics.json b/semantics.json index b0f4de1..7b05eec 100644 --- a/semantics.json +++ b/semantics.json @@ -122,11 +122,11 @@ "description": "Library for this question.", "options": [ "H5P.MultiChoice 1.9", - "H5P.DragQuestion 1.7", + "H5P.DragQuestion 1.8", "H5P.Blanks 1.7", "H5P.MarkTheWords 1.6", "H5P.DragText 1.5", - "H5P.TrueFalse 1.0" + "H5P.TrueFalse 1.1" ] } }, @@ -454,4 +454,4 @@ } ] } -] +] \ No newline at end of file From 0027c626909be4544d91735bbb0db0a15130f2bc Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Tue, 7 Feb 2017 11:39:34 +0100 Subject: [PATCH 57/62] Bumping versions --- library.json | 4 ++-- semantics.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/library.json b/library.json index 2b852cc..698af42 100644 --- a/library.json +++ b/library.json @@ -3,7 +3,7 @@ "description": "Put together a set of different questions that has to be solved. (Quiz)", "contentType": "question", "majorVersion": 1, - "minorVersion": 11, + "minorVersion": 12, "patchVersion": 0, "embedTypes": [ "iframe" @@ -61,4 +61,4 @@ "minorVersion": 2 } ] -} +} \ No newline at end of file diff --git a/semantics.json b/semantics.json index 7b05eec..a501305 100644 --- a/semantics.json +++ b/semantics.json @@ -122,7 +122,7 @@ "description": "Library for this question.", "options": [ "H5P.MultiChoice 1.9", - "H5P.DragQuestion 1.8", + "H5P.DragQuestion 1.9", "H5P.Blanks 1.7", "H5P.MarkTheWords 1.6", "H5P.DragText 1.5", From e469c4e1c317d320a17b14a08f8c0c09e721392f Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Thu, 2 Mar 2017 13:57:14 +0100 Subject: [PATCH 58/62] Added icon.svg --- icon.svg | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 icon.svg diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..99a11b6 --- /dev/null +++ b/icon.svg @@ -0,0 +1,105 @@ + + + + + question-set + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 88cdb021e305598c23d7e9548e810509d3617eb6 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Thu, 2 Mar 2017 14:52:19 +0100 Subject: [PATCH 59/62] Fixing authors --- README.md | 8 ++++---- library.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index db79e08..404ddce 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,10 @@ Test your users with by putting together multiple tasks into a question set(quiz (The MIT License) -Copyright (c) 2012-2014 Amendor AS - +Copyright (c) 2012-2014 Joubel AS + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/library.json b/library.json index 698af42..38fd299 100644 --- a/library.json +++ b/library.json @@ -11,7 +11,7 @@ "runnable": 1, "fullscreen": 0, "machineName": "H5P.QuestionSet", - "author": "Joubel AS", + "author": "Joubel", "coreApi": { "majorVersion": 1, "minorVersion": 6 @@ -61,4 +61,4 @@ "minorVersion": 2 } ] -} \ No newline at end of file +} From d0c8337f665159e0adb89966e8c7cbf1b3a186c4 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Thu, 2 Mar 2017 15:25:08 +0100 Subject: [PATCH 60/62] Bumped patch version --- library.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library.json b/library.json index 38fd299..dcb9339 100644 --- a/library.json +++ b/library.json @@ -4,7 +4,7 @@ "contentType": "question", "majorVersion": 1, "minorVersion": 12, - "patchVersion": 0, + "patchVersion": 1, "embedTypes": [ "iframe" ], @@ -61,4 +61,4 @@ "minorVersion": 2 } ] -} +} \ No newline at end of file From fd73d9fce79c093f5405e888557fd14e59307729 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Wed, 26 Apr 2017 16:07:22 +0200 Subject: [PATCH 61/62] Removed unused icomoon font files/definition --- css/questionset.css | 12 ------------ fonts/icomoon.eot | Bin 2364 -> 0 bytes fonts/icomoon.svg | 14 -------------- fonts/icomoon.ttf | Bin 2200 -> 0 bytes fonts/icomoon.woff | Bin 2276 -> 0 bytes 5 files changed, 26 deletions(-) delete mode 100644 fonts/icomoon.eot delete mode 100644 fonts/icomoon.svg delete mode 100644 fonts/icomoon.ttf delete mode 100644 fonts/icomoon.woff diff --git a/css/questionset.css b/css/questionset.css index 22e65d2..f9dc83a 100644 --- a/css/questionset.css +++ b/css/questionset.css @@ -1,15 +1,3 @@ -/* IcoMoon font licensed under the GNU General Public License: http://www.gnu.org/licenses/gpl.html */ -@font-face { - font-family: 'icomoon-questionset'; - src:url('../fonts/icomoon.eot'); - src:url('../fonts/icomoon.eot?#iefix') format('embedded-opentype'), - url('../fonts/icomoon.woff') format('woff'), - url('../fonts/icomoon.ttf') format('truetype'), - url('../fonts/icomoon.svg#icomoon') format('svg'); - font-weight: normal; - font-style: normal; -} - .questionset-results h2 { font-size: 1.2em; font-weight: bold; diff --git a/fonts/icomoon.eot b/fonts/icomoon.eot deleted file mode 100644 index d8cdc1a706bfa01a6aa79621094ce23f38be7a5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2364 zcmb_eO>7%g5T3U`UjLBwzt>6I#EDzQu8LE~brTm8xd<94M5L(*TqB2!rkRG~873atUwX^s|Yi9VoJD$+F| z5t;{bjW(dmIx#v)DZH%PIU6AR;USY`I{D_sv2p#&Khr?I!Mji@7uSFIXW$N$4nxi_ z6*tyFeURS)buO)5f8YH3(dUpCh}6mD#o}c;uYE@3*v9zjWdPc@@?*$9Lq57(-rNd+ zf&3S`=xU`@l)sifCDNXQte1;h>*S^HA@h2%wPJbkW#g+~Am_10ZoRUx2|v-CTRcv( zLgE&wMA98;2gpr}ia#hL5c@8zK(Qy9T&?4gt5oRFjx}WdalB#(Jx3};3MD`tp!{25 zpADc5Hxg|)kh}=GNg-FWyPWBhTrA#8#-8-Wl2?4 zi5+7H8-hL3o901vV7ZsSy)Vbb|B&=%C_Z-R&{#ZVQ?aiw)brJp`3e!NGUJBD`;S88sU!!?~ypt+%Ml-!13 zbq*%1&Kj*R - - -Generated by IcoMoon - - - - - - - - - - \ No newline at end of file diff --git a/fonts/icomoon.ttf b/fonts/icomoon.ttf deleted file mode 100644 index 9649f7e4215f6b46e79e2406bf2fbfb5cee35cce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2200 zcmb_dO>7%g5T5sT*Xtj$j(^ul+r)`m#jc7|$8{5z5V?ppP!!RoB5YH0QCx(BU*GW-Hyh|F9yd@vNa?_FGcPfei z`~ByrQ2L>+G+Ov64XW(%P1{&v=7@33oT)gel!f#`3X;swY5}Jos;yS**S@Ch1p}nO zO85!JA&JJzOu{E_HB>^>IOS-HF4HQEV^gwpDlap`hD^iOhaM!k?{eg2)=PitM_hPym;f@swd}muAM!5ZD-DtEeb}=o*pw2^rWyn&6Abc z#F^|nR#U-uat@jGlOZ|Q1ns}Wu%J~5&hnDF<60_xq^vEe~Oyr8H))i5K0K*ThlDvYJ3X_61d2eg5=(w*l)ePFqpx4o~% z#s5(BRy;F$=+I~;?n$w)F*Nr#hR$EW<2&u7OfKf*nf`FNpF7%Q6n--CSaj(^ul+r)`m#jc8j<7#o7Xs@ztNX#Y*`SY%9vEJeh~U$CjDFG!AfQ83T!3l z38pZn_39$~y#>)=QofO&SISp#uFkO}Z3@y48|BIpY}ashk?Cdg>t8NaH@6Vh_d9+H zBt<3hA!$VNrhEkbhQq}llovke|2;~Se4;D027XG7N_(7>wk|RANm0z4@hGX32KRsq zl8n%3Ku9WoU}d(;AFpQ?hV8D^tUU zj70}zJ~TD}!GIx)g(;cWcyb$u_8KClp|JbN_<)iJ-ngW-d)LpNy?$@4#pky#pE`AU zd%ndRp$gE#Y{Y&DW-CX^r7C~L+Qkx{5(f5(VN}mCt_+N%HEW;<*0K?evj8*j~Cog z@-6mBOXvI7J+s!VxYa2Os0n;=u9}#jSLifueS;o!b92E3^Mb%X{-PK%v&u+TDdb~j z3e&iu=!HDWNEZ`Ij%#8Hr7pRMoqlH3 z{E=|TYs3uQs#(@GZzvq`TRQZ5zp87hkVdr6F!~U!P&Hk(Z6cgJnn)Z?hJ|etR=1vA zlxKaR#DQ^yrKhSd(Bm}*hmS<=25PklZ%@Fd-i;g?9yG+Oit14fGvxDyOar3Ay3{mH za$p>wt+ZCU^W3iwpbvKL18p@f{)eKsqN&jX2S!uT78h-eq2AsYI)4GrZo5GlTr5OW z{lQ>AAGJT{9?6Xo^j+_xkKPVWKBa)lR{Htl@+bfD<`=_X4|i%F*uy=Y(4cu>wp*^P zIFpANyR(Oz*iL@BC8E-hpF-xH9(riMhRzoDa1VpNY~l<1O>@qYkY}291@hshtU`XH zDQgsm=Jb}${;!E|H?(~%uaNA_TEvANg5Tm^2GDxfND z&^#^Cd$dWbww9#lDGS==v$|NVRI3}ijWmai%k)02QyBoeHsI1rfM(z_ZGm5;B)vmd SF~4RXKHEIpzLh(VZSp@SaBdF( From 44125fa5ca9f606054f18b762c927ddd90f49c95 Mon Sep 17 00:00:00 2001 From: Paal Joergensen Date: Fri, 5 May 2017 11:35:55 +0200 Subject: [PATCH 62/62] Bumping minor --- library.json | 4 ++-- semantics.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/library.json b/library.json index dcb9339..3fb82a0 100644 --- a/library.json +++ b/library.json @@ -3,8 +3,8 @@ "description": "Put together a set of different questions that has to be solved. (Quiz)", "contentType": "question", "majorVersion": 1, - "minorVersion": 12, - "patchVersion": 1, + "minorVersion": 13, + "patchVersion": 0, "embedTypes": [ "iframe" ], diff --git a/semantics.json b/semantics.json index a501305..a2b3ce6 100644 --- a/semantics.json +++ b/semantics.json @@ -122,7 +122,7 @@ "description": "Library for this question.", "options": [ "H5P.MultiChoice 1.9", - "H5P.DragQuestion 1.9", + "H5P.DragQuestion 1.10", "H5P.Blanks 1.7", "H5P.MarkTheWords 1.6", "H5P.DragText 1.5",