PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.12.2
GiveWP – Donation Plugin and Fundraising Platform v3.12.2
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Form / LegacyConsumer / FieldView.php
give / src / Form / LegacyConsumer Last commit date
Actions 3 years ago Commands 2 years ago Traits 4 years ago Validators 4 years ago resources 3 years ago templates 3 years ago AddEnctypeAttributeInDonationForm.php 4 years ago FieldView.php 3 years ago FilterCallbackCollection.php 3 years ago ServiceProvider.php 4 years ago TemplateHooks.php 4 years ago UniqueIdAttributeGenerator.php 4 years ago functions.php 4 years ago
FieldView.php
137 lines
1 <?php
2
3 namespace Give\Form\LegacyConsumer;
4
5 use Give\Framework\FieldsAPI\Contracts\Node;
6 use Give\Framework\FieldsAPI\LegacyNodes\CheckboxGroup;
7 use Give\Framework\FieldsAPI\Types;
8
9 /**
10 * @since 2.10.2
11 * @since 2.14.0 Add field classes hook for setting custom class names on the wrapper.
12 */
13 class FieldView
14 {
15 const INPUT_TYPE_ATTRIBUTES = [
16 Types::PHONE => 'tel',
17 Types::EMAIL => 'email',
18 Types::URL => 'url',
19 ];
20
21 /**
22 * @since 2.28.0 add shim for CheckboxGroup, only necessary for legacy FFM fields.
23 * @since 2.10.2
24 * @since 2.14.0 add $formId as a param
25 * @since 2.14.0 Add filter to allow rendering logic for custom fields
26 * @since 2.16.0 Add visibility conditions to field container
27 *
28 * @param Node $field
29 * @param int $formId
30 *
31 * @return void
32 */
33 public static function render(Node $field, $formId)
34 {
35 $type = $field->getType();
36 $fieldIdAttribute = give(UniqueIdAttributeGenerator::class)->getId($formId, $field->getName());
37
38 if ($type === Types::HIDDEN) {
39 include static::getTemplatePath('hidden');
40
41 return;
42 }
43
44 if ($type === CheckboxGroup::TYPE) {
45 $type = Types::CHECKBOX;
46 }
47
48 $classList = apply_filters("give_form_{$formId}_field_classes_{$field->getName()}", [
49 'form-row',
50 'form-row-wide',
51 ]);
52 $className = implode(' ', array_unique($classList));
53
54 printf(
55 '<div class="%1$s" data-field-type="%2$s" data-field-name="%3$s" %4$s>',
56 $className,
57 $type,
58 $field->getName(),
59 self::getVisibilityConditionAttribute($field)
60 );
61
62 // By default, new fields will use templates/label.html.php and templates/base.html.php
63 switch ($type) {
64 case Types::HTML:
65 case Types::CHECKBOX:
66 case Types::RADIO: // Radio provides its own label
67 include static::getTemplatePath($type);
68 break;
69 // These fields need a label and have their own template.
70 case Types::FILE:
71 case Types::SELECT:
72 case Types::TEXTAREA:
73 include static::getTemplatePath('label');
74 include static::getTemplatePath($type);
75 break;
76 // By default, include a template and use the base input template.
77 case Types::DATE:
78 case Types::EMAIL:
79 case Types::PHONE:
80 case Types::TEXT:
81 case Types::URL:
82 // Used in the template
83 $typeAttribute = array_key_exists(
84 $type,
85 static::INPUT_TYPE_ATTRIBUTES
86 ) ? static::INPUT_TYPE_ATTRIBUTES[$type] : 'text';
87 include static::getTemplatePath('label');
88 include static::getTemplatePath('base');
89 break;
90 default:
91 /**
92 * Provide a custom function to render for a custom node type.
93 *
94 * @since 2.14.0
95 *
96 * @param Node $field The node to render.
97 * @param int $formId The form ID that the node is a part of.
98 *
99 * @void
100 */
101 do_action("give_fields_api_render_{$field->getType()}", $field, $formId);
102 }
103 echo '</div>';
104 }
105
106 /**
107 * @since 2.12.0
108 *
109 * @param string $templateName
110 *
111 * @return string
112 */
113 protected static function getTemplatePath($templateName)
114 {
115 return plugin_dir_path(__FILE__) . "/templates/{$templateName}.html.php";
116 }
117
118 /**
119 * @param Node $field
120 *
121 * @return string
122 */
123 private static function getVisibilityConditionAttribute(Node $field)
124 {
125 $visibilityConditions = method_exists($field, 'getVisibilityConditions') ? $field->getVisibilityConditions(
126 ) : null;
127
128 if ($visibilityConditions) {
129 $visibilityConditionsJson = esc_attr(json_encode($visibilityConditions));
130
131 return "data-field-visibility-conditions=\"$visibilityConditionsJson\"";
132 }
133
134 return '';
135 }
136 }
137