| | <?php |
| |
|
| | namespace Kanboard\Controller; |
| |
|
| | use Exception; |
| | use Kanboard\Core\Controller\AccessForbiddenException; |
| | use Kanboard\Model\UserMetadataModel; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | class BoardAjaxController extends BaseController |
| | { |
| | |
| | |
| | |
| | |
| | |
| | public function save() |
| | { |
| | $this->checkReusableGETCSRFParam(); |
| | $project_id = $this->request->getIntegerParam('project_id'); |
| |
|
| | if (! $project_id || ! $this->request->isAjax()) { |
| | throw new AccessForbiddenException(); |
| | } |
| |
|
| | $values = $this->request->getJson(); |
| |
|
| | if (! $this->helper->projectRole->canMoveTask($project_id, $values['src_column_id'], $values['dst_column_id'])) { |
| | throw new AccessForbiddenException(e("You don't have the permission to move this task")); |
| | } |
| |
|
| | try { |
| | $result =$this->taskPositionModel->movePosition( |
| | $project_id, |
| | $values['task_id'], |
| | $values['dst_column_id'], |
| | $values['position'], |
| | $values['swimlane_id'] |
| | ); |
| |
|
| | if (! $result) { |
| | $this->response->status(400); |
| | } else { |
| | $this->response->html($this->renderBoard($project_id), 201); |
| | } |
| | } catch (Exception $e) { |
| | $this->response->html('<div class="alert alert-error">'.$e->getMessage().'</div>'); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function check() |
| | { |
| | $project_id = $this->request->getIntegerParam('project_id'); |
| | $timestamp = $this->request->getIntegerParam('timestamp'); |
| |
|
| | if (! $project_id || ! $this->request->isAjax()) { |
| | throw new AccessForbiddenException(); |
| | } elseif (! $this->projectModel->isModifiedSince($project_id, $timestamp)) { |
| | $this->response->status(304); |
| | } else { |
| | $this->response->html($this->renderBoard($project_id)); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function reload() |
| | { |
| | $project_id = $this->request->getIntegerParam('project_id'); |
| |
|
| | if (! $project_id || ! $this->request->isAjax()) { |
| | throw new AccessForbiddenException(); |
| | } |
| |
|
| | $values = $this->request->getJson(); |
| | $this->userSession->setFilters($project_id, empty($values['search']) ? '' : $values['search']); |
| |
|
| | $this->response->html($this->renderBoard($project_id)); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function collapse() |
| | { |
| | $this->changeDisplayMode(1); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function expand() |
| | { |
| | $this->changeDisplayMode(0); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | private function changeDisplayMode($mode) |
| | { |
| | $project_id = $this->request->getIntegerParam('project_id'); |
| | $this->userMetadataCacheDecorator->set(UserMetadataModel::KEY_BOARD_COLLAPSED.$project_id, $mode); |
| |
|
| | if ($this->request->isAjax()) { |
| | $this->response->html($this->renderBoard($project_id)); |
| | } else { |
| | $this->response->redirect($this->helper->url->to('BoardViewController', 'show', array('project_id' => $project_id))); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected function renderBoard($project_id) |
| | { |
| | return $this->template->render('board/table_container', array( |
| | 'project' => $this->projectModel->getById($project_id), |
| | 'board_private_refresh_interval' => $this->configModel->get('board_private_refresh_interval'), |
| | 'board_highlight_period' => $this->configModel->get('board_highlight_period'), |
| | 'swimlanes' => $this->taskLexer |
| | ->build($this->userSession->getFilters($project_id)) |
| | ->format($this->boardFormatter->withProjectId($project_id)) |
| | )); |
| | } |
| | } |
| |
|