__( 'List', 'ninja-forms' ), 'edit_function' => 'ninja_forms_field_list_edit', 'edit_options' => array( array( 'type' => 'hidden', 'name' => 'user_info_field_group', ), ), 'edit_settings' => array( 'advanced' => array( array( 'type' => 'checkbox', 'name' => 'user_state', 'label' => __( 'This is the user\'s state', 'ninja-forms' ), ), ), ), 'display_function' => 'ninja_forms_field_list_display', 'group' => 'standard_fields', 'edit_label' => true, 'edit_label_pos' => true, 'edit_req' => true, 'edit_custom_class' => true, 'edit_help' => true, 'edit_desc' => true, 'edit_meta' => false, 'sidebar' => 'template_fields', 'edit_conditional' => true, 'conditional' => array( 'action' => array( 'show' => array( 'name' => __( 'Show This', 'ninja-forms' ), 'js_function' => 'show', 'output' => 'hide', ), 'hide' => array( 'name' => __( 'Hide This', 'ninja-forms' ), 'js_function' => 'hide', 'output' => 'hide', ), 'change_value' => array( 'name' => __( 'Selected Value', 'ninja-forms' ), 'js_function' => 'change_value', 'output' => 'list', ), 'add_value' => array( 'name' => __( 'Add Value', 'ninja-forms' ), 'js_function' => 'add_value', 'output' => 'ninja_forms_field_list_add_value', ), 'remove_value' => array( 'name' => __( 'Remove Value', 'ninja-forms' ), 'js_function' => 'remove_value', 'output' => 'list', ), ), 'value' => array( 'type' => 'list', ), ), 'edit_sub_value' => 'nf_field_list_edit_sub_value', 'sub_table_value' => 'nf_field_list_sub_table_value', ); ninja_forms_register_field('_list', $args); add_filter( 'ninja_forms_field_wrap_class', 'ninja_forms_field_filter_list_wrap_class', 10, 2 ); add_action('ninja_forms_display_after_opening_field_wrap', 'ninja_forms_display_list_type', 10, 2); } add_action('init', 'ninja_forms_register_field_list'); function ninja_forms_display_list_type( $field_id, $data ){ $field_row = ninja_forms_get_field_by_id( $field_id ); $field_type = $field_row['type']; if( $field_type == '_list' ){ if ( isset( $data['list_type'] ) ){ $list_type = $data['list_type']; } else{ $list_type = ''; } ?> 'Option 1', 'value' => '', 'calc' => '', 'selected' => 0 ), array( 'label' => 'Option 2', 'value' => '', 'calc' => '', 'selected' => 0 ), array( 'label' => 'Option 3', 'value' => '', 'calc' => '', 'selected' => 0 ), ); $list_options = isset ( $data['list']['options'] ) ? $data['list']['options'] : $default_options; $list_type_options = array( array('name' => __( 'Dropdown', 'ninja-forms' ), 'value' => 'dropdown'), array('name' => __( 'Radio', 'ninja-forms' ), 'value' => 'radio'), array('name' => __( 'Checkboxes', 'ninja-forms' ), 'value' => 'checkbox'), array('name' => __( 'Multi-Select', 'ninja-forms' ), 'value' => 'multi'), ); ninja_forms_edit_field_el_output( $field_id, 'select', __( 'List Type', 'ninja-forms' ), 'list_type', $list_type, 'wide', $list_type_options, 'widefat' ); ?>
', $field_id, $field_class, $data, $ninja_forms_fields, $options ); ?> '.$label.''; } echo apply_filters( 'ninja_forms_dropdown_placeholder', $select_placeholder, $label, $label_pos, $field_id, $field_class, $data, $ninja_forms_fields, $options ); foreach($options as $option){ if(isset($option['value'])){ $value = $option['value']; }else{ $value = $option['label']; } $value = htmlspecialchars( $value, ENT_QUOTES ); if(isset($option['label'])){ $label = $option['label']; }else{ $label = ''; } if(isset($option['display_style'])){ $display_style = $option['display_style']; }else{ $display_style = ''; } if ( isset( $option['disabled'] ) AND $option['disabled'] ){ $disabled = 'disabled'; }else{ $disabled = ''; } $label = htmlspecialchars( $label, ENT_QUOTES ); $label = stripslashes( $label ); $label = str_replace( '&', '&', $label ); $field_label = $data['label']; if($list_show_value == 0){ $value = $label; } if ( $selected_value == $value OR ( is_array( $selected_value ) AND in_array( $value, $selected_value ) ) ) { $selected = 'selected'; }else if( ( $selected_value == '' OR $selected_value == $field_label ) AND isset( $option['selected'] ) AND $option['selected'] == 1 ){ $selected = 'selected'; }else{ $selected = ''; } ?> get_all_fields(); } else { return false; } // Make sure we have some fields before displaying them! if ( ! $all_fields ) { return; } // Loop through all of our fields and see if we have any list fields. foreach( $all_fields as $field_id => $user_value ) { $tmp_array = array(); if ( isset ( $ninja_forms_loading ) ) { $field = $ninja_forms_loading->get_field_settings( $field_id ); } else { // $field = $ninja_forms_processing->get_field_settings( $field_id ); } $field_type = $field['type']; $data = $field['data']; // Check to see if we are working with a list. If so, filter the default_value if( $field_type == '_list' && empty( $user_value ) ){ if( isset( $data['list']['options'] ) AND is_array( $data['list']['options'] ) AND !empty( $data['list']['options'] ) ){ foreach( $data['list']['options'] as $option ){ if( isset( $option['selected'] ) AND $option['selected'] == 1 ){ if( isset( $data['list_show_value'] ) AND $data['list_show_value'] == 1 ){ $tmp_array[] = $option['value']; }else{ $tmp_array[] = $option['label']; } } } if ( empty( $tmp_array ) AND $data['list_type'] == 'dropdown' AND $data['label_pos'] != 'inside' ) { if ( isset ( $data['list_show_value'] ) AND $data['list_show_value'] == 1 AND $data['label_pos'] != 'inside' ) { $tmp_array[] = $data['list']['options'][0]['value']; } else { $tmp_array[] = $data['list']['options'][0]['label']; } } } if ( isset ( $ninja_forms_loading ) ) { if ( $ninja_forms_loading->get_field_settings( $field_id ) ) { $ninja_forms_loading->update_field_value( $field_id, $tmp_array ); } } else { // if ( !$ninja_forms_processing->get_field_value( $field_id ) ) { // $ninja_forms_processing->update_field_value( $field_id, $tmp_array ); // } } } } } add_action( 'ninja_forms_display_pre_init', 'ninja_forms_field_filter_list_data', 8 ); /** * Edit submission value output function * * @since 2.7 * @return void */ function nf_field_list_edit_sub_value( $field_id, $user_value, $field ) { $label = $field['data']['label']; $label_pos = $field['data']['label_pos']; $selected_value = $user_value; $options = $field['data']['list']['options']; $field_class = isset( $field['data']['class'] ) ? $field['data']['class'] : ''; if( isset( $field['data']['list_show_value'] ) ){ $list_show_value = $field['data']['list_show_value']; }else{ $list_show_value = 0; } switch( $field['data']['list_type'] ) { case 'dropdown': ?>