From 08e90eeef4487dc37fa218f02733d82f8e56daa1 Mon Sep 17 00:00:00 2001 From: Mihail Geshoski Date: Wed, 27 Oct 2021 11:35:22 +0800 Subject: [PATCH] MDL-72873 core_grades: Add tertiary navigation in grade letters --- grade/classes/output/grade_letters_action_bar.php | 61 +++++++++++++++++++ grade/edit/letter/edit_form.php | 2 +- grade/edit/letter/index.php | 22 ++++--- grade/templates/grade_letters_action_bar.mustache | 74 +++++++++++++++++++++++ 4 files changed, 150 insertions(+), 9 deletions(-) create mode 100644 grade/classes/output/grade_letters_action_bar.php create mode 100644 grade/templates/grade_letters_action_bar.mustache diff --git a/grade/classes/output/grade_letters_action_bar.php b/grade/classes/output/grade_letters_action_bar.php new file mode 100644 index 00000000000..8aab52122ed --- /dev/null +++ b/grade/classes/output/grade_letters_action_bar.php @@ -0,0 +1,61 @@ +. + +namespace core_grades\output; + +use moodle_url; + +/** + * Renderable class for the action bar elements in the grade letters page. + * + * @package core_grades + * @copyright 2021 Mihail Geshoski + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class grade_letters_action_bar extends action_bar { + + /** + * Returns the template for the action bar. + * + * @return string + */ + public function get_template(): string { + return 'core_grades/grade_letters_action_bar'; + } + + /** + * Export the data for the mustache template. + * + * @param \renderer_base $output renderer to be used to render the action bar elements. + * @return array + */ + public function export_for_template(\renderer_base $output): array { + $data = []; + // If in the course context, we should display the general navigation selector in gradebook. + if ($this->context->contextlevel === CONTEXT_COURSE) { + // Get the data used to output the general navigation selector. + $generalnavselector = new general_action_bar($this->context, new moodle_url('/grade/edit/letter/index.php', + ['id' => $this->context->id]), 'letter', 'view'); + $data = $generalnavselector->export_for_template($output); + } + // Add a button to the action bar with a link to the 'edit grade letters' page. + $editbuttonlink = new moodle_url('/grade/edit/letter/index.php', ['id' => $this->context->id, 'edit' => 1]); + $editbutton = new \single_button($editbuttonlink, get_string('edit'), 'get', true); + $data['editbutton'] = $editbutton->export_for_template($output); + + return $data; + } +} diff --git a/grade/edit/letter/edit_form.php b/grade/edit/letter/edit_form.php index ae103fbce34..6c823da116b 100644 --- a/grade/edit/letter/edit_form.php +++ b/grade/edit/letter/edit_form.php @@ -80,7 +80,7 @@ class edit_letter_form extends moodleform { //------------------------------------------------------------------------------- // buttons - $this->add_action_buttons(!$admin); + $this->add_action_buttons(); } } diff --git a/grade/edit/letter/index.php b/grade/edit/letter/index.php index b72e2035fab..8966a7272c1 100644 --- a/grade/edit/letter/index.php +++ b/grade/edit/letter/index.php @@ -79,6 +79,18 @@ $override = $DB->record_exists('grade_letters', array('contextid' => $context->i //if were viewing the letters if (!$edit) { + $heading = get_string('gradeletters', 'grades'); + $actionbar = new \core_grades\output\grade_letters_action_bar($context); + + if ($admin) { + echo $OUTPUT->header(); + $renderer = $PAGE->get_renderer('core_grades'); + echo $renderer->render_action_bar($actionbar); + echo $OUTPUT->heading($heading); + } else { + print_grade_page_head($course->id, 'letter', 'view', $heading, false, false, + true, null, null, null, $actionbar); + } $data = array(); @@ -92,16 +104,10 @@ if (!$edit) { $max = $boundary - 0.01; } - print_grade_page_head($COURSE->id, 'letter', 'view', get_string('gradeletters', 'grades')); - if (!empty($override)) { echo $OUTPUT->notification(get_string('gradeletteroverridden', 'grades'), 'notifymessage'); } - $stredit = get_string('editgradeletters', 'grades'); - $editlink = html_writer::nonempty_tag('div', html_writer::link($returnurl.$editparam, $stredit), array('class'=>'mdl-align')); - echo $editlink; - $table = new html_table(); $table->id = 'grade-letters-view'; $table->head = array(get_string('max', 'grades'), get_string('min', 'grades'), get_string('letter', 'grades')); @@ -112,7 +118,6 @@ if (!$edit) { $table->tablealign = 'center'; echo html_writer::table($table); - echo $editlink; } else { //else we're editing require_once('edit_form.php'); @@ -252,7 +257,8 @@ if (!$edit) { redirect($returnurl); } - print_grade_page_head($COURSE->id, 'letter', 'edit', get_string('editgradeletters', 'grades')); + print_grade_page_head($COURSE->id, 'letter', 'edit', get_string('editgradeletters', 'grades'), + false, false, false); $mform->display(); } diff --git a/grade/templates/grade_letters_action_bar.mustache b/grade/templates/grade_letters_action_bar.mustache new file mode 100644 index 00000000000..ec31b9982b9 --- /dev/null +++ b/grade/templates/grade_letters_action_bar.mustache @@ -0,0 +1,74 @@ +{{! + This file is part of Moodle - http://moodle.org/ + Moodle is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + Moodle is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with Moodle. If not, see . +}} +{{! + @template core_grades/grade_letters_action_bar + + Actions bar for the grade letters page. + + Context variables required for this template: + * generalnavselector - The data object containing the required properties to render the general navigation selector. + * editbutton - The data object containing the required properties to render the 'edit grade letters' button. + + Example context (json): + { + "generalnavselector": { + "id": "url_select12345", + "action": "https://example.com/get", + "classes": "urlselect", + "formid": "gradesactionselect", + "sesskey": "sesskey", + "label": "", + "helpicon": false, + "showbutton": null, + "options": [{ + "name": "View", "isgroup": true, "options": + [ + {"name": "Grader report", "isgroup": false, "value": "/grade/report/grader/index.php"} + ]}, + {"name": "Setup", "isgroup": true, "options": + [ + {"name": "Gradebook setup", "isgroup": false, "value": "/grade/edit/tree/index.php"} + ]}], + "disabled": false, + "title": null + }, + "editbutton": { + "id": "single_button12345", + "method" : "get", + "classes": "singlebutton", + "formid": null, + "url" : "#", + "primary" : true, + "tooltip" : null, + "label" : "Edit", + "attributes": [] + } + } +}} +
+
+
+ {{#generalnavselector}} +
+ {{>core/url_select}} +
+ {{/generalnavselector}} + {{#editbutton}} +
+ {{>core/single_button}} +
+ {{/editbutton}} +
+
+
-- 2.11.4.GIT