diff --git a/src/applications/phid/view/PHUIHandleTagListView.php b/src/applications/phid/view/PHUIHandleTagListView.php --- a/src/applications/phid/view/PHUIHandleTagListView.php +++ b/src/applications/phid/view/PHUIHandleTagListView.php @@ -9,7 +9,7 @@ private $slim; private $showHovercards; - public function setHandles(array $handles) { + public function setHandles($handles) { $this->handles = $handles; return $this; } @@ -39,6 +39,10 @@ return $this; } + public function isEmpty() { + return empty($this->getTagContent()); + } + protected function getTagName() { return 'ul'; } diff --git a/src/applications/project/controller/PhabricatorProjectBoardViewController.php b/src/applications/project/controller/PhabricatorProjectBoardViewController.php --- a/src/applications/project/controller/PhabricatorProjectBoardViewController.php +++ b/src/applications/project/controller/PhabricatorProjectBoardViewController.php @@ -304,6 +304,7 @@ $can_edit = idx($task_can_edit_map, $task->getPHID(), false); $cards->addItem(id(new ProjectBoardTaskCard()) ->setViewer($viewer) + ->setProject($project) ->setTask($task) ->setOwner($owner) ->setCanEdit($can_edit) diff --git a/src/applications/project/view/ProjectBoardTaskCard.php b/src/applications/project/view/ProjectBoardTaskCard.php --- a/src/applications/project/view/ProjectBoardTaskCard.php +++ b/src/applications/project/view/ProjectBoardTaskCard.php @@ -3,6 +3,7 @@ final class ProjectBoardTaskCard extends Phobject { private $viewer; + private $project; private $task; private $owner; private $canEdit; @@ -15,6 +16,14 @@ return $this->viewer; } + public function setProject(PhabricatorProject $project) { + $this->project = $project; + return $this; + } + public function getProject() { + return $this->task; + } + public function setTask(ManiphestTask $task) { $this->task = $task; return $this; @@ -44,13 +53,14 @@ $task = $this->getTask(); $owner = $this->getOwner(); $can_edit = $this->getCanEdit(); + $viewer = $this->getViewer(); $color_map = ManiphestTaskPriority::getColorMap(); $bar_color = idx($color_map, $task->getPriority(), 'grey'); $card = id(new PHUIObjectItemView()) ->setObject($task) - ->setUser($this->getViewer()) + ->setUser($viewer) ->setObjectName('T'.$task->getID()) ->setHeader($task->getTitle()) ->setGrippable($can_edit) @@ -73,6 +83,18 @@ $card->addAttribute($owner->renderLink()); } + $project_phids = array_fuse($task->getProjectPHIDs()); + unset($project_phids[$this->project->getPHID()]); + + $handle_list = $viewer->loadHandles($project_phids); + $tag_list = id(new PHUIHandleTagListView()) + ->setSlim(true) + ->setHandles($handle_list); + + if (!$tag_list->isEmpty()) { + $card->addAttribute($tag_list); + } + return $card; }