X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fhtmlform%2Ffields%2FHTMLAutoCompleteSelectField.php;h=63e77cec9d32926eb67b074cb18262279eedec4f;hb=a23e9cee4e33a678e98a2119f469cb1f538246d4;hp=0f86ee8baebde452fc8972251b880c6375588676;hpb=1dd2e07276e1deaf431ddb01c92111038f9e2cd6;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/htmlform/fields/HTMLAutoCompleteSelectField.php b/includes/htmlform/fields/HTMLAutoCompleteSelectField.php index 0f86ee8bae..63e77cec9d 100644 --- a/includes/htmlform/fields/HTMLAutoCompleteSelectField.php +++ b/includes/htmlform/fields/HTMLAutoCompleteSelectField.php @@ -18,35 +18,55 @@ * options-messages - As for HTMLSelectField * options - As for HTMLSelectField * options-message - As for HTMLSelectField - * autocomplete - Associative array mapping display text to values. - * autocomplete-messages - Like autocomplete, but keys are message names. + * autocomplete-data - Associative array mapping display text to values. + * autocomplete-data-messages - Like autocomplete, but keys are message names. * require-match - Boolean, if true the value must be in the options or the * autocomplete. * other-message - Message to use instead of htmlform-selectorother-other for * the 'other' message. * other - Raw text to use for the 'other' message + * + * The old name of autocomplete-data[-messages] was autocomplete[-messages] which is still + * recognized but deprecated since MediaWiki 1.29 since it conflicts with how autocomplete is + * used in HTMLTextField. */ class HTMLAutoCompleteSelectField extends HTMLTextField { - protected $autocomplete = []; + protected $autocompleteData = []; public function __construct( $params ) { $params += [ 'require-match' => false, ]; + // FIXME B/C, remove in 1.30 + if ( + array_key_exists( 'autocomplete', $params ) + && !array_key_exists( 'autocomplete-data', $params ) + ) { + $params['autocomplete-data'] = $params['autocomplete']; + unset( $params['autocomplete'] ); + } + if ( + array_key_exists( 'autocomplete-messages', $params ) + && !array_key_exists( 'autocomplete-data-messages', $params ) + ) { + $params['autocomplete-data-messages'] = $params['autocomplete-messages']; + unset( $params['autocomplete-messages'] ); + } + parent::__construct( $params ); - if ( array_key_exists( 'autocomplete-messages', $this->mParams ) ) { - foreach ( $this->mParams['autocomplete-messages'] as $key => $value ) { + if ( array_key_exists( 'autocomplete-data-messages', $this->mParams ) ) { + foreach ( $this->mParams['autocomplete-data-messages'] as $key => $value ) { $key = $this->msg( $key )->plain(); - $this->autocomplete[$key] = strval( $value ); + $this->autocompleteData[$key] = strval( $value ); } - } elseif ( array_key_exists( 'autocomplete', $this->mParams ) ) { - foreach ( $this->mParams['autocomplete'] as $key => $value ) { - $this->autocomplete[$key] = strval( $value ); + } elseif ( array_key_exists( 'autocomplete-data', $this->mParams ) ) { + foreach ( $this->mParams['autocomplete-data'] as $key => $value ) { + $this->autocompleteData[$key] = strval( $value ); } } - if ( !is_array( $this->autocomplete ) || !$this->autocomplete ) { + if ( !is_array( $this->autocompleteData ) || !$this->autocompleteData ) { throw new MWException( 'HTMLAutoCompleteSelectField called without any autocompletions' ); } @@ -69,8 +89,8 @@ class HTMLAutoCompleteSelectField extends HTMLTextField { if ( $val === 'other' ) { $val = $request->getText( $this->mName ); - if ( isset( $this->autocomplete[$val] ) ) { - $val = $this->autocomplete[$val]; + if ( isset( $this->autocompleteData[$val] ) ) { + $val = $this->autocompleteData[$val]; } } @@ -87,14 +107,14 @@ class HTMLAutoCompleteSelectField extends HTMLTextField { return $p; } - $validOptions = HTMLFormField::flattenOptions( $this->getOptions() ); + $validOptions = HTMLFormField::flattenOptions( $this->getOptions() ?: [] ); if ( in_array( strval( $value ), $validOptions, true ) ) { return true; - } elseif ( in_array( strval( $value ), $this->autocomplete, true ) ) { + } elseif ( in_array( strval( $value ), $this->autocompleteData, true ) ) { return true; } elseif ( $this->mParams['require-match'] ) { - return $this->msg( 'htmlform-select-badoption' )->parse(); + return $this->msg( 'htmlform-select-badoption' ); } return true; @@ -104,7 +124,7 @@ class HTMLAutoCompleteSelectField extends HTMLTextField { public function getAttributes( array $list ) { $attribs = [ 'type' => 'text', - 'data-autocomplete' => FormatJson::encode( array_keys( $this->autocomplete ) ), + 'data-autocomplete' => FormatJson::encode( array_keys( $this->autocompleteData ) ), ] + parent::getAttributes( $list ); if ( $this->getOptions() ) { @@ -152,7 +172,7 @@ class HTMLAutoCompleteSelectField extends HTMLTextField { if ( $valInSelect ) { $value = ''; } else { - $key = array_search( strval( $value ), $this->autocomplete, true ); + $key = array_search( strval( $value ), $this->autocompleteData, true ); if ( $key !== false ) { $value = $key; }