diff --git a/Admin/Routes/Console.php b/Admin/Routes/Console.php index f3b2b1e..ad2f6a9 100644 --- a/Admin/Routes/Console.php +++ b/Admin/Routes/Console.php @@ -5,7 +5,7 @@ use phpOMS\Router\RouteVerb; return [ '^$' => [ [ - 'dest' => '\Modules\Admin\Controller:viewEmptyCommand', + 'dest' => '\Modules\Admin\ConsoleController:viewEmptyCommand', 'verb' => RouteVerb::ANY, ], ], diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index 581a020..b23a7fe 100644 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -3,24 +3,24 @@ use phpOMS\Router\RouteVerb; use phpOMS\Account\PermissionType; use Modules\Admin\Models\PermissionState; -use Modules\Admin\Controller; +use Modules\Admin\Controller\ApiController; return [ '^.*/api/admin/settings.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:apiSettingsSet', + 'dest' => '\Modules\Admin\Controller\ApiController:apiSettingsSet', 'verb' => RouteVerb::SET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::MODIFY, 'state' => PermissionState::SETTINGS, ], ], [ - 'dest' => '\Modules\Admin\Controller:apiSettingsGet', + 'dest' => '\Modules\Admin\Controller\ApiController:apiSettingsGet', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::SETTINGS, ], @@ -29,37 +29,37 @@ return [ '^.*/api/admin/group.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:apiGroupCreate', + 'dest' => '\Modules\Admin\Controller\ApiController:apiGroupCreate', 'verb' => RouteVerb::PUT, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::CREATE, 'state' => PermissionState::GROUP, ], ], [ - 'dest' => '\Modules\Admin\Controller:apiGroupUpdate', + 'dest' => '\Modules\Admin\Controller\ApiController:apiGroupUpdate', 'verb' => RouteVerb::SET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::MODIFY, 'state' => PermissionState::GROUP, ], ], [ - 'dest' => '\Modules\Admin\Controller:apiGroupDelete', + 'dest' => '\Modules\Admin\Controller\ApiController:apiGroupDelete', 'verb' => RouteVerb::DELETE, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::DELETE, 'state' => PermissionState::GROUP, ], ], [ - 'dest' => '\Modules\Admin\Controller:apiGroupGet', + 'dest' => '\Modules\Admin\Controller\ApiController:apiGroupGet', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::GROUP, ], @@ -69,10 +69,10 @@ return [ // todo: the order of find and account is bad but needed for now. otherwise the admin/account.* also matches and we match two routes = bad '^.*/api/admin/find/account.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:apiAccountFind', + 'dest' => '\Modules\Admin\Controller\ApiController:apiAccountFind', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::ACCOUNT, ], @@ -80,10 +80,10 @@ return [ ], '^.*/api/admin/find/group.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:apiGroupFind', + 'dest' => '\Modules\Admin\Controller\ApiController:apiGroupFind', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::ACCOUNT, ], @@ -92,37 +92,37 @@ return [ '^.*/api/admin/account.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:apiAccountCreate', + 'dest' => '\Modules\Admin\Controller\ApiController:apiAccountCreate', 'verb' => RouteVerb::PUT, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::CREATE, 'state' => PermissionState::ACCOUNT, ], ], [ - 'dest' => '\Modules\Admin\Controller:apiAccountUpdate', + 'dest' => '\Modules\Admin\Controller\ApiController:apiAccountUpdate', 'verb' => RouteVerb::SET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::MODIFY, 'state' => PermissionState::ACCOUNT, ], ], [ - 'dest' => '\Modules\Admin\Controller:apiAccountDelete', + 'dest' => '\Modules\Admin\Controller\ApiController:apiAccountDelete', 'verb' => RouteVerb::DELETE, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::DELETE, 'state' => PermissionState::ACCOUNT, ], ], [ - 'dest' => '\Modules\Admin\Controller:apiAccountGet', + 'dest' => '\Modules\Admin\Controller\ApiController:apiAccountGet', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::ACCOUNT, ], @@ -131,10 +131,10 @@ return [ '^.*/api/admin/module/status.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:apiModuleStatusUpdate', + 'dest' => '\Modules\Admin\Controller\ApiController:apiModuleStatusUpdate', 'verb' => RouteVerb::SET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::MODIFY, 'state' => PermissionState::MODULE, ], @@ -143,10 +143,10 @@ return [ '^.*/api/admin/group/account.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:apiAddAccountToGroup', + 'dest' => '\Modules\Admin\Controller\ApiController:apiAddAccountToGroup', 'verb' => RouteVerb::PUT, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::MODIFY, 'state' => PermissionState::MODULE, ], @@ -154,10 +154,10 @@ return [ ], '^.*/api/admin/account/group.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:apiAddGroupToAccount', + 'dest' => '\Modules\Admin\Controller\ApiController:apiAddGroupToAccount', 'verb' => RouteVerb::PUT, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::MODIFY, 'state' => PermissionState::MODULE, ], @@ -166,10 +166,10 @@ return [ '^.*/api/admin/group/permission.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:apiAddGroupPermission', + 'dest' => '\Modules\Admin\Controller\ApiController:apiAddGroupPermission', 'verb' => RouteVerb::PUT, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::PERMISSION, 'state' => PermissionState::MODULE, ], @@ -177,10 +177,10 @@ return [ ], '^.*/api/admin/account/permission.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:apiAddAccountPermission', + 'dest' => '\Modules\Admin\Controller\ApiController:apiAddAccountPermission', 'verb' => RouteVerb::PUT, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::PERMISSION, 'state' => PermissionState::MODULE, ], diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index d478edf..e058af0 100644 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -3,15 +3,15 @@ use phpOMS\Router\RouteVerb; use phpOMS\Account\PermissionType; use Modules\Admin\Models\PermissionState; -use Modules\Admin\Controller; +use Modules\Admin\Controller\BackendController; return [ '^.*/backend/admin/settings/general.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:viewSettingsGeneral', + 'dest' => '\Modules\Admin\Controller\BackendController:viewSettingsGeneral', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::SETTINGS, ], @@ -19,10 +19,10 @@ return [ ], '^.*/backend/admin/account/list.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:viewAccountList', + 'dest' => '\Modules\Admin\Controller\BackendController:viewAccountList', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::ACCOUNT, ], @@ -30,10 +30,10 @@ return [ ], '^.*/backend/admin/account/settings.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:viewAccountSettings', + 'dest' => '\Modules\Admin\Controller\BackendController:viewAccountSettings', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::ACCOUNT, ], @@ -41,10 +41,10 @@ return [ ], '^.*/backend/admin/account/create.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:viewAccountCreate', + 'dest' => '\Modules\Admin\Controller\BackendController:viewAccountCreate', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::CREATE, 'state' => PermissionState::ACCOUNT, ], @@ -52,10 +52,10 @@ return [ ], '^.*/backend/admin/group/list.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:viewGroupList', + 'dest' => '\Modules\Admin\Controller\BackendController:viewGroupList', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::GROUP, ], @@ -63,10 +63,10 @@ return [ ], '^.*/backend/admin/group/settings.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:viewGroupSettings', + 'dest' => '\Modules\Admin\Controller\BackendController:viewGroupSettings', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::MODIFY, 'state' => PermissionState::GROUP, ], @@ -74,10 +74,10 @@ return [ ], '^.*/backend/admin/group/create.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:viewGroupCreate', + 'dest' => '\Modules\Admin\Controller\BackendController:viewGroupCreate', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::CREATE, 'state' => PermissionState::GROUP, ], @@ -85,10 +85,10 @@ return [ ], '^.*/backend/admin/module/list.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:viewModuleList', + 'dest' => '\Modules\Admin\Controller\BackendController:viewModuleList', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::MODULE, ], @@ -96,10 +96,10 @@ return [ ], '^.*/backend/admin/module/settings\?.*$' => [ [ - 'dest' => '\Modules\Admin\Controller:viewModuleProfile', + 'dest' => '\Modules\Admin\Controller\BackendController:viewModuleProfile', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::MODULE, ], diff --git a/Controller.php b/Controller/ApiController.php similarity index 67% rename from Controller.php rename to Controller/ApiController.php index 1ac2400..f9901cf 100644 --- a/Controller.php +++ b/Controller/ApiController.php @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\Admin; +namespace Modules\Admin\Controller; use Model\Message\FormValidation; @@ -57,344 +57,8 @@ use phpOMS\Account\PermissionOwner; * @link http://website.orange-management.de * @since 1.0.0 */ -final class Controller extends ModuleAbstract implements WebInterface +final class ApiController extends Controller { - - /** - * Module path. - * - * @var string - * @since 1.0.0 - */ - public const MODULE_PATH = __DIR__; - - /** - * Module version. - * - * @var string - * @since 1.0.0 - */ - public const MODULE_VERSION = '1.0.0'; - - /** - * Module name. - * - * @var string - * @since 1.0.0 - */ - public const MODULE_NAME = 'Admin'; - - /** - * Module id. - * - * @var int - * @since 1.0.0 - */ - public const MODULE_ID = 1000100000; - - /** - * Providing. - * - * @var string[] - * @since 1.0.0 - */ - protected static $providing = []; - - /** - * Dependencies. - * - * @var string[] - * @since 1.0.0 - */ - protected static $dependencies = []; - - /** - * Method which generates the general settings view. - * - * In this view general settings for the entire application can be seen and adjusted. Settings which can be modified - * here are localization, password, database, etc. - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable Serializable web view - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewSettingsGeneral(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - $settings = $this->app->appSettings->get([ - 1000000001, 1000000002, 1000000003, 1000000004, 1000000005, 1000000006, 1000000007, 1000000008, 1000000009, - 1000000010, 1000000011, 1000000012, 1000000013, 1000000014, 1000000015, 1000000016, 1000000017, 1000000018, 1000000019, - 1000000020, 1000000021, 1000000022, 1000000023, 1000000024, 1000000025, 1000000026, 1000000027, 1000000028, 1000000029, - 1000001001, 1000001002, 1000001003, 1000001004, 1000001005, - 1000002001, 1000002002, 1000002003, 1000002004, 1000002005, 1000002006, - 1000003001, 1000003002, 1000003003, 1000003004, 1000003005, 1000003006, - 1000004001, 1000004002, 1000004003, 1000004004, 1000004005, - 1000005001, 1000005002, 1000005003, 1000005004, 1000005005, 1000005006, 1000005007, 1000005008, - ]); - - $view->setTemplate('/Modules/Admin/Theme/Backend/settings-general'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); - $view->setData('settings', $settings); - - return $view; - } - - /** - * Method which generates the general settings view. - * - * In this view general settings for the entire application can be seen and adjusted. Settings which can be modified - * here are localization, password, database, etc. - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable Serializable web view - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewEmptyCommand(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Admin/Theme/Console/empty-command'); - - return $view; - } - - /** - * Method which generates the account list view. - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable Serializable web view - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewAccountList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-list'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); - $view->setData('list:elements', AccountMapper::getNewest(50, null, RelationType::NONE)); - $view->setData('list:count', 1); - - return $view; - } - - /** - * Method which generates the account view of a single account. - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable Serializable web view - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewAccountSettings(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-single'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); - $view->addData('account', AccountMapper::get((int) $request->getData('id'), RelationType::ALL, null, 2)); - - $permissions = AccountPermissionMapper::getFor((int) $request->getData('id'), 'account'); - - if (!isset($permissions) || $permissions instanceof NullAccountPermission) { - $permissions = []; - } elseif (!is_array($permissions)) { - $permissions = [$permissions]; - } - - $view->addData('permissions', $permissions); - - $accGrpSelector = new \Modules\Admin\Theme\Backend\Components\GroupTagSelector\GroupTagSelectorView($this->app, $request, $response); - $view->addData('grpSelector', $accGrpSelector); - - return $view; - } - - /** - * Method which generates the create account view. - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable Serializable web view - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewAccountCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-create'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); - - return $view; - } - - /** - * Method which generates the group list view. - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable Serializable web view - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewGroupList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Admin/Theme/Backend/groups-list'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); - $view->setData('list:elements', GroupMapper::getAll(RelationType::NONE)); - - return $view; - } - - /** - * Method which generates the group view of a single group. - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable Serializable web view - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewGroupSettings(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Admin/Theme/Backend/groups-single'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); - $view->addData('group', GroupMapper::get((int) $request->getData('id'), RelationType::ALL, null, 2)); - - $permissions = GroupPermissionMapper::getFor((int) $request->getData('id'), 'group'); - - if (!isset($permissions) || $permissions instanceof NullGroupPermission) { - $permissions = []; - } elseif (!is_array($permissions)) { - $permissions = [$permissions]; - } - - $view->addData('permissions', $permissions); - - $accGrpSelector = new \Modules\Profile\Theme\Backend\Components\AccountGroupSelector\BaseView($this->app, $request, $response); - $view->addData('accGrpSelector', $accGrpSelector); - - $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response); - $view->addData('editor', $editor); - - return $view; - } - - /** - * Method which generates the group create view. - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable Serializable web view - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewGroupCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Admin/Theme/Backend/groups-create'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); - - $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response); - $view->addData('editor', $editor); - - return $view; - } - - /** - * Method which generates the module list view. - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable Serializable web view - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewModuleList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Admin/Theme/Backend/modules-list'); - - return $view; - } - - /** - * Method which generates the module profile view. - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable Serializable web view - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewModuleProfile(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Admin/Theme/Backend/modules-single'); - - $id = $request->getData('id') ?? ''; - $view->setData('modules', $this->app->moduleManager->getAllModules()); - $view->setData('active', $this->app->moduleManager->getActiveModules()); - $view->setData('installed', $installed = $this->app->moduleManager->getInstalledModules()); - $view->setData('id', $id); - - if (isset($installed[$id]) && ($path = \realpath(__DIR__ . '/../' . $id . '/info.json')) !== false) { - $info = new InfoManager($path); - $info->load(); - - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid( - $info->getId(), - $request, $response - )); - } - - return $view; - } - /** * Api method for getting settings * diff --git a/Controller/BackendController.php b/Controller/BackendController.php new file mode 100644 index 0000000..6c4bfc5 --- /dev/null +++ b/Controller/BackendController.php @@ -0,0 +1,349 @@ +app, $request, $response); + $settings = $this->app->appSettings->get([ + 1000000001, 1000000002, 1000000003, 1000000004, 1000000005, 1000000006, 1000000007, 1000000008, 1000000009, + 1000000010, 1000000011, 1000000012, 1000000013, 1000000014, 1000000015, 1000000016, 1000000017, 1000000018, 1000000019, + 1000000020, 1000000021, 1000000022, 1000000023, 1000000024, 1000000025, 1000000026, 1000000027, 1000000028, 1000000029, + 1000001001, 1000001002, 1000001003, 1000001004, 1000001005, + 1000002001, 1000002002, 1000002003, 1000002004, 1000002005, 1000002006, + 1000003001, 1000003002, 1000003003, 1000003004, 1000003005, 1000003006, + 1000004001, 1000004002, 1000004003, 1000004004, 1000004005, + 1000005001, 1000005002, 1000005003, 1000005004, 1000005005, 1000005006, 1000005007, 1000005008, + ]); + + $view->setTemplate('/Modules/Admin/Theme/Backend/settings-general'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); + $view->setData('settings', $settings); + + return $view; + } + + /** + * Method which generates the general settings view. + * + * In this view general settings for the entire application can be seen and adjusted. Settings which can be modified + * here are localization, password, database, etc. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable Serializable web view + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewEmptyCommand(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Admin/Theme/Console/empty-command'); + + return $view; + } + + /** + * Method which generates the account list view. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable Serializable web view + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewAccountList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-list'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); + $view->setData('list:elements', AccountMapper::getNewest(50, null, RelationType::NONE)); + $view->setData('list:count', 1); + + return $view; + } + + /** + * Method which generates the account view of a single account. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable Serializable web view + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewAccountSettings(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-single'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); + $view->addData('account', AccountMapper::get((int) $request->getData('id'), RelationType::ALL, null, 2)); + + $permissions = AccountPermissionMapper::getFor((int) $request->getData('id'), 'account'); + + if (!isset($permissions) || $permissions instanceof NullAccountPermission) { + $permissions = []; + } elseif (!is_array($permissions)) { + $permissions = [$permissions]; + } + + $view->addData('permissions', $permissions); + + $accGrpSelector = new \Modules\Admin\Theme\Backend\Components\GroupTagSelector\GroupTagSelectorView($this->app, $request, $response); + $view->addData('grpSelector', $accGrpSelector); + + return $view; + } + + /** + * Method which generates the create account view. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable Serializable web view + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewAccountCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-create'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); + + return $view; + } + + /** + * Method which generates the group list view. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable Serializable web view + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewGroupList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Admin/Theme/Backend/groups-list'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); + $view->setData('list:elements', GroupMapper::getAll(RelationType::NONE)); + + return $view; + } + + /** + * Method which generates the group view of a single group. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable Serializable web view + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewGroupSettings(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Admin/Theme/Backend/groups-single'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); + $view->addData('group', GroupMapper::get((int) $request->getData('id'), RelationType::ALL, null, 2)); + + $permissions = GroupPermissionMapper::getFor((int) $request->getData('id'), 'group'); + + if (!isset($permissions) || $permissions instanceof NullGroupPermission) { + $permissions = []; + } elseif (!is_array($permissions)) { + $permissions = [$permissions]; + } + + $view->addData('permissions', $permissions); + + $accGrpSelector = new \Modules\Profile\Theme\Backend\Components\AccountGroupSelector\BaseView($this->app, $request, $response); + $view->addData('accGrpSelector', $accGrpSelector); + + $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response); + $view->addData('editor', $editor); + + return $view; + } + + /** + * Method which generates the group create view. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable Serializable web view + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewGroupCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Admin/Theme/Backend/groups-create'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); + + $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response); + $view->addData('editor', $editor); + + return $view; + } + + /** + * Method which generates the module list view. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable Serializable web view + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewModuleList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Admin/Theme/Backend/modules-list'); + + return $view; + } + + /** + * Method which generates the module profile view. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable Serializable web view + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewModuleProfile(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Admin/Theme/Backend/modules-single'); + + $id = $request->getData('id') ?? ''; + $view->setData('modules', $this->app->moduleManager->getAllModules()); + $view->setData('active', $this->app->moduleManager->getActiveModules()); + $view->setData('installed', $installed = $this->app->moduleManager->getInstalledModules()); + $view->setData('id', $id); + + if (isset($installed[$id]) && ($path = \realpath(__DIR__ . '/../' . $id . '/info.json')) !== false) { + $info = new InfoManager($path); + $info->load(); + + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid( + $info->getId(), + $request, $response + )); + } + + return $view; + } +} diff --git a/Controller/ConsoleController.php b/Controller/ConsoleController.php new file mode 100644 index 0000000..ee759a2 --- /dev/null +++ b/Controller/ConsoleController.php @@ -0,0 +1,85 @@ +app, $request, $response); + + $view->setTemplate('/Modules/Admin/Theme/Console/empty-command'); + + return $view; + } +} diff --git a/Controller/Controller.php b/Controller/Controller.php new file mode 100644 index 0000000..4b2ca76 --- /dev/null +++ b/Controller/Controller.php @@ -0,0 +1,110 @@ +