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/>.
/**
* Templates table.
*
* @package quizaccess_seb
* @author Dmitrii Metelkin <dmitriim@catalyst-au.net>
* @copyright 2020 Catalyst IT
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace quizaccess_seb\local\table;
use quizaccess_seb\helper;
use quizaccess_seb\template;
use quizaccess_seb\template_controller;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir.'/tablelib.php');
/**
* Templates table.
*
* @copyright 2020 Catalyst IT
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class template_list extends \flexible_table {
/**
* @var int Autogenerated id.
*/
private static $autoid = 0;
/**
* Constructor
*
* @param string|null $id to be used by the table, autogenerated if null.
*/
public function __construct($id = null) {
global $PAGE;
$id = (is_null($id) ? self::$autoid++ : $id);
parent::__construct('quizaccess_seb' . $id);
$this->define_baseurl($PAGE->url);
$this->set_attribute('class', 'generaltable admintable');
// Column definition.
$this->define_columns([
'name',
'description',
'enabled',
'used',
'actions',
]);
$this->define_headers([
get_string('name', 'quizaccess_seb'),
get_string('description', 'quizaccess_seb'),
get_string('enabled', 'quizaccess_seb'),
get_string('used', 'quizaccess_seb'),
get_string('actions'),
]);
$this->setup();
}
/**
* Display name column.
*
* @param \quizaccess_seb\template $data Template for this row.
* @return string
*/
protected function col_name(template $data): string {
return \html_writer::link(
new \moodle_url(template_controller::get_base_url(), [
'id' => $data->get('id'),
'action' => template_controller::ACTION_EDIT,
]),
$data->get('name')
);
}
/**
* Display description column.
*
* @param \quizaccess_seb\template $data Template for this row.
* @return string
*/
protected function col_description(template $data): string {
return $data->get('description');
}
/**
* Display enabled column.
*
* @param \quizaccess_seb\template $data Template for this row.
* @return string
*/
protected function col_enabled(template $data): string {
return empty($data->get('enabled')) ? get_string('no') : get_string('yes');
}
/**
* Display if a template is being used.
*
* @param \quizaccess_seb\template $data Template for this row.
* @return string
*/
protected function col_used(template $data): string {
return $data->can_delete() ? get_string('no') : get_string('yes');
}
/**
* Display actions column.
*
* @param \quizaccess_seb\template $data Template for this row.
* @return string
*/
protected function col_actions(template $data): string {
$actions = [];
$actions[] = helper::format_icon_link(
new \moodle_url(template_controller::get_base_url(), [
'id' => $data->get('id'),
'action' => template_controller::ACTION_EDIT,
]),
't/edit',
get_string('edit')
);
$actions[] = helper::format_icon_link(
new \moodle_url(template_controller::get_base_url(), [
'id' => $data->get('id'),
'action' => template_controller::ACTION_DELETE,
'sesskey' => sesskey(),
]),
't/delete',
get_string('delete'),
null,
[
'data-action' => 'delete',
'data-id' => $data->get('id'),
]
);
return implode(' ', $actions);
}
/**
* Sets the data of the table.
*
* @param \quizaccess_seb\template[] $records An array with records.
*/
public function display(array $records) {
foreach ($records as $record) {
$this->add_data_keyed($this->format_row($record));
}
$this->finish_output();
}
}