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
← All changes | includes/Frontend/Form/View/Theme/Fields/TextField.php +96 -53 2.03.3.1 View file →
@@ -1,79 +1,122 @@
1 1 <?php
2 2
3 3 namespace BitCode\BitForm\Frontend\Form\View\Theme\Fields;
4 4
5 -class TextField {
6 - public static function init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error = null, $value = null) {
7 - $inputWrapper = new InputWrapper($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value);
8 - $input = self::field($field, $rowID, $form_atomic_Cls_map, $value);
5 +use BitCode\BitForm\Core\Util\FrontendHelpers;
6 +
7 +class TextField
8 +{
9 + public static function init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error = null, $value = null)
10 + {
11 + if (!is_object($field)) {
12 + return '';
13 + }
14 + $inputWrapper = new ClassicInputWrapper($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value);
15 + $input = self::field($field, $rowID, $form_atomic_Cls_map, $value, $formID);
9 16 return $inputWrapper->wrapper($input);
10 17 }
11 18
12 - private static function field($field, $rowID, $form_atomic_Cls_map, $value) {
13 - $fieldHelpers = new FieldHelpers($field, $rowID, $form_atomic_Cls_map);
19 + private static function field($field, $rowID, $form_atomic_Cls_map, $value, $formID = null)
20 + {
21 + $fieldHelpers = new ClassicFieldHelpers($field, $rowID, $form_atomic_Cls_map, $formID);
14 22
15 23 $prefixIcn = $fieldHelpers->icon('prefixIcn', 'pre-i');
16 24 $suffixIcn = $fieldHelpers->icon('suffixIcn', 'suf-i');
17 - $sugg = '';
18 25 $req = $fieldHelpers->required();
19 26 $disabled = $fieldHelpers->disabled();
20 27 $readonly = $fieldHelpers->readonly();
21 - $inputMode = '';
28 + $inputMode = apply_filters('bitform_field_inputmode_attr', '', $field);
22 29 $name = $fieldHelpers->name();
23 30 $ac = $fieldHelpers->autocomplete();
24 - $mx = '';
25 - $mn = '';
31 + $mx = apply_filters('bitform_field_max_attr', '', $field);
32 + $mn = apply_filters('bitform_field_min_attr', '', $field);
33 + $minlength = $fieldHelpers->minlength();
34 + $maxlength = $fieldHelpers->maxlength();
35 + $maxword = $fieldHelpers->maxword();
36 + $minword = $fieldHelpers->minword();
26 37 $ph = $fieldHelpers->placeholder();
27 38 $value = $fieldHelpers->value();
39 + $ariaDescribedBy = $fieldHelpers->ariaDescribedBy();
40 + $ariaRequired = $fieldHelpers->ariaRequired();
28 41 $list = '';
42 + $bfFrontendFormIds = FrontendHelpers::$bfFrontendFormIds;
43 + $contentCount = count($bfFrontendFormIds);
44 + $sugg = apply_filters('bitform_field_suggestions_datalist', '', $field, $rowID, $contentCount);
29 45
30 - if (property_exists($field, 'suggestions') && count($field->suggestions) > 0) {
31 - $list = "list='{$rowID}-datalist'";
32 - $sugg .= "<datalist id='{$rowID}-datalist'>";
33 - foreach ($field->suggestions as $suggestion) {
34 - $val = (isset($suggestion->val) && !empty($suggestion->val)) ? $suggestion->val : $suggestion->lbl;
35 - $sugg .= "<option value='{$val}'>{$suggestion->lbl}</option>";
36 - }
37 - $sugg .= '</datalist>';
38 - }
46 + $showPickerAttr = self::showPickerAttr($field);
39 47
40 - if (property_exists($field, 'mn') && '' !== $field->mn) {
41 - $mn = "min='{$field->mn}'";
48 + if (is_object($field) && property_exists($field, 'suggestions') && is_countable($field->suggestions) && count($field->suggestions) > 0) {
49 + $list = "list='{$rowID}-{$contentCount}-datalist'";
42 50 }
43 51
44 - if (property_exists($field, 'mx') && '' !== $field->mx) {
45 - $mx = "max='{$field->mx}'";
46 - }
52 + return sprintf(
53 + '<div %1$s class="%2$s %3$s">
54 + <input
55 + %4$s
56 + id="%5$s"
57 + %6$s
58 + class="%7$s %8$s"
59 + type="%9$s"
60 + %10$s
61 + %11$s
62 + %12$s
63 + %13$s
64 + %14$s
65 + %15$s
66 + %16$s
67 + %17$s
68 + %18$s
69 + %19$s
70 + %20$s
71 + %21$s
72 + %22$s
73 + %23$s
74 + %24$s
75 + %25$s
76 + %26$s
77 + />
78 + %27$s
79 + %28$s
80 + </div>
81 + %29$s',
82 + $fieldHelpers->getCustomAttributes('inp-fld-wrp'),
83 + $fieldHelpers->getAtomicCls('inp-fld-wrp'),
84 + $fieldHelpers->getCustomClasses('inp-fld-wrp'),
85 + $fieldHelpers->getCustomAttributes('fld'),
86 + "{$rowID}-{$contentCount}",
87 + $list,
88 + $fieldHelpers->getAtomicCls('fld'),
89 + $fieldHelpers->getCustomClasses('fld'),
90 + esc_attr($field->typ),
91 + $req,
92 + $ariaRequired,
93 + $ariaDescribedBy,
94 + $disabled,
95 + $readonly,
96 + $ph,
97 + $mn,
98 + $mx,
99 + $minlength,
100 + $maxlength,
101 + $maxword,
102 + $minword,
103 + $ac,
104 + $inputMode,
105 + $name,
106 + $value,
107 + $showPickerAttr,
108 + $prefixIcn,
109 + $suffixIcn,
110 + $sugg
111 + );
112 + }
47 113
48 - if (property_exists($field, 'inputMode') && '' !== $field->inputMode) {
49 - $inputMode = "inputMode='{$field->inputMode}'";
114 + private static function showPickerAttr($field)
115 + {
116 + $dateType = ['date', 'datetime-local', 'month', 'time', 'week'];
117 + if (in_array($field->typ, $dateType, true)) {
118 + return 'data-bf-show-picker="1"';
50 119 }
51 -
52 - return <<<TEXTFIELD
53 - <div class="{$fieldHelpers->getAtomicCls('inp-fld-wrp')} {$fieldHelpers->getCustomClasses('inp-fld-wrp')}"
54 - {$fieldHelpers->getCustomAttributes('inp-fld-wrp')}
55 - >
56 - <input
57 - id="{$rowID}"
58 - {$list}
59 - class="{$fieldHelpers->getAtomicCls('fld')} {$fieldHelpers->getCustomClasses('fld')}"
60 - type="{$field->typ}"
61 - {$req}
62 - {$disabled}
63 - {$readonly}
64 - {$ph}
65 - {$mn}
66 - {$mx}
67 - {$ac}
68 - {$inputMode}
69 - {$name}
70 - {$value}
71 - {$fieldHelpers->getCustomAttributes('fld')}
72 - />
73 - {$prefixIcn}
74 - {$suffixIcn}
75 - </div>
76 - {$sugg}
77 -TEXTFIELD;
120 + return '';
78 121 }
79 122 }