diff --git a/src/applications/maniphest/engineextension/ManiphestHovercardEngineExtension.php b/src/applications/maniphest/engineextension/ManiphestHovercardEngineExtension.php --- a/src/applications/maniphest/engineextension/ManiphestHovercardEngineExtension.php +++ b/src/applications/maniphest/engineextension/ManiphestHovercardEngineExtension.php @@ -25,23 +25,53 @@ $data) { $viewer = $this->getViewer(); - $hovercard - ->setTitle($task->getMonogram()) - ->setDetail($task->getTitle()); + $id = $task->getID(); + $task = id(new ManiphestTaskQuery()) + ->setViewer($viewer) + ->withIDs(array($id)) + ->needProjectPHIDs(true) + ->executeOne(); + $phids = array(); $owner_phid = $task->getOwnerPHID(); if ($owner_phid) { - $owner = $viewer->renderHandle($owner_phid); - } else { - $owner = phutil_tag('em', array(), pht('None')); + $phids[$owner_phid] = $owner_phid; + } + foreach ($task->getProjectPHIDs() as $phid) { + $phids[$phid] = $phid; + } + + $handles = $viewer->loadHandles($phids); + $handles = iterator_to_array($handles); + + $card = id(new ProjectBoardTaskCard()) + ->setViewer($viewer) + ->setTask($task) + ->setCanEdit(false); + + $owner_phid = $task->getOwnerPHID(); + if ($owner_phid) { + $owner_handle = $handles[$owner_phid]; + $card->setOwner($owner_handle); + } + + $project_phids = $task->getProjectPHIDs(); + $project_handles = array_select_keys($handles, $project_phids); + if ($project_handles) { + $card->setProjectHandles($project_handles); + } + + $cover_phid = $task->getCoverImageThumbnailPHID(); + if ($cover_phid) { + $cover_file = idx($this->coverFiles, $cover_phid); + if ($cover_file) { + $card->setCoverImageFile($cover_file); + } } - $hovercard->addField(pht('Assigned To'), $owner); - $hovercard->addField( - pht('Priority'), - ManiphestTaskPriority::getTaskPriorityName($task->getPriority())); + $view = hsprintf('%s', $card); // Hlaps + $hovercard->appendChild($view); - $hovercard->addTag(ManiphestView::renderTagForTask($task)); } }