174 lines
4.1 KiB
PHP
174 lines
4.1 KiB
PHP
<?php
|
|
|
|
// vars
|
|
$disabled = false;
|
|
|
|
// empty
|
|
if ( empty( $field['conditional_logic'] ) ) {
|
|
|
|
$disabled = true;
|
|
$field['conditional_logic'] = array(
|
|
|
|
// group 0
|
|
array(
|
|
|
|
// rule 0
|
|
array(),
|
|
),
|
|
);
|
|
}
|
|
|
|
?>
|
|
<div class="acf-field acf-field-true-false acf-field-setting-conditional_logic" data-type="true_false" data-name="conditional_logic">
|
|
<div class="acf-conditional-toggle">
|
|
<div class="acf-label">
|
|
<?php $acf_label_for = acf_idify( $field['prefix'] . '[conditional_logic]' ); ?>
|
|
<label for="<?php echo esc_attr( $acf_label_for ); ?>"><?php _e( 'Conditional Logic', 'acf' ); ?></label>
|
|
</div>
|
|
<div class="acf-input">
|
|
<?php
|
|
|
|
acf_render_field(
|
|
array(
|
|
'type' => 'true_false',
|
|
'name' => 'conditional_logic',
|
|
'prefix' => $field['prefix'],
|
|
'value' => $disabled ? 0 : 1,
|
|
'ui' => 1,
|
|
'class' => 'conditions-toggle',
|
|
)
|
|
);
|
|
|
|
?>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="rule-groups" <?php if ( $disabled ) echo ' style="display:none"'; ?>>
|
|
<?php
|
|
foreach ( $field['conditional_logic'] as $group_id => $group ) :
|
|
|
|
// validate
|
|
if ( empty( $group ) ) {
|
|
continue;
|
|
}
|
|
|
|
|
|
// vars
|
|
// $group_id must be completely different to $rule_id to avoid JS issues
|
|
$group_id = "group_{$group_id}";
|
|
$h4 = ( $group_id == 'group_0' ) ? __( 'Show this field if', 'acf' ) : __( 'or', 'acf' );
|
|
|
|
?>
|
|
<div class="rule-group" data-id="<?php echo $group_id; ?>">
|
|
|
|
<h4><?php echo $h4; ?></h4>
|
|
|
|
<table class="acf-table -clear">
|
|
<tbody>
|
|
<?php
|
|
foreach ( $group as $rule_id => $rule ) :
|
|
|
|
// valid rule
|
|
$rule = wp_parse_args(
|
|
$rule,
|
|
array(
|
|
'field' => '',
|
|
'operator' => '',
|
|
'value' => '',
|
|
)
|
|
);
|
|
|
|
|
|
// vars
|
|
// $group_id must be completely different to $rule_id to avoid JS issues
|
|
$rule_id = "rule_{$rule_id}";
|
|
$prefix = "{$field['prefix']}[conditional_logic][{$group_id}][{$rule_id}]";
|
|
|
|
// data attributes
|
|
$attributes = array(
|
|
'data-id' => $rule_id,
|
|
'data-field' => $rule['field'],
|
|
'data-operator' => $rule['operator'],
|
|
'data-value' => $rule['value'],
|
|
);
|
|
|
|
?>
|
|
<tr class="rule" <?php echo acf_esc_attrs( $attributes ); ?>>
|
|
<td class="param">
|
|
<?php
|
|
|
|
acf_render_field(
|
|
array(
|
|
'type' => 'select',
|
|
'prefix' => $prefix,
|
|
'name' => 'field',
|
|
'class' => 'condition-rule-field',
|
|
'disabled' => $disabled,
|
|
'value' => $rule['field'],
|
|
'choices' => array(
|
|
$rule['field'] => $rule['field'],
|
|
),
|
|
)
|
|
);
|
|
|
|
?>
|
|
</td>
|
|
<td class="operator">
|
|
<?php
|
|
|
|
acf_render_field(
|
|
array(
|
|
'type' => 'select',
|
|
'prefix' => $prefix,
|
|
'name' => 'operator',
|
|
'class' => 'condition-rule-operator',
|
|
'disabled' => $disabled,
|
|
'value' => $rule['operator'],
|
|
'choices' => array(
|
|
$rule['operator'] => $rule['operator'],
|
|
),
|
|
)
|
|
);
|
|
|
|
?>
|
|
</td>
|
|
<td class="value">
|
|
<?php
|
|
|
|
// create field
|
|
acf_render_field(
|
|
array(
|
|
'type' => 'select',
|
|
'prefix' => $prefix,
|
|
'name' => 'value',
|
|
'class' => 'condition-rule-value',
|
|
'disabled' => $disabled,
|
|
'value' => $rule['value'],
|
|
'choices' => array(
|
|
$rule['value'] => $rule['value'],
|
|
),
|
|
)
|
|
);
|
|
|
|
?>
|
|
</td>
|
|
<td class="add">
|
|
<a href="#" class="button add-conditional-rule"><?php _e( 'and', 'acf' ); ?></a>
|
|
</td>
|
|
<td class="remove">
|
|
<a href="#" class="acf-icon -minus remove-conditional-rule"></a>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
|
|
</div>
|
|
<?php endforeach; ?>
|
|
|
|
<h4><?php _e( 'or', 'acf' ); ?></h4>
|
|
|
|
<a href="#" class="button add-conditional-group"><?php _e( 'Add rule group', 'acf' ); ?></a>
|
|
</div>
|
|
</div>
|