name = 'repeater'; $this->label = __("Repeater",'acf'); $this->category = __("Layout",'acf'); $this->defaults = array( 'sub_fields' => array(), 'row_min' => 0, 'row_limit' => 0, 'layout' => 'table', 'button_label' => __("Add Row",'acf'), ); $this->l10n = array( 'min' => __("Minimum rows reached ( {min} rows )",'acf'), 'max' => __("Maximum rows reached ( {max} rows )",'acf'), ); // do not delete! parent::__construct(); // settings $this->settings = array( 'path' => apply_filters('acf/helpers/get_path', __FILE__), 'dir' => apply_filters('acf/helpers/get_dir', __FILE__), 'version' => '1.1.1' ); } /* * input_admin_enqueue_scripts() * * This action is called in the admin_enqueue_scripts action on the edit screen where your field is created. * Use this action to add css + javascript to assist your create_field() action. * * $info http://codex.wordpress.org/Plugin_API/Action_Reference/admin_enqueue_scripts * @type action * @since 3.6 * @date 23/01/13 */ function input_admin_enqueue_scripts() { // register acf scripts wp_register_script( 'acf-input-repeater', $this->settings['dir'] . 'input.js', array('acf-input') ); wp_register_style( 'acf-input-repeater', $this->settings['dir'] . 'input.css', array('acf-input') ); // scripts wp_enqueue_script(array( 'acf-input-repeater', )); // styles wp_enqueue_style(array( 'acf-input-repeater', )); } /* * field_group_admin_enqueue_scripts() * * This action is called in the admin_enqueue_scripts action on the edit screen where your field is edited. * Use this action to add css + javascript to assist your create_field_options() action. * * $info http://codex.wordpress.org/Plugin_API/Action_Reference/admin_enqueue_scripts * @type action * @since 3.6 * @date 23/01/13 */ function field_group_admin_enqueue_scripts() { wp_register_script( 'acf-field-group-repeater', $this->settings['dir'] . 'field-group.js', array('acf-field-group') ); // scripts wp_enqueue_script(array( 'acf-field-group-repeater', )); } /* * load_field() * * This filter is appied to the $field after it is loaded from the database * * @type filter * @since 3.6 * @date 23/01/13 * * @param $field - the field array holding all the field options * * @return $field - the field array holding all the field options */ function load_field( $field ) { // apply_load field to all sub fields if( isset($field['sub_fields']) && is_array($field['sub_fields']) ) { foreach( $field['sub_fields'] as $k => $sub_field ) { // apply filters $sub_field = apply_filters('acf/load_field_defaults', $sub_field); // apply filters foreach( array('type', 'name', 'key') as $key ) { // run filters $sub_field = apply_filters('acf/load_field/' . $key . '=' . $sub_field[ $key ], $sub_field); // new filter } // update sub field $field['sub_fields'][ $k ] = $sub_field; } } // return return $field; } /* * create_field() * * Create the HTML interface for your field * * @param $field - an array holding all the field's data * * @type action * @since 3.6 * @date 23/01/13 */ function create_field( $field ) { // validate $field['row_limit'] = intval( $field['row_limit'] ); $field['row_min'] = intval( $field['row_min'] ); // value may be false if( !is_array($field['value']) ) { $field['value'] = array(); } // row limit = 0? if( $field['row_limit'] < 1 ) { $field['row_limit'] = 999; } // min rows if( $field['row_min'] > count($field['value']) ) { for( $i = 0; $i < $field['row_min']; $i++ ) { // already have a value? continue... if( isset($field['value'][$i]) ) { continue; } // populate values $field['value'][ $i ] = array(); foreach( $field['sub_fields'] as $sub_field) { $sub_value = false; if( !empty($sub_field['default_value']) ) { $sub_value = $sub_field['default_value']; } $field['value'][ $i ][ $sub_field['key'] ] = $sub_value; } } } // max rows $row_count = count($field['value']); if( $row_count > $field['row_limit'] ) { for( $i = 0; $i < $row_count; $i++ ) { if( $i >= $field['row_limit'] ) { unset( $field['value'][ $i ] ); } } } // setup values for row clone $field['value']['acfcloneindex'] = array(); foreach( $field['sub_fields'] as $sub_field ) { $sub_value = false; if( isset($sub_field['default_value']) ) { $sub_value = $sub_field['default_value']; } $field['value']['acfcloneindex'][ $sub_field['key'] ] = $sub_value; } // helper function which does not exist yet in acf if( !function_exists('acf_get_join_attr') ): function acf_get_join_attr( $attributes = false ) { // validate if( empty($attributes) ) { return ''; } // vars $e = array(); // loop through and render foreach( $attributes as $k => $v ) { $e[] = $k . '="' . esc_attr( $v ) . '"'; } // echo return implode(' ', $e); } endif; if( !function_exists('acf_join_attr') ): function acf_join_attr( $attributes = false ) { echo acf_get_join_attr( $attributes ); } endif; ?>
'text', 'name' => 'fields[' . $fake_name . '][label]', 'value' => $sub_field['label'], 'class' => 'label', )); ?> | |||||
'text', 'name' => 'fields[' . $fake_name . '][name]', 'value' => $sub_field['name'], 'class' => 'name', )); ?> | |||||
'select', 'name' => 'fields[' . $fake_name . '][type]', 'value' => $sub_field['type'], 'class' => 'type', 'choices' => $fields_names, 'optgroup' => true )); ?> | |||||
'text', 'name' => 'fields[' . $fake_name . '][instructions]', 'value' => $sub_field['instructions'], 'class' => 'instructions', )); ?> | |||||
'radio', 'name' => 'fields[' .$fake_name . '][required]', 'value' => $sub_field['required'], 'choices' => array( 1 => __("Yes",'acf'), 0 => __("No",'acf'), ), 'layout' => 'horizontal', )); ?> | |||||
'number', 'name' => 'fields[' . $fake_name . '][column_width]', 'value' => $sub_field['column_width'], 'class' => 'column_width', 'append' => '%' )); ?> | |||||
'radio',
'name' => 'fields[' . $fake_name . '][conditional_logic][status]',
'value' => $sub_field['conditional_logic']['status'],
'choices' => array(
1 => __("Yes",'acf'),
0 => __("No",'acf'),
),
'layout' => 'horizontal',
));
// no rules?
if( ! $sub_field['conditional_logic']['rules'] )
{
$sub_field['conditional_logic']['rules'] = array(
array() // this will get merged with $conditional_logic_rule
);
}
?>
>
|
|||||