From 3cb0f9c19e07e65fe8c625164871da42a0242469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20R=C3=B3bert?= Date: Fri, 10 Apr 2020 12:20:08 +0300 Subject: [PATCH 1/2] Display a notice when the plugin is activated but the gateway is not configured --- modules.local/ppcp-wc-gateway/services.php | 5 +++ .../src/Notice/ConnectNotice.php | 44 +++++++++++++++++++ .../ppcp-wc-gateway/src/WcGatewayModule.php | 13 +++++- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 modules.local/ppcp-wc-gateway/src/Notice/ConnectNotice.php diff --git a/modules.local/ppcp-wc-gateway/services.php b/modules.local/ppcp-wc-gateway/services.php index c9ffc33ad..37c32ad8f 100644 --- a/modules.local/ppcp-wc-gateway/services.php +++ b/modules.local/ppcp-wc-gateway/services.php @@ -6,6 +6,7 @@ namespace Inpsyde\PayPalCommerce\WcGateway; use Dhii\Data\Container\ContainerInterface; use Inpsyde\PayPalCommerce\WcGateway\Checkout\DisableGateways; use Inpsyde\PayPalCommerce\WcGateway\Gateway\WcGateway; +use Inpsyde\PayPalCommerce\WcGateway\Notice\ConnectNotice; use Inpsyde\PayPalCommerce\WcGateway\Settings\Settings; use Inpsyde\PayPalCommerce\WcGateway\Settings\SettingsFields; @@ -27,6 +28,10 @@ return [ $settingsField = $container->get('wcgateway.settings.fields'); return new Settings($gateway, $settingsField); }, + 'wcgateway.notice.connect' => function (ContainerInterface $container) : ConnectNotice { + $settings = $container->get('wcgateway.settings'); + return new ConnectNotice($settings); + }, 'wcgateway.settings.fields' => function (ContainerInterface $container) : SettingsFields { return new SettingsFields(); }, diff --git a/modules.local/ppcp-wc-gateway/src/Notice/ConnectNotice.php b/modules.local/ppcp-wc-gateway/src/Notice/ConnectNotice.php new file mode 100644 index 000000000..af773b686 --- /dev/null +++ b/modules.local/ppcp-wc-gateway/src/Notice/ConnectNotice.php @@ -0,0 +1,44 @@ +settings = $settings; + } + + public function display() + { + if (!$this->shouldDisplay()) { + return; + } + echo sprintf( + '

%s

', + wp_kses_post( + sprintf( + /* translators: %1$s the gateway name */ + __( + '%1$s is almost ready. To get started, connect your account.', + 'woocommerce-paypal-commerce-gateway' + ), + $this->settings->get('title'), + // TODO: find a better way to get the url + admin_url('admin.php?page=wc-settings&tab=checkout§ion=ppcp-gateway') + ) + ) + ); + } + + protected function shouldDisplay(): bool + { + // TODO: decide on what condition to display + return !wc_string_to_bool($this->settings->get('enabled')); + } +} diff --git a/modules.local/ppcp-wc-gateway/src/WcGatewayModule.php b/modules.local/ppcp-wc-gateway/src/WcGatewayModule.php index bfb8b7bd3..4ae29bcc3 100644 --- a/modules.local/ppcp-wc-gateway/src/WcGatewayModule.php +++ b/modules.local/ppcp-wc-gateway/src/WcGatewayModule.php @@ -4,9 +4,9 @@ declare(strict_types=1); namespace Inpsyde\PayPalCommerce\WcGateway; use Dhii\Container\ServiceProvider; -use Dhii\Modular\Module\Exception\ModuleExceptionInterface; use Dhii\Modular\Module\ModuleInterface; use Inpsyde\PayPalCommerce\WcGateway\Checkout\DisableGateways; +use Inpsyde\PayPalCommerce\WcGateway\Notice\ConnectNotice; use Interop\Container\ServiceProviderInterface; use Psr\Container\ContainerInterface; @@ -42,5 +42,16 @@ class WcGatewayModule implements ModuleInterface return $disabler->handler((array) $methods); } ); + + add_action( + 'admin_notices', + function () use ($container) : void { + $notice = $container->get('wcgateway.notice.connect'); + /** + * @var ConnectNotice $notice + */ + $notice->display(); + } + ); } } From 2974ac9ad878473d0b2463432818ec26b598d6d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20R=C3=B3bert?= Date: Fri, 10 Apr 2020 12:36:42 +0300 Subject: [PATCH 2/2] Rename ConnectNotice to ConnectAdminNotice --- modules.local/ppcp-wc-gateway/services.php | 6 +++--- .../Notice/{ConnectNotice.php => ConnectAdminNotice.php} | 2 +- modules.local/ppcp-wc-gateway/src/WcGatewayModule.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) rename modules.local/ppcp-wc-gateway/src/Notice/{ConnectNotice.php => ConnectAdminNotice.php} (98%) diff --git a/modules.local/ppcp-wc-gateway/services.php b/modules.local/ppcp-wc-gateway/services.php index 37c32ad8f..f1bebb45b 100644 --- a/modules.local/ppcp-wc-gateway/services.php +++ b/modules.local/ppcp-wc-gateway/services.php @@ -6,7 +6,7 @@ namespace Inpsyde\PayPalCommerce\WcGateway; use Dhii\Data\Container\ContainerInterface; use Inpsyde\PayPalCommerce\WcGateway\Checkout\DisableGateways; use Inpsyde\PayPalCommerce\WcGateway\Gateway\WcGateway; -use Inpsyde\PayPalCommerce\WcGateway\Notice\ConnectNotice; +use Inpsyde\PayPalCommerce\WcGateway\Notice\ConnectAdminNotice; use Inpsyde\PayPalCommerce\WcGateway\Settings\Settings; use Inpsyde\PayPalCommerce\WcGateway\Settings\SettingsFields; @@ -28,9 +28,9 @@ return [ $settingsField = $container->get('wcgateway.settings.fields'); return new Settings($gateway, $settingsField); }, - 'wcgateway.notice.connect' => function (ContainerInterface $container) : ConnectNotice { + 'wcgateway.notice.connect' => function (ContainerInterface $container) : ConnectAdminNotice { $settings = $container->get('wcgateway.settings'); - return new ConnectNotice($settings); + return new ConnectAdminNotice($settings); }, 'wcgateway.settings.fields' => function (ContainerInterface $container) : SettingsFields { return new SettingsFields(); diff --git a/modules.local/ppcp-wc-gateway/src/Notice/ConnectNotice.php b/modules.local/ppcp-wc-gateway/src/Notice/ConnectAdminNotice.php similarity index 98% rename from modules.local/ppcp-wc-gateway/src/Notice/ConnectNotice.php rename to modules.local/ppcp-wc-gateway/src/Notice/ConnectAdminNotice.php index af773b686..dc71c469e 100644 --- a/modules.local/ppcp-wc-gateway/src/Notice/ConnectNotice.php +++ b/modules.local/ppcp-wc-gateway/src/Notice/ConnectAdminNotice.php @@ -5,7 +5,7 @@ namespace Inpsyde\PayPalCommerce\WcGateway\Notice; use Inpsyde\PayPalCommerce\WcGateway\Settings\Settings; -class ConnectNotice +class ConnectAdminNotice { private $settings; diff --git a/modules.local/ppcp-wc-gateway/src/WcGatewayModule.php b/modules.local/ppcp-wc-gateway/src/WcGatewayModule.php index 4ae29bcc3..2f914ede5 100644 --- a/modules.local/ppcp-wc-gateway/src/WcGatewayModule.php +++ b/modules.local/ppcp-wc-gateway/src/WcGatewayModule.php @@ -6,7 +6,7 @@ namespace Inpsyde\PayPalCommerce\WcGateway; use Dhii\Container\ServiceProvider; use Dhii\Modular\Module\ModuleInterface; use Inpsyde\PayPalCommerce\WcGateway\Checkout\DisableGateways; -use Inpsyde\PayPalCommerce\WcGateway\Notice\ConnectNotice; +use Inpsyde\PayPalCommerce\WcGateway\Notice\ConnectAdminNotice; use Interop\Container\ServiceProviderInterface; use Psr\Container\ContainerInterface; @@ -48,7 +48,7 @@ class WcGatewayModule implements ModuleInterface function () use ($container) : void { $notice = $container->get('wcgateway.notice.connect'); /** - * @var ConnectNotice $notice + * @var ConnectAdminNotice $notice */ $notice->display(); }