diff --git a/CHANGELOG.md b/CHANGELOG.md
index f6439d5b7..33826acc5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
### NEW
- All PayPal payment methods have "PayPal" as a prefix in a fresh installation to better identify them in the admin panel. When setting up payment methods, the merchant can decide which name best fits their needs.
+- Move PayPal-Config to Config-Section in Admin > Module-List > Module > Options
### FIX
diff --git a/menu.xml b/menu.xml
index 96b1f6e15..bbcff9390 100644
--- a/menu.xml
+++ b/menu.xml
@@ -1,13 +1,10 @@
-
-
-
-
\ No newline at end of file
+
diff --git a/metadata.php b/metadata.php
index dd5cae6c6..b5ca033bb 100755
--- a/metadata.php
+++ b/metadata.php
@@ -7,6 +7,7 @@
use OxidEsales\Eshop\Application\Component\BasketComponent;
use OxidEsales\Eshop\Application\Component\UserComponent;
+use OxidEsales\Eshop\Application\Controller\Admin\ModuleConfiguration;
use OxidEsales\Eshop\Application\Controller\OrderController;
use OxidEsales\Eshop\Application\Controller\PaymentController;
use OxidEsales\Eshop\Application\Controller\Admin\OrderMain;
@@ -23,6 +24,7 @@
use OxidEsales\Eshop\Core\ViewConfig;
use OxidSolutionCatalysts\PayPal\Component\BasketComponent as PayPalBasketComponent;
use OxidSolutionCatalysts\PayPal\Component\UserComponent as PayPalUserComponent;
+use OxidSolutionCatalysts\PayPal\Controller\Admin\ModuleConfiguration as PaypalModuleConfiguration;
use OxidSolutionCatalysts\PayPal\Controller\Admin\PayPalConfigController;
use OxidSolutionCatalysts\PayPal\Controller\Admin\PayPalOrderController;
use OxidSolutionCatalysts\PayPal\Controller\Admin\OrderMain as PayPalOrderMainController;
@@ -66,6 +68,7 @@
'url' => 'https://www.oxid-esales.com',
'email' => 'info@oxid-esales.com',
'extend' => [
+ ModuleConfiguration::class => PaypalModuleConfiguration::class,
InputValidator::class => PayPalInputValidator::class,
ShopControl::class => PayPalShopControl::class,
ViewConfig::class => PayPalViewConfig::class,
@@ -84,7 +87,7 @@
State::class => PayPalState::class
],
'controllers' => [
- 'oscpaypalconfig' => PayPalConfigController::class,
+ 'oscpaypalconfig' => PaypalModuleConfiguration::class,
'oscpaypalwebhook' => WebhookController::class,
'oscpaypalproxy' => ProxyController::class,
'oscpaypalorder' => PayPalOrderController::class,
diff --git a/src/Controller/Admin/PayPalConfigController.php b/src/Controller/Admin/ModuleConfiguration.php
similarity index 95%
rename from src/Controller/Admin/PayPalConfigController.php
rename to src/Controller/Admin/ModuleConfiguration.php
index fbdc101f5..595b13d17 100644
--- a/src/Controller/Admin/PayPalConfigController.php
+++ b/src/Controller/Admin/ModuleConfiguration.php
@@ -10,7 +10,6 @@
use Exception;
use GuzzleHttp\Exception\ClientException;
use JsonException;
-use OxidEsales\Eshop\Application\Controller\Admin\AdminController;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Registry;
use OxidSolutionCatalysts\PayPal\Service\Logger;
@@ -32,7 +31,7 @@
/**
* Controller for admin > PayPal/Configuration page
*/
-class PayPalConfigController extends AdminController
+class ModuleConfiguration extends ModuleConfiguration_parent
{
use ServiceContainer;
@@ -47,13 +46,16 @@ class PayPalConfigController extends AdminController
public function render()
{
$thisTemplate = parent::render();
- $config = new Config();
- $this->addTplParam('config', $config);
- try {
- $config->checkHealth();
- } catch (StandardException $e) {
- Registry::getUtilsView()->addErrorToDisplay($e, false, true, 'paypal_error');
+ if ($this->_sModuleId === 'osc_paypal') {
+ $config = new Config();
+ $this->addTplParam('config', $config);
+ $thisTemplate = $this->_sThisTemplate;
+ try {
+ $config->checkHealth();
+ } catch (StandardException $e) {
+ Registry::getUtilsView()->addErrorToDisplay($e, false, true, 'paypal_error');
+ }
}
return $thisTemplate;
@@ -167,8 +169,12 @@ public function save()
$confArr = Registry::getRequest()->getRequestEscapedParameter('conf');
$confArr = $this->handleSpecialFields($confArr);
- $this->saveConfig($confArr);
- $this->checkEligibility($confArr);
+
+ if (is_array($confArr)) {
+ $this->saveConfig($confArr);
+ $this->checkEligibility($confArr);
+ }
+
parent::save();
}
@@ -408,10 +414,8 @@ protected function autoConfiguration(): array
/**
* webhook registration
*/
- protected function registerWebhooks(): string
+ public function registerWebhooks(): void
{
- $webhookId = '';
-
try {
/** @var Webhook $handler */
$handler = oxNew(Webhook::class);
@@ -423,7 +427,5 @@ protected function registerWebhooks(): string
$logger = $this->getServiceFromContainer(Logger::class);
$logger->log('error', $exception->getMessage(), [$exception]);
}
-
- return $webhookId;
}
}
diff --git a/tests/Integration/Onboarding/OnboardingTest.php b/tests/Integration/Onboarding/OnboardingTest.php
index a05512435..8e769f3ba 100644
--- a/tests/Integration/Onboarding/OnboardingTest.php
+++ b/tests/Integration/Onboarding/OnboardingTest.php
@@ -11,7 +11,6 @@
use OxidEsales\Eshop\Core\Registry;
use OxidSolutionCatalysts\PayPalApi\Onboarding as ApiOnboardingClient;
-use OxidSolutionCatalysts\PayPal\Controller\Admin\PayPalConfigController;
use OxidSolutionCatalysts\PayPal\Core\Onboarding\Onboarding;
use OxidSolutionCatalysts\PayPal\Core\PayPalSession;
use OxidSolutionCatalysts\PayPal\Core\PartnerConfig;
diff --git a/tests/PhpStan/phpstan-bootstrap.php b/tests/PhpStan/phpstan-bootstrap.php
index 2e32ef6aa..a65a05571 100644
--- a/tests/PhpStan/phpstan-bootstrap.php
+++ b/tests/PhpStan/phpstan-bootstrap.php
@@ -95,3 +95,13 @@ class_alias(
\OxidEsales\EshopCommunity\Application\Model\Basket::class,
\OxidSolutionCatalysts\PayPal\Core\Onboarding\Logger\Basket_parent::class
);
+
+class_alias(
+ \OxidEsales\Eshop\Application\Controller\Admin\ModuleConfiguration::class,
+ OxidSolutionCatalysts\PayPal\Controller\Admin\ModuleConfiguration_parent::class
+);
+
+class_alias(
+ \OxidEsales\Eshop\Application\Controller\Admin\ModuleConfiguration::class,
+ \OxidSolutionCatalysts\PayPal\Controller\Admin\ModuleConfiguration_parent::class
+);
diff --git a/views/smarty/admin/blocks/admin_headitem_inccss.tpl b/views/smarty/admin/blocks/admin_headitem_inccss.tpl
index 0bb133147..e4cdf8f06 100644
--- a/views/smarty/admin/blocks/admin_headitem_inccss.tpl
+++ b/views/smarty/admin/blocks/admin_headitem_inccss.tpl
@@ -1,5 +1,8 @@
[{if
- $oViewConf->getTopActiveClassName()|lower=="oscpaypalconfig" ||
+ (
+ $oViewConf->getTopActiveClassName()|lower == "module_config" &&
+ $oModule->getInfo('id') == "osc_paypal"
+ ) ||
$oViewConf->getTopActiveClassName()|lower=="oscpaypalorder"
}]
[{oxstyle include=$oViewConf->getModuleUrl('osc_paypal','css/bootstrap.min.css') priority=10}]
diff --git a/views/smarty/admin/blocks/admin_headitem_incjs.tpl b/views/smarty/admin/blocks/admin_headitem_incjs.tpl
index 48e9ae476..10e96ae1e 100644
--- a/views/smarty/admin/blocks/admin_headitem_incjs.tpl
+++ b/views/smarty/admin/blocks/admin_headitem_incjs.tpl
@@ -1,10 +1,15 @@
[{if
- $oViewConf->getTopActiveClassName()|lower=="oscpaypalconfig" ||
+ (
+ $oViewConf->getTopActiveClassName()|lower == "module_config" &&
+ $oModule->getInfo('id') == "osc_paypal"
+ ) ||
$oViewConf->getTopActiveClassName()|lower=="oscpaypalorder"
}]
[{oxscript include="js/libs/jquery.min.js" priority=1}]
[{oxscript add="$.noConflict();" priority=10}]
- [{if $oViewConf->getTopActiveClassName()|lower == "oscpaypalconfig"}]
+ [{if
+ $oViewConf->getTopActiveClassName()|lower=="module_config"
+ }]
[{oxscript include="js/libs/jquery-ui.min.js"}]
[{oxscript include="js/widgets/oxmoduleconfiguration.js"}]
diff --git a/views/smarty/admin/oscpaypalconfig.tpl b/views/smarty/admin/oscpaypalconfig.tpl
index 899855051..1c0c01e85 100644
--- a/views/smarty/admin/oscpaypalconfig.tpl
+++ b/views/smarty/admin/oscpaypalconfig.tpl
@@ -11,8 +11,17 @@
[{oxscript add=$sPayPalJS}]
+
+
-
[{oxmultilang ident="paypal"}] [{oxmultilang ident="OSC_PAYPAL_CONFIG"}]
[{if $Errors.paypal_error}]
[{oxmultilang ident="OSC_PAYPAL_ERR_CONF_INVALID"}]
@@ -25,6 +34,7 @@
[{$oViewConf->getHiddenSid()}]
+
diff --git a/views/twig/admin/oscpaypalconfig.html.twig b/views/twig/admin/oscpaypalconfig.html.twig
index e4a13a6bd..c3c445e63 100644
--- a/views/twig/admin/oscpaypalconfig.html.twig
+++ b/views/twig/admin/oscpaypalconfig.html.twig
@@ -9,8 +9,18 @@
{% endset %}
{{ script({ add: sPayPalJS.__toString(), priority: 10, dynamic: __oxid_include_dynamic }) }}
+
+
+
-
{{ translate({ ident: "paypal" }) }} {{ translate({ ident: "OSC_PAYPAL_CONFIG" }) }}
{% if Errors.paypal_error %}
{{ translate({ ident: "OSC_PAYPAL_ERR_CONF_INVALID" }) }}
@@ -23,6 +33,7 @@
{{ oViewConf.getHiddenSid()|raw }}
+
diff --git a/views/twig/extensions/themes/admin_twig/headitem.html.twig b/views/twig/extensions/themes/admin_twig/headitem.html.twig
index da150b961..a19e6af33 100644
--- a/views/twig/extensions/themes/admin_twig/headitem.html.twig
+++ b/views/twig/extensions/themes/admin_twig/headitem.html.twig
@@ -1,7 +1,10 @@
{% extends "headitem.html.twig" %}
{% block admin_headitem_inccss %}
- {% if oViewConf.getTopActiveClassName()|lower == "oscpaypalconfig" or oViewConf.getTopActiveClassName()|lower == "oscpaypalorder" %}
+ {% if (
+ oViewConf.getTopActiveClassName()|lower == "module_config" and oModule.getInfo('id') == 'osc_paypal'
+ ) or oViewConf.getTopActiveClassName()|lower == "oscpaypalorder"
+ %}
{% endif %}
@@ -9,10 +12,13 @@
{% endblock %}
{% block admin_headitem_incjs %}
- {% if oViewConf.getTopActiveClassName()|lower == "oscpaypalconfig" or oViewConf.getTopActiveClassName()|lower == "oscpaypalorder" %}
+ {% if (
+ oViewConf.getTopActiveClassName()|lower == "module_config" and oModule.getInfo('id') == 'osc_paypal'
+ ) or oViewConf.getTopActiveClassName()|lower == "oscpaypalorder"
+ %}
{{ script({ include: "js/libs/jquery.min.js", dynamic: __oxid_include_dynamic }) }}
{{ script({ add: "$.noConflict();", priority: 10, dynamic: __oxid_include_dynamic }) }}
- {% if oViewConf.getTopActiveClassName()|lower == "oscpaypalconfig" %}
+ {% if oViewConf.getTopActiveClassName()|lower == "module_config" %}
{{ script({ include: "js/libs/jquery-ui.min.js", dynamic: __oxid_include_dynamic }) }}
{{ script({ include: "js/widgets/oxmoduleconfiguration.js", dynamic: __oxid_include_dynamic }) }}