4 * A size filter field for use on query-type special pages. It looks a bit like:
6 * (o) Min size ( ) Max size: [ ] bytes
8 * Minimum size limits are represented using a positive integer, while maximum
9 * size limits are represented using a negative integer.
11 class HTMLSizeFilterField
extends HTMLIntField
{
12 public function getSize() {
13 return isset( $this->mParams
['size'] ) ?
$this->mParams
['size'] : 9;
16 public function getInputHTML( $value ) {
18 if ( !empty( $this->mParams
['disabled'] ) ) {
19 $attribs['disabled'] = 'disabled';
22 $html = Xml
::radioLabel(
23 $this->msg( 'minimum-size' )->text(),
24 $this->mName
. '-mode',
26 $this->mID
. '-mode-min',
30 $html .= ' ' . Xml
::radioLabel(
31 $this->msg( 'maximum-size' )->text(),
32 $this->mName
. '-mode',
34 $this->mID
. '-mode-max',
38 $html .= ' ' . parent
::getInputHTML( $value ?
abs( $value ) : '' );
39 $html .= ' ' . $this->msg( 'pagesize' )->parse();
44 protected function getInputWidget( $params ) {
45 $this->mParent
->getOutput()->addModuleStyles( 'mediawiki.widgets.SizeFilterWidget.styles' );
47 // negative numbers represent "max", positive numbers represent "min"
48 $value = $params['value'];
50 $params['value'] = $value ?
abs( $value ) : '';
52 return new MediaWiki\Widget\
SizeFilterWidget( [
53 'selectMin' => $value >= 0,
54 'textinput' => $params,
55 'radioselectinput' => [
56 'name' => $this->mName
. '-mode',
57 'disabled' => !empty( $this->mParams
['disabled'] ),
62 protected function getOOUIModules() {
63 return [ 'mediawiki.widgets.SizeFilterWidget' ];
67 * @param WebRequest $request
71 public function loadDataFromRequest( $request ) {
72 $size = $request->getInt( $this->mName
);
74 return $this->getDefault();
78 // negative numbers represent "max", positive numbers represent "min"
79 if ( $request->getVal( $this->mName
. '-mode' ) === 'max' ) {
86 protected function needsLabel() {