diff --git a/Admin/Activate.php b/Admin/Activate.php index c98f30f..9fe1d25 100644 --- a/Admin/Activate.php +++ b/Admin/Activate.php @@ -18,6 +18,7 @@ namespace Modules\Admin\Admin; use phpOMS\DataStorage\Database\Pool; use phpOMS\Module\ActivateAbstract; +use phpOMS\Module\InfoManager; /** * Navigation class. @@ -36,7 +37,7 @@ class Activate extends ActivateAbstract /** * {@inheritdoc} */ - public static function activate(Pool $dbPool, array $info) + public static function activate(Pool $dbPool, InfoManager $info) { parent::activate($dbPool, $info); } diff --git a/Admin/Deactivate.php b/Admin/Deactivate.php index 9a2017b..4055e7a 100644 --- a/Admin/Deactivate.php +++ b/Admin/Deactivate.php @@ -18,6 +18,7 @@ namespace Modules\Admin\Admin; use phpOMS\DataStorage\Database\Pool; use phpOMS\Module\DeactivateAbstract; +use phpOMS\Module\InfoManager; /** * Navigation class. @@ -36,7 +37,7 @@ class Deactivate extends DeactivateAbstract /** * {@inheritdoc} */ - public static function deactivate(Pool $dbPool, array $info) + public static function deactivate(Pool $dbPool, InfoManager $info) { parent::deactivate($dbPool, $info); } diff --git a/Admin/Routes/http.php b/Admin/Routes/http.php index bbe4799..89aacc5 100644 --- a/Admin/Routes/http.php +++ b/Admin/Routes/http.php @@ -106,4 +106,11 @@ return [ 'verb' => RouteVerb::GET, ], ], + + '^.*/api/admin/module/status.*$' => [ + [ + 'dest' => '\Modules\Admin\Controller:apiModuleStatusUpdate', + 'verb' => RouteVerb::SET, + ], + ], ]; diff --git a/Controller.php b/Controller.php index 724c0c3..1675475 100644 --- a/Controller.php +++ b/Controller.php @@ -15,6 +15,7 @@ */ namespace Modules\Admin; +use Model\Message\Notify; use Modules\Admin\Models\Account; use Modules\Admin\Models\AccountMapper; use Modules\Admin\Models\GroupMapper; @@ -356,4 +357,33 @@ class Controller extends ModuleAbstract implements WebInterface $response->set('account', ['status' => $status, 'account' => $account->__toString()]); } + public function apiModuleStatusUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $module = $request->getData('module'); + $status = $request->getData('status'); + + if(!$module || !$status) { + // todo: create failure response + } + + switch($status) { + case 'activate': + $done = $this->app->moduleManager->activate($module); + break; + case 'deactivate': + $done = $this->app->moduleManager->deactivate($module); + break; + case 'install': + $done = $this->app->moduleManager->install($module); + break; + case 'uninstall': + //$done = $this->app->moduleManager->uninstall($module); + $done = true; + break; + default: + $done = false; + } + + $response->set('module', [$status => $done, 'module' => $module]); + } } diff --git a/Theme/Backend/modules-single.tpl.php b/Theme/Backend/modules-single.tpl.php index c5b8fe0..f0d370b 100644 --- a/Theme/Backend/modules-single.tpl.php +++ b/Theme/Backend/modules-single.tpl.php @@ -49,7 +49,7 @@ $id = $this->request->getData('id') ?? 1;