diff --git a/kolibri/plugins/coach/assets/src/composables/useQuizCreation.js b/kolibri/plugins/coach/assets/src/composables/useQuizCreation.js index c88d18829b5..b03d11c0a4f 100644 --- a/kolibri/plugins/coach/assets/src/composables/useQuizCreation.js +++ b/kolibri/plugins/coach/assets/src/composables/useQuizCreation.js @@ -117,19 +117,17 @@ export default function useQuizCreation() { }, [] ); - if (removedResourceQuestionIds.length === 0) { - // If no resources were removed, we don't need to update the questions - return; + if (removedResourceQuestionIds.length !== 0) { + const questionsToKeep = originalQuestions.filter( + q => !removedResourceQuestionIds.includes(q.id) + ); + const numReplacementsNeeded = + (question_count || originalQuestionCount) - questionsToKeep.length; + updates.questions = [ + ...questionsToKeep, + ...selectRandomQuestionsFromResources(numReplacementsNeeded, resource_pool), + ]; } - const questionsToKeep = originalQuestions.filter( - q => !removedResourceQuestionIds.includes(q.id) - ); - const numReplacementsNeeded = - (question_count || originalQuestionCount) - questionsToKeep.length; - updates.questions = [ - ...questionsToKeep, - ...selectRandomQuestionsFromResources(numReplacementsNeeded, resource_pool), - ]; } } } else if (question_count !== originalQuestionCount) { diff --git a/kolibri/plugins/coach/assets/src/views/plan/CreateExamPage/NotEnoughResourcesModal.vue b/kolibri/plugins/coach/assets/src/views/plan/CreateExamPage/NotEnoughResourcesModal.vue new file mode 100644 index 00000000000..abbc676ead3 --- /dev/null +++ b/kolibri/plugins/coach/assets/src/views/plan/CreateExamPage/NotEnoughResourcesModal.vue @@ -0,0 +1,81 @@ + + + + diff --git a/kolibri/plugins/coach/assets/src/views/plan/CreateExamPage/ReplaceQuestions.vue b/kolibri/plugins/coach/assets/src/views/plan/CreateExamPage/ReplaceQuestions.vue index 6e2d4e34396..1a7de6495fb 100644 --- a/kolibri/plugins/coach/assets/src/views/plan/CreateExamPage/ReplaceQuestions.vue +++ b/kolibri/plugins/coach/assets/src/views/plan/CreateExamPage/ReplaceQuestions.vue @@ -122,6 +122,13 @@ + diff --git a/packages/kolibri-common/strings/enhancedQuizManagementStrings.js b/packages/kolibri-common/strings/enhancedQuizManagementStrings.js index cecbae54603..630588a55ba 100644 --- a/packages/kolibri-common/strings/enhancedQuizManagementStrings.js +++ b/packages/kolibri-common/strings/enhancedQuizManagementStrings.js @@ -200,4 +200,31 @@ export const enhancedQuizManagementStrings = createTranslator('EnhancedQuizManag allSectionsEmptyWarning: { message: "You don't have any questions in the quiz", }, + notEnoughReplacementsTitle: { + message: 'Not enough replacements available', + context: + 'Title of modal when a user tries to replace more questions than are available in the pool', + }, + notEnoughReplacementsMessage: { + message: + "You've selected { selected, number } { selected, plural, one { question } other { questions } } to replace, but {available, plural, =0 { don't have questions } one { only have 1 question } other { only have { available } questions } } available to replace them with.", + context: + 'Message of modal when a user tries to replace more questions than are available in the pool', + }, + addMoreResourcesWithEmptyPool: { + message: 'Please add more resources to this section.', + context: 'Message of modal when a user tries to replace questions but the pool is empty', + }, + addMoreResourcesWithNonEmptyPool: { + message: + 'Please add more resources to this section, or go back and only select up to { available, number } { available, plural, one { question } other { questions } } to be replaced.', + context: + 'Message of modal when a user tries to replace more questions than are available in the pool', + }, + addResourcesAction: { + message: 'Add resources', + }, + goBackAction: { + message: 'Go back', + }, });