*/
abstract function getInputHTML( $value );
+ /**
+ * Get a translated interface message
+ *
+ * This is a wrapper arround $this->mParent->msg() if $this->mParent is set
+ * and wfMessage() otherwise.
+ *
+ * Parameters are the same as wfMessage().
+ *
+ * @return Message object
+ */
+ function msg() {
+ $args = func_get_args();
+
+ if ( $this->mParent ) {
+ $callback = array( $this->mParent, 'msg' );
+ } else {
+ $callback = 'wfMessage';
+ }
+
+ return call_user_func_array( $callback, $args );
+ }
+
/**
* Override this function to add specific validation checks on the
* field input. Don't forget to call parent::validate() to ensure
*/
function validate( $value, $alldata ) {
if ( isset( $this->mParams['required'] ) && $this->mParams['required'] !== false && $value === '' ) {
- return $this->mParent->msg( 'htmlform-required' )->parse();
+ return $this->msg( 'htmlform-required' )->parse();
}
if ( isset( $this->mValidationCallback ) ) {
if ( isset( $this->mParams['help-messages'] ) ) {
foreach ( $this->mParams['help-messages'] as $name ) {
$helpMessage = (array)$name;
- $msg = $this->mParent->msg( array_shift( $helpMessage ), $helpMessage );
+ $msg = $this->msg( array_shift( $helpMessage ), $helpMessage );
if ( $msg->exists() ) {
if ( is_null( $helptext ) ) {
$helptext = '';
} else {
- $helptext .= $this->mParent->msg( 'word-separator' )->escaped(); // some space
+ $helptext .= $this->msg( 'word-separator' )->escaped(); // some space
}
$helptext .= $msg->parse(); // Append message
}
# http://dev.w3.org/html5/spec/common-microsyntaxes.html#real-numbers
# with the addition that a leading '+' sign is ok.
if ( !preg_match( '/^((\+|\-)?\d+(\.\d+)?(E(\+|\-)?\d+)?)?$/i', $value ) ) {
- return $this->mParent->msg( 'htmlform-float-invalid' )->parseAsBlock();
+ return $this->msg( 'htmlform-float-invalid' )->parseAsBlock();
}
# The "int" part of these message names is rather confusing.
$min = $this->mParams['min'];
if ( $min > $value ) {
- return $this->mParent->msg( 'htmlform-int-toolow', $min )->parseAsBlock();
+ return $this->msg( 'htmlform-int-toolow', $min )->parseAsBlock();
}
}
$max = $this->mParams['max'];
if ( $max < $value ) {
- return $this->mParent->msg( 'htmlform-int-toohigh', $max )->parseAsBlock();
+ return $this->msg( 'htmlform-int-toohigh', $max )->parseAsBlock();
}
}
# value to, eg, save in the DB, clean it up with intval().
if ( !preg_match( '/^((\+|\-)?\d+)?$/', trim( $value ) )
) {
- return $this->mParent->msg( 'htmlform-int-invalid' )->parseAsBlock();
+ return $this->msg( 'htmlform-int-invalid' )->parseAsBlock();
}
return true;
if ( in_array( $value, $validOptions ) )
return true;
else
- return $this->mParent->msg( 'htmlform-select-badoption' )->parse();
+ return $this->msg( 'htmlform-select-badoption' )->parse();
}
function getInputHTML( $value ) {
if ( count( $validValues ) == count( $value ) ) {
return true;
} else {
- return $this->mParent->msg( 'htmlform-select-badoption' )->parse();
+ return $this->msg( 'htmlform-select-badoption' )->parse();
}
}
} elseif ( $text == '' ) {
$final = $list;
} else {
- $final = $list . $this->mParent->msg( 'colon-separator' )->inContentLanguage()->text() . $text;
+ $final = $list . $this->msg( 'colon-separator' )->inContentLanguage()->text() . $text;
}
} else {
$list = 'other';
$text = $final;
foreach ( $this->mFlatOptions as $option ) {
- $match = $option . $this->mParent->msg( 'colon-separator' )->inContentLanguage()->text();
+ $match = $option . $this->msg( 'colon-separator' )->inContentLanguage()->text();
if ( strpos( $text, $match ) === 0 ) {
$list = $option;
$text = substr( $text, strlen( $match ) );
}
if ( isset( $this->mParams['required'] ) && $this->mParams['required'] !== false && $value[1] === '' ) {
- return $this->mParent->msg( 'htmlform-required' )->parse();
+ return $this->msg( 'htmlform-required' )->parse();
}
return true;
if ( in_array( $value, $validOptions ) ) {
return true;
} else {
- return $this->mParent->msg( 'htmlform-select-badoption' )->parse();
+ return $this->msg( 'htmlform-select-badoption' )->parse();
}
}
protected function formatMsg() {
if ( empty( $this->mParams['message'] ) ) {
- $msg = $this->mParent->msg( 'edittools' );
+ $msg = $this->msg( 'edittools' );
} else {
- $msg = $this->mParent->msg( $this->mParams['message'] );
+ $msg = $this->msg( $this->mParams['message'] );
if ( $msg->isDisabled() ) {
- $msg = $this->mParent->msg( 'edittools' );
+ $msg = $this->msg( 'edittools' );
}
}
$msg->inContentLanguage();
foreach ( $tagset as $key => $val )
if ( is_array( $val ) ) {
$this->html .= $this->outputOption(
- $this->msg( $key ), '',
+ $key, '',
array(
'disabled' => 'disabled',
'style' => 'color: GrayText', // for MSIE
$this->makeHtml( $val, $depth + 1 );
} else {
$this->html .= $this->outputOption(
- $this->msg( $val->text ), $val->template,
+ $val->text, $val->template,
array( 'title' => '{{' . $val->template . '}}' ),
$depth
);
}
/**
- * @param $text
+ * @param $message
* @param $value
* @param $attribs null
* @param $depth int
* @return string
*/
- protected function outputOption( $text, $value, $attribs = null, $depth = 0 ) {
+ protected function outputOption( $message, $value, $attribs = null, $depth = 0 ) {
+ $msgObj = $this->msg( $message );
+ $text = $msgObj->exists() ? $msgObj->text() : $message;
$attribs['value'] = $value;
if ( $value === $this->selected )
$attribs['selected'] = 'selected';
return str_repeat( "\t", $depth ) . Xml::element( 'option', $attribs, $val ) . "\n";
}
- /**
- * @param $str string
- * @return String
- */
- protected function msg( $str ) {
- $msg = wfMessage( $str );
- return $msg->exists() ? $msg->text() : $str;
- }
-
/**#@-*/
/**