Server IP : 192.158.238.246 / Your IP : 216.73.216.80 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/7779/root/proc/7779/cwd/plugins/give/src/Form/LegacyConsumer/ |
Upload File : |
<?php namespace Give\Form\LegacyConsumer; use Give\Framework\FieldsAPI\Contracts\Node; use Give\Framework\FieldsAPI\LegacyNodes\CheckboxGroup; use Give\Framework\FieldsAPI\Types; /** * @since 2.10.2 * @since 2.14.0 Add field classes hook for setting custom class names on the wrapper. */ class FieldView { const INPUT_TYPE_ATTRIBUTES = [ Types::PHONE => 'tel', Types::EMAIL => 'email', Types::URL => 'url', ]; /** * @since 2.28.0 add shim for CheckboxGroup, only necessary for legacy FFM fields. * @since 2.10.2 * @since 2.14.0 add $formId as a param * @since 2.14.0 Add filter to allow rendering logic for custom fields * @since 2.16.0 Add visibility conditions to field container * * @param Node $field * @param int $formId * * @return void */ public static function render(Node $field, $formId) { $type = $field->getType(); $fieldIdAttribute = give(UniqueIdAttributeGenerator::class)->getId($formId, $field->getName()); if ($type === Types::HIDDEN) { include static::getTemplatePath('hidden'); return; } if ($type === CheckboxGroup::TYPE) { $type = Types::CHECKBOX; } $classList = apply_filters("give_form_{$formId}_field_classes_{$field->getName()}", [ 'form-row', 'form-row-wide', ]); $className = implode(' ', array_unique($classList)); printf( '<div class="%1$s" data-field-type="%2$s" data-field-name="%3$s" %4$s>', $className, $type, $field->getName(), self::getVisibilityConditionAttribute($field) ); // By default, new fields will use templates/label.html.php and templates/base.html.php switch ($type) { case Types::HTML: case Types::CHECKBOX: case Types::RADIO: // Radio provides its own label include static::getTemplatePath($type); break; // These fields need a label and have their own template. case Types::FILE: case Types::SELECT: case Types::TEXTAREA: include static::getTemplatePath('label'); include static::getTemplatePath($type); break; // By default, include a template and use the base input template. case Types::DATE: case Types::EMAIL: case Types::PHONE: case Types::TEXT: case Types::URL: // Used in the template $typeAttribute = array_key_exists( $type, static::INPUT_TYPE_ATTRIBUTES ) ? static::INPUT_TYPE_ATTRIBUTES[$type] : 'text'; include static::getTemplatePath('label'); include static::getTemplatePath('base'); break; default: /** * Provide a custom function to render for a custom node type. * * @since 2.14.0 * * @param Node $field The node to render. * @param int $formId The form ID that the node is a part of. * * @void */ do_action("give_fields_api_render_{$field->getType()}", $field, $formId); } echo '</div>'; } /** * @since 2.12.0 * * @param string $templateName * * @return string */ protected static function getTemplatePath($templateName) { return plugin_dir_path(__FILE__) . "/templates/{$templateName}.html.php"; } /** * @param Node $field * * @return string */ private static function getVisibilityConditionAttribute(Node $field) { $visibilityConditions = method_exists($field, 'getVisibilityConditions') ? $field->getVisibilityConditions( ) : null; if ($visibilityConditions) { $visibilityConditionsJson = esc_attr(json_encode($visibilityConditions)); return "data-field-visibility-conditions=\"$visibilityConditionsJson\""; } return ''; } }