AutorÃa | Ultima modificación | Ver Log |
<?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/>./*** unilabel module.** @package mod_unilabel* @author Andreas Grabs <info@grabs-edv.de>* @copyright 2018 onwards Grabs EDV {@link https://www.grabs-edv.de}* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/namespace mod_unilabel;/*** Settings page providing a tabbed view.* @package mod_unilabel* @author Andreas Grabs <info@grabs-edv.de>* @copyright 2018 onwards Grabs EDV {@link https://www.grabs-edv.de}* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class admin_settingspage_tabs extends \admin_settingpage {/** @var array The tabs of this page */protected $tabs = [];/** @var string The description of this page */private $description = '';/*** Add a tab.** @param admin_settingpage $tab a tab* @return bool*/public function add_tab(\admin_settingpage $tab) {foreach ($tab->settings as $setting) {$this->settings->{$setting->plugin . $setting->name} = $setting;}$this->tabs[] = $tab;return true;}/*** Add a setting page as new tab.** @param \admin_settingpage $tab* @return bool*/public function add($tab) {return $this->add_tab($tab);}/*** Set a description of this setting page.** @param string $description* @return void*/public function set_description($description) {$this->description = $description;}/*** Get tabs.** @return array*/public function get_tabs() {return $this->tabs;}/*** Generate the HTML output.** @return string*/public function output_html() {global $OUTPUT;$activetab = optional_param('activetab', '', PARAM_TEXT);$context = ['tabs' => []];$havesetactive = false;foreach ($this->get_tabs() as $tab) {$active = false;// Default to first tab it not told otherwise.if (empty($activetab) && !$havesetactive) {$active = true;$havesetactive = true;} else if ($activetab === $tab->name) {$active = true;}$context['tabs'][] = ['name' => $tab->name,'displayname' => $tab->visiblename,'html' => $tab->output_html(),'active' => $active,];}if (!empty($context['tabs'])) {$context['hastabs'] = true;}$context['description'] = $this->description;return $OUTPUT->render_from_template('mod_unilabel/admin_setting_tabs', $context);}}