get('Content')->getData('head'); $head->addAsset(AssetType::CSS, $request->getUri()->getBase() . 'Modules/Kanban/Theme/Backend/css/styles.css'); } /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable * * @since 1.0.0 */ public function viewKanbanDashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission( PermissionType::READ, $this->app->appId, $this->app->appName, self::MODULE_ID, PermissionState::DASHBOARD) ) { $view->setTemplate('/Web/Backend/Error/403_inline'); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return $view; } $view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-dashboard'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response)); $list = KanbanBoardMapper::getNewest(50); $view->setData('boards', $list); return $view; } /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable * * @since 1.0.0 */ public function viewKanbanBoard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); $board = KanbanBoardMapper::get((int) $request->getData('id')); $accountId = $request->getHeader()->getAccount(); if ($board->getCreatedBy()->getId() !== $accountId && !$this->app->accountManager->get($accountId)->hasPermission( PermissionType::READ, $this->app->appId, $this->app->appName, self::MODULE_ID, PermissionState::BOARD, $board->getId()) ) { $view->setTemplate('/Web/Backend/Error/403_inline'); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return $view; } $view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-board'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response)); $view->setData('board', $board); return $view; } /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable * * @since 1.0.0 */ public function viewKanbanBoardCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); if (!$this->app->accountManager->get($accountId)->hasPermission( PermissionType::CREATE, $this->app->appId, $this->app->appName, self::MODULE_ID, PermissionState::BOARD, $board->getId()) ) { $view->setTemplate('/Web/Backend/Error/403_inline'); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return $view; } $view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-board-create'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response)); return $view; } /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable * * @since 1.0.0 */ public function viewKanbanCard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); $card = KanbanCardMapper::get((int) $request->getData('id')); $accountId = $request->getHeader()->getAccount(); if ($card->getCreatedBy()->getId() !== $accountId && !$this->app->accountManager->get($accountId)->hasPermission( PermissionType::READ, $this->app->appId, $this->app->appName, self::MODULE_ID, PermissionState::CARD, $card->getId()) ) { $view->setTemplate('/Web/Backend/Error/403_inline'); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return $view; } $view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-card'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response)); $view->setData('card', $card); return $view; } public function apiKanbanCardCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) { if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission( PermissionType::CREATE, $this->app->appId, $this->app->appName, self::MODULE_ID, PermissionState::CARD) ) { $response->set('kanban_card_create', null); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return; } if (!empty($val = $this->validateKanbanCardCreate($request))) { $response->set('kanban_card_create', new FormValidation($val)); return; } $card = $this->createKanbanCardFromRquest($request); KanbanCardMapper::create($card); $response->set('card', $card->jsonSerialize()); } public function createKanbanCardFromRquest(RequestAbstract $request) : KanbanCard { $mardkownParser = new Markdown(); $card = new KanbanCard(); $card->setName($request->getData('title')); $card->setDescription($request->getData('plain')); $card->setColumn((int) $request->getData('column')); $card->setOrder((int) $request->getData('order')); $card->setRef((int) $request->getData('ref')); $card->setLabels((array) $request->getData('labels')); $card->setStatus((int) $request->getData('status')); $card->setType((int) $request->getData('type')); return $card; } private function validateKanbanCardCreate(RequestAbstract $request) : array { $val = []; if ( ($val['title'] = empty($request->getData('title'))) || ($val['plain'] = empty($request->getData('plain'))) || ($val['column'] = empty($request->getData('column'))) || ($val['order'] = empty($request->getData('order'))) || ($val['ref'] = empty($request->getData('ref'))) || ($val['labels'] = empty($request->getData('labels'))) || ($val['status'] = ( $request->getData('status') !== null && !CardStatus::isValidValue(strtolower($request->getData('status'))) )) || ($val['type'] = ( $request->getData('type') === null || !CardType::isValidValue((int) $request->getData('type')) )) ) { return $val; } return []; } public function apiKanbanBoardCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) { if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission( PermissionType::CREATE, $this->app->appId, $this->app->appName, self::MODULE_ID, PermissionState::BOARD) ) { $response->set('kanban_board_create', null); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return; } if (!empty($val = $this->validateKanbanBoardCreate($request))) { $response->set('kanban_board_create', new FormValidation($val)); return; } $board = $this->createKanbanBoardFromRquest($request); KanbanBoardMapper::create($board); $response->set('board', $board->jsonSerialize()); } public function createKanbanBoardFromRquest(RequestAbstract $request) : KanbanBoard { $mardkownParser = new Markdown(); $board = new KanbanBoard(); $board->setName($request->getData('title')); $board->setDescription($request->getData('plain')); $board->setOrder((int) $request->getData('order')); $board->setStatus((int) $request->getData('status')); return $board; } private function validateKanbanBoardCreate(RequestAbstract $request) : array { $val = []; if ( ($val['title'] = empty($request->getData('title'))) || ($val['plain'] = empty($request->getData('plain'))) || ($val['order'] = empty($request->getData('order'))) || ($val['status'] = ( $request->getData('status') !== null && !CardStatus::isValidValue(strtolower($request->getData('status'))) )) ) { return $val; } return []; } public function apiKanbanColumnCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) { if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission( PermissionType::CREATE, $this->app->appId, $this->app->appName, self::MODULE_ID, PermissionState::COLUMN) ) { $response->set('kanban_column_create', null); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return; } if (!empty($val = $this->validateKanbanColumnCreate($request))) { $response->set('kanban_column_create', new FormValidation($val)); return; } $column = $this->createKanbanColumnFromRquest($request); KanbanColumnMapper::create($column); $response->set('column', $column->jsonSerialize()); } public function createKanbanColumnFromRquest(RequestAbstract $request) : KanbanColumn { $mardkownParser = new Markdown(); $column = new KanbanColumn(); $column->setName($request->getData('title')); $column->setDescription($request->getData('plain')); $column->setOrder((int) $request->getData('order')); $column->setStatus((int) $request->getData('status')); return $column; } private function validateKanbanColumnCreate(RequestAbstract $request) : array { $val = []; if ( ($val['title'] = empty($request->getData('title'))) || ($val['plain'] = empty($request->getData('plain'))) || ($val['order'] = empty($request->getData('order'))) || ($val['status'] = ( $request->getData('status') !== null && !CardStatus::isValidValue(strtolower($request->getData('status'))) )) ) { return $val; } return []; } public function apiKanbanLabelCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) { $account = $this->app->accountManager->get($request->getHeader()->getAccount()); if (!$account->hasPermission(PermissionType::CREATE, $this->app->appId, $this->app->appName, self::MODULE_ID, PermissionState::BOARD) && !$account->hasPermission(PermissionType::CREATE, $this->app->appId, $this->app->appName, self::MODULE_ID, PermissionState::LABEL) ) { $response->set('kanban_label_create', null); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return; } if (!empty($val = $this->validateKanbanLabelCreate($request))) { $response->set('kanban_label_create', new FormValidation($val)); return; } $label = $this->createKanbanLabelFromRquest($request); KanbanLabelMapper::create($label); $response->set('label', $label->jsonSerialize()); } public function createKanbanLabelFromRquest(RequestAbstract $request) : KanbanLabel { $label = new KanbanLabel(); $label->setName($request->getData('title')); $label->setBoard((int) $request->getData('board')); $label->setcolor((int) $request->getData('color')); return $label; } private function validateKanbanLabelCreate(RequestAbstract $request) : array { $val = []; if ( ($val['title'] = empty($request->getData('title'))) || ($val['board'] = empty($request->getData('board'))) || ($val['color'] = empty($request->getData('color'))) ) { return $val; } return []; } }