diff --git a/grade/report/user/classes/output/action_bar.php b/grade/report/user/classes/output/action_bar.php index bf88fec851c..fbdebc3f92b 100644 --- a/grade/report/user/classes/output/action_bar.php +++ b/grade/report/user/classes/output/action_bar.php @@ -91,25 +91,46 @@ class action_bar extends \core_grades\output\action_bar { // If the user has the capability to view all grades, display the group selector (if applicable), the user selector // and the view mode selector (if applicable). if (has_capability('moodle/grade:viewall', $this->context)) { - $userreportrenderer = $PAGE->get_renderer('gradereport_user'); $course = get_course($courseid); if ($course->groupmode) { $groupselector = new \core_course\output\actionbar\group_selector($this->context); - $data['groupselector'] = $PAGE->get_renderer('core_course')->render($groupselector); + $data['groupselector'] = $groupselector->export_for_template($output); } + + $resetlink = new moodle_url('/grade/report/user/index.php', ['id' => $courseid, 'group' => 0]); + $baseurl = new moodle_url('/grade/report/user/index.php', ['id' => $courseid]); + $PAGE->requires->js_call_amd('gradereport_user/user', 'init', [$baseurl->out(false)]); + + $userselector = new \core_course\output\actionbar\user_selector( + course: $course, + resetlink: $resetlink, + userid: $this->userid, + groupid: $this->currentgroupid, + usersearch: $this->usersearch + ); $data['userselector'] = [ 'courseid' => $courseid, - 'content' => $userreportrenderer->users_selector( - course: get_course($courseid), - userid: $this->userid, - groupid: $this->currentgroupid, - usersearch: $this->usersearch - ), + 'content' => $userselector->export_for_template($output), ]; // Do not output the 'view mode' selector when in zero state or when the current user is viewing its own report. if (!is_null($this->userid) && $USER->id != $this->userid) { - $data['viewasselector'] = $userreportrenderer->view_mode_selector($this->userid, $this->userview, $courseid); + $viewasotheruser = new moodle_url('/grade/report/user/index.php', + ['id' => $courseid, 'userid' => $this->userid, 'userview' => GRADE_REPORT_USER_VIEW_USER]); + $viewasmyself = new moodle_url('/grade/report/user/index.php', + ['id' => $courseid, 'userid' => $this->userid, 'userview' => GRADE_REPORT_USER_VIEW_SELF]); + + $selectoroptions = [ + $viewasotheruser->out(false) => get_string('otheruser', 'core_grades'), + $viewasmyself->out(false) => get_string('myself', 'core_grades') + ]; + + $selectoractiveurl = $this->userview === GRADE_REPORT_USER_VIEW_USER ? $viewasotheruser : $viewasmyself; + + $viewasselect = new \core\output\select_menu('viewas', $selectoroptions, $selectoractiveurl->out(false)); + $viewasselect->set_label(get_string('viewas', 'core_grades')); + + $data['viewasselector'] = $viewasselect->export_for_template($output); } } diff --git a/grade/report/user/renderer.php b/grade/report/user/renderer.php index 0b217cc2d67..a53109d9d49 100644 --- a/grade/report/user/renderer.php +++ b/grade/report/user/renderer.php @@ -91,8 +91,12 @@ class gradereport_user_renderer extends plugin_renderer_base { * @param string $usersearch Search string. * @return string The raw HTML to render. * @throws coding_exception + * @deprecated since Moodle 4.5. See user_selector use in \gradereport_user\output\action_bar::export_for_template. */ public function users_selector(object $course, ?int $userid = null, ?int $groupid = null, string $usersearch = ''): string { + + debugging('users_selector is deprecated.', DEBUG_DEVELOPER); + $courserenderer = $this->page->get_renderer('core', 'course'); $resetlink = new moodle_url('/grade/report/user/index.php', ['id' => $course->id, 'group' => 0]); $baseurl = new moodle_url('/grade/report/user/index.php', ['id' => $course->id]); @@ -168,9 +172,12 @@ class gradereport_user_renderer extends plugin_renderer_base { * @param int $userview The current view user setting constant * @param int $courseid The course ID. * @return string The raw HTML to render. + * @deprecated since Moodle 4.5 See select_menu use in \gradereport_user\output\action_bar::export_for_template. */ public function view_mode_selector(int $userid, int $userview, int $courseid): string { + debugging('view_mode_selector is deprecated.', DEBUG_DEVELOPER); + $viewasotheruser = new moodle_url('/grade/report/user/index.php', ['id' => $courseid, 'userid' => $userid, 'userview' => GRADE_REPORT_USER_VIEW_USER]); $viewasmyself = new moodle_url('/grade/report/user/index.php', ['id' => $courseid, 'userid' => $userid, diff --git a/grade/report/user/templates/action_bar.mustache b/grade/report/user/templates/action_bar.mustache index 33db5f28e70..6a1768cb411 100644 --- a/grade/report/user/templates/action_bar.mustache +++ b/grade/report/user/templates/action_bar.mustache @@ -80,7 +80,7 @@ {{/generalnavselector}} {{#groupselector}}
{{/groupselector}} @@ -88,7 +88,7 @@ @@ -97,7 +97,7 @@ {{#viewasselector}} {{/viewasselector}}