From 296e843458397165aa2a87cfa14b073e14f0431f Mon Sep 17 00:00:00 2001 From: John Du Hart Date: Sat, 26 Nov 2011 22:15:36 +0000 Subject: [PATCH] Bug 32603 - limit option is missing on Special:BlockList Okay so essentially this is a workaround for a 1.18 release blocker, and is not a real solution. The real solution is to rework the Pager class to work with HTMLForm and then move the form for BlockList into the BlockListPager. I'll have that done before 1.19. --- includes/specials/SpecialBlockList.php | 42 ++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/includes/specials/SpecialBlockList.php b/includes/specials/SpecialBlockList.php index f5a07642bf..09af45c6da 100644 --- a/includes/specials/SpecialBlockList.php +++ b/includes/specials/SpecialBlockList.php @@ -43,6 +43,7 @@ class SpecialBlockList extends SpecialPage { $this->setHeaders(); $this->outputHeader(); $out = $this->getOutput(); + $lang = $this->getLanguage(); $out->setPageTitle( $this->msg( 'ipblocklist' ) ); $out->addModuleStyles( 'mediawiki.special' ); @@ -80,6 +81,19 @@ class SpecialBlockList extends SpecialPage { ), 'flatlist' => true, ), + 'Limit' => array( + 'class' => 'HTMLBlockedUsersItemSelect', + 'label-message' => 'table_pager_limit_label', + 'options' => array( + $lang->formatNum( 20 ) => 20, + $lang->formatNum( 50 ) => 50, + $lang->formatNum( 100 ) => 100, + $lang->formatNum( 250 ) => 250, + $lang->formatNum( 500 ) => 500, + ), + 'name' => 'limit', + 'default' => 50, + ), ); $form = new HTMLForm( $fields, $this->getContext() ); $form->setMethod( 'get' ); @@ -434,3 +448,31 @@ class BlockListPager extends TablePager { wfProfileOut( __METHOD__ ); } } + +/** + * Items per page dropdown. Essentially a crap workaround for bug 32603. + * + * @todo Do not release 1.19 with this. + */ +class HTMLBlockedUsersItemSelect extends HTMLSelectField { + /** + * Basically don't do any validation. If it's a number that's fine. Also, + * add it to the list if it's not there already + * + * @param $value + * @param $alldata + * @return bool + */ + function validate( $value, $alldata ) { + if ( $value == '' ) { + return true; + } + + if ( !in_array( $value, $this->mParams['options'] ) ) { + $this->mParams['options'][ $this->mParent->getLanguage()->formatNum( $value ) ] = intval($value); + } + + return true; + } + +} \ No newline at end of file -- 2.20.1