/var/www/html_us/wp-content/plugins/woocommerce/src/Internal/ComingSoon/ComingSoonAdminBarBadge.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php

declare( strict_types );

namespace 
Automattic\WooCommerce\Internal\ComingSoon;

use 
Automattic\WooCommerce\Utilities\FeaturesUtil;


/**
 * Adds hooks to add a badge to the WordPress admin bar showing site visibility.
 */
class ComingSoonAdminBarBadge {

    
/**
     * Sets up the hooks.
     *
     * @internal
     */
    
final public function init() {
        
add_action'init', array( $this'init_hooks' ) );
    }

    
/**
     * Sets up the hooks if user has required capabilities.
     *
     * @internal
     */
    
public function init_hooks() {
        
// Early exit if the user is not logged in as administrator / shop manager.
        
if ( ! is_user_logged_in() || ! current_user_can'manage_woocommerce' ) ) {
            return;
        }

        
add_action'admin_bar_menu', array( $this'site_visibility_badge' ), 31 );
        
add_action'wp_head', array( $this'output_css' ) );
        
add_action'admin_head', array( $this'output_css' ) );
    }

    
/**
     * Add site visibility cache badge to WP admin bar.
     *
     * @internal
     * @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
     */
    
public function site_visibility_badge$wp_admin_bar ) {
        
// Early exit if LYS feature is disabled.
        
if ( ! FeaturesUtil::feature_is_enabled'site_visibility_badge' ) ) {
            return;
        }

        
$labels = array(
            
'coming-soon'       => __'Coming soon''woocommerce' ),
            
'store-coming-soon' => __'Store coming soon''woocommerce' ),
            
'live'              => __'Live''woocommerce' ),
        );

        if ( 
get_option'woocommerce_coming_soon' ) === 'yes' ) {
            if ( 
get_option'woocommerce_store_pages_only' ) === 'yes' ) {
                
$key 'store-coming-soon';
            } else {
                
$key 'coming-soon';
            }
        } else {
            
$key 'live';
        }

        
$args = array(
            
'id'    => 'woocommerce-site-visibility-badge',
            
'title' => $labels$key ],
            
'href'  => admin_url'admin.php?page=wc-settings&tab=site-visibility' ),
            
'meta'  => array(
                
'class' => 'woocommerce-site-status-badge-' $key,
            ),
        );
        
$wp_admin_bar->add_node$args );
    }

    
/**
     * Output CSS for site visibility badge.
     *
     * @internal
     */
    
public function output_css() {
        
// Early exit if LYS feature is disabled.
        
if ( ! FeaturesUtil::feature_is_enabled'site_visibility_badge' ) ) {
            return;
        }

        if ( 
is_admin_bar_showing() ) {
            echo 
'<style>
                #wpadminbar .quicklinks #wp-admin-bar-woocommerce-site-visibility-badge {
                    padding: 7px 0;
                }

                #wpadminbar .quicklinks #wp-admin-bar-woocommerce-site-visibility-badge a.ab-item {
                    /* Layout  */
                    background-color: #F6F7F7;
                    border-radius: 2px;
                    display: flex;
                    height: 18px;
                    padding: 0px 6px;
                    align-items: center;
                    gap: 8px;

                    /* Typography  */
                    color: #3C434A;
                    font-size: 12px;
                    font-style: normal;
                    font-weight: 500;
                    line-height: 16px;
                }

                #wpadminbar .quicklinks #wp-admin-bar-woocommerce-site-visibility-badge a.ab-item:hover,
                #wpadminbar .quicklinks #wp-admin-bar-woocommerce-site-visibility-badge a.ab-item:focus {
                    background-color: #DCDCDE;
                }

                #wpadminbar .quicklinks #wp-admin-bar-woocommerce-site-visibility-badge a.ab-item:focus {
                    outline: var(--wp-admin-border-width-focus) solid var(--wp-admin-theme-color-darker-20);
                }

                #wpadminbar .quicklinks #wp-admin-bar-woocommerce-site-visibility-badge.woocommerce-site-status-badge-live a.ab-item {
                    background-color: #E6F2E8;
                    color: #00450C;
                }

                #wpadminbar .quicklinks #wp-admin-bar-woocommerce-site-visibility-badge.woocommerce-site-status-badge-live a.ab-item:hover,
                #wpadminbar .quicklinks #wp-admin-bar-woocommerce-site-visibility-badge.woocommerce-site-status-badge-live a.ab-item:focus {
                    background-color: #B8E6BF;
                }
            </style>'
;
        }
    }
}