See Release Notes
Long Term Support Release
<?php // 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 <http://www.gnu.org/licenses/>. namespace core_question\output;> use core_question\local\bank\navigation_node_base; use moodle_url; > use core_question\local\bank\plugin_features_base;use renderer_base; use templatable; use renderable; use url_select; /** * Rendered HTML elements for tertiary nav for Question bank. *< * Provides the links for question bank tertiary navigation, below < * are the links provided for the urlselector: < * Questions, Categories, Import and Export < * Also "Add category" button is added to tertiary nav for the categories. < * The "Add category" would take the user to separate page, add category page.> * Provides a menu of links for question bank tertiary navigation, based on get_navigation_node() implemented by each plugin. > * Optionally includes and additional action button to display alongside the menu.* * @package core_question * @copyright 2021 Sujith Haridasan <sujith@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class qbank_action_menu implements templatable, renderable { /** @var moodle_url */ private $currenturl;> /** @var ?moodle_url $actionurl URL for additional action button */ /** > protected ?moodle_url $actionurl = null; * qbank_actionbar constructor. > * > /** @var ?string $actionlabel Label for additional action button */ * @param moodle_url $currenturl The current URL. > protected ?string $actionlabel = null; */ >public function __construct(moodle_url $currenturl) { $this->currenturl = $currenturl; } /**> * Set the properties of an additional action button specific to the current page. * Provides the data for the template. > * * > * @param moodle_url $url * @param renderer_base $output renderer_base object. > * @param string $label * @return array data for the template > * @return void */ > */ public function export_for_template(renderer_base $output): array { > public function set_action_button(moodle_url $url, string $label): void { $questionslink = new moodle_url('/question/edit.php', $this->currenturl->params()); > $this->actionurl = $url; if (\core\plugininfo\qbank::is_plugin_enabled("qbank_managecategories")) { > $this->actionlabel = $label; $categorylink = new moodle_url('/question/bank/managecategories/category.php', $this->currenturl->params()); > } } > $importlink = new moodle_url('/question/bank/importquestions/import.php', $this->currenturl->params()); > /**< if (\core\plugininfo\qbank::is_plugin_enabled("qbank_managecategories")) { < $categorylink = new moodle_url('/question/bank/managecategories/category.php', $this->currenturl->params()); < } < $importlink = new moodle_url('/question/bank/importquestions/import.php', $this->currenturl->params()); < $exportlink = new moodle_url('/question/bank/exportquestions/export.php', $this->currenturl->params()); << < if (\core\plugininfo\qbank::is_plugin_enabled("qbank_managecategories")) { < $menu[$categorylink->out(false)] = get_string('categories', 'question');> $plugins = \core_component::get_plugin_list_with_class('qbank', 'plugin_feature', 'plugin_feature.php'); > foreach ($plugins as $componentname => $pluginfeaturesclass) { > if (!\core\plugininfo\qbank::is_plugin_enabled($componentname)) { > continue; > } > /** @var plugin_features_base $pluginfeatures */ > $pluginfeatures = new $pluginfeaturesclass(); > $navigationnode = $pluginfeatures->get_navigation_node(); > if (is_null($navigationnode)) { > continue; > } > /** @var moodle_url $url */ > $url = $navigationnode->get_navigation_url(); > $url->params($this->currenturl->params()); > $menu[$url->out(false)] = $navigationnode->get_navigation_title();< $menu[$importlink->out(false)] = get_string('import', 'question'); < $menu[$exportlink->out(false)] = get_string('export', 'question');< $addcategory = null; < if (strpos($this->currenturl->get_path(), 'category.php') !== false && < $this->currenturl->param('edit') === null) { < $addcategory = $this->currenturl->out(false, ['edit' => 0]);> $actionbutton = null; > if ($this->actionurl) { > $actionbutton = [ > 'url' => $this->actionurl->out(false), > 'label' => $this->actionlabel, > ];} $urlselect = new url_select($menu, $this->currenturl->out(false), null, 'questionbankaction'); $urlselect->set_label(get_string('questionbanknavigation', 'question'), ['class' => 'accesshide']); return [ 'questionbankselect' => $urlselect->export_for_template($output),< 'addcategory' => $addcategory> 'actionbutton' => $actionbutton]; } }