* 'default' -- default value when the form is displayed
* 'id' -- HTML id attribute
* 'cssclass' -- CSS class
+ * 'csshelpclass' -- CSS class used to style help text
* 'options' -- associative array mapping labels to values.
* Some field types support multi-level arrays.
* 'options-messages' -- associative array mapping message keys to values.
'edittools' => 'HTMLEditTools',
'checkmatrix' => 'HTMLCheckMatrix',
'cloner' => 'HTMLFormFieldCloner',
+ 'autocompleteselect' => 'HTMLAutoCompleteSelectField',
// 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.
* @return string
*/
public function getDisplayFormat() {
- return $this->displayFormat;
+ $format = $this->displayFormat;
+ if ( !$this->getConfig()->get( 'HTMLFormAllowTableFormat' ) && $format === 'table' ) {
+ $format = 'div';
+ }
+ return $format;
}
/**
* @param array $descriptor Input Descriptor, as described above
*
* @throws MWException
- * @return HTMLFormField subclass
+ * @return HTMLFormField Instance of a subclass of HTMLFormField
*/
public static function loadInputFromParameters( $fieldname, $descriptor ) {
$class = self::getClassFromDescriptor( $fieldname, $descriptor );
/**
* Add footer text, inside the form.
*
- * @param string $msg complete text of message to display
+ * @param string $msg Complete text of message to display
* @param string|null $section The section to add the footer text to
*
* @return HTMLForm $this for chaining calls (since 1.20)
* Only useful when the method is "post".
*
* @since 1.24
- * @param string|array Salt to use
- * @return HTMLForm $this for chaining calls
+ * @param string|array $salt Salt to use
+ * @return HTMLForm $this For chaining calls
*/
public function setTokenSalt( $salt ) {
$this->mTokenSalt = $salt;
*
* @param bool|string|array|Status $submitResult Output from HTMLForm::trySubmit()
*
- * @return Nothing, should be last call
+ * @return void Nothing, should be last call
*/
function displayForm( $submitResult ) {
$this->getOutput()->addHTML( $this->getHTML( $submitResult ) );
* @return string HTML.
*/
function getHiddenFields() {
- global $wgArticlePath;
-
$html = '';
if ( $this->getMethod() == 'post' ) {
$html .= Html::hidden(
$html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
}
- if ( strpos( $wgArticlePath, '?' ) !== false && $this->getMethod() == 'get' ) {
+ $articlePath = $this->getConfig()->get( 'ArticlePath' );
+ if ( strpos( $articlePath, '?' ) !== false && $this->getMethod() == 'get' ) {
$html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
}
*/
function getButtons() {
$buttons = '';
+ $useMediaWikiUIEverywhere = $this->getConfig()->get( 'UseMediaWikiUIEverywhere' );
if ( $this->mShowSubmit ) {
$attribs = array();
$attribs['class'] = array( 'mw-htmlform-submit' );
+ if ( $this->isVForm() || $useMediaWikiUIEverywhere ) {
+ array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-constructive' );
+ }
+
if ( $this->isVForm() ) {
// mw-ui-block is necessary because the buttons aren't necessarily in an
// immediate child div of the vform.
// @todo Let client specify if the primary submit button is progressive or destructive
array_push(
$attribs['class'],
- 'mw-ui-button',
'mw-ui-big',
- 'mw-ui-constructive',
'mw-ui-block'
);
}
$attrs['id'] = $button['id'];
}
+ if ( $this->isVForm() || $useMediaWikiUIEverywhere ) {
+ if ( isset( $attrs['class'] ) ) {
+ $attrs['class'] .= ' mw-ui-button';
+ } else {
+ $attrs['class'] = 'mw-ui-button';
+ }
+ if ( $this->isVForm() ) {
+ $attrs['class'] .= ' mw-ui-big mw-ui-block';
+ }
+ }
+
$buttons .= Html::element( 'input', $attrs ) . "\n";
}
/**
* Format a stack of error messages into a single HTML string
*
- * @param array $errors of message keys/values
+ * @param array $errors Array of message keys/values
*
* @return string HTML, a "<ul>" list of errors
*/
/**
* Set the text for the submit button
*
- * @param string $t plaintext.
+ * @param string $t Plaintext
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
* Set the text for the submit button to a message
* @since 1.19
*
- * @param string $msg Message key
+ * @param string|Message $msg Message key or Message object
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
public function setSubmitTextMsg( $msg ) {
- $this->setSubmitText( $this->msg( $msg )->text() );
+ if ( !$msg instanceof Message ) {
+ $msg = $this->msg( $msg );
+ }
+ $this->setSubmitText( $msg->text() );
return $this;
}
* this message as its "<legend>" element.
* @since 1.19
*
- * @param string $msg Message key
+ * @param string|Message $msg Message key or Message object
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
public function setWrapperLegendMsg( $msg ) {
- $this->setWrapperLegend( $this->msg( $msg )->text() );
+ if ( !$msg instanceof Message ) {
+ $msg = $this->msg( $msg );
+ }
+ $this->setWrapperLegend( $msg->text() );
return $this;
}
// Close enough to a div.
$getFieldHtmlMethod = 'getDiv';
break;
+ case 'div':
+ $getFieldHtmlMethod = 'getDiv';
+ break;
default:
$getFieldHtmlMethod = 'get' . ucfirst( $displayFormat );
}
*
* @param array $data
*
- * @return
+ * @return array
*/
function filterDataForSubmit( $data ) {
return $data;
* @return string
*/
public function getAction() {
- global $wgScript, $wgArticlePath;
-
// If an action is alredy provided, return it
if ( $this->mAction !== false ) {
return $this->mAction;
}
- // Check whether we are in GET mode and $wgArticlePath contains a "?"
+ $articlePath = $this->getConfig()->get( 'ArticlePath' );
+ // Check whether we are in GET mode and the ArticlePath contains a "?"
// meaning that getLocalURL() would return something like "index.php?title=...".
// As browser remove the query string before submitting GET forms,
- // it means that the title would be lost. In such case use $wgScript instead
+ // it means that the title would be lost. In such case use wfScript() instead
// and put title in an hidden field (see getHiddenFields()).
- if ( strpos( $wgArticlePath, '?' ) !== false && $this->getMethod() === 'get' ) {
- return $wgScript;
+ if ( strpos( $articlePath, '?' ) !== false && $this->getMethod() === 'get' ) {
+ return wfScript();
}
return $this->getTitle()->getLocalURL();