PluginProbe
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder / 6.2.14
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder v6.2.14
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
← All changes | app/Services/FormBuilder/Components/TextArea.php +79 -10 3.6.516.2.14 View file →
@@ -1,38 +1,107 @@
1 1 <?php
2 2
3 3 namespace FluentForm\App\Services\FormBuilder\Components;
4 4
5 +use FluentForm\App\Helpers\Helper;
6 +use FluentForm\Framework\Helpers\ArrayHelper;
7 +
5 8 class TextArea extends BaseComponent
6 9 {
7 10 /**
8 11 * Compile and echo the html element
9 - * @param array $data [element data]
10 - * @param \stdClass $form [Form Object]
12 + *
13 + * @param array $data [element data]
14 + * @param \stdClass $form [Form Object]
15 + *
11 16 * @return void
12 17 */
13 18 public function compile($data, $form)
14 19 {
15 20 $elementName = $data['element'];
16 - $data = apply_filters('fluenform_rendering_field_data_'.$elementName, $data, $form);
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);
17 32
18 33 $textareaValue = $this->extractValueFromAttributes($data);
19 34
20 - $data['attributes']['class'] = trim('ff-el-form-control '.$data['attributes']['class']);
35 + $data['attributes']['class'] = trim('ff-el-form-control ' . $data['attributes']['class']);
21 36 $data['attributes']['id'] = $this->makeElementId($data, $form);
22 37
23 - if($tabIndex = \FluentForm\App\Helpers\Helper::getNextTabIndex()) {
38 + if ($tabIndex = Helper::getNextTabIndex()) {
24 39 $data['attributes']['tabindex'] = $tabIndex;
25 40 }
26 41
27 - $elMarkup = '<textarea %s>%s</textarea>';
42 + $ariaRequired = 'false';
43 + if (ArrayHelper::get($data, 'settings.validation_rules.required.value')) {
44 + $ariaRequired = 'true';
45 + }
28 46
47 + $ariaLabelledBy = esc_attr('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 +
29 52 $elMarkup = sprintf(
30 53 $elMarkup,
31 - $this->buildAttributes($data['attributes']),
32 - $textareaValue
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
33 72 );
34 73
35 - $html = $this->buildElementMarkup($elMarkup, $data, $form);
36 - echo apply_filters('fluenform_rendering_field_html_'.$elementName, $html, $data, $form);
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;
37 106 }
38 107 }