'hidden' => 'HTMLHiddenField',
'edittools' => 'HTMLEditTools',
'checkmatrix' => 'HTMLCheckMatrix',
+ 'cloner' => 'HTMLFormFieldCloner',
// HTMLTextField will output the correct type="" attribute automagically.
// There are about four zillion other HTML5 input types, like range, but
// we don't use those at the moment, so no point in adding all of them.
protected $mTitle;
protected $mMethod = 'post';
+ protected $mWasSubmitted = false;
/**
* Form action URL. false means we will use the URL to set Title
}
if ( $submit ) {
+ $this->mWasSubmitted = true;
$result = $this->trySubmit();
}
* display.
*/
function trySubmit() {
+ $this->mWasSubmitted = true;
+
+ # Check for cancelled submission
+ foreach ( $this->mFlatFields as $fieldname => $field ) {
+ if ( !empty( $field->mParams['nodata'] ) ) {
+ continue;
+ }
+ if ( $field->cancelSubmit( $this->mFieldData[$fieldname], $this->mFieldData ) ) {
+ $this->mWasSubmitted = false;
+ return false;
+ }
+ }
+
# Check for validation
foreach ( $this->mFlatFields as $fieldname => $field ) {
if ( !empty( $field->mParams['nodata'] ) ) {
$data = $this->filterDataForSubmit( $this->mFieldData );
$res = call_user_func( $callback, $data, $this );
+ if ( $res === false ) {
+ $this->mWasSubmitted = false;
+ }
return $res;
}
+ /**
+ * Test whether the form was considered to have been submitted or not, i.e.
+ * whether the last call to tryAuthorizedSubmit or trySubmit returned
+ * non-false.
+ *
+ * This will return false until HTMLForm::tryAuthorizedSubmit or
+ * HTMLForm::trySubmit is called.
+ *
+ * @since 1.23
+ * @return bool
+ */
+ function wasSubmitted() {
+ return $this->mWasSubmitted;
+ }
+
/**
* Set a callback to a function to do something with the form
* once it's been successfully validated.