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 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 classes/ui_tables_plugin.php (limited to 'classes/ui_tables_plugin.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 -- cgit v1.2.3