diff --git a/grade/report/user/classes/report/user.php b/grade/report/user/classes/report/user.php index 6f099ca912b..e27d667ce2b 100644 --- a/grade/report/user/classes/report/user.php +++ b/grade/report/user/classes/report/user.php @@ -450,7 +450,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 = []; @@ -592,7 +592,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. @@ -679,7 +679,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']; } @@ -690,7 +690,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; @@ -722,7 +722,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']; } @@ -752,7 +752,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']; } @@ -786,7 +786,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. @@ -800,7 +800,7 @@ class user extends grade_report { } else { $data['average']['content'] = '-'; } - $data['average']['headers'] = "$headercat $headerrow average"; + $data['average']['headers'] = "$headercat $headerrow average$userid"; } // Feedback. @@ -834,13 +834,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; @@ -1022,9 +1022,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; @@ -1050,6 +1051,12 @@ class user extends grade_report { if (!is_null($content)) { $rowcell = new \html_table_cell($content); + // Grade item names and cateogry names are referenced in the `headers` attribute of table cells. + // These table cells should be set to tags. + if ($tablecolumn === 'itemname') { + $rowcell->header = true; + } + if (isset($rowdata[$tablecolumn]['class'])) { $rowcell->attributes['class'] = $rowdata[$tablecolumn]['class']; } diff --git a/grade/report/user/styles.css b/grade/report/user/styles.css index 05335c51e98..580ba9bcad9 100644 --- a/grade/report/user/styles.css +++ b/grade/report/user/styles.css @@ -67,6 +67,8 @@ .grade-report-user .user-grade .baggt, .grade-report-user .user-grade .baggb { font-weight: bold; + background-color: #f8f9fa; + border: none; } .path-grade-report-user .user-report-container, @@ -99,23 +101,30 @@ border-bottom: 1px solid #dee2e6; } -.path-grade-report-user .user-grade td.category, -.grade-report-user .user-grade td.category { +.path-grade-report-user .user-grade th.column-itemname:not(.header,.category,.baggt,.baggb), +.grade-report-user .user-grade th.column-itemname:not(.header,.category,.baggt,.baggb) { + background-color: white; + font-weight: normal; + border-bottom: 1px solid #dee2e6; +} + +.path-grade-report-user .user-grade th.category, +.grade-report-user .user-grade th.category { background-color: white; border: 1px solid #dee2e6; padding-left: 10px; font-weight: bold; } -.path-grade-report-user .user-grade td.category a[aria-expanded="true"] .expanded, -.path-grade-report-user .user-grade td.category a[aria-expanded="false"] .collapsed, -.grade-report-user .user-grade td.category a[aria-expanded="true"] .expanded, -.grade-report-user .user-grade td.category a[aria-expanded="false"] .collapsed { +.path-grade-report-user .user-grade th.category a[aria-expanded="true"] .expanded, +.path-grade-report-user .user-grade th.category a[aria-expanded="false"] .collapsed, +.grade-report-user .user-grade th.category a[aria-expanded="true"] .expanded, +.grade-report-user .user-grade th.category a[aria-expanded="false"] .collapsed { display: none; } -.path-grade-report-user .user-grade td.category a.toggle-category, -.grade-report-user .user-grade td.category a.toggle-category { +.path-grade-report-user .user-grade th.category a.toggle-category, +.grade-report-user .user-grade th.category a.toggle-category { height: 24px; width: 24px; font-size: 12px; @@ -123,8 +132,8 @@ margin-right: 3px; } -.path-grade-report-user .user-grade td.category a.toggle-category i, -.grade-report-user .user-grade td.category a.toggle-category i { +.path-grade-report-user .user-grade th.category a.toggle-category i, +.grade-report-user .user-grade th.category a.toggle-category i { font-size: 12px; width: 12px; height: 12px; @@ -173,14 +182,14 @@ } @media print { - .path-grade-report-user .user-grade td.category, - .grade-report-user .user-grade td.category { + .path-grade-report-user .user-grade th.category, + .grade-report-user .user-grade th.category { border-left: none; border-right: none; } - .path-grade-report-user .user-grade td.category a.toggle-category, - .grade-report-user .user-grade td.category a.toggle-category + .path-grade-report-user .user-grade th.category a.toggle-category, + .grade-report-user .user-grade th.category a.toggle-category .path-grade-report-user #page-footer { display: none; }