PluginProbe
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder / 6.2.9
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder v6.2.9
6.2.14 6.2.13 6.2.12 6.2.10 6.2.11 6.2.9 6.2.8 6.2.7 6.2.6 6.2.5 6.2.4 6.2.3 6.2.2 3.6.22 3.6.31 3.6.40 3.6.41 3.6.42 3.6.50 3.6.51 3.6.60 3.6.61 3.6.62 3.6.64 3.6.65 All 196 releases
fluentform / app / Services / FormBuilder / Components / TextArea.php

TextArea.php in Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder 6.2.9, at app/Services/FormBuilder/Components/TextArea.php

108 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentForm\App\Services\FormBuilder\Components;
4
5 use FluentForm\App\Helpers\Helper;
6 use FluentForm\Framework\Helpers\ArrayHelper;
7
8 class TextArea extends BaseComponent
9 {
10 /**
11 * Compile and echo the html element
12 *
13 * @param array $data [element data]
14 * @param \stdClass $form [Form Object]
15 *
16 * @return void
17 */
18 public function compile($data, $form)
19 {
20 $elementName = $data['element'];
21 $data = apply_filters_deprecated(
22 'fluentform_rendering_field_data_' . $elementName,
23 [
24 $data,
25 $form
26 ],
27 FLUENTFORM_FRAMEWORK_UPGRADE,
28 'fluentform/rendering_field_data_' . $elementName,
29 'Use fluentform/rendering_field_data_' . $elementName . ' instead of fluentform_rendering_field_data_' . $elementName
30 );
31 $data = apply_filters('fluentform/rendering_field_data_' . $elementName, $data, $form);
32
33 $textareaValue = $this->extractValueFromAttributes($data);
34
35 $data['attributes']['class'] = trim('ff-el-form-control ' . $data['attributes']['class']);
36 $data['attributes']['id'] = $this->makeElementId($data, $form);
37
38 if ($tabIndex = Helper::getNextTabIndex()) {
39 $data['attributes']['tabindex'] = $tabIndex;
40 }
41
42 $ariaRequired = 'false';
43 if (ArrayHelper::get($data, 'settings.validation_rules.required.value')) {
44 $ariaRequired = 'true';
45 }
46
47 $ariaLabelledBy = 'label_' . ArrayHelper::get($data, 'attributes.id');
48 $elMarkup = '<textarea aria-required="' . $ariaRequired . '" aria-labelledby="' . $ariaLabelledBy . '" %s>%s</textarea>';
49
50 $atts = $this->buildAttributes($data['attributes']);
51
52 $elMarkup = sprintf(
53 $elMarkup,
54 $atts,
55 esc_attr($textareaValue)
56 ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- $atts is escaped before being passed in.
57
58 $elMarkup = $this->buildInputGroup($elMarkup, $data);
59
60 $html = $this->buildElementMarkup($elMarkup, $data, $form);
61
62 $html = apply_filters_deprecated(
63 'fluentform_rendering_field_html_' . $elementName,
64 [
65 $html,
66 $data,
67 $form
68 ],
69 FLUENTFORM_FRAMEWORK_UPGRADE,
70 'fluentform/rendering_field_html_' . $elementName,
71 'Use fluentform/rendering_field_html_' . $elementName . ' instead of fluentform_rendering_field_html_' . $elementName
72 );
73
74 $this->printContent('fluentform/rendering_field_html_' . $elementName, $html, $data, $form);
75 }
76
77 /**
78 * Build input group with prefix/suffix
79 *
80 * @param string $textarea The textarea element HTML
81 * @param array $data The field data
82 *
83 * @return string
84 */
85 private function buildInputGroup($textarea, $data)
86 {
87 $prefix = ArrayHelper::get($data, 'settings.prefix_label');
88 $suffix = ArrayHelper::get($data, 'settings.suffix_label');
89
90 if ($prefix || $suffix) {
91 $wrapperClass = 'ff_input-group';
92
93 $wrapper = '<div class="' . $wrapperClass . '">';
94 if ($prefix) {
95 $wrapper .= '<div class="ff_input-group-prepend"><span class="ff_input-group-text">' . fluentform_sanitize_html($prefix) . '</span></div>';
96 }
97 $wrapper .= $textarea;
98 if ($suffix) {
99 $wrapper .= '<div class="ff_input-group-append"><span class="ff_input-group-text">' . fluentform_sanitize_html($suffix) . '</span></div>';
100 }
101 $wrapper .= '</div>';
102 return $wrapper;
103 }
104
105 return $textarea;
106 }
107 }
108