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