PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 3.2.2
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v3.2.2
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 / Theme / Fields / HtmlSelectField.php

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

178 lines 5.3 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\Theme\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 ClassicInputWrapper($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value);
12 $input = self::field($field, $rowID, $form_atomic_Cls_map, $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, $v)
30 {
31 $fieldHelpers = new ClassicFieldHelpers($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 ($v) {
39 $value = $v;
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 %3$s"
54 value
55 >
56 %4$s
57 </option>',
58 $fieldHelpers->getCustomAttributes('slct-optn'),
59 $fieldHelpers->getAtomicCls('slct-optn'),
60 $fieldHelpers->getCustomClasses('slct-optn'),
61 $fieldHelpers->kses_post($field->ph)
62 );
63 }
64
65 if (property_exists($field, 'opt') && is_iterable($field->opt)) {
66 foreach ($field->opt as $opt) {
67 if (!is_object($opt)) {
68 continue;
69 }
70 $disabled = property_exists($opt, 'disabled') ? 'disabled' : '';
71 if (property_exists($opt, 'type')) {
72 $optionsHTML .= sprintf(
73 '<optgroup
74 %1$s
75 class="%2$s %3$s"
76 label="%4$s"
77 %5$s
78 >',
79 $fieldHelpers->getCustomAttributes('slct-opt-grp'),
80 $fieldHelpers->getAtomicCls('slct-opt-grp'),
81 $fieldHelpers->getCustomClasses('slct-opt-grp'),
82 $fieldHelpers->esc_attr($opt->title),
83 $disabled
84 );
85 $optChilds = isset($opt->childs) && is_iterable($opt->childs) ? $opt->childs : [];
86 foreach ($optChilds as $child) {
87 if (!is_object($child)) {
88 continue;
89 }
90 $val = isset($child->val) ? $child->val : ($child->lbl ?? '');
91 $selected = self::checkSelected($child, $value);
92 $disabled = property_exists($child, 'disabled') ? 'disabled' : '';
93 $optionsHTML .= sprintf(
94 '<option
95 %1$s
96 class="%2$s %3$s"
97 value="%4$s"
98 %5$s
99 %6$s
100 >
101 %7$s
102 </option>',
103 $fieldHelpers->getCustomAttributes('slct-optn'),
104 $fieldHelpers->getAtomicCls('slct-optn'),
105 $fieldHelpers->getCustomClasses('slct-optn'),
106 $fieldHelpers->esc_attr($val),
107 $selected,
108 $disabled,
109 $fieldHelpers->kses_post($child->lbl)
110 );
111 }
112 $optionsHTML .= '</optgroup>';
113 } else {
114 $selected = self::checkSelected($opt, $value);
115 $val = isset($opt->val) ? $opt->val : ($opt->lbl ?? '');
116 $optionsHTML .= sprintf(
117 '<option
118 %1$s
119 class="%2$s %3$s"
120 value="%4$s"
121 %5$s
122 %6$s
123 >
124 %7$s
125 </option>',
126 $fieldHelpers->getCustomAttributes('slct-optn'),
127 $fieldHelpers->getAtomicCls('slct-optn'),
128 $fieldHelpers->getCustomClasses('slct-optn'),
129 $fieldHelpers->esc_attr($val),
130 $selected,
131 $disabled,
132 $fieldHelpers->kses_post($opt->lbl)
133 );
134 }
135 }
136 }
137
138 return sprintf(
139 '<div
140 %1$s
141 class="%2$s %3$s"
142 >
143 <select
144 %4$s
145 id="%5$s-%6$s"
146 class="%7$s %8$s %9$s"
147 %10$s
148 %11$s
149 %12$s
150 %13$s
151 %14$s
152 value="%15$s"
153 >
154 %16$s
155 %17$s
156 </select>
157 </div>',
158 $fieldHelpers->getCustomAttributes('inp-fld-wrp'),
159 $fieldHelpers->getAtomicCls('inp-fld-wrp'),
160 $fieldHelpers->getCustomClasses('inp-fld-wrp'),
161 $fieldHelpers->getCustomAttributes('fld'),
162 $rowID,
163 $contentCount,
164 $fieldHelpers->getAtomicCls('fld'),
165 $fieldHelpers->getCustomClasses('fld'),
166 $readonlyCls,
167 $ariaRequired,
168 $ariaDescribedBy,
169 $readonly,
170 $disabled,
171 $name,
172 $fieldHelpers->esc_attr($value),
173 $phHide,
174 $optionsHTML
175 );
176 }
177 }
178