mirror of
https://github.com/moodle/moodle.git
synced 2025-02-11 19:16:23 +01:00
MDL-80746 gradereport_user: fix action bar rendering
This code was unnecessarily pre-rendering some context properties used by the action_menu, which also meant the mustache template expected HTML in the context, which should be avoided. Instead of pre-rendering, just export_for_template() and adjust the mustache template to render the sub template for the respective templatables. Doing this also reveals two unecessary renderer methods which have now been deprecated.
This commit is contained in:
parent
cf524d0172
commit
f80045bb10
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
@ -80,7 +80,7 @@
|
||||
{{/generalnavselector}}
|
||||
{{#groupselector}}
|
||||
<div class="navitem">
|
||||
{{{groupselector}}}
|
||||
{{>core/comboboxsearch}}
|
||||
</div>
|
||||
<div class="navitem-divider"></div>
|
||||
{{/groupselector}}
|
||||
@ -88,7 +88,7 @@
|
||||
<span class="d-none" data-region="courseid" data-courseid="{{courseid}}" aria-hidden="true"></span>
|
||||
<div class="navitem flex-column">
|
||||
{{#content}}
|
||||
{{{.}}}
|
||||
{{>core/comboboxsearch}}
|
||||
{{/content}}
|
||||
</div>
|
||||
<div class="navitem-divider"></div>
|
||||
@ -97,7 +97,7 @@
|
||||
{{#viewasselector}}
|
||||
<div class="navitem-divider"></div>
|
||||
<div class="navitem">
|
||||
{{{viewasselector}}}
|
||||
{{>gradereport_user/view_mode_selector}}
|
||||
</div>
|
||||
<div class="navitem-divider"></div>
|
||||
{{/viewasselector}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user