woocommerce-paypal-payments/modules/ppcp-settings/src/SettingsModule.php

145 lines
3.9 KiB
PHP
Raw Normal View History

2024-10-18 17:17:07 +02:00
<?php
/**
* The Settings module.
*
2024-10-22 15:13:56 +02:00
* @package WooCommerce\PayPalCommerce\Settings
2024-10-18 17:17:07 +02:00
*/
2024-10-22 15:13:56 +02:00
declare( strict_types = 1 );
2024-10-18 17:17:07 +02:00
namespace WooCommerce\PayPalCommerce\Settings;
2024-10-31 09:44:04 +02:00
use WooCommerce\PayPalCommerce\Settings\Endpoint\ConnectManualRestEndpoint;
use WooCommerce\PayPalCommerce\Settings\Endpoint\OnboardingRestEndpoint;
2024-10-18 17:17:07 +02:00
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExecutableModule;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ModuleClassNameIdTrait;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ServiceModule;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
/**
* Class SettingsModule
*/
class SettingsModule implements ServiceModule, ExecutableModule {
use ModuleClassNameIdTrait;
/**
* {@inheritDoc}
*/
2024-10-22 15:13:56 +02:00
public function services() : array {
2024-10-18 17:17:07 +02:00
return require __DIR__ . '/../services.php';
}
/**
* {@inheritDoc}
*/
2024-10-22 15:13:56 +02:00
public function run( ContainerInterface $container ) : bool {
2024-10-18 17:17:07 +02:00
add_action(
'admin_enqueue_scripts',
2024-10-18 17:48:05 +02:00
/**
* Param types removed to avoid third-party issues.
*
* @psalm-suppress MissingClosureParamType
*/
2024-10-22 15:13:56 +02:00
static function ( $hook_suffix ) use ( $container ) {
2024-10-18 17:17:07 +02:00
if ( 'woocommerce_page_wc-settings' !== $hook_suffix ) {
return;
}
2024-10-18 17:48:05 +02:00
/**
* Require resolves.
*
* @psalm-suppress UnresolvableInclude
*/
$script_asset_file = require dirname( realpath( __FILE__ ) ?: '', 2 ) . '/assets/index.asset.php';
$module_url = $container->get( 'settings.url' );
2024-10-18 17:17:07 +02:00
wp_register_script(
'ppcp-admin-settings',
$module_url . '/assets/index.js',
$script_asset_file['dependencies'],
$script_asset_file['version'],
true
);
wp_enqueue_script( 'ppcp-admin-settings' );
2024-10-18 17:48:05 +02:00
/**
* Require resolves.
*
* @psalm-suppress UnresolvableInclude
*/
$style_asset_file = require dirname( realpath( __FILE__ ) ?: '', 2 ) . '/assets/style.asset.php';
2024-10-18 17:17:07 +02:00
wp_register_style(
'ppcp-admin-settings',
2024-10-24 06:35:48 +02:00
$module_url . '/assets/style-style.css',
2024-10-18 17:48:05 +02:00
$style_asset_file['dependencies'],
$style_asset_file['version']
2024-10-18 17:17:07 +02:00
);
wp_enqueue_style( 'ppcp-admin-settings' );
2024-10-23 08:56:47 +02:00
2024-10-23 09:59:56 +02:00
wp_enqueue_style( 'ppcp-admin-settings-font', 'https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap', array(), $style_asset_file['version'] );
wp_localize_script(
'ppcp-admin-settings',
'ppcpSettings',
array(
2024-11-08 14:06:38 +04:00
'assets' => array(
2024-10-23 09:59:56 +02:00
'imagesUrl' => $module_url . '/images/',
),
2024-11-08 14:06:38 +04:00
'wcPaymentsTabUrl' => admin_url( 'admin.php?page=wc-settings&tab=checkout' ),
'debug' => defined( 'WP_DEBUG' ) && WP_DEBUG,
2024-10-23 09:59:56 +02:00
)
);
2024-10-18 17:17:07 +02:00
}
);
add_action(
'woocommerce_paypal_payments_gateway_admin_options_wrapper',
function () : void {
2024-10-18 17:17:07 +02:00
global $hide_save_button;
$hide_save_button = true;
$this->render_header();
$this->render_content();
2024-10-18 17:17:07 +02:00
}
);
add_action(
'rest_api_init',
static function () use ( $container ) : void {
$onboarding_endpoint = $container->get( 'settings.rest.onboarding' );
2024-10-31 09:44:04 +02:00
assert( $onboarding_endpoint instanceof OnboardingRestEndpoint );
$onboarding_endpoint->register_routes();
2024-10-31 09:44:04 +02:00
$connect_manual_endpoint = $container->get( 'settings.rest.connect_manual' );
assert( $connect_manual_endpoint instanceof ConnectManualRestEndpoint );
$connect_manual_endpoint->register_routes();
}
);
2024-10-18 17:17:07 +02:00
return true;
}
/**
* Outputs the settings page header (title and back-link).
*
* @return void
*/
protected function render_header() : void {
echo '<h2>' . esc_html__( 'PayPal', 'woocommerce-paypal-payments' );
wc_back_link( __( 'Return to payments', 'woocommerce-paypal-payments' ), admin_url( 'admin.php?page=wc-settings&tab=checkout' ) );
echo '</h2>';
}
/**
* Renders the container for the React app.
*
* @return void
*/
protected function render_content() : void {
echo '<div id="ppcp-settings-container"></div>';
}
2024-10-18 17:17:07 +02:00
}