27 private $oouiWarnings;
33 public function __construct( $descriptor, $context =
null, $messagePrefix =
'' ) {
34 parent::__construct( $descriptor, $context, $messagePrefix );
36 $this->
getOutput()->addModuleStyles(
'mediawiki.htmlform.ooui.styles' );
46 $field = parent::loadInputFromParameters( $fieldname, $descriptor, $parent );
47 $field->setShowEmptyLabel(
false );
55 if ( $this->mShowSubmit ) {
58 'classes' => [
'mw-htmlform-submit' ],
65 if ( $this->mSubmitID !==
null ) {
69 if ( $this->mSubmitName !==
null ) {
73 if ( $this->mSubmitTooltip !==
null ) {
75 'title' => Linker::titleAttrib( $this->mSubmitTooltip ),
76 'accessKey' => Linker::accesskey( $this->mSubmitTooltip ),
80 $buttons .= new \OOUI\ButtonInputWidget( $attribs );
83 if ( $this->mShowCancel ) {
84 $buttons .= new \OOUI\ButtonWidget( [
85 'label' => $this->
msg(
'cancel' )->text(),
90 foreach ( $this->mButtons as $button ) {
94 if ( $button[
'attribs'] ) {
96 $attrs += $button[
'attribs'];
99 if ( isset( $button[
'id'] ) ) {
100 $attrs[
'id'] = $button[
'id'];
103 if ( isset( $button[
'label-message'] ) ) {
104 $label = new \OOUI\HtmlSnippet( $this->
getMessage( $button[
'label-message'] )->parse() );
105 } elseif ( isset( $button[
'label'] ) ) {
106 $label = $button[
'label'];
107 } elseif ( isset( $button[
'label-raw'] ) ) {
108 $label = new \OOUI\HtmlSnippet( $button[
'label-raw'] );
110 $label = $button[
'value'];
113 $attrs[
'classes'] = isset( $attrs[
'class'] ) ? (array)$attrs[
'class'] : [];
115 $buttons .= new \OOUI\ButtonInputWidget( [
117 'name' => $button[
'name'],
118 'value' => $button[
'value'],
121 'flags' => $button[
'flags'],
123 'framed' => $button[
'framed'],
131 return Html::rawElement(
'div',
132 [
'class' =>
'mw-htmlform-submit-buttons' ],
"\n$buttons" ) .
"\n";
141 $layout = new \OOUI\PanelLayout( [
147 $layout->appendContent(
148 new \OOUI\FieldsetLayout( [
152 'content' =>
new \OOUI\HtmlSnippet( $section )
165 return $field->
getOOUI( $value );
175 protected function formatSection( array $fieldsHtml, $sectionName, $anyFieldHasLabel ) {
176 if ( !$fieldsHtml ) {
182 $html = implode(
'', $fieldsHtml );
184 if ( $sectionName ) {
185 return Html::rawElement(
187 [
'id' => Sanitizer::escapeIdForAttribute( $sectionName ) ],
200 if ( $elements ===
'' ) {
204 if ( !in_array( $elementsType, [
'error',
'warning' ],
true ) ) {
205 throw new DomainException( $elementsType .
' is not a valid type.' );
208 if ( $elements instanceof
Status ) {
209 if ( !$elements->isGood() ) {
210 foreach ( $elements->getMessages( $elementsType ) as $msg ) {
211 $errors[] = $this->
getMessage( $msg )->parse();
214 } elseif ( $elementsType ===
'error' ) {
215 if ( is_array( $elements ) ) {
216 foreach ( $elements as $error ) {
217 $errors[] = $this->
getMessage( $error )->parse();
219 } elseif ( $elements && $elements !==
true ) {
220 $errors[] = (string)$elements;
224 foreach ( $errors as &$error ) {
225 $error = new \OOUI\HtmlSnippet( $error );
229 if ( $elementsType ===
'error' ) {
230 $this->oouiErrors = $errors;
232 $this->oouiWarnings = $errors;
239 if ( $section ===
null ) {
243 return parent::getHeaderHtml( $section );
248 if ( !( $this->mHeader || $this->oouiErrors || $this->oouiWarnings ) ) {
252 'mw-htmlform-ooui-header',
253 ...$this->oouiErrors ? [
'mw-htmlform-ooui-header-errors' ] : [],
254 ...$this->oouiWarnings ? [
'mw-htmlform-ooui-header-warnings' ] : [],
257 if ( $this->mHeader ) {
258 $element = new \OOUI\LabelWidget( [
'label' =>
new \OOUI\HtmlSnippet( $this->mHeader ) ] );
260 $element = new \OOUI\Widget( [] );
262 return (
new \OOUI\FieldLayout(
266 'errors' => $this->oouiErrors,
267 'notices' => $this->oouiWarnings,
268 'classes' => $classes,
275 return $this->formatFormHeader() . parent::getBody();
280 if ( is_string( $this->mWrapperLegend ) ) {
281 $phpClass = $this->mCollapsible ? CollapsibleFieldsetLayout::class : \OOUI\FieldsetLayout::class;
282 $content =
new $phpClass( [
283 'label' => $this->mWrapperLegend,
284 'collapsed' => $this->mCollapsed,
287 'content' =>
new \OOUI\HtmlSnippet( $html )
290 ] + \OOUI\Element::configFromHtmlAttributes( $this->mWrapperAttributes ) );
292 $content = new \OOUI\HtmlSnippet( $html );
295 $form = new \OOUI\FormLayout( $this->getFormAttributes() + [
296 'classes' => [
'mw-htmlform',
'mw-htmlform-ooui' ],
297 'content' => $content,
301 $form = new \OOUI\PanelLayout( [
302 'classes' => [
'mw-htmlform-ooui-wrapper' ],
304 'padded' => $this->mWrapperLegend !==
false,
305 'framed' => $this->mWrapperLegend !==
false,
314class_alias( OOUIHTMLForm::class,
'OOUIHTMLForm' );
if(!defined('MW_SETUP_CALLBACK'))
msg( $key,... $params)
Get a Message object with context set Parameters are the same as wfMessage()