MediaWiki  1.34.4
VFormHTMLForm.php
Go to the documentation of this file.
1 <?php
2 
27 class VFormHTMLForm extends HTMLForm {
32  protected $mWrapperLegend = false;
33 
38  protected $displayFormat = 'vform';
39 
40  public static function loadInputFromParameters( $fieldname, $descriptor,
41  HTMLForm $parent = null
42  ) {
43  $field = parent::loadInputFromParameters( $fieldname, $descriptor, $parent );
44  $field->setShowEmptyLabel( false );
45  return $field;
46  }
47 
48  public function getHTML( $submitResult ) {
49  // This is required for VForm HTMLForms that use that style regardless
50  // of wgUseMediaWikiUIEverywhere (since they pre-date it).
51  // When wgUseMediaWikiUIEverywhere is removed, this should be consolidated
52  // with the addModuleStyles in SpecialPage->setHeaders.
53  $this->getOutput()->addModuleStyles( [
54  'mediawiki.ui',
55  'mediawiki.ui.button',
56  'mediawiki.ui.input',
57  'mediawiki.ui.checkbox',
58  ] );
59 
60  return parent::getHTML( $submitResult );
61  }
62 
63  protected function getFormAttributes() {
64  $attribs = parent::getFormAttributes();
65  $attribs['class'] = [ 'mw-htmlform', 'mw-ui-vform', 'mw-ui-container' ];
66  return $attribs;
67  }
68 
69  public function wrapForm( $html ) {
70  // Always discard $this->mWrapperLegend
71  return Html::rawElement( 'form', $this->getFormAttributes(), $html );
72  }
73 
74  public function getButtons() {
75  $buttons = '';
76 
77  if ( $this->mShowSubmit ) {
78  $attribs = [];
79 
80  if ( isset( $this->mSubmitID ) ) {
81  $attribs['id'] = $this->mSubmitID;
82  }
83 
84  if ( isset( $this->mSubmitName ) ) {
85  $attribs['name'] = $this->mSubmitName;
86  }
87 
88  if ( isset( $this->mSubmitTooltip ) ) {
89  $attribs += Linker::tooltipAndAccesskeyAttribs( $this->mSubmitTooltip );
90  }
91 
92  $attribs['class'] = [
93  'mw-htmlform-submit',
94  'mw-ui-button mw-ui-big mw-ui-block',
95  ];
96  foreach ( $this->mSubmitFlags as $flag ) {
97  $attribs['class'][] = 'mw-ui-' . $flag;
98  }
99 
100  $buttons .= Xml::submitButton( $this->getSubmitText(), $attribs ) . "\n";
101  }
102 
103  if ( $this->mShowReset ) {
104  $buttons .= Html::element(
105  'input',
106  [
107  'type' => 'reset',
108  'value' => $this->msg( 'htmlform-reset' )->text(),
109  'class' => 'mw-ui-button mw-ui-big mw-ui-block',
110  ]
111  ) . "\n";
112  }
113 
114  if ( $this->mShowCancel ) {
115  $target = $this->mCancelTarget ?: Title::newMainPage();
116  if ( $target instanceof Title ) {
117  $target = $target->getLocalURL();
118  }
119  $buttons .= Html::element(
120  'a',
121  [
122  'class' => 'mw-ui-button mw-ui-big mw-ui-block',
123  'href' => $target,
124  ],
125  $this->msg( 'cancel' )->text()
126  ) . "\n";
127  }
128 
129  foreach ( $this->mButtons as $button ) {
130  $attrs = [
131  'type' => 'submit',
132  'name' => $button['name'],
133  'value' => $button['value']
134  ];
135 
136  if ( $button['attribs'] ) {
137  $attrs += $button['attribs'];
138  }
139 
140  if ( isset( $button['id'] ) ) {
141  $attrs['id'] = $button['id'];
142  }
143 
144  $attrs['class'] = isset( $attrs['class'] ) ? (array)$attrs['class'] : [];
145  $attrs['class'][] = 'mw-ui-button mw-ui-big mw-ui-block';
146 
147  $buttons .= Html::element( 'input', $attrs ) . "\n";
148  }
149 
150  if ( !$buttons ) {
151  return '';
152  }
153 
154  return Html::rawElement( 'div',
155  [ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
156  }
157 }
VFormHTMLForm\$displayFormat
string $displayFormat
Symbolic display format name.
Definition: VFormHTMLForm.php:38
HTMLForm\$mSubmitID
$mSubmitID
Definition: HTMLForm.php:205
VFormHTMLForm
Compact stacked vertical format for forms.
Definition: VFormHTMLForm.php:27
Title\newMainPage
static newMainPage(MessageLocalizer $localizer=null)
Create a new Title for the Main Page.
Definition: Title.php:649
HTMLForm\$mSubmitName
$mSubmitName
Definition: HTMLForm.php:206
Linker\tooltipAndAccesskeyAttribs
static tooltipAndAccesskeyAttribs( $name, array $msgParams=[], $options=null)
Returns the attributes for the tooltip and access key.
Definition: Linker.php:2195
VFormHTMLForm\getHTML
getHTML( $submitResult)
Returns the raw HTML generated by the form.
Definition: VFormHTMLForm.php:48
ContextSource\getOutput
getOutput()
Definition: ContextSource.php:112
VFormHTMLForm\wrapForm
wrapForm( $html)
Wrap the form innards in an actual "<form>" element.
Definition: VFormHTMLForm.php:69
ContextSource\msg
msg( $key,... $params)
Get a Message object with context set Parameters are the same as wfMessage()
Definition: ContextSource.php:168
VFormHTMLForm\getButtons
getButtons()
Get the submit and (potentially) reset buttons.
Definition: VFormHTMLForm.php:74
VFormHTMLForm\loadInputFromParameters
static loadInputFromParameters( $fieldname, $descriptor, HTMLForm $parent=null)
Initialise a new Object for the field.
Definition: VFormHTMLForm.php:40
VFormHTMLForm\$mWrapperLegend
bool $mWrapperLegend
Wrapper and its legend are never generated in VForm mode.
Definition: VFormHTMLForm.php:32
Title
Represents a title within MediaWiki.
Definition: Title.php:42
HTMLForm\getSubmitText
getSubmitText()
Get the text for the submit button, either customised or a default.
Definition: HTMLForm.php:1401
VFormHTMLForm\getFormAttributes
getFormAttributes()
Get HTML attributes for the <form> tag.
Definition: VFormHTMLForm.php:63
Html\rawElement
static rawElement( $element, $attribs=[], $contents='')
Returns an HTML element in a string.
Definition: Html.php:209
Html\element
static element( $element, $attribs=[], $contents='')
Identical to rawElement(), but HTML-escapes $contents (like Xml::element()).
Definition: Html.php:231
Xml\submitButton
static submitButton( $value, $attribs=[])
Convenience function to build an HTML submit button When $wgUseMediaWikiUIEverywhere is true it will ...
Definition: Xml.php:459
HTMLForm
Object handling generic submission, CSRF protection, layout and other logic for UI forms in a reusabl...
Definition: HTMLForm.php:131