Skip to content

Instantly share code, notes, and snippets.

@chrisblakley
Created October 3, 2015 02:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save chrisblakley/75f797364d2c314897bf to your computer and use it in GitHub Desktop.
Save chrisblakley/75f797364d2c314897bf to your computer and use it in GitHub Desktop.
This is a more complete Cloudflare admin bar functionality. Can definitely be more optimized, but it gets the idea across.
function cloudflareDevModeToggle(toggle){
if ( !toggle ){
toggle = 'on';
}
jQuery('.devmodeicon').removeClass('fa-bolt fa-medkit').addClass('fa-spin fa-spinner');
jQuery.ajax({
type: "POST",
url: bloginfo["admin_ajax"],
data: {
action: 'nebula_cloudflare_dev_mode_toggle',
data: toggle,
},
success: function(response){
jQuery('.devmodeicon').removeClass('fa-bolt fa-medkit fa-spin fa-spinner').addClass('fa-check-circle');
window.location.reload();
},
error: function(MLHttpRequest, textStatus, errorThrown){
jQuery('.devmodeicon').removeClass('fa-bolt fa-medkit fa-spin fa-spinner').addClass('fa-times-circle');
window.open('/wp-admin/options-general.php?page=cloudflare', '_blank');
},
timeout: 60000
});
return false;
}
//Add a link to Cloudflare Options on the Admin Bar and indicate dev_mode
add_action('admin_bar_menu', 'nebula_admin_bar_cloudflare', 100);
function nebula_admin_bar_cloudflare($wp_admin_bar){
$cloudflare_dev_mode_status = get_dev_mode_status(get_option('cloudflare_api_key'), get_option('cloudflare_api_email'), get_option('cloudflare_zone_name'));
$cloudflare_dev_mode_icon = 'fa-bolt';
$cloudflare_dev_mode_text = '';
$cloudflare_dev_mode_title = 'Enable Dev Mode';
$cloudflare_dev_mode_opposite = 'on';
if ( $cloudflare_dev_mode_status == 'on' ){
$cloudflare_dev_mode_icon = 'fa-medkit';
$cloudflare_dev_mode_text = '(Dev Mode)';
$cloudflare_dev_mode_title = 'Disable Dev Mode';
$cloudflare_dev_mode_opposite = 'off';
}
$wp_admin_bar->add_node(array(
'id' => 'nebula-cloudflare',
'title' => '<i class="devmodeicon fa fa-fw ' . $cloudflare_dev_mode_icon . '" style="font-family: \'FontAwesome\'; color: #a0a5aa; color: rgba(240,245,250,.6); margin-right: 5px;"></i> Cloudflare <span style="font-size: 10px; color: #a0a5aa; color: rgba(240,245,250,.6);">' . $cloudflare_dev_mode_text . '</span>',
'href' => get_admin_url() . 'options-general.php?page=cloudflare',
'meta' => array('target' => '_blank')
));
$wp_admin_bar->add_node(array(
'parent' => 'nebula-cloudflare',
'id' => 'nebula-cloudflare-devmode',
'title' => $cloudflare_dev_mode_title,
'href' => get_admin_url() . 'options-general.php?page=cloudflare',
'meta' => array('onclick' => 'cloudflareDevModeToggle("' . $cloudflare_dev_mode_opposite . '"); return false;')
));
}
add_action('wp_ajax_nebula_cloudflare_dev_mode_toggle', 'nebula_cloudflare_dev_mode_toggle');
add_action('wp_ajax_nebula_cloudflare_dev_mode_toggle', 'nebula_cloudflare_dev_mode_toggle');
function nebula_cloudflare_dev_mode_toggle(){
if ( $_POST['data'] ){
$action = ( $_POST['data'] == 'off' )? 0 : 1;
}
set_dev_mode(get_option('cloudflare_api_key'), get_option('cloudflare_api_email'), get_option('cloudflare_zone_name'), $action);
exit;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment