PATH:
home
/
hunkmedicalstaff
/
public_html
/
wp-content
/
plugins
/
gravityforms
/
includes
/
settings
/
fields
<?php namespace Gravity_Forms\Gravity_Forms\Settings\Fields; use Gravity_Forms\Gravity_Forms\Settings\Fields; defined( 'ABSPATH' ) || die(); class Select extends Base { /** * Field type. * * @since 2.5 * * @var string */ public $type = 'select'; /** * Field choices. * * @since 2.5 * * @var array */ public $choices = array(); /** * Message to display when no choices exist. * * @since 2.5 * * @var string */ public $no_choices; /** * Enable enhanced UI with Select2. * * @since 2.5 * * @var bool */ public $enhanced_ui = false; /** * Field content after select. * * @since 2.5 * * @var string */ public $after_select; public $disabled; /** * Register scripts to enqueue when displaying field. * * @since 2.5 * * @return array */ public function scripts() { if ( ! $this->enhanced_ui ) { return array(); } return array( array( 'handle' => 'gform_selectwoo', ), ); } // # RENDER METHODS ------------------------------------------------------------------------------------------------ /** * Render field. * * @since 2.5 * * @return string */ public function markup() { // Display description. $html = $this->get_description(); $html .= '<span class="' . esc_attr( $this->get_container_classes() ) . '">'; // Get choices. $choices = $this->get_choices(); // If no choices were provided and there is a no choices message, display it. if ( ( $choices === false || empty( $choices ) ) && ! empty( $this->no_choices ) ) { $html .= $this->no_choices; } else { $attributes = $this->get_attributes(); $select_input = sprintf( '<select name="%s_%s" %s %s>%s</select>%s', esc_attr( $this->settings->get_input_name_prefix() ), esc_attr( $this->name . ( ( $this->support_multiple() && ! str_ends_with( $this->name, '[]' ) ) ? '[]' : '' ) ), $this->get_describer() ? sprintf( 'aria-describedby="%s"', $this->get_describer() ) : '', implode( ' ', $attributes ), self::get_options( $choices, $this->get_value() ), rgobj( $this, 'after_select' ) ); // Display enhanced select UI. if ( $this->enhanced_ui ) { $input_id = preg_replace( "/id='(.*)'/m", '${1}', $attributes['id'] ); // Wrap select input. $html .= sprintf( '<span class="gform-settings-field__select--enhanced">%s</span>', $select_input ); $html .= '<script type="text/javascript"> jQuery( document ).ready( function () { jQuery( "#' . esc_attr( $input_id ) . '" ).select2( { minimumResultsForSearch: Infinity, dropdownCssClass: "gform-settings-field__select-enhanced-container", dropdownParent: jQuery( "#' . esc_attr( $input_id ) . '" ).parent(), } ); } ); </script>'; } else { $html .= $select_input; } } // If field failed validation, add error icon. $html .= $this->get_error_icon(); $html .= '</span>'; return $html; } /** * Prepares an array of choices as an HTML string of options. * * @since 2.5 * * @param array $choices Array of drop down choices. * @param string $selected Currently selected value. * * @return string */ public static function get_options( $choices, $selected ) { // Return blank if $choices is not an array. if ( ! is_array( $choices ) ) { return ''; } $html = ''; // Loop through choices, prepare HTML. foreach ( $choices as $choice ) { // If choice has choices, render as option group. if ( isset( $choice['choices'] ) ) { $html .= sprintf( '<optgroup label="%s">%s</optgroup>', esc_attr( $choice['label'] ), self::get_options( $choice['choices'], $selected ) ); } else { // Set value to label if not defined. $choice['value'] = isset( $choice['value'] ) ? $choice['value'] : $choice['label']; // Prepare selected attribute. if ( is_array( $selected ) ) { $selected_attr = in_array( $choice['value'], $selected ) ? 'selected="selected"' : ''; } else { $selected_attr = selected( $selected, $choice['value'], false ); } $html .= sprintf( '<option value="%s" %s>%s</option>', esc_attr( $choice['value'] ), $selected_attr, esc_attr( $choice['label'] ) ); } } return $html; } // # VALIDATION METHODS -------------------------------------------------------------------------------------------- /** * Validate posted field value. * * @since 2.5 * * @param string|array $value Posted field value. */ public function do_validation( $value ) { // If field is not multiselect, but is required with no selection, set field error. if ( ! $this->support_multiple() && $this->required && rgblank( $value ) ) { $this->set_error( rgobj( $this, 'error_message' ) ); return; } // Get choices. $choices = $this->get_choices(); // If no selection was made or no choices exist, exit. if ( ( rgblank( $value ) && ! $this->required ) || $choices === false || empty( $choices ) ) { return; } if ( $this->support_multiple() ) { $selected = 0; // Loop through field choices, determine if valid. foreach ( $choices as $choice ) { // If choice has nested choices, loop through and determine if valid. if ( isset( $choice['choices'] ) ) { foreach ( $choice['choices'] as $optgroup_choice ) { if ( self::is_choice_valid( $optgroup_choice, $value ) ) { $selected++; } } } else { if ( self::is_choice_valid( $choice, $value ) ) { $selected++; } } } // If field is required and no choices were selected, set field error. if ( $this->required && $selected == 0 ) { $this->set_error( rgobj( $this, 'error_message' ) ); return; } // If field is not required and the number of valid selected choices does not match posted value, set field error. if ( ! $this->required && $selected !== count( $value ) ) { $this->set_error( esc_html__( 'Invalid selection.', 'gravityforms' ) ); } } else { // Loop through field choices, determine if valid. foreach ( $choices as $choice ) { // If choice has nested choices, loop through and determine if valid. if ( isset( $choice['choices'] ) ) { foreach ( $choice['choices'] as $optgroup_choice ) { if ( self::is_choice_valid( $optgroup_choice, $value ) ) { return; } } } else { if ( self::is_choice_valid( $choice, $value ) ) { return; // Choice is valid } } } // If invalid selection was made, set field error. $this->set_error( esc_html__( 'Invalid selection.', 'gravityforms' ) ); } } /** * Determine if a select field supports multiple choices. * * @since 2.5 * * @return bool true if the field supports multiple choices, false if not. */ public function support_multiple() { $multiple = rgobj( $this, 'multiple' ); if ( $multiple === 'multiple' || $multiple === true ) { return true; } return false; } } Fields::register( 'select', '\Gravity_Forms\Gravity_Forms\Settings\Fields\Select' );
[-] class-radio.php
[edit]
[-] class-hidden.php
[edit]
[-] class-select.php
[edit]
[-] class-date-time.php
[edit]
[-] class-post-select.php
[edit]
[-] class-base.php
[edit]
[-] class-html.php
[edit]
[-] class-card.php
[edit]
[-] class-checkbox-and-select.php
[edit]
[-] class-dynamic-field-map.php
[edit]
[-] class-generic-map.php
[edit]
[-] class-button.php
[edit]
[-] class-text.php
[edit]
[-] class-conditional-logic.php
[edit]
[-] class-user-select.php
[edit]
[-] class-select-custom.php
[edit]
[+]
..
[-] class-textarea.php
[edit]
[-] class-notification-routing.php
[edit]
[-] class-field-map.php
[edit]
[-] class-checkbox.php
[edit]
[-] class-toggle.php
[edit]
[-] class-text-and-select.php
[edit]
[-] class-field-select.php
[edit]