Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
<?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
]; } }