From d0e7af84ff369cd2aa20ac4fefae28b8b6b4dc53 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sun, 9 Sep 2018 05:33:14 +0400 Subject: A reworked table for displaying a list of services Signed-off-by: Valentin Popov --- classes/ui_tables_plugin.php | 153 ++++++++++++++++++++++++++++++++++++++++ classes/webhooks_table.php | 162 ------------------------------------------- 2 files changed, 153 insertions(+), 162 deletions(-) create mode 100644 classes/ui_tables_plugin.php delete mode 100644 classes/webhooks_table.php diff --git a/classes/ui_tables_plugin.php b/classes/ui_tables_plugin.php new file mode 100644 index 0000000..7e39598 --- /dev/null +++ b/classes/ui_tables_plugin.php @@ -0,0 +1,153 @@ +. + +/** + * Describes the plugin tables. + * + * @copyright 2018 'Valentin Popov' + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package local_webhooks + */ + +defined( "MOODLE_INTERNAL" ) || die(); + +require_once( $CFG->dirroot . "/local/webhooks/lib.php" ); +require_once( $CFG->libdir . "/tablelib.php" ); + +/** + * Display the list of services table. + * + * @copyright 2018 'Valentin Popov' + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package local_webhooks + */ +class local_webhooks_services_table extends table_sql { + /** + * @var string $mainPage + */ + protected static $mainPage = "/local/webhooks/index.php"; + + /** + * @var string $editorPage + */ + protected static $editorPage = "/local/webhooks/service.php"; + + /** + * Constructor. + * + * @param string $uniqueId + */ + public function __construct( $uniqueId = "" ) { + parent::__construct( $uniqueId ); + $this->define_table_columns(); + $this->define_table_configs(); + } + + /** + * Query the database for results to display in the table. + * + * @param number $pageSize + * @param boolean $useInitialsBar + */ + public function query_db( $pageSize = 0, $useInitialsBar = false ) { + $this->rawdata = local_webhooks_api::get_services( array(), $this->get_page_start(), $this->get_page_size() ); + } + + /** + * Defines the basic settings of the table. + */ + public function define_table_configs() { + $this->collapsible( false ); + $this->is_downloadable( false ); + $this->no_sorting( "actions" ); + $this->pageable( true ); + } + + /** + * Defines the main columns and table headers. + */ + public function define_table_columns() { + $columns = array( + "name", + "point", + "events", + "actions" + ); + + $headers = array( + new lang_string( "name", "moodle" ), + new lang_string( "url", "moodle" ), + new lang_string( "edulevel", "moodle" ), + new lang_string( "actions", "moodle" ) + ); + + $this->define_columns( $columns ); + $this->define_headers( $headers ); + } + + /** + * Specifies the display of a column with actions. + * + * @param object $row + * @return string + */ + public function col_actions( $row ) { + global $OUTPUT; + + $hideShowIcon = "t/show"; + $hideShowString = new lang_string( "enable", "moodle" ); + + if ( !empty( $row->status ) ) { + $hideShowIcon = "t/hide"; + $hideShowString = new lang_string( "disable", "moodle" ); + } + + /* Link for activation / deactivation */ + $hideShowLink = new moodle_url( self::$mainPage, array( "hideshowid" => $row->id, "sesskey" => sesskey() ) ); + $hideShowItem = $OUTPUT->action_icon( $hideShowLink, new pix_icon( $hideShowIcon, $hideShowString ) ); + + /* Link for editing */ + $editLink = new moodle_url( self::$editorPage, array( "serviceid" => $row->id, "sesskey" => sesskey() ) ); + $editItem = $OUTPUT->action_icon( $editLink, new pix_icon( "t/edit", new lang_string( "edit", "moodle" ) ) ); + + /* Link to remove */ + $deleteLink = new moodle_url( self::$mainPage, array( "deleteid" => $row->id, "sesskey" => sesskey() ) ); + $deleteItem = $OUTPUT->action_icon( $deleteLink, new pix_icon( "t/delete", new lang_string( "delete", "moodle" ) ) ); + + return $hideShowItem . $editItem . $deleteItem; + } + + /** + * Specifies the display of a column with events. + * + * @param object $row + * @return number + */ + public function col_events( $row ) { + return count( $row->events ); + } + + /** + * Specifies the display of the column with the service name. + * + * @param object $row + * @return string + */ + public function col_name( $row ) { + $link = new moodle_url( self::$editorPage, array( "serviceid" => $row->id, "sesskey" => sesskey() ) ); + return html_writer::link( $link, $row->name ); + } +} \ No newline at end of file diff --git a/classes/webhooks_table.php b/classes/webhooks_table.php deleted file mode 100644 index 53f714c..0000000 --- a/classes/webhooks_table.php +++ /dev/null @@ -1,162 +0,0 @@ -. - -/** - * Describes the plugin tables. - * - * @package local_webhooks - * @copyright 2017 "Valentin Popov" - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -defined("MOODLE_INTERNAL") || die(); - -require_once(__DIR__ . "/../lib.php"); - -require_once($CFG->libdir . "/tablelib.php"); - -/** - * Describes the main table of the plugin. - * - * @copyright 2017 "Valentin Popov" - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class local_webhooks_table extends table_sql { - /** - * Manager address. - * - * @var string $manager - */ - protected static $manager = "/local/webhooks/index.php"; - - /** - * Editor's address. - * - * @var string $editor - */ - protected static $editor = "/local/webhooks/editservice.php"; - - /** - * Constructor. - * - * @param string $uniqueid The unique identifier of the table. - */ - public function __construct($uniqueid) { - parent::__construct($uniqueid); - $this->define_table_columns(); - $this->define_table_configs(); - } - - /** - * Query the database for results to display in the table. - * - * @param number $pagesize - * @param boolean $useinitialsbar - */ - public function query_db($pagesize, $useinitialsbar = false) { - $this->pagesize($pagesize, local_webhooks_get_total_count()); - $this->rawdata = local_webhooks_get_list_records($this->get_page_start(), $this->get_page_size()); - } - - /** - * Defines the basic settings of the table. - */ - public function define_table_configs() { - $this->collapsible(false); - $this->is_downloadable(false); - $this->no_sorting("actions"); - $this->pageable(true); - } - - /** - * Defines the main columns and table headers. - */ - public function define_table_columns() { - $columns = array( - "title", - "url", - "events", - "actions" - ); - - $headers = array( - new lang_string("name", "moodle"), - new lang_string("url", "moodle"), - new lang_string("edulevel", "moodle"), - new lang_string("actions", "moodle") - ); - - $this->define_columns($columns); - $this->define_headers($headers); - } - - /** - * Specifies the display of a column with actions. - * - * @param object $row Data from the database. - * @return string Displayed data. - */ - public function col_actions($row) { - global $OUTPUT; - - $hideshowicon = "t/show"; - $hideshowstring = new lang_string("enable", "moodle"); - if (boolval($row->enable)) { - $hideshowicon = "t/hide"; - $hideshowstring = new lang_string("disable", "moodle"); - } - - $hideshowlink = new moodle_url(self::$manager, array("hideshowid" => $row->id, "sesskey" => sesskey())); - $hideshowitem = $OUTPUT->action_icon($hideshowlink, new pix_icon($hideshowicon, $hideshowstring)); - - $editlink = new moodle_url(self::$editor, array("serviceid" => $row->id, "sesskey" => sesskey())); - $edititem = $OUTPUT->action_icon($editlink, new pix_icon("t/edit", new lang_string("edit", "moodle"))); - - $deletelink = new moodle_url(self::$manager, array("deleteid" => $row->id, "sesskey" => sesskey())); - $deleteitem = $OUTPUT->action_icon($deletelink, new pix_icon("t/delete", new lang_string("delete", "moodle"))); - - $html = $hideshowitem . $edititem . $deleteitem; - return $html; - } - - /** - * Specifies the display of a column with events. - * - * @param object $row Data from the database. - * @return number Displayed data. - */ - public function col_events($row) { - $result = 0; - - if (!empty($row->events)) { - $result = count($row->events); - } - - return $result; - } - - /** - * Specifies the display of the column with the service name. - * - * @param object $row Data from the database. - * @return string Displayed data. - */ - public function col_title($row) { - $link = new moodle_url(self::$editor, array("serviceid" => $row->id, "sesskey" => sesskey())); - $html = html_writer::link($link, $row->title); - return $html; - } -} \ No newline at end of file -- cgit v1.2.3