in web/wp-content/plugins/acf-extended/includes/field-groups/field-group.php [88:280]
function render_sidebar_metabox(){
// global
global $field_group;
// display title
if(!$this->has_enhanced_ui()){
acf_render_field_wrap(array(
'label' => __('Display title', 'acfe'),
'instructions' => __('Render this title on edit post screen', 'acfe'),
'type' => 'text',
'name' => 'acfe_display_title',
'prefix' => 'acf_field_group',
'value' => acf_maybe_get($field_group, 'acfe_display_title'),
'placeholder' => '',
'prepend' => '',
'append' => ''
), 'div', 'label', true);
}
// autosync available
if(acfe_is_sync_available($field_group)){
$json_already_active = 0;
if(in_array('json', acf_get_array(acf_maybe_get($field_group, 'acfe_autosync', array())))){
$json_already_active = 1;
}
?>
<div class="acf-field" data-name="acfe_sync_available">
<div class="acf-label">
<label><?php _e('Sync available', 'acf'); ?></label>
<p class="description"><?php _e('Local json file is different from the version in database.', 'acf'); ?></p>
</div>
<div class="acf-input">
<?php
if(acf_version_compare(acf_get_setting('version'), '<', '5.9')){
$url = admin_url('edit.php?post_type=acf-field-group&post_status=sync&acfsync=' . $field_group['key'] . '&_wpnonce=' . wp_create_nonce('bulk-posts'));
?>
<a href="<?php echo esc_url($url); ?>" class="button" data-acfe-autosync-json-active="<?php echo $json_already_active; ?>">
<?php _e('Synchronize', 'acf'); ?>
</a>
<?php
}else{
$url = admin_url('edit.php?post_type=acf-field-group&acfsync=' . $field_group['key'] . '&_wpnonce=' . wp_create_nonce('bulk-posts'));
?>
<a href="#" data-event="review-sync" data-id="<?php echo esc_attr($field_group['ID']); ?>" data-href="<?php echo esc_url($url); ?>" class="button" data-acfe-autosync-json-active="<?php echo $json_already_active; ?>">
<?php _e('Review changes', 'acf'); ?>
</a>
<?php
}
?>
</div>
</div>
<?php
}
$value = $this->get_autosync_value($field_group);
$choices = $this->get_autosync_choices($field_group);
if(!empty($choices)){
// autosync
acf_render_field_wrap(array(
'label' => __('Auto Sync'),
'instructions' => '',
'type' => 'checkbox',
'name' => 'acfe_autosync',
'prefix' => 'acf_field_group',
'value' => $value,
'choices' => $choices
));
}
// permissions
if(!$this->has_enhanced_ui()){
if(acf_maybe_get($field_group, 'acfe_permissions') || acf_is_filter_enabled('acfe/field_group/advanced')){
acf_render_field_wrap(array(
'label' => __('Permissions', 'acfe'),
'name' => 'acfe_permissions',
'prefix' => 'acf_field_group',
'type' => 'checkbox',
'instructions' => __('Select user roles that are allowed to view and edit this field group in post edition', 'acfe'),
'required' => false,
'default_value' => false,
'choices' => acfe_get_roles(),
'value' => acf_maybe_get($field_group, 'acfe_permissions', array()),
'layout' => 'vertical'
), 'div', 'label', true);
}
}
?>
<script type="text/javascript">
if(typeof acf !== 'undefined'){
acf.postbox.render({
'id': 'acf-field-group-acfe-side',
'label': 'top'
});
}
(function($){
var $json = $('#acf_field_group-acfe_autosync-json');
var $php = $('#acf_field_group-acfe_autosync-php');
var $sync_available = $('[data-name=acfe_sync_available]');
if($sync_available.length){
if($sync_available.find('[data-acfe-autosync-json-active]').attr('data-acfe-autosync-json-active') === '0'){
$json.change(function(){
if($(this).prop('checked')){
if(!confirm('Local json file was found and is different from the version in database.' + "\n" + 'Enabling Json Sync will replace the local file with the current settings' + "\n\n" + 'Do you want to continue?')){
$(this).prop('checked', false);
return false;
}
}
});
}else{
$('#publish').click(function(e){
if(!confirm('Local json file is different from the version in database.' + "\n" + 'Do you want to replace the local file with the current settings?'))
e.preventDefault();
});
}
}
// Displays a modal comparing local changes.
function reviewSync( props ) {
var modal = acf.newModal({
title: acf.__('Review local JSON changes'),
content: '<p class="acf-modal-feedback"><i class="acf-loading"></i> ' + acf.__('Loading diff') + '</p>',
toolbar: '<a href="' + props.href + '" class="button button-primary button-sync-changes disabled">' + acf.__('Sync changes') + '</a>',
});
// Call AJAX.
var xhr = $.ajax({
url: acf.get('ajaxurl'),
method: 'POST',
dataType: 'json',
data: acf.prepareForAjax({
action: 'acf/ajax/local_json_diff',
id: props.id
})
})
.done(function( data, textStatus, jqXHR ) {
modal.content( data.html );
modal.$('.button-sync-changes').removeClass('disabled');
})
.fail(function( jqXHR, textStatus, errorThrown ) {
if( error = acf.getXhrError(jqXHR) ) {
modal.content( '<p class="acf-modal-feedback error">' + error + '</p>' );
}
});
}
// Add event listener.
$(document).on('click', 'a[data-event="review-sync"]', function(e){
e.preventDefault();
reviewSync( $(this).data() );
});
})(jQuery);
</script>
<?php
}