isRequired && $this->nameFormat != 'simple' ) { $message = $this->complex_validation_message( $value, $this->get_required_inputs_ids() ); if ( $message ) { $this->failed_validation = true; $message_intro = empty( $this->errorMessage ) ? __( 'This field is required.', 'gravityforms' ) : $this->errorMessage; $this->validation_message = $message_intro . ' ' . $message; } } } /** * Defines the field settings available for the Name field in the form editor. * * @since Unknown * @access public * * @used-by GFFormDetail::inline_scripts() * * @return array The field settings available. */ function get_form_editor_field_settings() { return array( 'conditional_logic_field_setting', 'prepopulate_field_setting', 'error_message_setting', 'label_setting', 'admin_label_setting', 'label_placement_setting', 'sub_label_placement_setting', 'default_input_values_setting', 'input_placeholders_setting', 'name_setting', 'rules_setting', 'visibility_setting', 'description_setting', 'css_class_setting', 'autocomplete_setting', ); } /** * Gets the HTML markup for the field input. * * @since Unknown * @access public * * @used-by GFCommon::get_field_input() * @uses GF_Field::is_entry_detail() * @uses GF_Field::is_form_editor() * @uses GF_Field_Name::$size * @uses GF_Field_Name::$id * @uses GF_Field_Name::$subLabelPlacement * @uses GF_Field_Name::$isRequired * @uses GF_Field_Name::$failed_validation * @uses GFForms::get() * @uses GFFormsModel::get_input() * @uses GFCommon::get_input_placeholder_attribute() * @uses GFCommon::get_tabindex() * @uses GFCommon::get_field_placeholder_attribute() * @uses GF_Field_Name::get_css_class() * * @param array $form The Form Object. * @param string $value The value of the field. Defaults to empty string. * @param array|null $entry The Entry Object. Defaults to null. * * @return string The HTML markup for the field input. */ public function get_field_input( $form, $value = '', $entry = null ) { $is_entry_detail = $this->is_entry_detail(); $is_form_editor = $this->is_form_editor(); $is_admin = $is_entry_detail || $is_form_editor; $form_id = $form['id']; $id = intval( $this->id ); $field_id = $is_entry_detail || $is_form_editor || $form_id == 0 ? "input_$id" : 'input_' . $form_id . "_$id"; $form_id = ( $is_entry_detail || $is_form_editor ) && empty( $form_id ) ? rgget( 'id' ) : $form_id; $size = $this->size; $class_suffix = rgget('view') == 'entry' ? '_admin' : ''; $class = $size . $class_suffix; $class = esc_attr( $class ); $disabled_text = $is_form_editor ? "disabled='disabled'" : ''; $class_suffix = $is_entry_detail ? '_admin' : ''; $form_sub_label_placement = rgar( $form, 'subLabelPlacement' ); $field_sub_label_placement = $this->subLabelPlacement; $is_sub_label_above = $field_sub_label_placement == 'above' || ( empty( $field_sub_label_placement ) && $form_sub_label_placement == 'above' ); $sub_label_class_attribute = $field_sub_label_placement == 'hidden_label' ? "class='hidden_sub_label screen-reader-text'" : ''; $prefix = ''; $first = ''; $middle = ''; $last = ''; $suffix = ''; if ( is_array( $value ) ) { $prefix = esc_attr( GFForms::get( $this->id . '.2', $value ) ); $first = esc_attr( GFForms::get( $this->id . '.3', $value ) ); $middle = esc_attr( GFForms::get( $this->id . '.4', $value ) ); $last = esc_attr( GFForms::get( $this->id . '.6', $value ) ); $suffix = esc_attr( GFForms::get( $this->id . '.8', $value ) ); } $prefix_input = GFFormsModel::get_input( $this, $this->id . '.2' ); $first_input = GFFormsModel::get_input( $this, $this->id . '.3' ); $middle_input = GFFormsModel::get_input( $this, $this->id . '.4' ); $last_input = GFFormsModel::get_input( $this, $this->id . '.6' ); $suffix_input = GFFormsModel::get_input( $this, $this->id . '.8' ); $first_placeholder_attribute = GFCommon::get_input_placeholder_attribute( $first_input ); $middle_placeholder_attribute = GFCommon::get_input_placeholder_attribute( $middle_input ); $last_placeholder_attribute = GFCommon::get_input_placeholder_attribute( $last_input ); $suffix_placeholder_attribute = GFCommon::get_input_placeholder_attribute( $suffix_input ); // ARIA labels. Prefix is handled in self::get_name_prefix_field(). $first_name_aria_label = esc_attr__( 'First name', 'gravityforms' ); $middle_name_aria_label = esc_attr__( 'Middle name', 'gravityforms' ); $last_name_aria_label = esc_attr__( 'Last name', 'gravityforms' ); $suffix_aria_label = esc_attr__( 'Name suffix', 'gravityforms' ); $required_attribute = $this->isRequired ? 'aria-required="true"' : ''; $invalid_attribute = $this->failed_validation ? 'aria-invalid="true"' : 'aria-invalid="false"'; $describedby_attribute = $this->get_aria_describedby(); $input_aria_describedby = ''; if ( $this->nameFormat != 'simple' ) { // specific aria attributes for each individual input. $first_aria_attributes = $this->get_aria_attributes( $value, '3'); $middle_aria_attributes = $this->get_aria_attributes( $value, '4'); $last_aria_attributes = $this->get_aria_attributes( $value, '6'); $suffix_aria_attributes = $this->get_aria_attributes( $value, '8'); } $prefix_autocomplete = $this->enableAutocomplete ? $this->get_input_autocomplete_attribute( $prefix_input ) : ''; $first_autocomplete = $this->enableAutocomplete ? $this->get_input_autocomplete_attribute( $first_input ) : ''; $middle_autocomplete = $this->enableAutocomplete ? $this->get_input_autocomplete_attribute( $middle_input ) : ''; $last_autocomplete = $this->enableAutocomplete ? $this->get_input_autocomplete_attribute( $last_input ) : ''; $suffix_autocomplete = $this->enableAutocomplete ? $this->get_input_autocomplete_attribute( $suffix_input ) : ''; switch ( $this->nameFormat ) { case 'advanced' : case 'extended' : $prefix_tabindex = GFCommon::get_tabindex(); $first_tabindex = GFCommon::get_tabindex(); $middle_tabindex = GFCommon::get_tabindex(); $last_tabindex = GFCommon::get_tabindex(); $suffix_tabindex = GFCommon::get_tabindex(); $prefix_sub_label = rgar( $prefix_input, 'customLabel' ) != '' ? $prefix_input['customLabel'] : gf_apply_filters( array( 'gform_name_prefix', $form_id ), esc_html__( 'Prefix', 'gravityforms' ), $form_id ); $first_name_sub_label = rgar( $first_input, 'customLabel' ) != '' ? $first_input['customLabel'] : gf_apply_filters( array( 'gform_name_first', $form_id ), esc_html__( 'First', 'gravityforms' ), $form_id ); $middle_name_sub_label = rgar( $middle_input, 'customLabel' ) != '' ? $middle_input['customLabel'] : gf_apply_filters( array( 'gform_name_middle', $form_id ), esc_html__( 'Middle', 'gravityforms' ), $form_id ); $last_name_sub_label = rgar( $last_input, 'customLabel' ) != '' ? $last_input['customLabel'] : gf_apply_filters( array( 'gform_name_last', $form_id ), esc_html__( 'Last', 'gravityforms' ), $form_id ); $suffix_sub_label = rgar( $suffix_input, 'customLabel' ) != '' ? $suffix_input['customLabel'] : gf_apply_filters( array( 'gform_name_suffix', $form_id ), esc_html__( 'Suffix', 'gravityforms' ), $form_id ); $prefix_markup = ''; $first_markup = ''; $middle_markup = ''; $last_markup = ''; $suffix_markup = ''; if ( $is_sub_label_above ) { $style = ( $is_admin && rgar( $prefix_input, 'isHidden' ) ) ? "style='display:none;'" : ''; if ( $is_admin || ! rgar( $prefix_input, 'isHidden' ) ) { $prefix_select_class = isset( $prefix_input['choices'] ) && is_array( $prefix_input['choices'] ) ? 'name_prefix_select' : ''; $prefix_markup = self::get_name_prefix_field( $prefix_input, $id, $field_id, $prefix, $disabled_text, $prefix_tabindex ); $prefix_markup = " {$prefix_markup} "; } $style = ( $is_admin && rgar( $first_input, 'isHidden' ) ) ? "style='display:none;'" : ''; if ( $is_admin || ! rgar( $first_input, 'isHidden' ) ) { $first_markup = " maybe_add_aria_describedby( $first_input, $field_id, $this['formId'] )}/> "; } $style = ( $is_admin && ( ! isset( $middle_input['isHidden'] ) || rgar( $middle_input, 'isHidden' ) ) ) ? "style='display:none;'" : ''; if ( $is_admin || ( isset( $middle_input['isHidden'] ) && $middle_input['isHidden'] == false ) ) { $middle_markup = " maybe_add_aria_describedby( $middle_input, $field_id, $this['formId'] )}/> "; } $style = ( $is_admin && rgar( $last_input, 'isHidden' ) ) ? "style='display:none;'" : ''; if ( $is_admin || ! rgar( $last_input, 'isHidden' ) ) { $last_markup = " maybe_add_aria_describedby( $last_input, $field_id, $this['formId'] )}/> "; } $style = ( $is_admin && rgar( $suffix_input, 'isHidden' ) ) ? "style='display:none;'" : ''; if ( $is_admin || ! rgar( $suffix_input, 'isHidden' ) ) { $suffix_select_class = isset( $suffix_input['choices'] ) && is_array( $suffix_input['choices'] ) ? 'name_suffix_select' : ''; $suffix_markup = " maybe_add_aria_describedby( $suffix_input, $field_id, $this['formId'] )}/> "; } } else { $style = ( $is_admin && rgar( $prefix_input, 'isHidden' ) ) ? "style='display:none;'" : ''; if ( $is_admin || ! rgar( $prefix_input, 'isHidden' ) ) { $prefix_select_class = isset( $prefix_input['choices'] ) && is_array( $prefix_input['choices'] ) ? 'name_prefix_select' : ''; $prefix_markup = self::get_name_prefix_field( $prefix_input, $id, $field_id, $prefix, $disabled_text, $prefix_tabindex ); $prefix_markup = " {$prefix_markup} "; } $style = ( $is_admin && rgar( $first_input, 'isHidden' ) ) ? "style='display:none;'" : ''; if ( $is_admin || ! rgar( $first_input, 'isHidden' ) ) { $first_markup = " maybe_add_aria_describedby( $first_input, $field_id, $this['formId'] )}/> "; } $style = ( $is_admin && ( ! isset( $middle_input['isHidden'] ) || rgar( $middle_input, 'isHidden' ) ) ) ? "style='display:none;'" : ''; if ( $is_admin || ( isset( $middle_input['isHidden'] ) && $middle_input['isHidden'] == false ) ) { $middle_markup = " maybe_add_aria_describedby( $middle_input, $field_id, $this['formId'] )}/> "; } $style = ( $is_admin && rgar( $last_input, 'isHidden' ) ) ? "style='display:none;'" : ''; if ( $is_admin || ! rgar( $last_input, 'isHidden' ) ) { $last_markup = " maybe_add_aria_describedby( $last_input, $field_id, $this['formId'] )}/> "; } $style = ( $is_admin && rgar( $suffix_input, 'isHidden' ) ) ? "style='display:none;'" : ''; if ( $is_admin || ! rgar( $suffix_input, 'isHidden' ) ) { $suffix_select_class = isset( $suffix_input['choices'] ) && is_array( $suffix_input['choices'] ) ? 'name_suffix_select' : ''; $suffix_markup = " maybe_add_aria_describedby( $suffix_input, $field_id, $this['formId'] )}/> "; } } $css_class = $this->get_css_class(); return "