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.
This commit is contained in:
Adrian Greeve
2018-11-27 15:04:27 +08:00
parent b87ad367d9
commit fa2a738f80
2 changed files with 11 additions and 1 deletions
@@ -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;
}
@@ -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"