From 0fa21eb7159610084b750032e6332e58ad47976d Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Thu, 23 Mar 2017 15:57:16 +0530 Subject: [PATCH] MDL-57510 questionbank: Add horizontal navigation --- question/category.php | 4 ++ question/edit.php | 4 ++ question/export.php | 4 ++ question/import.php | 4 ++ question/renderer.php | 10 ++++ .../output/core_question/bank_renderer.php | 58 +++++++++++++++++++ 6 files changed, 84 insertions(+) create mode 100644 theme/boost/classes/output/core_question/bank_renderer.php diff --git a/question/category.php b/question/category.php index 4e5d02f5db4..faeff3b6649 100644 --- a/question/category.php +++ b/question/category.php @@ -134,6 +134,10 @@ $PAGE->set_title(get_string('editcategories', 'question')); $PAGE->set_heading($COURSE->fullname); echo $OUTPUT->header(); +// Print horizontal nav if needed. +$renderer = $PAGE->get_renderer('core_question', 'bank'); +echo $renderer->extra_horizontal_navigation(); + // Display the UI. if (!empty($param->edit)) { $qcobject->edit_single_category($param->edit); diff --git a/question/edit.php b/question/edit.php index 86ad9b5fd19..f745918adac 100644 --- a/question/edit.php +++ b/question/edit.php @@ -47,6 +47,10 @@ $PAGE->set_title($streditingquestions); $PAGE->set_heading($COURSE->fullname); echo $OUTPUT->header(); +// Print horizontal nav if needed. +$renderer = $PAGE->get_renderer('core_question', 'bank'); +echo $renderer->extra_horizontal_navigation(); + echo '
'; $questionbank->display('questions', $pagevars['qpage'], $pagevars['qperpage'], $pagevars['cat'], $pagevars['recurse'], $pagevars['showhidden'], diff --git a/question/export.php b/question/export.php index b52a9db665e..434526dad9c 100644 --- a/question/export.php +++ b/question/export.php @@ -44,6 +44,10 @@ $PAGE->set_title($strexportquestions); $PAGE->set_heading($COURSE->fullname); echo $OUTPUT->header(); +// Print horizontal nav if needed. +$renderer = $PAGE->get_renderer('core_question', 'bank'); +echo $renderer->extra_horizontal_navigation(); + $export_form = new question_export_form($thispageurl, array('contexts' => $contexts->having_one_edit_tab_cap('export'), 'defaultcategory' => $pagevars['cat'])); diff --git a/question/import.php b/question/import.php index e75932ee8ee..c9f0c828271 100644 --- a/question/import.php +++ b/question/import.php @@ -73,6 +73,10 @@ $PAGE->set_title($txt->importquestions); $PAGE->set_heading($COURSE->fullname); echo $OUTPUT->header(); +// Print horizontal nav if needed. +$renderer = $PAGE->get_renderer('core_question', 'bank'); +echo $renderer->extra_horizontal_navigation(); + // file upload form sumitted if ($form = $import_form->get_data()) { diff --git a/question/renderer.php b/question/renderer.php index 4b7ebc23498..cc1b3bd767e 100644 --- a/question/renderer.php +++ b/question/renderer.php @@ -35,6 +35,16 @@ defined('MOODLE_INTERNAL') || die(); */ class core_question_bank_renderer extends plugin_renderer_base { + /** + * Display additional navigation if needed. + * + * @return string + */ + public function extra_horizontal_navigation() { + // Overwrite in child themes if needed. + return ''; + } + /** * Output the icon for a question type. * diff --git a/theme/boost/classes/output/core_question/bank_renderer.php b/theme/boost/classes/output/core_question/bank_renderer.php new file mode 100644 index 00000000000..8f4962a7e78 --- /dev/null +++ b/theme/boost/classes/output/core_question/bank_renderer.php @@ -0,0 +1,58 @@ +. + +/** + * Question renderer. + * + * @package theme_boost + * @copyright 2017 onwards Ankit Agarwal + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace theme_boost\output\core_question; +defined('MOODLE_INTERNAL') || die(); + +require_once($CFG->dirroot . '/' . $CFG->admin . '/renderer.php'); + +/** + * Question renderer class. + * + * @package theme_boost + * @copyright 2017 onwards Ankit Agarwal + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class bank_renderer extends \core_question_bank_renderer { + + /** + * Display additional navigation if needed. + * + * @return string + */ + public function extra_horizontal_navigation() { + // Horizontal navigation for question bank. + if ($questionnode = $this->page->settingsnav->find("questionbank", \navigation_node::TYPE_CONTAINER)) { + if ($children = $questionnode->children) { + $tabs = []; + foreach ($children as $key => $node) { + $tabs[] = new \tabobject($node->key, $node->action, $node->text); + } + $active = $questionnode->find_active_node()->key; + return \html_writer::div(print_tabs([$tabs], $active, null, null, true), 'questionbank-navigation'); + } + } + return ''; + } +}