]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - includes/htmlform/VFormHTMLForm.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / includes / htmlform / VFormHTMLForm.php
1 <?php
2
3 /**
4  * HTML form generation and submission handling, vertical-form style.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program; if not, write to the Free Software Foundation, Inc.,
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  * http://www.gnu.org/copyleft/gpl.html
20  *
21  * @file
22  */
23
24 /**
25  * Compact stacked vertical format for forms.
26  */
27 class VFormHTMLForm extends HTMLForm {
28         /**
29          * Wrapper and its legend are never generated in VForm mode.
30          * @var bool
31          */
32         protected $mWrapperLegend = false;
33
34         /**
35          * Symbolic display format name.
36          * @var string
37          */
38         protected $displayFormat = 'vform';
39
40         public function isVForm() {
41                 wfDeprecated( __METHOD__, '1.25' );
42                 return true;
43         }
44
45         public static function loadInputFromParameters( $fieldname, $descriptor,
46                 HTMLForm $parent = null
47         ) {
48                 $field = parent::loadInputFromParameters( $fieldname, $descriptor, $parent );
49                 $field->setShowEmptyLabel( false );
50                 return $field;
51         }
52
53         public function getHTML( $submitResult ) {
54                 // This is required for VForm HTMLForms that use that style regardless
55                 // of wgUseMediaWikiUIEverywhere (since they pre-date it).
56                 // When wgUseMediaWikiUIEverywhere is removed, this should be consolidated
57                 // with the addModuleStyles in SpecialPage->setHeaders.
58                 $this->getOutput()->addModuleStyles( [
59                         'mediawiki.ui',
60                         'mediawiki.ui.button',
61                         'mediawiki.ui.input',
62                         'mediawiki.ui.checkbox',
63                 ] );
64
65                 return parent::getHTML( $submitResult );
66         }
67
68         protected function getFormAttributes() {
69                 $attribs = parent::getFormAttributes();
70                 $attribs['class'] = [ 'mw-htmlform', 'mw-ui-vform', 'mw-ui-container' ];
71                 return $attribs;
72         }
73
74         public function wrapForm( $html ) {
75                 // Always discard $this->mWrapperLegend
76                 return Html::rawElement( 'form', $this->getFormAttributes(), $html );
77         }
78
79         public function getButtons() {
80                 $buttons = '';
81
82                 if ( $this->mShowSubmit ) {
83                         $attribs = [];
84
85                         if ( isset( $this->mSubmitID ) ) {
86                                 $attribs['id'] = $this->mSubmitID;
87                         }
88
89                         if ( isset( $this->mSubmitName ) ) {
90                                 $attribs['name'] = $this->mSubmitName;
91                         }
92
93                         if ( isset( $this->mSubmitTooltip ) ) {
94                                 $attribs += Linker::tooltipAndAccesskeyAttribs( $this->mSubmitTooltip );
95                         }
96
97                         $attribs['class'] = [
98                                 'mw-htmlform-submit',
99                                 'mw-ui-button mw-ui-big mw-ui-block',
100                         ];
101                         foreach ( $this->mSubmitFlags as $flag ) {
102                                 $attribs['class'][] = 'mw-ui-' . $flag;
103                         }
104
105                         $buttons .= Xml::submitButton( $this->getSubmitText(), $attribs ) . "\n";
106                 }
107
108                 if ( $this->mShowReset ) {
109                         $buttons .= Html::element(
110                                 'input',
111                                 [
112                                         'type' => 'reset',
113                                         'value' => $this->msg( 'htmlform-reset' )->text(),
114                                         'class' => 'mw-ui-button mw-ui-big mw-ui-block',
115                                 ]
116                         ) . "\n";
117                 }
118
119                 if ( $this->mShowCancel ) {
120                         $target = $this->mCancelTarget ?: Title::newMainPage();
121                         if ( $target instanceof Title ) {
122                                 $target = $target->getLocalURL();
123                         }
124                         $buttons .= Html::element(
125                                         'a',
126                                         [
127                                                 'class' => 'mw-ui-button mw-ui-big mw-ui-block',
128                                                 'href' => $target,
129                                         ],
130                                         $this->msg( 'cancel' )->text()
131                                 ) . "\n";
132                 }
133
134                 foreach ( $this->mButtons as $button ) {
135                         $attrs = [
136                                 'type' => 'submit',
137                                 'name' => $button['name'],
138                                 'value' => $button['value']
139                         ];
140
141                         if ( $button['attribs'] ) {
142                                 $attrs += $button['attribs'];
143                         }
144
145                         if ( isset( $button['id'] ) ) {
146                                 $attrs['id'] = $button['id'];
147                         }
148
149                         $attrs['class'] = isset( $attrs['class'] ) ? (array)$attrs['class'] : [];
150                         $attrs['class'][] = 'mw-ui-button mw-ui-big mw-ui-block';
151
152                         $buttons .= Html::element( 'input', $attrs ) . "\n";
153                 }
154
155                 if ( !$buttons ) {
156                         return '';
157                 }
158
159                 return Html::rawElement( 'div',
160                         [ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
161         }
162 }