From 6d0c5584bd055ffe0b08d7015a84885eff20db34 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 7 Jan 2026 00:06:38 -0500 Subject: [PATCH] improve module interface --- core/lib/Controllers/InitController.php | 11 ++++------- core/lib/Module/Module.php | 19 +++++++++++++++---- shared/lib/Module/ModuleBrowserInterface.php | 13 +++++++++++++ 3 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 shared/lib/Module/ModuleBrowserInterface.php diff --git a/core/lib/Controllers/InitController.php b/core/lib/Controllers/InitController.php index f873c5a..65a9d74 100644 --- a/core/lib/Controllers/InitController.php +++ b/core/lib/Controllers/InitController.php @@ -9,6 +9,7 @@ use KTXC\Service\UserAccountsService; use KTXC\SessionIdentity; use KTXF\Controller\ControllerAbstract; use KTXC\SessionTenant; +use KTXF\Module\ModuleBrowserInterface; use KTXF\Routing\Attributes\AuthenticatedRoute; class InitController extends ControllerAbstract @@ -21,11 +22,7 @@ class InitController extends ControllerAbstract private readonly PermissionChecker $permissionChecker, ) {} - #[AuthenticatedRoute( - '/init', - name: 'init', - methods: ['GET'] - )] + #[AuthenticatedRoute('/init', name: 'init', methods: ['GET'])] public function index(): JsonResponse { $configuration = []; @@ -33,7 +30,7 @@ class InitController extends ControllerAbstract // modules - filter by permissions $configuration['modules'] = []; foreach ($this->moduleManager->list() as $module) { - if (!method_exists($module, 'bootUi')) { + if ($module instanceof ModuleBrowserInterface === false) { continue; } @@ -44,7 +41,7 @@ class InitController extends ControllerAbstract continue; } - $configuration['modules'][$handle] = $module->bootUi(); + $configuration['modules'][$handle] = $module->registerBI(); } // tenant diff --git a/core/lib/Module/Module.php b/core/lib/Module/Module.php index ec30f84..f9a29d1 100644 --- a/core/lib/Module/Module.php +++ b/core/lib/Module/Module.php @@ -2,6 +2,8 @@ namespace KTXC\Module; +use KTXF\Module\ModuleBrowserInterface; +use KTXF\Module\ModuleConsoleInterface; use KTXF\Module\ModuleInstanceAbstract; /** @@ -9,7 +11,7 @@ use KTXF\Module\ModuleInstanceAbstract; * * Provides core system functionality and permissions */ -class Module extends ModuleInstanceAbstract +class Module extends ModuleInstanceAbstract implements ModuleConsoleInterface, ModuleBrowserInterface { public function __construct() {} @@ -35,7 +37,7 @@ class Module extends ModuleInstanceAbstract public function version(): string { - return '1.0.0'; + return '0.0.1'; } public function permissions(): array @@ -94,8 +96,17 @@ class Module extends ModuleInstanceAbstract ]; } - public function bootUi(): ?array + public function registerCI(): array { - return null; + return [ + \KTXC\Console\ModuleListCommand::class, + \KTXC\Console\ModuleEnableCommand::class, + \KTXC\Console\ModuleDisableCommand::class, + ]; + } + + public function registerBI(): array + { + return []; } } diff --git a/shared/lib/Module/ModuleBrowserInterface.php b/shared/lib/Module/ModuleBrowserInterface.php new file mode 100644 index 0000000..f8503f7 --- /dev/null +++ b/shared/lib/Module/ModuleBrowserInterface.php @@ -0,0 +1,13 @@ +