settings = array(
'plugin' => 'ACF Admin Flexible Content Collapse',
'this_acf_version' => 0,
'min_acf_version' => '4.4.11',
'version' => '1.0.0',
'url' => plugin_dir_url( __FILE__ ),
'path' => plugin_dir_path( __FILE__ ),
'plugin_path' => 'https://wordpress.org/plugins/acf-admin-flexible-content-collapse/'
);
// set text domain
load_plugin_textdomain( 'acf-admin-flex-collapse', false, dirname( plugin_basename(__FILE__) ) . '/languages/' );
// check for ACF and min version
add_action( 'admin_init', array($this, 'acf_or_die'), 11);
// enqueue scripts and styles
add_action( 'acf/field_group/admin_head', array($this, 'acf_admin_flex_collapse_enqueue'), 11 );
if ( DHZ_SHOW_DONATION_LINK == true ) {
// add plugin to $plugins array for the metabox
add_filter('_dhz_plugins_list', array($this, '_dhz_meta_box_data'));
// metabox callback for plugins list and donation link
add_action('add_meta_boxes_acf-field-group', array($this, '_dhz_plugins_list_meta_box') );
add_action( 'add_meta_boxes_acf', array($this, '_dhz_plugins_list_meta_box') );
}
}
/**
* Let's make sure ACF Pro is installed & activated
* If not, we give notice and kill the activation of ACF RGBA Color Picker.
* Also works if ACF Pro is deactivated.
*/
function acf_or_die() {
if ( !class_exists('acf') ) {
$this->kill_plugin();
} else {
$this->settings['this_acf_version'] = acf()->settings['version'];
if ( version_compare( $this->settings['this_acf_version'], $this->settings['min_acf_version'], '<' ) ) {
$this->kill_plugin();
}
}
}
function kill_plugin() {
deactivate_plugins( plugin_basename( __FILE__ ) );
if ( isset( $_GET['activate'] ) ) {
unset( $_GET['activate'] );
}
add_action( 'admin_notices', array($this, 'acf_dependent_plugin_notice') );
}
function acf_dependent_plugin_notice() {
echo '
' . sprintf( __('%1$s requires Advanced Custom Fields v%2$s or higher to be installed and activated.', 'acf-admin-flex-collapse'), $this->settings['plugin'], $this->settings['min_acf_version']) . '
';
}
/*
* Load the javascript and CSS files on the ACF admin pages
*/
function acf_admin_flex_collapse_enqueue() {
if ( class_exists('acf') ) {
if ( version_compare( $this->settings['this_acf_version'], $this->settings['min_acf_version'], '>=' ) ) {
$url = $this->settings['url'];
$version = $this->settings['version'];
// Localize the script
$translation_array = array(
'reorder' => __( 'Reorder Layout', 'acf-admin-flex-collapse' ),
'delete' => __( 'Delete Layout', 'acf-admin-flex-collapse' ),
'duplicate' => __( 'Duplicate Layout', 'acf-admin-flex-collapse' ),
'addnew' => __( 'Add New Layout', 'acf-admin-flex-collapse' ),
'toggle' => __( 'Click to toggle', 'acf-admin-flex-collapse' ),
'collapseAll' => __( 'Collapse all Layouts', 'acf-admin-flex-collapse' ),
'expandAll' => __( 'Expand all Layouts', 'acf-admin-flex-collapse' )
);
if ( version_compare( $this->settings['this_acf_version'], '5.0.0', '>=' ) ) {
wp_register_style (
'acf_admin_flex_collapse_css',
"{$url}assets/css/acf-admin-flexible-content-collapse-v5.css",
false,
$version
);
wp_register_script(
'acf_admin_flex_collapse_script',
"{$url}assets/js/acf-admin-flexible-content-collapse-v5.js",
false,
$version
);
} else {
wp_register_style (
'acf_admin_flex_collapse_css',
"{$url}assets/css/acf-admin-flexible-content-collapse-v4.css",
false,
$version
);
wp_register_script(
'acf_admin_flex_collapse_script',
"{$url}assets/js/acf-admin-flexible-content-collapse-v4.js",
false,
$version
);
}
wp_localize_script( 'acf_admin_flex_collapse_script', 'acf_flex_collapse', $translation_array );
wp_enqueue_style( 'acf_admin_flex_collapse_css' );
wp_enqueue_script( 'acf_admin_flex_collapse_script' );
}
}
}
/*
* Add plugin to $plugins array for the metabox
*/
function _dhz_meta_box_data($plugins=array()) {
if ( version_compare( $this->settings['this_acf_version'], '5.0.0', '>=' ) ) {
$screens = 'acf-field-group';
} else {
$screens = 'acf';
}
$plugins[] = array(
'title' => $this->settings['plugin'],
'screens' => array($screens),
'doc' => $this->settings['plugin_path']
);
return $plugins;
} // end function meta_box
/*
* Add metabox for plugins list and donation link
*/
function _dhz_plugins_list_meta_box() {
if (apply_filters('remove_dhz_nag', false)) {
return;
}
$plugins = apply_filters('_dhz_plugins_list', array());
$id = 'plugins-by-dreihochzwo';
$title = ''.__("Plugins by dreihochzwo", "acf-admin-flex-collapse").'';
$callback = array($this, 'show_dhz_plugins_list_meta_box');
$screens = array();
foreach ($plugins as $plugin) {
$screens = array_merge($screens, $plugin['screens']);
}
$context = 'side';
$priority = 'default';
add_meta_box($id, $title, $callback, $screens, $context, $priority);
} // end function _dhz_plugins_list_meta_box
/*
* Metabox callback for plugins list and donation link
*/
function show_dhz_plugins_list_meta_box() {
$plugins = apply_filters('_dhz_plugins_list', array());
?>
-
";
if ($plugin['doc']) {
?>