PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 3.3.1
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v3.3.1
3.3.1 V-3.3.0 3.2.2 3.2.1 3.2.0 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 V3.0.3 V3.0.2 -3.0.1 V_3.0.0 1.1.1 1.1.8 1.2 1.3 1.4 1.4.18 1.5.2 1.9 2.0 2.10.0 2.10.1 All 138 releases
bit-form / includes / Frontend / Form / View / Conversational / Fields / HtmlSelectField.php

HtmlSelectField.php in Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder 3.3.1, at includes/Frontend/Form/View/Conversational/Fields/HtmlSelectField.php

172 lines 5.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace BitCode\BitForm\Frontend\Form\View\Conversational\Fields;
4
5 use BitCode\BitForm\Core\Util\FrontendHelpers;
6
7 class HtmlSelectField
8 {
9 public static function init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error = null, $value = null)
10 {
11 $inputWrapper = new ConversationalInputWrapper($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value);
12 $input = self::field($field, $rowID, $form_atomic_Cls_map, $formID, $value);
13 return $inputWrapper->wrapper($input);
14 }
15
16 private static function checkSelected($opt, $val)
17 {
18 $selected = '';
19 if (isset($opt->val) && $opt->val === $val) {
20 $selected = 'selected';
21 } elseif (isset($opt->lbl) && $opt->lbl === $val) {
22 $selected = 'selected';
23 } elseif (is_object($opt) && property_exists($opt, 'check')) {
24 $selected = 'selected';
25 }
26 return $selected;
27 }
28
29 private static function field($field, $rowID, $form_atomic_Cls_map, $formID, $val = null)
30 {
31 $fieldHelpers = new ConversationalFieldHelpers($formID, $field, $rowID, $form_atomic_Cls_map);
32 $disabled = $fieldHelpers->disabled();
33 $readonly = $fieldHelpers->readonly();
34 $name = $fieldHelpers->name();
35 $ariaDescribedBy = $fieldHelpers->ariaDescribedBy();
36 $ariaRequired = $fieldHelpers->ariaRequired();
37 $value = '';
38 if ($val) {
39 $value = $val;
40 } elseif (isset($field->val)) {
41 $value = $field->val;
42 }
43
44 $readonlyCls = $readonly ? 'readonly' : '';
45 $phHide = '';
46 $optionsHTML = '';
47 $bfFrontendFormIds = FrontendHelpers::$bfFrontendFormIds;
48 $contentCount = count($bfFrontendFormIds);
49 if ($fieldHelpers->property_exists_nested($field, 'phHide', true)) {
50 $phHide = sprintf(
51 '<option
52 %1$s
53 class="%2$s"
54 value
55 >
56 %3$s
57 </option>',
58 $fieldHelpers->getCustomAttributes('slct-optn'),
59 $fieldHelpers->getConversationalCls('slct-optn') . ' ' . $fieldHelpers->getCustomClasses('slct-optn'),
60 $fieldHelpers->kses_post($field->ph)
61 );
62 }
63
64 if (property_exists($field, 'opt') && is_iterable($field->opt)) {
65 foreach ($field->opt as $opt) {
66 if (!is_object($opt)) {
67 continue;
68 }
69 $disabled = property_exists($opt, 'disabled') ? 'disabled' : '';
70 if (property_exists($opt, 'type')) {
71 $optionsHTML .= sprintf(
72 '<optgroup
73 %1$s
74 class="%2$s"
75 label="%3$s"
76 %4$s
77 >',
78 $fieldHelpers->getCustomAttributes('slct-opt-grp'),
79 $fieldHelpers->getConversationalCls('slct-opt-grp') . ' ' . $fieldHelpers->getCustomClasses('slct-opt-grp'),
80 $fieldHelpers->esc_attr($opt->title),
81 $disabled
82 );
83 $optChilds = isset($opt->childs) && is_iterable($opt->childs) ? $opt->childs : [];
84 foreach ($optChilds as $child) {
85 if (!is_object($child)) {
86 continue;
87 }
88 $val = isset($child->val) ? $child->val : ($child->lbl ?? '');
89 $selected = self::checkSelected($child, $value);
90 $disabled = property_exists($child, 'disabled') ? 'disabled' : '';
91 $optionsHTML .= sprintf(
92 '<option
93 %1$s
94 class="%2$s"
95 value="%3$s"
96 %4$s
97 %5$s
98 >
99 %6$s
100 </option>',
101 $fieldHelpers->getCustomAttributes('slct-optn'),
102 $fieldHelpers->getConversationalCls('slct-optn') . ' ' . $fieldHelpers->getCustomClasses('slct-optn'),
103 $fieldHelpers->esc_attr($val),
104 $selected,
105 $disabled,
106 $fieldHelpers->kses_post($child->lbl)
107 );
108 }
109 $optionsHTML .= '</optgroup>';
110 } else {
111 $selected = self::checkSelected($opt, $value);
112 $val = isset($opt->val) ? $opt->val : ($opt->lbl ?? '');
113 $optionsHTML .= sprintf(
114 '<option
115 %1$s
116 class="%2$s"
117 value="%3$s"
118 %4$s
119 %5$s
120 >
121 %6$s
122 </option>',
123 $fieldHelpers->getCustomAttributes('slct-optn'),
124 $fieldHelpers->getConversationalCls('slct-optn') . ' ' . $fieldHelpers->getCustomClasses('slct-optn'),
125 $fieldHelpers->esc_attr($val),
126 $selected,
127 $disabled,
128 $fieldHelpers->kses_post($opt->lbl)
129 );
130 }
131 }
132 }
133
134 return sprintf(
135 '<div
136 %1$s
137 class="%2$s"
138 >
139 <select
140 %3$s
141 id="%4$s-%5$s"
142 class="%6$s %7$s"
143 %8$s
144 %9$s
145 %10$s
146 %11$s
147 %12$s
148 value="%13$s"
149 >
150 %14$s
151 %15$s
152 </select>
153 </div>',
154 $fieldHelpers->getCustomAttributes('inp-fld-wrp'),
155 $fieldHelpers->getConversationalCls('inp-fld-wrp') . ' ' . $fieldHelpers->getCustomClasses('inp-fld-wrp'),
156 $fieldHelpers->getCustomAttributes('fld'),
157 $rowID,
158 $contentCount,
159 $fieldHelpers->getConversationalCls('fld') . ' ' . $fieldHelpers->getCustomClasses('fld'),
160 $readonlyCls,
161 $ariaRequired,
162 $ariaDescribedBy,
163 $readonly,
164 $disabled,
165 $name,
166 $fieldHelpers->esc_attr($value),
167 $phHide,
168 $optionsHTML
169 );
170 }
171 }
172