# Check for cancelled submission
foreach ( $this->mFlatFields as $fieldname => $field ) {
- if ( !empty( $field->mParams['nodata'] ) ) {
+ if ( !array_key_exists( $fieldname, $this->mFieldData ) ) {
continue;
}
if ( $field->cancelSubmit( $this->mFieldData[$fieldname], $this->mFieldData ) ) {
# Check for validation
foreach ( $this->mFlatFields as $fieldname => $field ) {
- if ( !empty( $field->mParams['nodata'] ) ) {
+ if ( !array_key_exists( $fieldname, $this->mFieldData ) ) {
continue;
}
if ( $field->isHidden( $this->mFieldData ) ) {
];
if ( isset( $button['label-message'] ) ) {
- $label = $this->msg( $button['label-message'] )->parse();
+ $label = $this->getMessage( $button['label-message'] )->parse();
} elseif ( isset( $button['label'] ) ) {
$label = htmlspecialchars( $button['label'] );
} elseif ( isset( $button['label-raw'] ) ) {
}
}
- $html = Html::rawElement( 'span',
- [ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
+ if ( !$buttons ) {
+ return '';
+ }
- return $html;
+ return Html::rawElement( 'span',
+ [ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
}
/**
$errorstr = '';
foreach ( $errors as $error ) {
- if ( is_array( $error ) ) {
- $msg = array_shift( $error );
- } else {
- $msg = $error;
- $error = [];
- }
-
$errorstr .= Html::rawElement(
'li',
[],
- $this->msg( $msg, $error )->parse()
+ $this->getMessage( $error )->parse()
);
}
* @param string $fieldsetIDPrefix ID prefix for the "<fieldset>" tag of
* each subsection, ignored if empty.
* @param bool &$hasUserVisibleFields Whether the section had user-visible fields.
+ * @throws LogicException When called on uninitialized field data, e.g. When
+ * HTMLForm::displayForm was called without calling HTMLForm::prepareForm
+ * first.
*
* @return string
*/
public function displaySection( $fields,
$sectionName = '',
$fieldsetIDPrefix = '',
- &$hasUserVisibleFields = false ) {
+ &$hasUserVisibleFields = false
+ ) {
+ if ( $this->mFieldData === null ) {
+ throw new LogicException( 'HTMLForm::displaySection() called on uninitialized field data. '
+ . 'You probably called displayForm() without calling prepareForm() first.' );
+ }
+
$displayFormat = $this->getDisplayFormat();
$html = [];
foreach ( $fields as $key => $value ) {
if ( $value instanceof HTMLFormField ) {
- $v = empty( $value->mParams['nodata'] )
+ $v = array_key_exists( $key, $this->mFieldData )
? $this->mFieldData[$key]
: $value->getDefault();
$fieldData = [];
foreach ( $this->mFlatFields as $fieldname => $field ) {
- if ( !empty( $field->mParams['nodata'] ) ) {
+ $request = $this->getRequest();
+ if ( $field->skipLoadData( $request ) ) {
continue;
} elseif ( !empty( $field->mParams['disabled'] ) ) {
$fieldData[$fieldname] = $field->getDefault();
} else {
- $fieldData[$fieldname] = $field->loadDataFromRequest( $this->getRequest() );
+ $fieldData[$fieldname] = $field->loadDataFromRequest( $request );
}
}
return $this;
}
+
+ /**
+ * Turns a *-message parameter (which could be a MessageSpecifier, or a message name, or a
+ * name + parameters array) into a Message.
+ * @param mixed $value
+ * @return Message
+ */
+ protected function getMessage( $value ) {
+ return Message::newFromSpecifier( $value )->setContext( $this );
+ }
}