From f14c09406ad5bfc5c59e0a6c1e1a33aa132d3eae Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Thu, 20 Apr 2023 11:13:23 +0200 Subject: [PATCH 1/2] MDL-77229 lesson: Fix error for empty responses (numerical pagetype) --- mod/lesson/pagetypes/numerical.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mod/lesson/pagetypes/numerical.php b/mod/lesson/pagetypes/numerical.php index a697cc5a9c56c..c5c79553279e5 100644 --- a/mod/lesson/pagetypes/numerical.php +++ b/mod/lesson/pagetypes/numerical.php @@ -255,9 +255,12 @@ public function report_answers($answerpage, $answerdata, $useranswer, $pagestats $total = $stats["total"]; unset($stats["total"]); foreach ($stats as $valentered => $ntimes) { + $valformatted = ''; + if (!is_null($valentered) && trim($valentered) !== '') { // Empty response, 0 could be ok. + $valformatted = s(format_float($valentered, strlen($valentered), true, true)); + } $data = ''; + 'disabled="disabled" readonly="readonly" value="'. $valformatted .'" />'; $percent = $ntimes / $total * 100; $percent = round($percent, 2); $percent .= "% ".get_string("enteredthis", "lesson"); @@ -270,9 +273,12 @@ public function report_answers($answerpage, $answerdata, $useranswer, $pagestats } else if ($useranswer != null && ($answer->id == $useranswer->answerid || ($answer == end($answers) && empty($answerdata->answers)))) { // Get in here when the user answered or for the last answer. + $valformatted = ''; + if (!is_null($useranswer->useranswer) && trim($useranswer->useranswer) !== '') { // Empty response, 0 could be ok. + $valformatted = s(format_float($useranswer->useranswer, strlen($useranswer->useranswer), true, true)); + } $data = ''; + 'disabled="disabled" readonly="readonly" value="' . $valformatted .'">'; if (isset($pagestats[$this->properties->id][$useranswer->useranswer])) { $percent = $pagestats[$this->properties->id][$useranswer->useranswer] / $pagestats[$this->properties->id]["total"] * 100; $percent = round($percent, 2); From 1601a2610fa461e3ff742f742edf6a725541d5b1 Mon Sep 17 00:00:00 2001 From: Ilya Tregubov Date: Fri, 21 Apr 2023 11:59:27 +0800 Subject: [PATCH 2/2] MDL-77229 lesson: Add Behat test --- mod/lesson/tests/behat/lesson_report.feature | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/mod/lesson/tests/behat/lesson_report.feature b/mod/lesson/tests/behat/lesson_report.feature index ee2b9074bc9d2..869ccb89dcb97 100644 --- a/mod/lesson/tests/behat/lesson_report.feature +++ b/mod/lesson/tests/behat/lesson_report.feature @@ -9,6 +9,7 @@ Feature: In a lesson activity, teachers can review student attempts | username | firstname | lastname | email | | teacher1 | Teacher | 1 | teacher1@example.com | | student1 | Student | 1 | student1@example.com | + | student2 | Student | 2 | student2@example.com | And the following "courses" exist: | fullname | shortname | category | | Course 1 | C1 | 0 | @@ -16,6 +17,7 @@ Feature: In a lesson activity, teachers can review student attempts | user | course | role | | teacher1 | C1 | editingteacher | | student1 | C1 | student | + | student2 | C1 | student | And the following "activities" exist: | activity | name | course | idnumber | retake | | lesson | Test lesson name | C1 | lesson1 | 1 | @@ -149,3 +151,24 @@ Feature: In a lesson activity, teachers can review student attempts And I should not see "High score" And I should not see "Average score" And I should not see "Low score" + + Scenario: View detailed statistics in a lesson when empty string is given as answer + Given I follow "Add a question page" + And I set the field "Select a question type" to "Numerical" + And I press "Add a question page" + And I set the following fields to these values: + | Page title | Numerical question | + | Page contents | What is 1 + 0.5? | + | id_answer_editor_0 | 1.5 | + | id_jumpto_0 | End of lesson | + And I press "Save page" + When I am on the "Test lesson name" "lesson activity" page logged in as student1 + And I press "Submit" + And I log out + And I am on the "Test lesson name" "lesson activity" page logged in as student2 + And I set the field "Your answer" to "1.5" + And I press "Submit" + And I am on the "Test lesson name" "lesson activity" page logged in as teacher1 + And I navigate to "Reports" in current page administration + And I select "Detailed statistics" from the "jump" singleselect + Then I should see "50% entered this."