return new MediaWiki\Widget\SelectWithInputWidget( $params );
}
+ /**
+ * @inheritDoc
+ */
+ public function getDefault() {
+ $default = parent::getDefault();
+
+ // Default values of empty form
+ $final = '';
+ $list = 'other';
+ $text = '';
+
+ if ( $default !== null ) {
+ $final = $default;
+ // Assume the default is a text value, with the 'other' option selected.
+ // Then check if that assumption is correct, and update $list and $text if not.
+ $text = $final;
+ foreach ( $this->mFlatOptions as $option ) {
+ $match = $option . $this->msg( 'colon-separator' )->inContentLanguage()->text();
+ if ( strpos( $final, $match ) === 0 ) {
+ $list = $option;
+ $text = substr( $final, strlen( $match ) );
+ break;
+ }
+ }
+ }
+
+ return [ $final, $list, $text ];
+ }
+
/**
* @param WebRequest $request
*
- * @return array("<overall message>","<select value>","<text field value>")
+ * @return array ["<overall message>","<select value>","<text field value>"]
*/
public function loadDataFromRequest( $request ) {
if ( $request->getCheck( $this->mName ) ) {
} else {
$final = $list . $this->msg( 'colon-separator' )->inContentLanguage()->text() . $text;
}
- } else {
- $final = $this->getDefault();
-
- $list = 'other';
- $text = $final;
- foreach ( $this->mFlatOptions as $option ) {
- $match = $option . $this->msg( 'colon-separator' )->inContentLanguage()->text();
- if ( strpos( $text, $match ) === 0 ) {
- $list = $option;
- $text = substr( $text, strlen( $match ) );
- break;
- }
- }
+ return [ $final, $list, $text ];
}
-
- return [ $final, $list, $text ];
+ return $this->getDefault();
}
public function getSize() {
if ( isset( $this->mParams['required'] )
&& $this->mParams['required'] !== false
- && $value[1] === ''
+ && $value[0] === ''
) {
return $this->msg( 'htmlform-required' );
}