Merge "Convert Special:DeletedContributions to use OOUI."
[lhc/web/wiklou.git] / includes / htmlform / fields / HTMLTextAreaField.php
1 <?php
2
3 class HTMLTextAreaField extends HTMLFormField {
4 const DEFAULT_COLS = 80;
5 const DEFAULT_ROWS = 25;
6
7 protected $mPlaceholder = '';
8
9 /**
10 * @param array $params
11 * - cols, rows: textarea size
12 * - placeholder/placeholder-message: set HTML placeholder attribute
13 * - spellcheck: set HTML spellcheck attribute
14 */
15 public function __construct( $params ) {
16 parent::__construct( $params );
17
18 if ( isset( $params['placeholder-message'] ) ) {
19 $this->mPlaceholder = $this->getMessage( $params['placeholder-message'] )->parse();
20 } elseif ( isset( $params['placeholder'] ) ) {
21 $this->mPlaceholder = $params['placeholder'];
22 }
23 }
24
25 public function getCols() {
26 return isset( $this->mParams['cols'] ) ? $this->mParams['cols'] : static::DEFAULT_COLS;
27 }
28
29 public function getRows() {
30 return isset( $this->mParams['rows'] ) ? $this->mParams['rows'] : static::DEFAULT_ROWS;
31 }
32
33 public function getSpellCheck() {
34 $val = isset( $this->mParams['spellcheck'] ) ? $this->mParams['spellcheck'] : null;
35 if ( is_bool( $val ) ) {
36 // "spellcheck" attribute literally requires "true" or "false" to work.
37 return $val === true ? 'true' : 'false';
38 }
39 return null;
40 }
41
42 public function getInputHTML( $value ) {
43 $attribs = [
44 'id' => $this->mID,
45 'cols' => $this->getCols(),
46 'rows' => $this->getRows(),
47 'spellcheck' => $this->getSpellCheck(),
48 ] + $this->getTooltipAndAccessKey();
49
50 if ( $this->mClass !== '' ) {
51 $attribs['class'] = $this->mClass;
52 }
53 if ( $this->mPlaceholder !== '' ) {
54 $attribs['placeholder'] = $this->mPlaceholder;
55 }
56
57 $allowedParams = [
58 'tabindex',
59 'disabled',
60 'readonly',
61 'required',
62 'autofocus'
63 ];
64
65 $attribs += $this->getAttributes( $allowedParams );
66 return Html::textarea( $this->mName, $value, $attribs );
67 }
68
69 function getInputOOUI( $value ) {
70 if ( isset( $this->mParams['cols'] ) ) {
71 throw new Exception( "OOUIHTMLForm does not support the 'cols' parameter for textareas" );
72 }
73
74 $attribs = $this->getTooltipAndAccessKey();
75
76 if ( $this->mClass !== '' ) {
77 $attribs['classes'] = [ $this->mClass ];
78 }
79 if ( $this->mPlaceholder !== '' ) {
80 $attribs['placeholder'] = $this->mPlaceholder;
81 }
82
83 $allowedParams = [
84 'tabindex',
85 'disabled',
86 'readonly',
87 'required',
88 'autofocus',
89 ];
90
91 $attribs += OOUI\Element::configFromHtmlAttributes(
92 $this->getAttributes( $allowedParams )
93 );
94
95 return new OOUI\TextInputWidget( [
96 'id' => $this->mID,
97 'name' => $this->mName,
98 'multiline' => true,
99 'value' => $value,
100 'rows' => $this->getRows(),
101 ] + $attribs );
102 }
103 }