From 72c42958b06f3d6267d636048c00ff1acbe391bd Mon Sep 17 00:00:00 2001 From: Noel De Martin Date: Wed, 10 May 2023 17:10:59 +0200 Subject: [PATCH] MOBILE-4338 quiz: Fix multianswer inline feedback --- .../mod/quiz/tests/behat/basic_usage.feature | 22 ++++++++++-- ...ubmit-a-quiz--review-a-quiz-attempt_16.png | Bin 21054 -> 0 bytes ...ubmit-a-quiz--review-a-quiz-attempt_25.png | Bin 0 -> 21058 bytes ...bmit-a-quiz--review-a-quiz-attempt_35.png} | Bin .../question/services/question-helper.ts | 34 +++++++++++++----- src/theme/components/format-text.scss | 5 +++ 6 files changed, 51 insertions(+), 10 deletions(-) delete mode 100644 src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_16.png create mode 100644 src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_25.png rename src/addons/mod/quiz/tests/behat/snapshots/{attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_26.png => attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_35.png} (100%) diff --git a/src/addons/mod/quiz/tests/behat/basic_usage.feature b/src/addons/mod/quiz/tests/behat/basic_usage.feature index c0f724d31..214ab0eb7 100755 --- a/src/addons/mod/quiz/tests/behat/basic_usage.feature +++ b/src/addons/mod/quiz/tests/behat/basic_usage.feature @@ -47,7 +47,6 @@ Feature: Attempt a quiz in app | Test questions | match | TF9 | Text of the seventh question | | Test questions | description | TF10 | Text of the eighth question | # TODO test calculated question type. - # TODO test multianswer question type. # The calculatedsimple type is implemented using the calculated type. # The calculatedmulti type is implemented using the multichoice type. # The randomsamatch type is implemented using the match type. @@ -70,6 +69,20 @@ Feature: Attempt a quiz in app | TF12 | 10 | | TF13 | 11 | + # TODO rewrite using generators. + And I am on the "Course 1" "core_question > course question bank" page logged in as teacher1 + And I add a "Embedded answers (Cloze)" question filling the form with: + | Question name | multianswer | + | Question text | {1:SHORTANSWER:=Berlin} is the capital of Germany. | + | General feedback | The capital of Germany is Berlin. | + And I am on the "quiz2" "Activity" page + And I click on "Questions" "link" + And I click on "Add" "link" + And I click on "from question bank" "link" + And I set the field with xpath "//tr[contains(normalize-space(.), 'multianswer')]//input[@type='checkbox']" to "1" + And I click on "Add selected questions to the quiz" "button" + And I log out + Scenario: View a quiz entry page (attempts, status, etc.) Given I entered the quiz activity "Quiz 1" on course "Course 1" as "student1" in the app When I press "Attempt quiz now" in the app @@ -125,6 +138,7 @@ Feature: Attempt a quiz in app When I press "Attempt quiz now" in the app And I press "Four" in the app And I press "Three" in the app + And I set the field "Answer" to "Berlin" in the app And I press "Next" in the app And I set the field "Answer" to "testing" in the app And I press "Next" in the app @@ -163,7 +177,7 @@ Feature: Attempt a quiz in app And I click on "img.dropbackground" "css" And I press "Submit" in the app Then I should find "Answer saved" in the app - And I should find "Incomplete answer" within "9" "ion-item" in the app + And I should find "Incomplete answer" within "10" "ion-item" in the app But I should not find "Not yet answered" in the app When I press "Submit all and finish" in the app @@ -172,6 +186,10 @@ Feature: Attempt a quiz in app And I should find "Finished" in the app And I should find "Not yet graded" in the app + When I press "Correct" within "Question 2" "ion-card" in the app + Then I should find "The correct answer is: Berlin" in the app + And I should find "Mark 1.00 out of 1.00" in the app + Scenario: Submit a quiz & Review a quiz attempt Given I entered the quiz activity "Quiz 1" on course "Course 1" as "student1" in the app When I press "Attempt quiz now" in the app diff --git a/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_16.png b/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_16.png deleted file mode 100644 index b43cb5ec1681995fbe553d4ed3728fba897c3810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21054 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 literal 0 HcmV?d00001 diff --git a/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_26.png b/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_35.png similarity index 100% rename from src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_26.png rename to src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_35.png diff --git a/src/core/features/question/services/question-helper.ts b/src/core/features/question/services/question-helper.ts index 5dc04b069..c6de41b09 100644 --- a/src/core/features/question/services/question-helper.ts +++ b/src/core/features/question/services/question-helper.ts @@ -792,7 +792,7 @@ export class CoreQuestionHelperProvider { const classList = icon.classList.toString(); if (classList.indexOf('fa-check') >= 0) { correct = true; - } else if (classList.indexOf('fa-xmark') < 0 || classList.indexOf('fa-remove') < 0) { + } else if (classList.indexOf('fa-xmark') < 0 && classList.indexOf('fa-remove') < 0) { return; } } @@ -815,6 +815,7 @@ export class CoreQuestionHelperProvider { icon.parentNode?.replaceChild(newIcon, icon); }); + // Treat legacy markup used before MDL-77856 (4.2). const spans = Array.from(element.querySelectorAll('.feedbackspan.accesshide')); spans.forEach((span) => { // Search if there's a hidden feedback for this element. @@ -851,20 +852,37 @@ export class CoreQuestionHelperProvider { contextInstanceId?: number, courseId?: number, ): void { - const icons = Array.from(element.querySelectorAll('ion-icon.questioncorrectnessicon[tappable]')); + const icons = Array.from(element.querySelectorAll('ion-icon.questioncorrectnessicon')); const title = Translate.instant('core.question.feedback'); + const getClickableFeedback = (icon: HTMLElement) => { + if (icon.parentElement instanceof HTMLButtonElement && icon.parentElement.dataset.toggle === 'popover') { + return { + element: icon.parentElement, + html: icon.parentElement?.dataset.content, + }; + } - icons.forEach((icon) => { - // Search the feedback for the icon. - const span = icon.parentElement?.querySelector('.feedbackspan.accesshide'); + // Support legacy icons used before MDL-77856 (4.2). + if (icon.hasAttribute('tappable')) { + return { + element: icon, + html: icon.parentElement?.querySelector('.feedbackspan.accesshide')?.innerHTML, + }; + } - if (!span) { + return null; + }; + + icons.forEach(icon => { + const target = getClickableFeedback(icon); + + if (!target || !target.html) { return; } // There's a hidden feedback, show it when the icon is clicked. - icon.addEventListener('click', () => { - CoreTextUtils.viewText(title, span.innerHTML, { + target.element.addEventListener('click', () => { + CoreTextUtils.viewText(title, target.html ?? '', { component: component, componentId: componentId, filter: true, diff --git a/src/theme/components/format-text.scss b/src/theme/components/format-text.scss index b8334580b..6cc0f635b 100644 --- a/src/theme/components/format-text.scss +++ b/src/theme/components/format-text.scss @@ -112,6 +112,11 @@ core-format-text { margin: 0; padding: 10px 0; } + + .btn-link { + background: none; + } + } @keyframes loading {