diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index b654382..959f636 100644 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -3,33 +3,33 @@ use phpOMS\Router\RouteVerb; use phpOMS\Account\PermissionType; use Modules\Tasks\Models\PermissionState; -use Modules\Tasks\Controller; +use Modules\Tasks\Controller\ApiController; return [ '^.*/api/task(\?.*|$)' => [ [ - 'dest' => '\Modules\Tasks\Controller:apiTaskCreate', + 'dest' => '\Modules\Tasks\Controller\ApiController:apiTaskCreate', 'verb' => RouteVerb::PUT, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::CREATE, 'state' => PermissionState::TASK, ], ], [ - 'dest' => '\Modules\Tasks\Controller:apiTaskSet', + 'dest' => '\Modules\Tasks\Controller\ApiController:apiTaskSet', 'verb' => RouteVerb::SET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::MODIFY, 'state' => PermissionState::TASK, ], ], [ - 'dest' => '\Modules\Tasks\Controller:apiTaskGet', + 'dest' => '\Modules\Tasks\Controller\ApiController:apiTaskGet', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::TASK, ], @@ -37,28 +37,28 @@ return [ ], '^.*/api/task/element.*$' => [ [ - 'dest' => '\Modules\Tasks\Controller:apiTaskElementCreate', + 'dest' => '\Modules\Tasks\Controller\ApiController:apiTaskElementCreate', 'verb' => RouteVerb::SET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::CREATE, 'state' => PermissionState::ELEMENT, ], ], [ - 'dest' => '\Modules\Tasks\Controller:apiTaskElementSet', + 'dest' => '\Modules\Tasks\Controller\ApiController:apiTaskElementSet', 'verb' => RouteVerb::SET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::MODIFY, 'state' => PermissionState::ELEMENT, ], ], [ - 'dest' => '\Modules\Tasks\Controller:apiTaskElementGet', + 'dest' => '\Modules\Tasks\Controller\ApiController:apiTaskElementGet', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => ApiController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::ELEMENT, ], diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index eaf4908..7d87653 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\Tasks\Models\PermissionState; -use Modules\Tasks\Controller; +use Modules\Tasks\Controller\BackendController; return [ '^.*/backend/task/dashboard.*$' => [ [ - 'dest' => '\Modules\Tasks\Controller:viewTaskDashboard', + 'dest' => '\Modules\Tasks\Controller\BackendController:viewTaskDashboard', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::TASK, ], @@ -19,10 +19,10 @@ return [ ], '^.*/backend/task/single.*$' => [ [ - 'dest' => '\Modules\Tasks\Controller:viewTaskView', + 'dest' => '\Modules\Tasks\Controller\BackendController:viewTaskView', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::TASK, ], @@ -30,10 +30,10 @@ return [ ], '^.*/backend/task/create.*$' => [ [ - 'dest' => '\Modules\Tasks\Controller:viewTaskCreate', + 'dest' => '\Modules\Tasks\Controller\BackendController:viewTaskCreate', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::CREATE, 'state' => PermissionState::TASK, ], @@ -41,10 +41,10 @@ return [ ], '^.*/backend/task/analysis.*$' => [ [ - 'dest' => '\Modules\Tasks\Controller:viewTaskAnalysis', + 'dest' => '\Modules\Tasks\Controller\BackendController:viewTaskAnalysis', 'verb' => RouteVerb::GET, 'permission' => [ - 'module' => Controller::MODULE_NAME, + 'module' => BackendController::MODULE_NAME, 'type' => PermissionType::READ, 'state' => PermissionState::ANALYSIS, ], diff --git a/Controller.php b/Controller/ApiController.php similarity index 63% rename from Controller.php rename to Controller/ApiController.php index d5339f2..5fdc2bb 100644 --- a/Controller.php +++ b/Controller/ApiController.php @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\Tasks; +namespace Modules\Tasks\Controller; use Model\Message\FormValidation; @@ -45,197 +45,8 @@ use phpOMS\DataStorage\Database\RelationType; * @link http://website.orange-management.de * @since 1.0.0 */ -final class Controller extends ModuleAbstract implements WebInterface +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 = 'Tasks'; - - /** - * Module id. - * - * @var int - * @since 1.0.0 - */ - public const MODULE_ID = 1001100000; - - /** - * Providing. - * - * @var string[] - * @since 1.0.0 - */ - protected static $providing = [ - 'Navigation' - ]; - - /** - * Dependencies. - * - * @var string[] - * @since 1.0.0 - */ - protected static $dependencies = [ - ]; - - /** - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewTaskDashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Tasks/Theme/Backend/task-dashboard'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); - - $open = TaskMapper::getOpen($request->getHeader()->getAccount()); - $tasks = TaskMapper::getNewest(25); - - $view->addData('tasks', $tasks); - - return $view; - } - - /** - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewDashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - $view->setTemplate('/Modules/Tasks/Theme/Backend/dashboard-task'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); - - $taskListView = new \Modules\Tasks\Theme\Backend\Components\Tasks\BaseView($this->app, $request, $response); - $taskListView->setTemplate('/Modules/Tasks/Theme/Backend/Components/Tasks/list'); - $view->addData('tasklist', $taskListView); - - $tasks = TaskMapper::getNewest(5, null, RelationType::ALL, 1); - $view->addData('tasks', $tasks); - - return $view; - } - - /** - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewTaskView(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new TaskView($this->app, $request, $response); - - $task = TaskMapper::get((int) $request->getData('id')); - $accountId = $request->getHeader()->getAccount(); - - if (!($task->getCreatedBy()->getId() === $accountId - || $task->isCc($accountId) - || $task->isForwarded($accountId)) - && !$this->app->accountManager->get($accountId)->hasPermission( - PermissionType::READ, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::TASK, $task->getId()) - ) { - $view->setTemplate('/Web/Backend/Error/403_inline'); - $response->getHeader()->setStatusCode(RequestStatusCode::R_403); - return $view; - } - - $view->setTemplate('/Modules/Tasks/Theme/Backend/task-single'); - $view->addData('task', $task); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); - - $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; - } - - /** - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewTaskCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - - $view->setTemplate('/Modules/Tasks/Theme/Backend/task-create'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); - - $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; - } - - /** - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return \Serializable - * - * @since 1.0.0 - * @codeCoverageIgnore - */ - public function viewTaskAnalysis(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable - { - $view = new View($this->app, $request, $response); - $view->setTemplate('/Modules/Tasks/Theme/Backend/task-analysis'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); - - return $view; - } - /** * Validate task create request * @@ -259,20 +70,6 @@ final class Controller extends ModuleAbstract implements WebInterface return []; } - /** - * Count unread messages - * - * @param int $account Account id - * - * @return int - * - * @since 1.0.0 - */ - public function openNav(int $account) : int - { - return TaskMapper::countUnread($account); - } - /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response diff --git a/Controller/BackendController.php b/Controller/BackendController.php new file mode 100644 index 0000000..3bf044f --- /dev/null +++ b/Controller/BackendController.php @@ -0,0 +1,200 @@ +app, $request, $response); + + $view->setTemplate('/Modules/Tasks/Theme/Backend/task-dashboard'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + + $open = TaskMapper::getOpen($request->getHeader()->getAccount()); + $tasks = TaskMapper::getNewest(25); + + $view->addData('tasks', $tasks); + + return $view; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewDashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/Tasks/Theme/Backend/dashboard-task'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + + $taskListView = new \Modules\Tasks\Theme\Backend\Components\Tasks\BaseView($this->app, $request, $response); + $taskListView->setTemplate('/Modules/Tasks/Theme/Backend/Components/Tasks/list'); + $view->addData('tasklist', $taskListView); + + $tasks = TaskMapper::getNewest(5, null, RelationType::ALL, 1); + $view->addData('tasks', $tasks); + + return $view; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewTaskView(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new TaskView($this->app, $request, $response); + + $task = TaskMapper::get((int) $request->getData('id')); + $accountId = $request->getHeader()->getAccount(); + + if (!($task->getCreatedBy()->getId() === $accountId + || $task->isCc($accountId) + || $task->isForwarded($accountId)) + && !$this->app->accountManager->get($accountId)->hasPermission( + PermissionType::READ, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::TASK, $task->getId()) + ) { + $view->setTemplate('/Web/Backend/Error/403_inline'); + $response->getHeader()->setStatusCode(RequestStatusCode::R_403); + return $view; + } + + $view->setTemplate('/Modules/Tasks/Theme/Backend/task-single'); + $view->addData('task', $task); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + + $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; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewTaskCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Tasks/Theme/Backend/task-create'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + + $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; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewTaskAnalysis(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/Tasks/Theme/Backend/task-analysis'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response)); + + return $view; + } + + /** + * Count unread messages + * + * @param int $account Account id + * + * @return int + * + * @since 1.0.0 + */ + public function openNav(int $account) : int + { + return TaskMapper::countUnread($account); + } +} diff --git a/Controller/Controller.php b/Controller/Controller.php new file mode 100644 index 0000000..ed3db23 --- /dev/null +++ b/Controller/Controller.php @@ -0,0 +1,101 @@ +