PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / V_3.0.0
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder vV_3.0.0
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 / GDPRAgreementField.php

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

196 lines 4.9 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 GDPRAgreementField
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, $field_name, $form_atomic_Cls_map, $formID, $error, $value);
13 return $inputWrapper->wrapper($input, true);
14 }
15
16 private static function field($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error = null, $value = null)
17 {
18 $fieldHelpers = new ClassicFieldHelpers($field, $rowID, $form_atomic_Cls_map);
19
20 $suggestions = '';
21 $req = $fieldHelpers->required();
22 $disabled = '';
23 $readonly = '';
24 $name = $fieldHelpers->name();
25 $value = '';
26 $ariaDescribedBy = $fieldHelpers->ariaDescribedBy();
27 $ariaRequired = $fieldHelpers->ariaRequired();
28 // Get dynamic label ID to link the checkbox group to its label for screen readers
29 $labelId = $fieldHelpers->getLabelId();
30 $bfFrontendFormIds = FrontendHelpers::$bfFrontendFormIds;
31 $contentCount = count($bfFrontendFormIds);
32 if ($fieldHelpers->property_exists_nested($field, 'msg->checked')) {
33 $value = "value='{$field->msg->checked}'";
34 }
35 $checked = '';
36
37 if ($fieldHelpers->property_exists_nested($field, 'valid->disabled', true)) {
38 $disabled = 'disabled';
39 }
40
41 if ($fieldHelpers->property_exists_nested($field, 'valid->checked', true) || $fieldHelpers->isChecked()) {
42 $checked = 'checked';
43 }
44
45 if ($fieldHelpers->property_exists_nested($field, 'valid->readonly', true)) {
46 $readonly = 'readonly';
47 }
48
49 $lbl = '';
50 if (isset($field->lbl) && !empty($field->lbl)) {
51 $lbl = $field->lbl;
52 } elseif ($fieldHelpers->property_exists_nested($field, 'info->lbl') && !empty($field->info->lbl)) {
53 $lbl = $field->info->lbl;
54 }
55
56 // SVG symbol for checkbox tick
57 $svgSymbol = sprintf(
58 '<svg class="%1$s" aria-hidden="true">
59 <symbol id="%2$s-ck-svg" viewBox="0 0 12 10">
60 <polyline
61 class="%3$s"
62 points="1.5 6 4.5 9 10.5 1"
63 ></polyline>
64 </symbol>
65 </svg>',
66 $fieldHelpers->getAtomicCls('cks'),
67 $rowID,
68 $fieldHelpers->getAtomicCls('ck-svgline')
69 );
70
71 // Checkbox input element
72 $inputHtml = sprintf(
73 '<input
74 id="%1$s-%2$s-gdpr"
75 type="checkbox"
76 class="%3$s"
77 %4$s
78 %5$s
79 %6$s
80 %7$s
81 %8$s
82 %9$s
83 %10$s
84 />',
85 $rowID,
86 $contentCount,
87 $fieldHelpers->getAtomicCls('ci'),
88 $disabled,
89 $readonly,
90 $req,
91 $ariaRequired,
92 $name,
93 $checked,
94 $value
95 );
96
97 // Checkbox box with SVG icon
98 $checkBoxHtml = sprintf(
99 '<span
100 %1$s
101 data-bx
102 class="%2$s %3$s"
103 >
104 <svg
105 width="12"
106 height="10"
107 viewBox="0 0 12 10"
108 class="%4$s"
109 >
110 <use
111 data-ck-icn
112 href="#%5$s-ck-svg"
113 class="%6$s"
114 />
115 </svg>
116 </span>',
117 $fieldHelpers->getCustomAttributes('bx'),
118 $fieldHelpers->getAtomicCls('bx'),
119 $fieldHelpers->getCustomClasses('bx'),
120 $fieldHelpers->getAtomicCls('svgwrp'),
121 $rowID,
122 $fieldHelpers->getAtomicCls('ck-icn')
123 );
124
125 // Label text span
126 $labelTextHtml = sprintf(
127 '<span
128 %1$s
129 class="%2$s %3$s"
130 >
131 %4$s
132 </span>',
133 $fieldHelpers->getCustomAttributes('ct'),
134 $fieldHelpers->getAtomicCls('ct'),
135 $fieldHelpers->getCustomClasses('ct'),
136 $fieldHelpers->kses_post($fieldHelpers->renderHTMR($lbl))
137 );
138
139 // Label wrapper
140 $labelHtml = sprintf(
141 '<label
142 %1$s
143 data-cl
144 for="%2$s-%3$s-gdpr"
145 class="%4$s"
146 >
147 %5$s
148 %6$s
149 </label>',
150 $fieldHelpers->getCustomAttributes('cl'),
151 $rowID,
152 $contentCount,
153 $fieldHelpers->getAtomicCls('cl'),
154 $checkBoxHtml,
155 $labelTextHtml
156 );
157
158 // Checkbox wrapper div
159 $checkboxWrapperHtml = sprintf(
160 '<div
161 %1$s
162 class="%2$s %3$s"
163 >
164 %4$s
165 %5$s
166 </div>',
167 $fieldHelpers->getCustomAttributes('cw'),
168 $fieldHelpers->getAtomicCls('cw'),
169 $fieldHelpers->getCustomClasses('cw'),
170 $inputHtml,
171 $labelHtml
172 );
173
174 // Final container
175 return sprintf(
176 '<div
177 %1$s
178 class="%2$s %3$s"
179 role="group"
180 aria-labelledby="%4$s"
181 %5$s
182 >
183 %6$s
184 %7$s
185 </div>',
186 $fieldHelpers->getCustomAttributes('cc'),
187 $fieldHelpers->getAtomicCls('cc'),
188 $fieldHelpers->getCustomClasses('cc'),
189 $labelId,
190 $ariaDescribedBy,
191 $svgSymbol,
192 $checkboxWrapperHtml
193 );
194 }
195 }
196