From: John Du Hart Date: Sat, 26 Nov 2011 22:15:36 +0000 (+0000) Subject: Bug 32603 - limit option is missing on Special:BlockList X-Git-Tag: 1.31.0-rc.0~26282 X-Git-Url: http://git.cyclocoop.org/url?a=commitdiff_plain;h=296e843458397165aa2a87cfa14b073e14f0431f;p=lhc%2Fweb%2Fwiklou.git 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. --- 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