mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-05 08:59:14 +08:00
Refactor order tracking asset loaded
This commit is contained in:
parent
a35bea207e
commit
e8118381fa
3 changed files with 56 additions and 36 deletions
|
@ -75,7 +75,7 @@ return array(
|
||||||
return new CompatAssets(
|
return new CompatAssets(
|
||||||
$container->get( 'compat.module.url' ),
|
$container->get( 'compat.module.url' ),
|
||||||
$container->get( 'ppcp.asset-version' ),
|
$container->get( 'ppcp.asset-version' ),
|
||||||
$container->get( 'order-tracking.is-paypal-order-edit-page' ) && $container->get( 'compat.should-initialize-gzd-compat-layer' )
|
$container->get( 'compat.should-initialize-gzd-compat-layer' )
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@ namespace WooCommerce\PayPalCommerce\OrderTracking;
|
||||||
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
||||||
use WooCommerce\PayPalCommerce\OrderTracking\Assets\OrderEditPageAssets;
|
use WooCommerce\PayPalCommerce\OrderTracking\Assets\OrderEditPageAssets;
|
||||||
use WooCommerce\PayPalCommerce\OrderTracking\Endpoint\OrderTrackingEndpoint;
|
use WooCommerce\PayPalCommerce\OrderTracking\Endpoint\OrderTrackingEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
|
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'order-tracking.assets' => function( ContainerInterface $container ) : OrderEditPageAssets {
|
'order-tracking.assets' => function( ContainerInterface $container ) : OrderEditPageAssets {
|
||||||
|
@ -74,14 +73,4 @@ return array(
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
'order-tracking.is-paypal-order-edit-page' => static function ( ContainerInterface $container ): bool {
|
|
||||||
$order_id = isset( $_GET['post'] ) ? (int) $_GET['post'] : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
|
||||||
if ( empty( $order_id ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$meta = get_post_meta( $order_id, PayPalGateway::ORDER_ID_META_KEY, true );
|
|
||||||
|
|
||||||
return ! empty( $meta );
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
|
@ -19,9 +19,9 @@ use WC_Order;
|
||||||
use WooCommerce\PayPalCommerce\OrderTracking\Assets\OrderEditPageAssets;
|
use WooCommerce\PayPalCommerce\OrderTracking\Assets\OrderEditPageAssets;
|
||||||
use WooCommerce\PayPalCommerce\OrderTracking\Endpoint\OrderTrackingEndpoint;
|
use WooCommerce\PayPalCommerce\OrderTracking\Endpoint\OrderTrackingEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException;
|
use WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException;
|
||||||
|
use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
|
||||||
use WooCommerce\PayPalCommerce\WcGateway\Helper\PayUponInvoiceHelper;
|
use WooCommerce\PayPalCommerce\WcGateway\Helper\PayUponInvoiceHelper;
|
||||||
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
|
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
|
||||||
use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsListener;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class OrderTrackingModule
|
* Class OrderTrackingModule
|
||||||
|
@ -57,15 +57,10 @@ class OrderTrackingModule implements ModuleInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
$tracking_enabled = $settings->has( 'tracking_enabled' ) && $settings->get( 'tracking_enabled' );
|
$tracking_enabled = $settings->has( 'tracking_enabled' ) && $settings->get( 'tracking_enabled' );
|
||||||
|
|
||||||
if ( ! $tracking_enabled ) {
|
if ( ! $tracking_enabled ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$asset_loader = $c->get( 'order-tracking.assets' );
|
|
||||||
assert( $asset_loader instanceof OrderEditPageAssets );
|
|
||||||
$is_paypal_order_edit_page = $c->get( 'order-tracking.is-paypal-order-edit-page' );
|
|
||||||
|
|
||||||
$endpoint = $c->get( 'order-tracking.endpoint.controller' );
|
$endpoint = $c->get( 'order-tracking.endpoint.controller' );
|
||||||
assert( $endpoint instanceof OrderTrackingEndpoint );
|
assert( $endpoint instanceof OrderTrackingEndpoint );
|
||||||
|
|
||||||
|
@ -73,23 +68,25 @@ class OrderTrackingModule implements ModuleInterface {
|
||||||
assert( $logger instanceof LoggerInterface );
|
assert( $logger instanceof LoggerInterface );
|
||||||
|
|
||||||
add_action(
|
add_action(
|
||||||
'init',
|
'admin_enqueue_scripts',
|
||||||
static function () use ( $asset_loader, $is_paypal_order_edit_page ) {
|
/**
|
||||||
if ( ! $is_paypal_order_edit_page ) {
|
* Param types removed to avoid third-party issues.
|
||||||
|
*
|
||||||
|
* @psalm-suppress MissingClosureParamType
|
||||||
|
*/
|
||||||
|
function ( $hook ) use ( $c ): void {
|
||||||
|
if ( $hook !== 'post.php' ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( ! $this->is_paypal_order_edit_page() ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$asset_loader = $c->get( 'order-tracking.assets' );
|
||||||
|
assert( $asset_loader instanceof OrderEditPageAssets );
|
||||||
|
|
||||||
$asset_loader->register();
|
$asset_loader->register();
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
add_action(
|
|
||||||
'admin_enqueue_scripts',
|
|
||||||
static function () use ( $asset_loader, $is_paypal_order_edit_page ) {
|
|
||||||
if ( ! $is_paypal_order_edit_page ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$asset_loader->enqueue();
|
$asset_loader->enqueue();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -99,18 +96,29 @@ class OrderTrackingModule implements ModuleInterface {
|
||||||
array( $endpoint, 'handle_request' )
|
array( $endpoint, 'handle_request' )
|
||||||
);
|
);
|
||||||
|
|
||||||
$meta_box_renderer = $c->get( 'order-tracking.meta-box.renderer' );
|
|
||||||
add_action(
|
add_action(
|
||||||
'add_meta_boxes',
|
'add_meta_boxes',
|
||||||
static function() use ( $meta_box_renderer, $is_paypal_order_edit_page ) {
|
/**
|
||||||
if ( ! $is_paypal_order_edit_page ) {
|
* Param types removed to avoid third-party issues.
|
||||||
|
*
|
||||||
|
* @psalm-suppress MissingClosureParamType
|
||||||
|
*/
|
||||||
|
function( $post_type ) use ( $c ) {
|
||||||
|
if ( $post_type !== 'shop_order' || ! $this->is_paypal_order_edit_page() ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
add_meta_box( 'ppcp_order-tracking', __( 'Tracking Information', 'woocommerce-paypal-payments' ), array( $meta_box_renderer, 'render' ), 'shop_order', 'side' );
|
$meta_box_renderer = $c->get( 'order-tracking.meta-box.renderer' );
|
||||||
|
add_meta_box(
|
||||||
|
'ppcp_order-tracking',
|
||||||
|
__( 'Tracking Information', 'woocommerce-paypal-payments' ),
|
||||||
|
array( $meta_box_renderer, 'render' ),
|
||||||
|
'shop_order',
|
||||||
|
'side'
|
||||||
|
);
|
||||||
},
|
},
|
||||||
10,
|
10,
|
||||||
2
|
1
|
||||||
);
|
);
|
||||||
|
|
||||||
add_action(
|
add_action(
|
||||||
|
@ -146,4 +154,27 @@ class OrderTrackingModule implements ModuleInterface {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if current post id is from a PayPal order.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private function is_paypal_order_edit_page(): bool {
|
||||||
|
$post_id = isset( $_GET['post'] ) ? (int) $_GET['post'] : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
||||||
|
if ( ! $post_id ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$order = wc_get_order( $post_id );
|
||||||
|
if ( ! is_a( $order, WC_Order::class ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $order->get_meta( PayPalGateway::ORDER_ID_META_KEY ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue