web/wp-content/plugins/acf-extended/includes/compatibility-6.0.php (138 lines of code) (raw):
<?php
if(!defined('ABSPATH')){
exit;
}
// check version
if(!acfe_is_acf_6()){
return;
}
if(!class_exists('acfe_admin_compatibility')):
class acfe_admin_compatibility{
/**
* construct
*/
function __construct(){
add_action('admin_menu', array($this, 'admin_menu'));
// acf-field groups (6.0)
add_action('acfe/load_posts/post_type=acf-field-group', array($this, 'load_posts'));
add_action('acfe/load_post/post_type=acf-field-group', array($this, 'load_post'));
// acf-post type (6.1)
add_action('acfe/load_posts/post_type=acf-post-type', array($this, 'load_posts'));
add_action('acfe/load_post/post_type=acf-post-type', array($this, 'load_post'));
// acf-taxonomy (6.1)
add_action('acfe/load_posts/post_type=acf-taxonomy', array($this, 'load_posts'));
add_action('acfe/load_post/post_type=acf-taxonomy', array($this, 'load_post'));
// acf-ui-options-page (6.2)
add_action('acfe/load_posts/post_type=acf-ui-options-page', array($this, 'load_posts'));
add_action('acfe/load_post/post_type=acf-ui-options-page', array($this, 'load_post'));
// additional hooks
add_action('current_screen', array($this, 'current_screen'));
add_filter('acf/validate_field', array($this, 'validate_field'));
// re-add sidebar submitdiv metabox
acfe_replace_action('load-post.php', array('ACF_Form_Post', 'initialize'), array($this, 'acf_load_post'));
acfe_replace_action('load-post-new.php', array('ACF_Form_Post', 'initialize'), array($this, 'acf_load_post'));
}
/**
* admin_menu
*/
function admin_menu(){
// get pages
$updates = get_plugin_page_hookname('acf-settings-updates', 'edit.php?post_type=acf-field-group');
$tools = get_plugin_page_hookname('acf-tools', 'edit.php?post_type=acf-field-group');
// actions
add_action("load-{$updates}", array($this, 'load_acf_page'));
add_action("load-{$tools}", array($this, 'load_acf_page'));
}
/**
* load_acf_page
*/
function load_acf_page(){
add_filter('admin_body_class', array($this, 'admin_body_class'));
}
/**
* load_posts
*/
function load_posts(){
add_filter('admin_body_class', array($this, 'admin_body_class'));
}
/**
* load_post
*/
function load_post(){
add_filter('admin_body_class', array($this, 'admin_body_class'));
add_action('acf/input/admin_head', array($this, 'admin_head'), 20);
}
/**
* acf_load_post
*
* Rewrites the ACF_Form_Post initialize which remove the submitdiv metabox
*
* advanced-custom-fields-pro/includes/forms/form-post.php:48
*/
function acf_load_post(){
// globals
global $typenow;
// restrict specific post types
$restricted = array('acf-field-group', 'acf-post-type', 'acf-taxonomy', 'acf-ui-options-page', 'attachment');
if(in_array($typenow, $restricted)){
return;
}
// enqueue scripts
acf_enqueue_scripts(array(
'uploader' => true,
));
// actions
add_action('add_meta_boxes', array(acf_get_instance('ACF_Form_Post'), 'add_meta_boxes'), 10, 2);
}
/**
* admin_body_class
*
* Adds acf-admin-6 class to body
*/
function admin_body_class($classes){
$classes .= ' acf-admin-6';
return $classes;
}
/**
* admin_head
*
*/
function admin_head(){
// remove forced 1 column on 'screen_layout' options
acfe_remove_filter('get_user_option_screen_layout_acf-field-group', array('acf_admin_field_group', 'screen_layout'));
acfe_remove_filter('get_user_option_screen_layout_acf-post-type', array('ACF_Admin_Post_type', 'screen_layout'));
acfe_remove_filter('get_user_option_screen_layout_acf-taxonomy', array('ACF_Admin_Taxonomy', 'screen_layout'));
acfe_remove_filter('get_user_option_screen_layout_acf-ui-options-page', array('ACF_Admin_UI_Options_Page', 'screen_layout'));
// base url
$default_icon = acf_get_url('assets/images/icons/icon-fields.svg');
// generate default field type missing icon
?>
<style>
.field-type-icon:before{
-webkit-mask-image: url(<?php echo $default_icon; ?>);
mask-image: url(<?php echo $default_icon; ?>);
}
</style>
<?php
}
/**
* current_screen
*
* Remove ACF Title header bar on ACFE modules
*
* @param $screen
*/
function current_screen($screen){
// allowed screens
$allowed = array(
'edit-acf-field-group-category',
'edit-acfe-dbt',
'acfe-dbt',
'edit-acfe-dop',
'acfe-dop',
'edit-acfe-template',
'acfe-template',
'edit-acfe-form',
'acfe-form'
);
// check screen
if(acfe_maybe_get($screen, 'post_type') === 'acf-field-group' || acf_is_screen($allowed)){
add_action('admin_head', array($this, 'admin_head_navigation'));
if(acf_is_screen($allowed)){
global $acf_page_title;
$acf_page_title = '';
}
}
// acf 6.1 removed topbar for third party submenu
if(acf_is_screen($allowed)){
add_action('in_admin_header', array($this, 'in_admin_header'));
}
}
function in_admin_header(){
acf_get_view('global/navigation');
}
/**
* admin_head_navigation
*/
function admin_head_navigation(){
// base url
$base_url = acf_get_url('assets/images/');
// pages rules
$pages = array(
'categories' => 'field-type-icons/icon-field-taxonomy.svg',
'edit-tagsphptaxonomyacf-field-group-category' => 'field-type-icons/icon-field-taxonomy.svg',
'block-types' => 'icons/icon-fields.svg',
'acfe-dbt' => 'icons/icon-fields.svg',
'forms' => 'field-type-icons/icon-field-post-object.svg',
'acfe-form' => 'field-type-icons/icon-field-post-object.svg',
'options-pages' => 'field-type-icons/icon-field-group.svg',
'acfe-dop' => 'field-type-icons/icon-field-group.svg',
'settings' => 'icons/icon-settings.svg',
'acfe-settings' => 'icons/icon-settings.svg',
'templates' => 'field-type-icons/icon-field-wysiwyg.svg',
'acfe-template' => 'field-type-icons/icon-field-wysiwyg.svg',
);
// generate css
?>
<style>
<?php foreach($pages as $page => $icon): ?>
.acf-admin-toolbar .acf-header-tab-<?php echo $page; ?> i.acf-icon{
display: inline-flex;
-webkit-mask-image: url(<?php echo $base_url . $icon; ?>);
mask-image: url(<?php echo $base_url . $icon; ?>);
}
<?php endforeach; ?>
.acf-icon.acf-icon-plus{
-webkit-mask-image: url(<?php echo $base_url; ?>icons/icon-add.svg);
mask-image: url(<?php echo $base_url; ?>icons/icon-add.svg);
}
</style>
<?php
}
/**
* validate_field
*
* Change instructions to hint for appended field settings
*
* @param $field
*
* @return mixed
*/
function validate_field($field){
if(acf_maybe_get($field, '_appended') && acf_maybe_get($field, 'instructions')){
$field['hint'] = $field['instructions'];
$field['instructions'] = '';
}
return $field;
}
}
new acfe_admin_compatibility();
endif;