pluto3/inc/acf/advanced-custom-fields-pro/admin/views/field-group-locations.php
2017-09-19 16:23:41 +08:00

152 lines
4.1 KiB
PHP

<?php
// vars
$rule_types = apply_filters('acf/location/rule_types', array(
__("Post",'acf') => array(
'post_type' => __("Post Type",'acf'),
'post_status' => __("Post Status",'acf'),
'post_format' => __("Post Format",'acf'),
'post_category' => __("Post Category",'acf'),
'post_taxonomy' => __("Post Taxonomy",'acf'),
'post' => __("Post",'acf')
),
__("Page",'acf') => array(
'page_template' => __("Page Template",'acf'),
'page_type' => __("Page Type",'acf'),
'page_parent' => __("Page Parent",'acf'),
'page' => __("Page",'acf')
),
__("User",'acf') => array(
'current_user' => __("Current User",'acf'),
'current_user_role' => __("Current User Role",'acf'),
'user_form' => __("User Form",'acf'),
'user_role' => __("User Role",'acf')
),
__("Forms",'acf') => array(
'attachment' => __("Attachment",'acf'),
'taxonomy' => __("Taxonomy Term",'acf'),
'comment' => __("Comment",'acf'),
'widget' => __("Widget",'acf')
)
));
$rule_operators = apply_filters( 'acf/location/rule_operators', array(
'==' => __("is equal to",'acf'),
'!=' => __("is not equal to",'acf'),
));
?>
<div class="acf-field">
<div class="acf-label">
<label><?php _e("Rules",'acf'); ?></label>
<p><?php _e("Create a set of rules to determine which edit screens will use these advanced custom fields",'acf'); ?></p>
</div>
<div class="acf-input">
<div class="rule-groups">
<?php foreach( $field_group['location'] as $group_id => $group ):
// validate
if( empty($group) ) {
continue;
}
// $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 group 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' => '',
));
// $group_id must be completely different to $rule_id to avoid JS issues
$rule_id = "rule_{$rule_id}";
?>
<tr data-id="<?php echo $rule_id; ?>">
<td class="param"><?php
// create field
acf_render_field(array(
'type' => 'select',
'prefix' => "acf_field_group[location][{$group_id}][{$rule_id}]",
'name' => 'param',
'value' => $rule['param'],
'choices' => $rule_types,
'class' => 'location-rule-param'
));
?></td>
<td class="operator"><?php
// create field
acf_render_field(array(
'type' => 'select',
'prefix' => "acf_field_group[location][{$group_id}][{$rule_id}]",
'name' => 'operator',
'value' => $rule['operator'],
'choices' => $rule_operators,
'class' => 'location-rule-operator'
));
?></td>
<td class="value"><?php
$this->render_location_value(array(
'group_id' => $group_id,
'rule_id' => $rule_id,
'value' => $rule['value'],
'param' => $rule['param'],
'class' => 'location-rule-value'
));
?></td>
<td class="add">
<a href="#" class="button add-location-rule"><?php _e("and",'acf'); ?></a>
</td>
<td class="remove">
<a href="#" class="acf-icon -minus remove-location-rule"></a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endforeach; ?>
<h4><?php _e("or",'acf'); ?></h4>
<a href="#" class="button add-location-group"><?php _e("Add rule group",'acf'); ?></a>
</div>
</div>
</div>
<script type="text/javascript">
if( typeof acf !== 'undefined' ) {
acf.postbox.render({
'id': 'acf-field-group-locations',
'label': 'left'
});
}
</script>