Bug 32603 - limit option is missing on Special:BlockList
authorJohn Du Hart <johnduhart@users.mediawiki.org>
Sat, 26 Nov 2011 22:15:36 +0000 (22:15 +0000)
committerJohn Du Hart <johnduhart@users.mediawiki.org>
Sat, 26 Nov 2011 22:15:36 +0000 (22:15 +0000)
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

index f5a0764..09af45c 100644 (file)
@@ -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