MDL-85012 mod_assign: reuse show_penalty_indicator

This commit is contained in:
Nathan Nguyen
2025-04-02 11:30:58 +11:00
parent e159a37e2a
commit 7749e79212
2 changed files with 29 additions and 14 deletions
+7 -14
View File
@@ -2075,16 +2075,10 @@ class assign {
// Add penalty indicator, icon only.
$penaltyindicator = '';
if ($deductedmark > 0) {
$gradeitem = $this->get_grade_item();
$ispenaltyapplied = $gradeitem && $gradeitem->get_grade($userid)->is_penalty_applied_to_final_grade();
// If the user is set, we need to check if the penalty is applied to overridden grade.
if ($userid == 0 || $ispenaltyapplied) {
$usergrade = new \grade_grade();
$usergrade->deductedmark = $deductedmark;
$indicator = new \core_grades\output\penalty_indicator(2, $usergrade);
$renderer = $PAGE->get_renderer('core_grades');
$penaltyindicator = $renderer->render_penalty_indicator($indicator);
}
$gradegrade = new \grade_grade();
$gradegrade->deductedmark = $deductedmark;
$gradegrade->overridden = $userid > 0 ? $this->get_grade_item()->get_grade($userid)->overridden : 0;
$penaltyindicator = \core_grades\penalty_manager::show_penalty_indicator($gradegrade);
}
return $penaltyindicator . $o;
@@ -7891,12 +7885,11 @@ class assign {
// Penalty indicator.
$userassigngrade = $gradinginfo->items[0]->grades[$userid];
if (isset($userassigngrade->grade) && $userassigngrade->deductedmark > 0) {
if (isset($userassigngrade->grade)) {
$gradegrade = new \grade_grade();
$gradegrade->deductedmark = $userassigngrade->deductedmark;
$indicator = new \core_grades\output\penalty_indicator(2, $gradegrade);
$renderer = $PAGE->get_renderer('core_grades');
$penaltyindicator = $renderer->render_penalty_indicator($indicator);
$gradegrade->overridden = $userassigngrade->overridden;
$penaltyindicator = \core_grades\penalty_manager::show_penalty_indicator($gradegrade);
$gradestring = $penaltyindicator . $gradestring;
}
@@ -108,7 +108,29 @@ Feature: Check that the assignment grade can be updated correctly
And I set the field "Grade out of 100" to "100"
And I set the field "Notify student" to "0"
And I press "Save changes"
And the "title" attribute of ".penalty-indicator-icon" "css_element" should contain "Late penalty applied -10.00 marks"
And I follow "View all submissions"
And "Student 1" row "Grade" column of "generaltable" table should contain "100.00"
And "Student 1" row "Final grade" column of "generaltable" table should contain "90.00"
And the "title" attribute of ".penalty-indicator-icon" "css_element" should contain "Late penalty applied -10.00 marks"
# Override the grade.
When I am on "Course 1" course homepage
And I navigate to "View > Grader report" in the course gradebook
And I turn editing mode off
Then the following should exist in the "user-grades" table:
| -1- | -2- | -3- | -4- |
| Student 1 | student10@example.com | 90 | 90 |
And the "title" attribute of ".penalty-indicator-icon" "css_element" should contain "Late penalty applied -10.00 marks"
And I turn editing mode on
And I set the following fields to these values:
| Student 1 Test assignment name grade | 100 |
And I click on "Save changes" "button"
When I turn editing mode off
Then the following should exist in the "user-grades" table:
| -1- | -2- | -3- | -4- |
| Student 1 | student10@example.com | 100 | 100 |
And ".penalty-indicator-icon" "css_element" should not exist
When I go to "Student 1" "Test assignment name" activity advanced grading page
Then ".penalty-indicator-icon" "css_element" should not exist
And I follow "View all submissions"
Then ".penalty-indicator-icon" "css_element" should not exist