record = $record;
}
/**
* Registers hooks.
*
* @return void
*/
public function register(): void {
add_action( 'admin_bar_menu', array( $this, 'add_node' ), 100 );
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles' ) );
}
/**
* Sizes and aligns the glyph in the bar.
*
* @return void
*/
public function enqueue_styles(): void {
if ( ! is_admin_bar_showing() || ! current_user_can( self::CAPABILITY ) ) {
return;
}
$css = '#wpadminbar #wp-admin-bar-' . self::ID . ' > .ab-item{display:flex;align-items:center;}'
. '#wpadminbar #wp-admin-bar-' . self::ID . ' .aiblackout-ab-icon{display:block;width:18px;height:18px;margin-right:6px;flex:0 0 auto;color:inherit;}'
. '#wpadminbar #wp-admin-bar-' . self::ID . ' .aiblackout-ab-icon svg{display:block;width:100%;height:100%;}';
wp_add_inline_style( 'admin-bar', $css );
}
/**
* Adds the node.
*
* @param \WP_Admin_Bar $wp_admin_bar Core admin bar instance.
* @return void
*/
public function add_node( \WP_Admin_Bar $wp_admin_bar ): void {
if ( ! is_admin_bar_showing() || ! current_user_can( self::CAPABILITY ) ) {
return;
}
$label = Result::label_for( $this->record->get_live_status() );
$title = '' . MainScreen::icon_svg() . ''
. ''
. esc_html(
sprintf(
/* translators: %s: Status label, e.g. "Blocking". */
__( 'AI Blackout: %s', 'ai-blackout' ),
$label
)
)
. '';
$wp_admin_bar->add_node(
array(
'id' => self::ID,
'title' => $title,
'href' => admin_url( 'admin.php?page=' . MainScreen::SLUG ),
)
);
}
}