/var/www/html_it/wp-content/plugins/woocommerce/src/Admin/Features/ProductDataViews/Init.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
<?php
/**
 * WooCommerce Product Data Views
 */

declare( strict_types );

namespace 
Automattic\WooCommerce\Admin\Features\ProductDataViews;

use 
Automattic\Jetpack\Constants;
use 
Automattic\WooCommerce\Blocks\Utils\Utils;
use 
Automattic\WooCommerce\Internal\Admin\WCAdminAssets;

/**
 * Loads assets related to the product block editor.
 */
class Init {
    
/**
     * Constructor
     */
    
public function __construct() {
        
add_action'admin_menu', array( $this'woocommerce_add_new_products_dashboard' ) );
        
add_action'admin_enqueue_scripts', array( $this'enqueue_styles' ) );
        
add_action'admin_enqueue_scripts', array( $this'enqueue_scripts' ) );

        if ( 
$this->is_product_data_view_page() ) {
            
add_filter(
                
'admin_body_class',
                static function ( 
$classes ) {
                    return 
"$classes";
                }
            );
        }
    }

    
/**
     * Returns true if we are on a JS powered admin page.
     */
    
public static function is_product_data_view_page() {
        
// phpcs:disable WordPress.Security.NonceVerification
        
return isset( $_GET['page'] ) && 'woocommerce-products-dashboard' === $_GET['page'];
        
// phpcs:enable WordPress.Security.NonceVerification
    
}

    
/**
     * Enqueue styles needed for the rich text editor.
     */
    
public function enqueue_styles() {
        if ( ! 
$this->is_product_data_view_page() ) {
            return;
        }
        
wp_enqueue_style'wc-product-editor' );
    }

    
/**
     * Enqueue scripts needed for the product form block editor.
     */
    
public function enqueue_scripts() {
        if ( ! 
$this->is_product_data_view_page() ) {
            return;
        }

        
$script_handle 'wc-admin-edit-product';
        
wp_register_script$script_handle'', array( 'wp-blocks' ), '0.1.0'true );
        
wp_enqueue_script$script_handle );
        
wp_enqueue_media();
        
wp_register_style'wc-global-presets'false ); // phpcs:ignore
        
wp_add_inline_style'wc-global-presets'wp_get_global_stylesheet( array( 'presets' ) ) );
        
wp_enqueue_style'wc-global-presets' );
    }

    
/**
     * Replaces the default posts menu item with the new posts dashboard.
     */
    
public function woocommerce_add_new_products_dashboard() {
        
$gutenberg_experiments get_option'gutenberg-experiments' );
        if ( ! 
$gutenberg_experiments ) {
            return;
        }
        
$ptype_obj get_post_type_object'product' );
        
add_submenu_page(
            
'edit.php?post_type=product',
            
$ptype_obj->labels->name,
            
esc_html__'All Products ( new )''woocommerce' ),
            
'manage_woocommerce',
            
'woocommerce-products-dashboard',
            array( 
$this'woocommerce_products_dashboard' ),
            
1
        
);
    }

    
/**
     * Renders the new posts dashboard page.
     */
    
public function woocommerce_products_dashboard() {
        
$suffix  Constants::is_true'SCRIPT_DEBUG' ) ? '' '.min';
        
$version Constants::get_constant'WC_VERSION' );
        if ( 
function_exists'gutenberg_url' ) ) {
            
// phpcs:disable WordPress.WP.EnqueuedResourceParameters.MissingVersion
            
wp_register_style(
                
'wp-gutenberg-posts-dashboard',
                
gutenberg_url'build/edit-site/posts.css'__FILE__ ),
                array( 
'wp-components' ),
            );
            
// phpcs:enable WordPress.WP.EnqueuedResourceParameters.MissingVersion
            
wp_enqueue_style'wp-gutenberg-posts-dashboard' );
        }
        
WCAdminAssets::get_instance();
        
wp_enqueue_script'wc-admin-product-editor'WC()->plugin_url() . '/assets/js/admin/product-editor' $suffix '.js', array( 'wc-product-editor' ), $versionfalse );
        
wp_add_inline_script'wp-edit-site''window.wc.productEditor.initializeProductsDashboard( "woocommerce-products-dashboard" );''after' );
        
wp_enqueue_script'wp-edit-site' );

        echo 
'<div id="woocommerce-products-dashboard"></div>';
    }
}