should_display() ) {
return;
}
wp_enqueue_style(
'abhinavdev-env-badge-bar',
ABHINAVDEV_ENV_BADGE_URL . 'assets/css/admin-bar.css',
array( 'admin-bar' ),
ABHINAVDEV_ENV_BADGE_VERSION
);
// Dynamic styles based on user color settings.
$badge_data = Abhinavdev_Env_Badge_Core::get_badge_data();
$bg_color = sanitize_hex_color( $badge_data['bg_color'] );
$text_color = sanitize_hex_color( $badge_data['text_color'] );
if ( ! $bg_color ) {
$bg_color = '#dc2626';
}
if ( ! $text_color ) {
$text_color = '#ffffff';
}
$options = Abhinavdev_Env_Badge_Core::get_options();
$position = ( 'left' === $options['badge_position'] ) ? 'float: left;' : 'float: right;';
$custom_css = sprintf(
'#wp-admin-bar-abhinavdev-env-badge > .ab-item .adeb-pill {
background-color: %1$s !important;
color: %2$s !important;
border: 1px solid rgba(255, 255, 255, 0.2);
}
#wp-admin-bar-abhinavdev-env-badge > .ab-item .adeb-indicator-dot {
background-color: %2$s !important;
}
#wpadminbar #wp-admin-bar-abhinavdev-env-badge {
%3$s
}',
esc_attr( $bg_color ),
esc_attr( $text_color ),
esc_attr( $position )
);
wp_add_inline_style( 'abhinavdev-env-badge-bar', $custom_css );
}
/**
* Add environment badge and details submenu to the WordPress Admin Bar.
*
* @param WP_Admin_Bar $wp_admin_bar Admin bar instance.
*/
public function add_badge_node( $wp_admin_bar ) {
if ( ! $this->should_display() ) {
return;
}
$badge_data = Abhinavdev_Env_Badge_Core::get_badge_data();
$options = Abhinavdev_Env_Badge_Core::get_options();
$settings_url = current_user_can( 'manage_options' )
? admin_url( 'options-general.php?page=abhinavdev-environment-badge' )
: false;
// Build the badge HTML label.
$badge_html = sprintf(
'%s',
esc_html( $badge_data['label'] )
);
// Add Main Parent Node.
$wp_admin_bar->add_node(
array(
'id' => 'abhinavdev-env-badge',
'title' => $badge_html,
'href' => $settings_url ? esc_url( $settings_url ) : false,
'meta' => array(
'title' => sprintf(
/* translators: %s: Environment Name */
esc_attr__( 'Active Environment: %s', 'abhinavdev-environment-badge' ),
esc_attr( strtoupper( $badge_data['environment'] ) )
),
'class' => 'adeb-env-' . esc_attr( $badge_data['environment'] ),
),
)
);
// If details dropdown is enabled, add sub-nodes.
if ( ! empty( $options['show_details_popup'] ) ) {
// Sub-node: Environment Type.
$wp_admin_bar->add_node(
array(
'parent' => 'abhinavdev-env-badge',
'id' => 'abhinavdev-details-env',
'title' => sprintf(
'%s: %s',
esc_html__( 'Environment', 'abhinavdev-environment-badge' ),
esc_html( ucfirst( $badge_data['environment'] ) )
),
'href' => false,
)
);
// Sub-node: WordPress Version.
global $wp_version;
$wp_admin_bar->add_node(
array(
'parent' => 'abhinavdev-env-badge',
'id' => 'abhinavdev-details-wp',
'title' => sprintf(
'%s: %s',
esc_html__( 'WordPress', 'abhinavdev-environment-badge' ),
esc_html( $wp_version )
),
'href' => false,
)
);
// Sub-node: PHP Version.
$wp_admin_bar->add_node(
array(
'parent' => 'abhinavdev-env-badge',
'id' => 'abhinavdev-details-php',
'title' => sprintf(
'%s: %s',
esc_html__( 'PHP', 'abhinavdev-environment-badge' ),
esc_html( PHP_VERSION )
),
'href' => false,
)
);
// Sub-node: Host / Server.
$host = wp_parse_url( home_url(), PHP_URL_HOST );
if ( $host ) {
$wp_admin_bar->add_node(
array(
'parent' => 'abhinavdev-env-badge',
'id' => 'abhinavdev-details-host',
'title' => sprintf(
'%s: %s',
esc_html__( 'Host', 'abhinavdev-environment-badge' ),
esc_html( $host )
),
'href' => false,
)
);
}
// Sub-node: Link to Settings.
if ( $settings_url ) {
$wp_admin_bar->add_node(
array(
'parent' => 'abhinavdev-env-badge',
'id' => 'abhinavdev-details-settings',
'title' => sprintf(
' %s',
esc_html__( 'Badge Settings', 'abhinavdev-environment-badge' )
),
'href' => esc_url( $settings_url ),
)
);
}
}
}
}