diff options
author | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
---|---|---|
committer | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
commit | fc7369835258467bf97eb64f184b93691f9a9fd5 (patch) | |
tree | daabd60089d2dd76d9f5fb416b005fbe159c799d /www/wiki/includes/ListToggle.php |
first commit
Diffstat (limited to 'www/wiki/includes/ListToggle.php')
-rw-r--r-- | www/wiki/includes/ListToggle.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/www/wiki/includes/ListToggle.php b/www/wiki/includes/ListToggle.php new file mode 100644 index 00000000..7a5fd9a1 --- /dev/null +++ b/www/wiki/includes/ListToggle.php @@ -0,0 +1,69 @@ +<?php +/** + * Class for generating clickable toggle links for a list of checkboxes. + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + */ + +/** + * Class for generating clickable toggle links for a list of checkboxes. + * + * This is only supported on clients that have JavaScript enabled; it is hidden + * for clients that have it disabled. + * + * @since 1.27 + */ +class ListToggle { + /** @var OutputPage */ + private $output; + + public function __construct( OutputPage $output ) { + $this->output = $output; + + $output->addModules( 'mediawiki.checkboxtoggle' ); + $output->addModuleStyles( 'mediawiki.checkboxtoggle.styles' ); + } + + private function checkboxLink( $checkboxType ) { + return Html::element( + // CSS classes: mw-checkbox-all, mw-checkbox-none, mw-checkbox-invert + 'a', [ 'class' => 'mw-checkbox-' . $checkboxType, 'role' => 'button', 'tabindex' => 0 ], + $this->output->msg( 'checkbox-' . $checkboxType )->text() + ); + } + + /** + * @return string + */ + public function getHTML() { + // Select: All, None, Invert + $links = [ + $this->checkboxLink( 'all' ), + $this->checkboxLink( 'none' ), + $this->checkboxLink( 'invert' ), + ]; + + return Html::rawElement( 'div', + [ + 'class' => 'mw-checkbox-toggle-controls' + ], + $this->output->msg( 'checkbox-select' ) + ->rawParams( $this->output->getLanguage()->commaList( $links ) )->escaped() + ); + } +} |