MDL-81945 gradereport_singleview: Fix hidden grade handling.

Seems to become broken after IR refactoring.
This commit is contained in:
Ilya Tregubov
2025-03-14 15:24:15 +00:00
committed by Jenkins
parent 36b9145916
commit a2374ee968
3 changed files with 13 additions and 9 deletions
@@ -219,11 +219,12 @@ class grade extends tablelike implements selectable_items, filterable_items {
$gradestatus = '';
$canviewhidden = $grade->is_hidden() &&
!has_capability('moodle/grade:viewhidden', context_course::instance($this->courseid));
// Show hidden icon if the grade is hidden and the user has permission to view hidden grades.
$showhiddenicon = $grade->is_hidden() &&
has_capability('moodle/grade:viewhidden', context_course::instance($this->courseid));
$context = [
'hidden' => $canviewhidden,
'hidden' => $showhiddenicon,
'locked' => $grade->is_locked(),
];
@@ -172,11 +172,12 @@ class user extends tablelike implements selectable_items {
$grade = $this->fetch_grade_or_default($item, $this->item->id);
$gradestatus = '';
$canviewhidden = ($grade->is_hidden() || $item->is_hidden()) &&
!has_capability('moodle/grade:viewhidden', context_course::instance($item->courseid));
// Show hidden icon if the grade is hidden and the user has permission to view hidden grades.
$showhiddenicon = ($grade->is_hidden() || $item->is_hidden()) &&
has_capability('moodle/grade:viewhidden', context_course::instance($item->courseid));
$context = [
'hidden' => $canviewhidden,
'hidden' => $showhiddenicon,
'locked' => $grade->is_locked(),
];
@@ -96,9 +96,11 @@ class override extends grade_attribute_format implements be_checked, be_disabled
* @return element
*/
public function determine_format(): element {
$canviewhidden = ($this->grade->is_hidden() || $this->grade->is_hidden()) &&
!has_capability('moodle/grade:viewhidden', context_course::instance($this->grade->grade_item->courseid));
if (!$canviewhidden || !$this->grade->grade_item->is_overridable_item()) {
// If the grade is hidden and the user does not have permission to view hidden grades,
// then we don't show the override checkbox.
$allowhiddenoverride = (!$this->grade->is_hidden() && !$this->grade->grade_item->is_hidden()) ||
has_capability('moodle/grade:viewhidden', context_course::instance($this->grade->grade_item->courseid));
if (!$allowhiddenoverride || !$this->grade->grade_item->is_overridable_item()) {
return new empty_element();
}
return new checkbox_attribute(