summaryrefslogtreecommitdiff
path: root/app/Controller
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2017-02-11 17:22:10 -0500
committerFrederic Guillot <fred@kanboard.net>2017-02-11 17:22:10 -0500
commit8bf054a480ecc2d31b857cb27bd6256f1efdd74c (patch)
tree390065e6c102bc3e8d5dcf5b5e6d7174e5b26da2 /app/Controller
parent28052edb22cb0a65d3ad81c7654a0673de82e1ac (diff)
Open comments in board view with a modal dialog instead of tooltip
Diffstat (limited to 'app/Controller')
-rw-r--r--app/Controller/BoardTooltipController.php16
-rw-r--r--app/Controller/CommentController.php21
-rw-r--r--app/Controller/CommentListController.php50
3 files changed, 59 insertions, 28 deletions
diff --git a/app/Controller/BoardTooltipController.php b/app/Controller/BoardTooltipController.php
index 79b9b509..7bee8dab 100644
--- a/app/Controller/BoardTooltipController.php
+++ b/app/Controller/BoardTooltipController.php
@@ -70,22 +70,6 @@ class BoardTooltipController extends BaseController
}
/**
- * Display comments during a task mouseover
- *
- * @access public
- */
- public function comments()
- {
- $task = $this->getTask();
- $commentSortingDirection = $this->userMetadataCacheDecorator->get(UserMetadataModel::KEY_COMMENT_SORTING_DIRECTION, 'ASC');
-
- $this->response->html($this->template->render('board/tooltip_comments', array(
- 'task' => $task,
- 'comments' => $this->commentModel->getAll($task['id'], $commentSortingDirection)
- )));
- }
-
- /**
* Display task description
*
* @access public
diff --git a/app/Controller/CommentController.php b/app/Controller/CommentController.php
index 526bd2bf..9a89103e 100644
--- a/app/Controller/CommentController.php
+++ b/app/Controller/CommentController.php
@@ -4,7 +4,6 @@ namespace Kanboard\Controller;
use Kanboard\Core\Controller\AccessForbiddenException;
use Kanboard\Core\Controller\PageNotFoundException;
-use Kanboard\Model\UserMetadataModel;
/**
* Comment Controller
@@ -17,12 +16,12 @@ class CommentController extends BaseController
/**
* Get the current comment
*
- * @access private
+ * @access protected
* @return array
* @throws PageNotFoundException
* @throws AccessForbiddenException
*/
- private function getComment()
+ protected function getComment()
{
$comment = $this->commentModel->getById($this->request->getIntegerParam('comment_id'));
@@ -77,6 +76,8 @@ class CommentController extends BaseController
{
$task = $this->getTask();
$values = $this->request->getValues();
+ $values['task_id'] = $task['id'];
+ $values['user_id'] = $this->userSession->getId();
list($valid, $errors) = $this->commentValidator->validateCreation($values);
@@ -118,7 +119,6 @@ class CommentController extends BaseController
'errors' => $errors,
'comment' => $comment,
'task' => $task,
- 'title' => t('Edit a comment')
)));
}
@@ -142,10 +142,11 @@ class CommentController extends BaseController
$this->flash->failure(t('Unable to update your comment.'));
}
- return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), false);
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
+ return;
}
- return $this->edit($values, $errors);
+ $this->edit($values, $errors);
}
/**
@@ -182,7 +183,7 @@ class CommentController extends BaseController
$this->flash->failure(t('Unable to remove this comment.'));
}
- $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), 'comments'));
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), 'comments'), true);
}
/**
@@ -193,11 +194,7 @@ class CommentController extends BaseController
public function toggleSorting()
{
$task = $this->getTask();
-
- $oldDirection = $this->userMetadataCacheDecorator->get(UserMetadataModel::KEY_COMMENT_SORTING_DIRECTION, 'ASC');
- $newDirection = $oldDirection === 'ASC' ? 'DESC' : 'ASC';
-
- $this->userMetadataCacheDecorator->set(UserMetadataModel::KEY_COMMENT_SORTING_DIRECTION, $newDirection);
+ $this->helper->comment->toggleSorting();
$this->response->redirect($this->helper->url->to(
'TaskViewController',
diff --git a/app/Controller/CommentListController.php b/app/Controller/CommentListController.php
new file mode 100644
index 00000000..63d20663
--- /dev/null
+++ b/app/Controller/CommentListController.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace Kanboard\Controller;
+
+use Kanboard\Model\UserMetadataModel;
+
+/**
+ * Class CommentListController
+ *
+ * @package Kanboard\Controller
+ * @author Frederic Guillot
+ */
+class CommentListController extends BaseController
+{
+ public function show()
+ {
+ $project = $this->getProject();
+ $task = $this->getTask();
+ $commentSortingDirection = $this->userMetadataCacheDecorator->get(UserMetadataModel::KEY_COMMENT_SORTING_DIRECTION, 'ASC');
+
+ $this->response->html($this->template->render('comment_list/show', array(
+ 'project' => $project,
+ 'task' => $task,
+ 'comments' => $this->commentModel->getAll($task['id'], $commentSortingDirection),
+ 'editable' => $this->helper->user->hasProjectAccess('CommentController', 'edit', $task['project_id']),
+ )));
+ }
+
+ public function save()
+ {
+ $task = $this->getTask();
+ $values = $this->request->getValues();
+ $values['task_id'] = $task['id'];
+ $values['user_id'] = $this->userSession->getId();
+
+ list($valid, ) = $this->commentValidator->validateCreation($values);
+
+ if ($valid && $this->commentModel->create($values) !== false) {
+ $this->flash->success(t('Comment added successfully.'));
+ }
+
+ $this->show();
+ }
+
+ public function toggleSorting()
+ {
+ $this->helper->comment->toggleSorting();
+ $this->show();
+ }
+}