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 mod_data\output; use action_link; use core\output\sticky_footer; use html_writer; use mod_data\manager; use mod_data\template; use moodle_url; use renderer_base; /** * Renderable class for sticky footer in the view pages of the database activity. * * @package mod_data * @copyright 2022 Ferran Recio <ferran@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class view_footer extends sticky_footer { /** @var int $totalcount the total records count. */ private $totalcount; /** @var int $currentpage the current page */ private $currentpage; /** @var int $nowperpage the number of elements per page */ private $nowperpage; /** @var moodle_url $baseurl the page base url */ private $baseurl; /** @var template $parser the template name */ private $parser; /** @var manager $manager if the user can manage capabilities or not */ private $manager; /** * The class constructor. * * @param manager $manager the activity manager * @param int $totalcount the total records count * @param int $currentpage the current page * @param int $nowperpage the number of elements per page * @param moodle_url $baseurl the page base url * @param template $parser the current template name */ public function __construct( manager $manager, int $totalcount, int $currentpage, int $nowperpage, moodle_url $baseurl, template $parser ) { $this->manager = $manager; $this->totalcount = $totalcount; $this->currentpage = $currentpage; $this->nowperpage = $nowperpage; $this->baseurl = $baseurl; $this->parser = $parser; } /** * Export this data so it can be used as the context for a mustache template (core/inplace_editable). * * @param renderer_base $output typically, the renderer that's calling this function * @return array data context for a mustache template */ public function export_for_template(renderer_base $output) { $this->set_content( $this->get_footer_output($output) ); return parent::export_for_template($output); } /** * Generate the pre-rendered footer content. * * @param \renderer_base $output The renderer to be used to render the action bar elements. * @return string the rendered content */ public function get_footer_output(renderer_base $output): string { $data = []; $cm = $this->manager->get_coursemodule(); $instance = $this->manager->get_instance(); $currentgroup = groups_get_activity_group($cm); $groupmode = groups_get_activity_groupmode($cm); $context = $this->manager->get_context(); $canmanageentries = has_capability('mod/data:manageentries', $context); $parser = $this->parser; // Sticky footer content. $data['pagination'] = $output->paging_bar( $this->totalcount, $this->currentpage, $this->nowperpage, $this->baseurl ); if ($parser->get_template_name() != 'singletemplate' && $parser->has_tag('delcheck') && $canmanageentries) { // Build the select/deselect all control. $selectallid = 'selectall-listview-entries'; $togglegroup = 'listview-entries'; $mastercheckbox = new \core\output\checkbox_toggleall($togglegroup, true, [ 'id' => $selectallid, 'name' => $selectallid, 'value' => 1, 'label' => get_string('selectall'),< 'classes' => 'btn-secondary mr-1',> 'classes' => 'btn-secondary mx-1',], true); $data['selectall'] = $output->render($mastercheckbox); $data['deleteselected'] = html_writer::empty_tag('input', [< 'class' => 'btn btn-secondary',> 'class' => 'btn btn-secondary mx-1','type' => 'submit', 'value' => get_string('deleteselected'), 'disabled' => true, 'data-action' => 'toggle', 'data-togglegroup' => $togglegroup, 'data-toggle' => 'action', ]); } if (data_user_can_add_entry($instance, $currentgroup, $groupmode, $context)) { $addentrylink = new moodle_url( '/mod/data/edit.php', ['id' => $cm->id, 'backto' => $this->baseurl] ); $addentrybutton = new action_link( $addentrylink, get_string('add', 'mod_data'), null,< ['class' => 'btn btn-primary', 'role' => 'button']> ['class' => 'btn btn-primary mx-1', 'role' => 'button']); $data['addentrybutton'] = $addentrybutton->export_for_template($output); } return $output->render_from_template('mod_data/view_footer', $data); } }