Turn HTMLBlockedUsersItemSelect into HTMLSelectLimitField
authorKunal Mehta <legoktm@gmail.com>
Fri, 3 Jan 2014 09:39:13 +0000 (01:39 -0800)
committerLegoktm <legoktm.wikipedia@gmail.com>
Sun, 13 Jul 2014 22:44:39 +0000 (22:44 +0000)
Makes it a "real" HTMLForm option that other code can re-use

Change-Id: If0fb7332daf991b790bbf87e825229dccb10b360

includes/AutoLoader.php
includes/htmlform/HTMLForm.php
includes/htmlform/HTMLSelectLimitField.php [new file with mode: 0644]
includes/specials/SpecialBlockList.php

index c879258..a5e37ba 100644 (file)
@@ -102,6 +102,7 @@ $wgAutoloadLocalClasses = array(
        'HTMLRadioField' => 'includes/htmlform/HTMLRadioField.php',
        'HTMLSelectAndOtherField' => 'includes/htmlform/HTMLSelectAndOtherField.php',
        'HTMLSelectField' => 'includes/htmlform/HTMLSelectField.php',
+       'HTMLSelectLimitField' => 'includes/htmlform/HTMLSelectLimitField.php',
        'HTMLSelectOrOtherField' => 'includes/htmlform/HTMLSelectOrOtherField.php',
        'HTMLSubmitField' => 'includes/htmlform/HTMLSubmitField.php',
        'HTMLTextAreaField' => 'includes/htmlform/HTMLTextAreaField.php',
@@ -951,7 +952,6 @@ $wgAutoloadLocalClasses = array(
        'EmailInvalidation' => 'includes/specials/SpecialConfirmemail.php',
        'FewestrevisionsPage' => 'includes/specials/SpecialFewestrevisions.php',
        'FileDuplicateSearchPage' => 'includes/specials/SpecialFileDuplicateSearch.php',
-       'HTMLBlockedUsersItemSelect' => 'includes/specials/SpecialBlockList.php',
        'ImageListPager' => 'includes/specials/SpecialListfiles.php',
        'ImportReporter' => 'includes/specials/SpecialImport.php',
        'LinkSearchPage' => 'includes/specials/SpecialLinkSearch.php',
index 3334694..509f489 100644 (file)
@@ -106,6 +106,7 @@ class HTMLForm extends ContextSource {
                'select' => 'HTMLSelectField',
                'radio' => 'HTMLRadioField',
                'multiselect' => 'HTMLMultiSelectField',
+               'limitselect' => 'HTMLSelectLimitField',
                'check' => 'HTMLCheckField',
                'toggle' => 'HTMLCheckField',
                'int' => 'HTMLIntField',
diff --git a/includes/htmlform/HTMLSelectLimitField.php b/includes/htmlform/HTMLSelectLimitField.php
new file mode 100644 (file)
index 0000000..e7f1c04
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * A limit dropdown, which accepts any valid number
+ */
+class HTMLSelectLimitField 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 string $value
+        * @param array $alldata
+        * @return bool
+        */
+       function validate( $value, $alldata ) {
+               if ( $value == '' ) {
+                       return true;
+               }
+
+               // Let folks pick an explicit limit not from our list, as long as it's a real numbr.
+               if ( !in_array( $value, $this->mParams['options'] )
+                       && $value == intval( $value )
+                       && $value > 0
+               ) {
+                       // This adds the explicitly requested limit value to the drop-down,
+                       // then makes sure it's sorted correctly so when we output the list
+                       // later, the custom option doesn't just show up last.
+                       $this->mParams['options'][$this->mParent->getLanguage()->formatNum( $value )] =
+                               intval( $value );
+                       asort( $this->mParams['options'] );
+               }
+
+               return true;
+       }
+}
index 9170e3e..62fadb5 100644 (file)
@@ -84,7 +84,7 @@ class SpecialBlockList extends SpecialPage {
                                'flatlist' => true,
                        ),
                        'Limit' => array(
-                               'class' => 'HTMLBlockedUsersItemSelect',
+                               'type' => 'limitselect',
                                'label-message' => 'table_pager_limit_label',
                                'options' => array(
                                        $lang->formatNum( 20 ) => 20,
@@ -457,37 +457,3 @@ class BlockListPager extends TablePager {
                wfProfileOut( __METHOD__ );
        }
 }
-
-/**
- * Items per page dropdown. Essentially a crap workaround for bug 32603.
- */
-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 string $value
-        * @param array $alldata
-        * @return bool
-        */
-       function validate( $value, $alldata ) {
-               if ( $value == '' ) {
-                       return true;
-               }
-
-               // Let folks pick an explicit limit not from our list, as long as it's a real numbr.
-               if ( !in_array( $value, $this->mParams['options'] )
-                       && $value == intval( $value )
-                       && $value > 0
-               ) {
-                       // This adds the explicitly requested limit value to the drop-down,
-                       // then makes sure it's sorted correctly so when we output the list
-                       // later, the custom option doesn't just show up last.
-                       $this->mParams['options'][$this->mParent->getLanguage()->formatNum( $value )] =
-                               intval( $value );
-                       asort( $this->mParams['options'] );
-               }
-
-               return true;
-       }
-}