From 460ea2524c4643e7f8ddf2fd6c95f77aaeb91891 Mon Sep 17 00:00:00 2001 From: Luke Faraone Date: Tue, 19 Jan 2016 01:42:14 +0000 Subject: [PATCH 1/1] Add toggle checkboxes to action=history This breaks out the toggle checkbox code into a separate class in includes/ListToggle.php Bug: T92230 Change-Id: I8d1aefb83008053e63d59abf8b8915b93e15fcc2 --- autoload.php | 1 + includes/ListToggle.php | 67 ++++++++++++++++++++++++++++++ includes/actions/HistoryAction.php | 5 +++ includes/specials/SpecialLog.php | 26 +----------- 4 files changed, 74 insertions(+), 25 deletions(-) create mode 100644 includes/ListToggle.php diff --git a/autoload.php b/autoload.php index 341cb90422..23beaeeedd 100644 --- a/autoload.php +++ b/autoload.php @@ -703,6 +703,7 @@ $wgAutoloadLocalClasses = [ 'LinksDeletionUpdate' => __DIR__ . '/includes/deferred/LinksDeletionUpdate.php', 'LinksUpdate' => __DIR__ . '/includes/deferred/LinksUpdate.php', 'ListDuplicatedFilesPage' => __DIR__ . '/includes/specials/SpecialListDuplicatedFiles.php', + 'ListToggle' => __DIR__ . '/includes/ListToggle.php', 'ListVariants' => __DIR__ . '/maintenance/language/listVariants.php', 'ListredirectsPage' => __DIR__ . '/includes/specials/SpecialListredirects.php', 'LoadBalancer' => __DIR__ . '/includes/db/loadbalancer/LoadBalancer.php', diff --git a/includes/ListToggle.php b/includes/ListToggle.php new file mode 100644 index 0000000000..dfa1763a19 --- /dev/null +++ b/includes/ListToggle.php @@ -0,0 +1,67 @@ +output = $output; + + $output->addModules( 'mediawiki.checkboxtoggle' ); + $output->addModuleStyles( 'mediawiki.checkboxtoggle.styles' ); + } + + private function checkboxLink( $checkboxType ) { + return Html::element( + 'a', [ 'href' => '#', 'class' => 'mw-checkbox-' . $checkboxType ], + $this->output->msg( 'checkbox-' . $checkboxType )->text() + ); + } + + /** + * @return string + */ + public function getHTML() { + // Select: All, None, Invert + $links = []; + $links[] = $this->checkboxLink( 'all' ); + $links[] = $this->checkboxLink( 'none' ); + $links[] = $this->checkboxLink( 'invert' ); + + return Html::rawElement( 'div', + [ + 'class' => 'mw-checkbox-toggle-controls' + ], + $this->output->msg( 'checkbox-select' ) + ->rawParams( $this->output->getLanguage()->commaList( $links ) )->escaped() + ); + } +} diff --git a/includes/actions/HistoryAction.php b/includes/actions/HistoryAction.php index 073b3caf54..6f1f3e81b4 100644 --- a/includes/actions/HistoryAction.php +++ b/includes/actions/HistoryAction.php @@ -517,6 +517,11 @@ class HistoryPager extends ReverseChronologicalPager { $this->buttons .= Xml::tags( 'div', [ 'class' => 'mw-history-revisionactions' ], $actionButtons ); } + + if ( $user->isAllowed( 'deleterevision' ) || $this->showTagEditUI ) { + $this->buttons .= ( new ListToggle( $this->getOutput() ) )->getHTML(); + } + $this->buttons .= ''; $s .= $this->buttons; diff --git a/includes/specials/SpecialLog.php b/includes/specials/SpecialLog.php index bec871b9e8..d4c7c6ad2b 100644 --- a/includes/specials/SpecialLog.php +++ b/includes/specials/SpecialLog.php @@ -259,31 +259,7 @@ class SpecialLog extends SpecialPage { ) . "\n"; } - // Select: All, None, Invert - $links = []; - $links[] = Html::element( - 'a', [ 'href' => '#', 'class' => 'mw-checkbox-all' ], - $this->msg( 'checkbox-all' )->text() - ); - $links[] = Html::element( - 'a', [ 'href' => '#', 'class' => 'mw-checkbox-none' ], - $this->msg( 'checkbox-none' )->text() - ); - $links[] = Html::element( - 'a', [ 'href' => '#', 'class' => 'mw-checkbox-invert' ], - $this->msg( 'checkbox-invert' )->text() - ); - - $buttons .= Html::rawElement( 'p', - [ - 'class' => "mw-checkbox-toggle-controls" - ], - $this->msg( 'checkbox-select' ) - ->rawParams( $this->getLanguage()->commaList( $links ) )->escaped() - ); - - $this->getOutput()->addModules( 'mediawiki.checkboxtoggle' ); - $this->getOutput()->addModuleStyles( 'mediawiki.checkboxtoggle.styles' ); + $buttons .= ( new ListToggle( $this->getOutput() ) )->getHTML(); $s .= $buttons . $formcontents . $buttons; $s .= Html::closeElement( 'form' ); -- 2.20.1