MDL-64161 gradereport_singleview: Single updates reported correctly.
authorAdrian Greeve <abgreeve@gmail.com>
Tue, 27 Nov 2018 05:42:48 +0000 (13:42 +0800)
committerAdrian Greeve <abgreeve@gmail.com>
Tue, 27 Nov 2018 07:01:33 +0000 (15:01 +0800)
If there is an error with the update of individual entries this is
also correctly displayed as not being updated.

grade/report/singleview/classes/local/screen/screen.php
grade/report/singleview/tests/behat/singleview.feature

index 44dcbc1..891dce8 100644 (file)
@@ -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;
             }
index bfd7d7f..d86cdcf 100644 (file)
@@ -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"