PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 3.1.4
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v3.1.4
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.1.4, at includes/Frontend/Form/View/Theme/Fields/HtmlSelectField.php

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