From a38c39fb21618d8811e9c3e814f2505da32a6925 Mon Sep 17 00:00:00 2001 From: Prateek Saxena Date: Thu, 5 Apr 2018 11:08:06 +0530 Subject: [PATCH] Special:ProtectedPages: Use MultiSelectField instead of checks Bug: T117722 Change-Id: I89193ab9d595a8f4749d9e871917e71a4f8f925c --- includes/specials/SpecialProtectedpages.php | 47 +++++++++------------ languages/i18n/en.json | 1 + languages/i18n/qqq.json | 1 + 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/includes/specials/SpecialProtectedpages.php b/includes/specials/SpecialProtectedpages.php index d693b99007..84779eaba0 100644 --- a/includes/specials/SpecialProtectedpages.php +++ b/includes/specials/SpecialProtectedpages.php @@ -45,9 +45,12 @@ class SpecialProtectedpages extends SpecialPage { $sizetype = $request->getVal( 'size-mode' ); $size = $request->getIntOrNull( 'size' ); $ns = $request->getIntOrNull( 'namespace' ); - $indefOnly = $request->getBool( 'indefonly' ) ? 1 : 0; - $cascadeOnly = $request->getBool( 'cascadeonly' ) ? 1 : 0; - $noRedirect = $request->getBool( 'noredirect' ) ? 1 : 0; + + $filters = $request->getArray( 'wpfilters' ); + $filters = is_null( $filters ) ? [] : $filters; + $indefOnly = in_array( 'indefonly', $filters ); + $cascadeOnly = in_array( 'cascadeonly', $filters ); + $noRedirect = in_array( 'noredirect', $filters ); $pager = new ProtectedPagesPager( $this, @@ -69,9 +72,7 @@ class SpecialProtectedpages extends SpecialPage { $level, $sizetype, $size, - $indefOnly, - $cascadeOnly, - $noRedirect + $filters ) ); if ( $pager->getNumRows() ) { @@ -87,13 +88,12 @@ class SpecialProtectedpages extends SpecialPage { * @param string $level Restriction level * @param string $sizetype "min" or "max" * @param int $size - * @param bool $indefOnly Only indefinite protection - * @param bool $cascadeOnly Only cascading protection - * @param bool $noRedirect Don't show redirects + * @param array $filters Filters set for the pager: indefOnly, + * cascadeOnly, noRedirect * @return string Input form */ protected function showOptions( $namespace, $type = 'edit', $level, $sizetype, - $size, $indefOnly, $cascadeOnly, $noRedirect + $size, $filters ) { $formDescriptor = [ 'namespace' => [ @@ -106,23 +106,16 @@ class SpecialProtectedpages extends SpecialPage { ], 'typemenu' => $this->getTypeMenu( $type ), 'levelmenu' => $this->getLevelMenu( $level ), - 'expirycheck' => [ - 'type' => 'check', - 'label' => $this->msg( 'protectedpages-indef' )->text(), - 'name' => 'indefonly', - 'id' => 'indefonly', - ], - 'cascadecheck' => [ - 'type' => 'check', - 'label' => $this->msg( 'protectedpages-cascade' )->text(), - 'name' => 'cascadeonly', - 'id' => 'cascadeonly', - ], - 'redirectcheck' => [ - 'type' => 'check', - 'label' => $this->msg( 'protectedpages-noredirect' )->text(), - 'name' => 'noredirect', - 'id' => 'noredirect', + 'filters' => [ + 'class' => 'HTMLMultiSelectField', + 'label' => $this->msg( 'protectedpages-filters' )->text(), + 'flatlist' => true, + 'options' => [ + $this->msg( 'protectedpages-indef' )->text() => 'indefonly', + $this->msg( 'protectedpages-cascade' )->text() => 'cascadeonly', + $this->msg( 'protectedpages-noredirect' )->text() => 'noredirect', + ], + 'default' => $filters, ], 'sizelimit' => [ 'class' => HTMLSizeFilterField::class, diff --git a/languages/i18n/en.json b/languages/i18n/en.json index 9036396d0c..a5dbb9de48 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -2009,6 +2009,7 @@ "deadendpages-summary": "", "deadendpagestext": "The following pages do not link to other pages in {{SITENAME}}.", "protectedpages": "Protected pages", + "protectedpages-filters": "Filters:", "protectedpages-indef": "Indefinite protections only", "protectedpages-summary": "This page lists existing pages that are currently protected. For a list of titles that are protected from creation, see [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].", "protectedpages-cascade": "Cascading protections only", diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index 703b49fce4..73b3101eb5 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -2206,6 +2206,7 @@ "deadendpages-summary": "{{notranslate}}\nThe summary displayed at the top of [[Special:Deadendpages]]. [[mw:Manual:Interface/Special pages summary|mw manual]].", "deadendpagestext": "Introductory text for [[Special:DeadendPages]]", "protectedpages": "{{doc-special|ProtectedPages}}", + "protectedpages-filters": "Title in [[Special:ProtectedPages]]", "protectedpages-indef": "Option in [[Special:ProtectedPages]]", "protectedpages-summary": "Summary of [[Special:ProtectedPages]].\n\nSee also:\n* {{msg-mw|Protectedtitles-summary}}", "protectedpages-cascade": "Option in [[Special:ProtectedPages]]", -- 2.20.1