From fa2a738f80ca45fb754b9ec7ad7a962d306561f3 Mon Sep 17 00:00:00 2001 From: Adrian Greeve Date: Tue, 27 Nov 2018 13:42:48 +0800 Subject: [PATCH] MDL-64161 gradereport_singleview: Single updates reported correctly. If there is an error with the update of individual entries this is also correctly displayed as not being updated. --- .../report/singleview/classes/local/screen/screen.php | 10 ++++++++++ grade/report/singleview/tests/behat/singleview.feature | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/grade/report/singleview/classes/local/screen/screen.php b/grade/report/singleview/classes/local/screen/screen.php index 44dcbc10f99..891dce8813c 100644 --- a/grade/report/singleview/classes/local/screen/screen.php +++ b/grade/report/singleview/classes/local/screen/screen.php @@ -289,6 +289,8 @@ abstract class screen { $progressbar->start_html(); $progressbar->start_progress(get_string('savegrades', 'gradereport_singleview'), count((array) $data) - 1); $changecount = array(); + // This array is used to determine if the override should be excluded from being counted as a change. + $ignorevalues = []; foreach ($data as $varname => $throw) { $progressbar->progress($progress); @@ -351,15 +353,23 @@ abstract class screen { } $msg = $element->set($posted); + // Value to check against our list of matchelements to ignore. + $check = explode('_', $varname, 2); // Optional type. if (!empty($msg)) { $warnings[] = $msg; if ($element instanceof \gradereport_singleview\local\ui\finalgrade) { + // Add this value to this list so that the override object that is coming next will also be skipped. + $ignorevalues[$check[1]] = $check[1]; // This item wasn't changed so don't add to the changecount. continue; } } + // Check to see if this value has already been skipped. + if (array_key_exists($check[1], $ignorevalues)) { + continue; + } if (preg_match('/_(\d+)_(\d+)/', $varname, $matchelement)) { $changecount[$matchelement[0]] = 1; } diff --git a/grade/report/singleview/tests/behat/singleview.feature b/grade/report/singleview/tests/behat/singleview.feature index bfd7d7fc2db..d86cdcffc39 100644 --- a/grade/report/singleview/tests/behat/singleview.feature +++ b/grade/report/singleview/tests/behat/singleview.feature @@ -116,7 +116,7 @@ Feature: We can use Single view And I set the field "Insert value" to "1.0" And I set the field "Perform bulk insert" to "1" And I press "Save" - Then I should see "Grades were set for 8 items" + Then I should see "Grades were set for 6 items" Scenario: Navigation works in the Single view. Given I follow "Single view for Student 1"