Completed
Branch master (a465d1)
by
unknown
26:13
created

VFormHTMLForm::getButtons()   D

Complexity

Conditions 12
Paths 324

Size

Total Lines 68
Code Lines 39

Duplication

Lines 10
Ratio 14.71 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 10
loc 68
rs 4.2836
cc 12
eloc 39
nc 324
nop 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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 View Code Duplication
	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
	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-ui-vform', 'mw-ui-container', 'visualClear' ];
71
		return $attribs;
72
	}
73
74
	function wrapForm( $html ) {
75
		// Always discard $this->mWrapperLegend
76
		return Html::rawElement( 'form', $this->getFormAttributes(), $html );
77
	}
78
79
	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 View Code Duplication
		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
		foreach ( $this->mButtons as $button ) {
120
			$attrs = [
121
				'type' => 'submit',
122
				'name' => $button['name'],
123
				'value' => $button['value']
124
			];
125
126
			if ( $button['attribs'] ) {
127
				$attrs += $button['attribs'];
128
			}
129
130
			if ( isset( $button['id'] ) ) {
131
				$attrs['id'] = $button['id'];
132
			}
133
134
			$attrs['class'] = isset( $attrs['class'] ) ? (array)$attrs['class'] : [];
135
			$attrs['class'][] = 'mw-ui-button mw-ui-big mw-ui-block';
136
137
			$buttons .= Html::element( 'input', $attrs ) . "\n";
138
		}
139
140
		if ( !$buttons ) {
141
			return '';
142
		}
143
144
		return Html::rawElement( 'div',
145
			[ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
146
	}
147
}
148