diff --git a/classes/manage_templates_table.php b/classes/manage_templates_table.php new file mode 100644 index 0000000..3c03036 --- /dev/null +++ b/classes/manage_templates_table.php @@ -0,0 +1,131 @@ +. + +/** + * The table that displays the templates in a given context. + * + * @package mod_customcert + * @copyright 2017 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace mod_customcert; + +defined('MOODLE_INTERNAL') || die; + +global $CFG; + +require_once($CFG->libdir . '/tablelib.php'); + +/** + * Class for the table that displays the templates in a given context. + * + * @package mod_customcert + * @copyright 2017 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class manage_templates_table extends \table_sql { + + /** + * @var \context $context + */ + protected $context; + + /** + * Sets up the table. + * + * @param \context $context + */ + public function __construct($context) { + parent::__construct('mod_customcert_manage_templates_table'); + + $columns = [ + 'name', + 'actions' + ]; + + $headers = [ + get_string('name'), + '' + ]; + + $this->define_columns($columns); + $this->define_headers($headers); + $this->collapsible(false); + $this->sortable(true); + + $this->context = $context; + } + + /** + * Generate the name column. + * + * @param \stdClass $template + * @return string + */ + public function col_name($template) { + return $template->name; + } + + /** + * Generate the actions column. + * + * @param \stdClass $template + * @return string + */ + public function col_actions($template) { + global $OUTPUT; + + // Link to edit the template. + $editlink = new \moodle_url('/mod/customcert/edit.php', array('tid' => $template->id)); + $editicon = $OUTPUT->action_icon($editlink, new \pix_icon('t/edit', get_string('edit'))); + + // Link to delete the template. + $deletelink = new \moodle_url('/mod/customcert/manage_templates.php', + array( + 'tid' => $template->id, + 'action' => 'delete', + 'sesskey' => sesskey() + ) + ); + $deleteicon = $OUTPUT->action_icon($deletelink, new \pix_icon('t/delete', get_string('delete')), null, + array('class' => 'action-icon delete-icon')); + + return $editicon . $deleteicon; + } + + /** + * Query the reader. + * + * @param int $pagesize size of page for paginated displayed table. + * @param bool $useinitialsbar do you want to use the initials bar. + */ + public function query_db($pagesize, $useinitialsbar = true) { + global $DB; + + $total = $DB->count_records('customcert_templates', array('contextid' => $this->context->id)); + + $this->pagesize($pagesize, $total); + + $this->rawdata = $DB->get_records('customcert_templates', array('contextid' => $this->context->id), + $this->get_sql_sort(), '*', $this->get_page_start(), $this->get_page_size()); + + // Set initial bars. + if ($useinitialsbar) { + $this->initialbars($total > $pagesize); + } + } +} diff --git a/manage_templates.php b/manage_templates.php index d8f6a51..6b413c9 100644 --- a/manage_templates.php +++ b/manage_templates.php @@ -27,6 +27,8 @@ require_once('../../config.php'); $contextid = optional_param('contextid', context_system::instance()->id, PARAM_INT); $action = optional_param('action', '', PARAM_ALPHA); $confirm = optional_param('confirm', 0, PARAM_INT); +$page = optional_param('page', 0, PARAM_INT); +$perpage = optional_param('perpage', 10, PARAM_INT); if ($action) { $tid = required_param('tid', PARAM_INT); @@ -86,42 +88,12 @@ if ($tid) { } } } -// Get all the templates that are available. -if ($templates = $DB->get_records('customcert_templates', array('contextid' => $contextid), 'timecreated DESC')) { - // Create a table to display these elements. - $table = new html_table(); - $table->head = array(get_string('name', 'customcert'), ''); - $table->align = array('left', 'center'); - foreach ($templates as $template) { - // Link to edit the element. - $editlink = new \moodle_url('/mod/customcert/edit.php', array('tid' => $template->id)); - $editicon = $OUTPUT->action_icon($editlink, new \pix_icon('t/edit', get_string('edit'))); - - // Link to delete the element. - $deletelink = new \moodle_url('/mod/customcert/manage_templates.php', - array( - 'tid' => $template->id, - 'action' => 'delete', - 'sesskey' => sesskey() - ) - ); - $deleteicon = $OUTPUT->action_icon($deletelink, new \pix_icon('t/delete', get_string('delete')), null, - array('class' => 'action-icon delete-icon')); - - $row = new html_table_row(); - $row->cells[] = $template->name; - $row->cells[] = $editicon . $deleteicon; - $table->data[] = $row; - } -} +$table = new \mod_customcert\manage_templates_table($context); +$table->define_baseurl($pageurl); echo $OUTPUT->header(); -if (isset($table)) { - echo html_writer::table($table); -} else { - echo html_writer::tag('div', get_string('notemplates', 'customcert'), array('class' => 'alert')); -} +$table->out($perpage, false); $url = new moodle_url('/mod/customcert/edit.php?contextid=' . $contextid); echo $OUTPUT->single_button($url, get_string('createtemplate', 'customcert'), 'get'); echo $OUTPUT->footer();