name = 'select';
$this->label = __( 'Select', 'cfs' );
$this->select2_inserted = false;
}
function html( $field ) {
$multiple = '';
$field->input_class = empty( $field->input_class ) ? '' : $field->input_class;
// Multi-select
if ( isset( $field->options['multiple'] ) && '1' == $field->options['multiple'] ) {
$multiple = ' multiple';
$field->input_class .= ' multiple';
}
// Select2
if ( isset( $field->options['select2'] ) && '1' == $field->options['select2'] ) {
$field->input_class .= ' select2';
add_action( 'admin_footer', array( $this, 'select2_code' ) );
}
// Select boxes should return arrays (unless "force_single" is true)
if ( '[]' != substr( $field->input_name, -2 ) && empty( $field->options['force_single'] ) ) {
$field->input_name .= '[]';
}
?>
select2_inserted ) {
return;
}
echo '';
echo '';
// Don't insert select2 code twice
$this->select2_inserted = true;
}
function input_head( $field = null ) {
?>
options['choices'] ) && is_array( $field->options['choices'] ) ) {
foreach ( $field->options['choices'] as $choice_key => $choice_val ) {
$field->options['choices'][ $choice_key ] = "$choice_key : $choice_val";
}
$field->options['choices'] = implode( "\n", $field->options['choices'] );
}
else {
$field->options['choices'] = '';
}
?>
|
|
create_field( array(
'type' => 'textarea',
'input_name' => "cfs[fields][$key][options][choices]",
'value' => $this->get_option( $field, 'choices' ),
) );
?>
|
|
|
create_field( array(
'type' => 'true_false',
'input_name' => "cfs[fields][$key][options][multiple]",
'input_class' => 'true_false',
'value' => $this->get_option( $field, 'multiple' ),
'options' => array( 'message' => __( 'This is a multi-select field', 'cfs' ) ),
) );
?>
|
|
|
create_field(array(
'type' => 'true_false',
'input_name' => "cfs[fields][$key][options][select2]",
'input_class' => 'true_false',
'value' => $this->get_option($field, 'select2'),
'options' => array('message' => __('Render this field with Select2', 'cfs')),
));
?>
|
|
|
create_field( array(
'type' => 'true_false',
'input_name' => "cfs[fields][$key][options][required]",
'input_class' => 'true_false',
'value' => $this->get_option( $field, 'required' ),
'options' => array( 'message' => __( 'This is a required field', 'cfs' ) ),
) );
?>
|
options['choices'];
// Return an associative array (value, label)
if ( is_array( $value ) ) {
foreach ( $value as $val ) {
$value_array[ $val ] = isset( $choices[ $val ] ) ? $choices[ $val ] : $val;
}
}
return $value_array;
}
function prepare_value( $value, $field = null ) {
return $value;
}
function pre_save_field( $field ) {
$new_choices = array();
$choices = trim( $field['options']['choices'] );
if ( ! empty( $choices ) ) {
$choices = str_replace( "\r\n", "\n", $choices );
$choices = str_replace( "\r", "\n", $choices );
$choices = ( false !== strpos( $choices, "\n" ) ) ? explode( "\n", $choices ) : (array) $choices;
foreach ( $choices as $choice ) {
$choice = trim( $choice );
if ( false !== ( $pos = strpos( $choice, ' : ' ) ) ) {
$array_key = substr( $choice, 0, $pos );
$array_value = substr( $choice, $pos + 3 );
$new_choices[ $array_key ] = $array_value;
}
else {
$new_choices[ $choice ] = $choice;
}
}
}
$field['options']['choices'] = $new_choices;
return $field;
}
}