Skip to content

Commit

Permalink
Create feature flag for async product categories dropdown
Browse files Browse the repository at this point in the history
  • Loading branch information
louwie17 committed Apr 17, 2023
1 parent 0032b93 commit 1a4cefd
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 23 deletions.
3 changes: 2 additions & 1 deletion plugins/woocommerce/client/admin/config/core.json
Expand Up @@ -28,6 +28,7 @@
"transient-notices": true,
"woo-mobile-welcome": true,
"wc-pay-promotion": true,
"wc-pay-welcome-page": true
"wc-pay-welcome-page": true,
"async-product-editor-category-field": false
}
}
3 changes: 2 additions & 1 deletion plugins/woocommerce/client/admin/config/development.json
Expand Up @@ -28,6 +28,7 @@
"transient-notices": true,
"woo-mobile-welcome": true,
"wc-pay-promotion": true,
"wc-pay-welcome-page": true
"wc-pay-welcome-page": true,
"async-product-editor-category-field": true
}
}
18 changes: 0 additions & 18 deletions plugins/woocommerce/includes/admin/class-wc-admin-assets.php
Expand Up @@ -47,12 +47,6 @@ public function admin_styles() {
wp_register_style( 'woocommerce_admin_print_reports_styles', WC()->plugin_url() . '/assets/css/reports-print.css', array(), $version, 'print' );
wp_register_style( 'woocommerce_admin_marketplace_styles', WC()->plugin_url() . '/assets/css/marketplace-suggestions.css', array(), $version );
wp_register_style( 'woocommerce_admin_privacy_styles', WC()->plugin_url() . '/assets/css/privacy.css', array(), $version );
wp_register_style(
'woocommerce_admin_product_category_metabox_styles',
WCAdminAssets::get_url( 'product-category-metabox/style', 'css' ),
array(),
$version
);

// Add RTL support for admin styles.
wp_style_add_data( 'woocommerce_admin_menu_styles', 'rtl', 'replace' );
Expand All @@ -61,7 +55,6 @@ public function admin_styles() {
wp_style_add_data( 'woocommerce_admin_print_reports_styles', 'rtl', 'replace' );
wp_style_add_data( 'woocommerce_admin_marketplace_styles', 'rtl', 'replace' );
wp_style_add_data( 'woocommerce_admin_privacy_styles', 'rtl', 'replace' );
wp_style_add_data( 'woocommerce_admin_product_category_metabox_styles', 'rtl', 'replace' );

if ( $screen && $screen->is_block_editor() ) {
$styles = WC_Frontend_Scripts::get_styles();
Expand Down Expand Up @@ -91,7 +84,6 @@ public function admin_styles() {
wp_enqueue_style( 'woocommerce_admin_styles' );
wp_enqueue_style( 'jquery-ui-style' );
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_style( 'woocommerce_admin_product_category_metabox_styles' );
}

if ( in_array( $screen_id, array( 'dashboard' ) ) ) {
Expand Down Expand Up @@ -207,16 +199,6 @@ public function admin_scripts() {
wp_enqueue_script( 'woocommerce_admin' );
wp_enqueue_script( 'wc-enhanced-select' );

WCAdminAssets::register_script( 'wp-admin-scripts', 'product-category-metabox', true );
wp_localize_script(
'wc-admin-product-category-metabox',
'wc_product_category_metabox_params',
array(
'search_categories_nonce' => wp_create_nonce( 'search-categories' ),
'search_taxonomy_terms_nonce' => wp_create_nonce( 'search-taxonomy-terms' ),
)
);
wp_enqueue_script( 'product-category-metabox' );
wp_enqueue_script( 'jquery-ui-sortable' );
wp_enqueue_script( 'jquery-ui-autocomplete' );

Expand Down
4 changes: 1 addition & 3 deletions plugins/woocommerce/includes/class-wc-post-types.php
Expand Up @@ -122,9 +122,7 @@ public static function register_taxonomies() {
'slug' => $permalinks['category_rewrite_slug'],
'with_front' => false,
'hierarchical' => true,
),
'meta_box_cb' => 'WC_Meta_Box_Product_Categories::output',
'meta_box_sanitize_cb' => 'taxonomy_meta_box_sanitize_cb_checkboxes',
)
)
)
);
Expand Down
@@ -0,0 +1,79 @@
<?php
/**
* WooCommerce Async Product Editor Category Field.
*/

namespace Automattic\WooCommerce\Admin\Features\AsyncProductEditorCategoryField;

use Automattic\Jetpack\Constants;
use Automattic\WooCommerce\Admin\Features\Features;
use Automattic\WooCommerce\Internal\Admin\WCAdminAssets;
use Automattic\WooCommerce\Admin\PageController;

/**
* Loads assets related to the async category field for the product editor.
*/
class Init {

const FEATURE_ID = 'async-product-editor-category-field';

/**
* Constructor
*/
public function __construct() {
if ( Features::is_enabled( self::FEATURE_ID ) ) {
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
add_filter( 'woocommerce_taxonomy_args_product_cat', array( $this, 'add_metabox_args' ) );
}
}

public function add_metabox_args( $args ) {
if ( ! isset( $args['meta_box_cb'] ) ) {
$args['meta_box_cb'] = 'WC_Meta_Box_Product_Categories::output';
$args['meta_box_sanitize_cb'] = 'taxonomy_meta_box_sanitize_cb_checkboxes';
}
return $args;
}

/**
* Enqueue scripts needed for the product form block editor.
*/
public function enqueue_scripts() {
if ( ! PageController::is_admin_or_embed_page() ) {
return;
}
WCAdminAssets::register_script( 'wp-admin-scripts', 'product-category-metabox', true );
wp_localize_script(
'wc-admin-product-category-metabox',
'wc_product_category_metabox_params',
array(
'search_categories_nonce' => wp_create_nonce( 'search-categories' ),
'search_taxonomy_terms_nonce' => wp_create_nonce( 'search-taxonomy-terms' ),
)
);
wp_enqueue_script( 'product-category-metabox' );

}

/**
* Enqueue styles needed for the rich text editor.
*/
public function enqueue_styles() {
if ( ! PageController::is_admin_or_embed_page() ) {
return;
}
$version = Constants::get_constant( 'WC_VERSION' );

wp_register_style(
'woocommerce_admin_product_category_metabox_styles',
WCAdminAssets::get_url( 'product-category-metabox/style', 'css' ),
array(),
$version
);
wp_style_add_data( 'woocommerce_admin_product_category_metabox_styles', 'rtl', 'replace' );

wp_enqueue_style( 'woocommerce_admin_product_category_metabox_styles' );
}

}

0 comments on commit 1a4cefd

Please sign in to comment.