A reworked table for displaying a list of services
Signed-off-by: Valentin Popov <info@valentineus.link>
This commit is contained in:
		
							
								
								
									
										153
									
								
								classes/ui_tables_plugin.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								classes/ui_tables_plugin.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,153 @@ | |||||||
|  | <?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/>. | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Describes the plugin tables. | ||||||
|  |  * | ||||||
|  |  * @copyright 2018 'Valentin Popov' <info@valentineus.link> | ||||||
|  |  * @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' <info@valentineus.link> | ||||||
|  |  * @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 ); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -1,162 +0,0 @@ | |||||||
| <?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/>. |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Describes the plugin tables. |  | ||||||
|  * |  | ||||||
|  * @package   local_webhooks |  | ||||||
|  * @copyright 2017 "Valentin Popov" <info@valentineus.link> |  | ||||||
|  * @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" <info@valentineus.link> |  | ||||||
|  * @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; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user