Make mediawiki.special.pageLanguage work again
[lhc/web/wiklou.git] / includes / htmlform / HTMLFloatField.php
1 <?php
2
3 /**
4 * A field that will contain a numeric value
5 */
6 class HTMLFloatField extends HTMLTextField {
7 function getSize() {
8 return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 20;
9 }
10
11 function validate( $value, $alldata ) {
12 $p = parent::validate( $value, $alldata );
13
14 if ( $p !== true ) {
15 return $p;
16 }
17
18 $value = trim( $value );
19
20 # http://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
21 # with the addition that a leading '+' sign is ok.
22 if ( !preg_match( '/^((\+|\-)?\d+(\.\d+)?(E(\+|\-)?\d+)?)?$/i', $value ) ) {
23 return $this->msg( 'htmlform-float-invalid' )->parseAsBlock();
24 }
25
26 # The "int" part of these message names is rather confusing.
27 # They make equal sense for all numbers.
28 if ( isset( $this->mParams['min'] ) ) {
29 $min = $this->mParams['min'];
30
31 if ( $min > $value ) {
32 return $this->msg( 'htmlform-int-toolow', $min )->parseAsBlock();
33 }
34 }
35
36 if ( isset( $this->mParams['max'] ) ) {
37 $max = $this->mParams['max'];
38
39 if ( $max < $value ) {
40 return $this->msg( 'htmlform-int-toohigh', $max )->parseAsBlock();
41 }
42 }
43
44 return true;
45 }
46 }