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

165 lines 4.8 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 $value = '';
36 if ($v) {
37 $value = $v;
38 } elseif (isset($field->val)) {
39 $value = $field->val;
40 }
41
42 $readonlyCls = $readonly ? 'readonly' : '';
43 $phHide = '';
44 $optionsHTML = '';
45 $bfFrontendFormIds = FrontendHelpers::$bfFrontendFormIds;
46 $contentCount = count($bfFrontendFormIds);
47 if ($fieldHelpers->property_exists_nested($field, 'phHide', true)) {
48 $phHide = sprintf(
49 '<option
50 %1$s
51 class="%2$s %3$s"
52 value
53 >
54 %4$s
55 </option>',
56 $fieldHelpers->getCustomAttributes('slct-optn'),
57 $fieldHelpers->getAtomicCls('slct-optn'),
58 $fieldHelpers->getCustomClasses('slct-optn'),
59 $fieldHelpers->kses_post($field->ph)
60 );
61 }
62
63 if (property_exists($field, 'opt')) {
64 foreach ($field->opt as $opt) {
65 $disabled = property_exists($opt, 'disabled') ? 'disabled' : '';
66 if (property_exists($opt, 'type')) {
67 $optionsHTML .= sprintf(
68 '<optgroup
69 %1$s
70 class="%2$s %3$s"
71 label="%4$s"
72 %5$s
73 >',
74 $fieldHelpers->getCustomAttributes('slct-opt-grp'),
75 $fieldHelpers->getAtomicCls('slct-opt-grp'),
76 $fieldHelpers->getCustomClasses('slct-opt-grp'),
77 $fieldHelpers->esc_attr($opt->title),
78 $disabled
79 );
80 foreach ($opt->childs as $child) {
81 $val = isset($child->val) ? $child->val : $child->lbl;
82 $selected = self::checkSelected($child, $value);
83 $disabled = property_exists($child, 'disabled') ? 'disabled' : '';
84 $optionsHTML .= sprintf(
85 '<option
86 %1$s
87 class="%2$s %3$s"
88 value="%4$s"
89 %5$s
90 %6$s
91 >
92 %7$s
93 </option>',
94 $fieldHelpers->getCustomAttributes('slct-optn'),
95 $fieldHelpers->getAtomicCls('slct-optn'),
96 $fieldHelpers->getCustomClasses('slct-optn'),
97 $fieldHelpers->esc_attr($val),
98 $selected,
99 $disabled,
100 $fieldHelpers->kses_post($child->lbl)
101 );
102 }
103 $optionsHTML .= '</optgroup>';
104 } else {
105 $selected = self::checkSelected($opt, $value);
106 $val = isset($opt->val) ? $opt->val : $opt->lbl;
107 $optionsHTML .= sprintf(
108 '<option
109 %1$s
110 class="%2$s %3$s"
111 value="%4$s"
112 %5$s
113 %6$s
114 >
115 %7$s
116 </option>',
117 $fieldHelpers->getCustomAttributes('slct-optn'),
118 $fieldHelpers->getAtomicCls('slct-optn'),
119 $fieldHelpers->getCustomClasses('slct-optn'),
120 $fieldHelpers->esc_attr($val),
121 $selected,
122 $disabled,
123 $fieldHelpers->kses_post($opt->lbl)
124 );
125 }
126 }
127 }
128
129 return sprintf(
130 '<div
131 %1$s
132 class="%2$s %3$s"
133 >
134 <select
135 %4$s
136 id="%5$s-%6$s"
137 class="%7$s %8$s %9$s"
138 %10$s
139 %11$s
140 %12$s
141 value="%13$s"
142 >
143 %14$s
144 %15$s
145 </select>
146 </div>',
147 $fieldHelpers->getCustomAttributes('inp-fld-wrp'),
148 $fieldHelpers->getAtomicCls('inp-fld-wrp'),
149 $fieldHelpers->getCustomClasses('inp-fld-wrp'),
150 $fieldHelpers->getCustomAttributes('fld'),
151 $rowID,
152 $contentCount,
153 $fieldHelpers->getAtomicCls('fld'),
154 $fieldHelpers->getCustomClasses('fld'),
155 $readonlyCls,
156 $readonly,
157 $disabled,
158 $name,
159 $fieldHelpers->esc_attr($value),
160 $phHide,
161 $optionsHTML
162 );
163 }
164 }
165