PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.24.2
GiveWP – Donation Plugin and Fundraising Platform v2.24.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 4 years ago Commands 3 years ago Traits 4 years ago Validators 4 years ago resources 4 years ago templates 3 years ago AddEnctypeAttributeInDonationForm.php 4 years ago FieldView.php 4 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
131 lines
1 <?php
2
3 namespace Give\Form\LegacyConsumer;
4
5 use Give\Framework\FieldsAPI\Contracts\Node;
6 use Give\Framework\FieldsAPI\Types;
7
8 /**
9 * @since 2.10.2
10 * @since 2.14.0 Add field classes hook for setting custom class names on the wrapper.
11 */
12 class FieldView
13 {
14 const INPUT_TYPE_ATTRIBUTES = [
15 Types::PHONE => 'tel',
16 Types::EMAIL => 'email',
17 Types::URL => 'url',
18 ];
19
20 /**
21 * @since 2.10.2
22 * @since 2.14.0 add $formId as a param
23 * @since 2.14.0 Add filter to allow rendering logic for custom fields
24 * @since 2.16.0 Add visibility conditions to field container
25 *
26 * @param Node $field
27 * @param int $formId
28 *
29 * @return void
30 */
31 public static function render(Node $field, $formId)
32 {
33 $type = $field->getType();
34 $fieldIdAttribute = give(UniqueIdAttributeGenerator::class)->getId($formId, $field->getName());
35
36 if ($type === Types::HIDDEN) {
37 include static::getTemplatePath('hidden');
38
39 return;
40 }
41
42 $classList = apply_filters("give_form_{$formId}_field_classes_{$field->getName()}", [
43 'form-row',
44 'form-row-wide',
45 ]);
46 $className = implode(' ', array_unique($classList));
47
48 printf(
49 '<div class="%1$s" data-field-type="%2$s" data-field-name="%3$s" %4$s>',
50 $className,
51 $field->getType(),
52 $field->getName(),
53 self::getVisibilityConditionAttribute($field)
54 );
55
56 // By default, new fields will use templates/label.html.php and templates/base.html.php
57 switch ($type) {
58 case Types::HTML:
59 case Types::CHECKBOX:
60 case Types::RADIO: // Radio provides its own label
61 include static::getTemplatePath($type);
62 break;
63 // These fields need a label and have their own template.
64 case Types::FILE:
65 case Types::SELECT:
66 case Types::TEXTAREA:
67 include static::getTemplatePath('label');
68 include static::getTemplatePath($type);
69 break;
70 // By default, include a template and use the base input template.
71 case Types::DATE:
72 case Types::EMAIL:
73 case Types::PHONE:
74 case Types::TEXT:
75 case Types::URL:
76 // Used in the template
77 $typeAttribute = array_key_exists(
78 $type,
79 static::INPUT_TYPE_ATTRIBUTES
80 ) ? static::INPUT_TYPE_ATTRIBUTES[$type] : 'text';
81 include static::getTemplatePath('label');
82 include static::getTemplatePath('base');
83 break;
84 default:
85 /**
86 * Provide a custom function to render for a custom node type.
87 *
88 * @since 2.14.0
89 *
90 * @param Node $field The node to render.
91 * @param int $formId The form ID that the node is a part of.
92 *
93 * @void
94 */
95 do_action("give_fields_api_render_{$field->getType()}", $field, $formId);
96 }
97 echo '</div>';
98 }
99
100 /**
101 * @since 2.12.0
102 *
103 * @param string $templateName
104 *
105 * @return string
106 */
107 protected static function getTemplatePath($templateName)
108 {
109 return plugin_dir_path(__FILE__) . "/templates/{$templateName}.html.php";
110 }
111
112 /**
113 * @param Node $field
114 *
115 * @return string
116 */
117 private static function getVisibilityConditionAttribute(Node $field)
118 {
119 $visibilityConditions = method_exists($field, 'getVisibilityConditions') ? $field->getVisibilityConditions(
120 ) : null;
121
122 if ($visibilityConditions) {
123 $visibilityConditionsJson = esc_attr(json_encode($visibilityConditions));
124
125 return "data-field-visibility-conditions=\"$visibilityConditionsJson\"";
126 }
127
128 return '';
129 }
130 }
131