MDL-79056 gradereport_user: Make column heading IDs unique

Associate column headings of user report tables to the user ID that the
report is being generated for. This will prevent duplicate IDs for the
report columns when multiple user report tables are displayed on the
User report page.
This commit is contained in:
Jun Pataleta
2023-09-29 10:59:18 +08:00
parent 517019a261
commit 528f5142e7
+12 -11
View File
@@ -445,7 +445,7 @@ class user extends grade_report {
$depth = $element['depth'];
$gradeobject = $element['object'];
$eid = $gradeobject->id;
$element['userid'] = $this->user->id;
$element['userid'] = $userid = $this->user->id;
$fullname = $this->gtree->get_element_header($element, true, false, true, true, true);
$data = [];
$gradeitemdata = [];
@@ -587,7 +587,7 @@ class user extends grade_report {
if ($this->showweight) {
$data['weight']['class'] = $class;
$data['weight']['content'] = '-';
$data['weight']['headers'] = "$headercat $headerrow weight";
$data['weight']['headers'] = "$headercat $headerrow weight$userid";
// Has a weight assigned, might be extra credit.
// This obliterates the weight because it provides a more informative description.
@@ -674,7 +674,7 @@ class user extends grade_report {
$gradegrade->grade_item, true);
$gradeitemdata['graderaw'] = $gradeval;
}
$data['grade']['headers'] = "$headercat $headerrow grade";
$data['grade']['headers'] = "$headercat $headerrow grade$userid";
$gradeitemdata['gradeformatted'] = $data['grade']['content'];
}
@@ -685,7 +685,7 @@ class user extends grade_report {
GRADE_DISPLAY_TYPE_REAL,
$this->rangedecimals
);
$data['range']['headers'] = "$headercat $headerrow range";
$data['range']['headers'] = "$headercat $headerrow range$userid";
$gradeitemdata['rangeformatted'] = $data['range']['content'];
$gradeitemdata['grademin'] = $gradegrade->grade_item->grademin;
@@ -717,7 +717,7 @@ class user extends grade_report {
GRADE_DISPLAY_TYPE_PERCENTAGE
);
}
$data['percentage']['headers'] = "$headercat $headerrow percentage";
$data['percentage']['headers'] = "$headercat $headerrow percentage$userid";
$gradeitemdata['percentageformatted'] = $data['percentage']['content'];
}
@@ -747,7 +747,7 @@ class user extends grade_report {
GRADE_DISPLAY_TYPE_LETTER
);
}
$data['lettergrade']['headers'] = "$headercat $headerrow lettergrade";
$data['lettergrade']['headers'] = "$headercat $headerrow lettergrade$userid";
$gradeitemdata['lettergradeformatted'] = $data['lettergrade']['content'];
}
@@ -781,7 +781,7 @@ class user extends grade_report {
$gradeitemdata['rank'] = $rank;
$gradeitemdata['numusers'] = $numusers;
}
$data['rank']['headers'] = "$headercat $headerrow rank";
$data['rank']['headers'] = "$headercat $headerrow rank$userid";
}
// Average.
@@ -795,7 +795,7 @@ class user extends grade_report {
} else {
$data['average']['content'] = '-';
}
$data['average']['headers'] = "$headercat $headerrow average";
$data['average']['headers'] = "$headercat $headerrow average$userid";
}
// Feedback.
@@ -829,13 +829,13 @@ class user extends grade_report {
['context' => $gradegrade->get_context()]);
$gradeitemdata['feedback'] = $gradegrade->feedback;
}
$data['feedback']['headers'] = "$headercat $headerrow feedback";
$data['feedback']['headers'] = "$headercat $headerrow feedback$userid";
}
// Contribution to the course total column.
if ($this->showcontributiontocoursetotal) {
$data['contributiontocoursetotal']['class'] = $class;
$data['contributiontocoursetotal']['content'] = '-';
$data['contributiontocoursetotal']['headers'] = "$headercat $headerrow contributiontocoursetotal";
$data['contributiontocoursetotal']['headers'] = "$headercat $headerrow contributiontocoursetotal$userid";
}
$this->gradeitemsdata[] = $gradeitemdata;
@@ -1017,9 +1017,10 @@ class user extends grade_report {
];
// Set the table headings.
$userid = $this->user->id;
foreach ($this->tableheaders as $index => $heading) {
$headingcell = new \html_table_cell($heading);
$headingcell->attributes['id'] = $this->tablecolumns[$index];
$headingcell->attributes['id'] = $this->tablecolumns[$index] . $userid;
$headingcell->attributes['class'] = "header column-{$this->tablecolumns[$index]}";
if ($index == 0) {
$headingcell->colspan = $this->maxdepth;