Merge branch 'wip-MDL-46819-master' of git://github.com/abgreeve/moodle

This commit is contained in:
Dan Poltawski
2014-10-13 11:02:59 +01:00
2 changed files with 20 additions and 2 deletions
@@ -250,3 +250,18 @@ Feature: We can use natural aggregation and weights will be normalised to a tota
Then the field "Weight of Test assignment five" matches value "80.0"
And the field "Weight of Test assignment six" matches value "40.0"
And the field "Weight of Test assignment seven" matches value "60.0"
@javascript
Scenario: Overriding a grade item with a negative value results in the value being changed to zero.
When I set the field "Override weight of Test assignment five" to "1"
And I set the field "Weight of Test assignment five" to "-15"
And I press "Save changes"
Then the field "Weight of Test assignment five" matches value "0.0"
And the field "Weight of Test assignment six" matches value "40.0"
And the field "Weight of Test assignment seven" matches value "60.0"
And I set the field "Override weight of Test assignment six" to "1"
And I set the field "Weight of Test assignment six" to "-25"
And I press "Save changes"
Then the field "Weight of Test assignment six" matches value "0.0"
And the field "Weight of Test assignment seven" matches value "100.0"
+5 -2
View File
@@ -1373,10 +1373,13 @@ class grade_category extends grade_object {
(1 - $totaloverriddenweight);
}
$gradeitem->update();
} else if ((!$automaticgradeitemspresent && $normalisetotal != 1) || ($requiresnormalising)) {
} else if ((!$automaticgradeitemspresent && $normalisetotal != 1) || ($requiresnormalising)
|| $overridearray[$gradeitem->id]['weight'] < 0) {
// Just divide the overriden weight for this item against the total weight override of all
// items in this category.
if ($normalisetotal == 0) {
if ($normalisetotal == 0 || $overridearray[$gradeitem->id]['weight'] < 0) {
// If the normalised total equals zero, or the weight value is less than zero,
// set the weight for the grade item to zero.
$gradeitem->aggregationcoef2 = 0;
} else {
$gradeitem->aggregationcoef2 = $overridearray[$gradeitem->id]['weight'] / $normalisetotal;