3 final class HarbormasterUnitMessageViewController
4 extends HarbormasterController
{
6 public function shouldAllowPublic() {
10 public function handleRequest(AphrontRequest
$request) {
11 $viewer = $this->getViewer();
13 $message_id = $request->getURIData('id');
15 $message = id(new HarbormasterBuildUnitMessageQuery())
17 ->withIDs(array($message_id))
20 return new Aphront404Response();
23 $build_target = id(new HarbormasterBuildTargetQuery())
25 ->withPHIDs(array($message->getBuildTargetPHID()))
28 return new Aphront404Response();
31 $build = $build_target->getBuild();
32 $buildable = $build->getBuildable();
33 $buildable_id = $buildable->getID();
35 $id = $message->getID();
36 $display_name = $message->getUnitMessageDisplayName();
38 $status = $message->getResult();
39 $status_icon = HarbormasterUnitStatus
::getUnitStatusIcon($status);
40 $status_color = HarbormasterUnitStatus
::getUnitStatusColor($status);
41 $status_label = HarbormasterUnitStatus
::getUnitStatusLabel($status);
43 $header = id(new PHUIHeaderView())
44 ->setHeader($display_name)
45 ->setStatus($status_icon, $status_color, $status_label);
47 $properties = $this->buildPropertyListView($message);
48 $curtain = $this->buildCurtainView($message, $build);
50 $unit = id(new PHUIObjectBoxView())
51 ->setHeaderText(pht('TEST RESULT'))
52 ->setBackground(PHUIObjectBoxView
::BLUE_PROPERTY
)
53 ->addPropertyList($properties);
55 $crumbs = $this->buildApplicationCrumbs();
56 $this->addBuildableCrumb($crumbs, $buildable);
58 $crumbs->addTextCrumb(
60 "/harbormaster/unit/{$buildable_id}/");
62 $crumbs->addTextCrumb(pht('Unit %d', $id));
63 $crumbs->setBorder(true);
67 $buildable->getMonogram(),
70 $view = id(new PHUITwoColumnView())
72 ->setCurtain($curtain)
73 ->setMainColumn(array(
77 return $this->newPage()
83 private function buildPropertyListView(
84 HarbormasterBuildUnitMessage
$message) {
85 $viewer = $this->getViewer();
87 $view = id(new PHUIPropertyListView())
92 phabricator_datetime($message->getDateCreated(), $viewer));
94 $details = $message->newUnitMessageDetailsView($viewer);
96 $view->addSectionHeader(
98 PHUIPropertyListView
::ICON_TESTPLAN
);
99 $view->addTextContent($details);
104 private function buildCurtainView(
105 HarbormasterBuildUnitMessage
$message,
106 HarbormasterBuild
$build) {
107 $viewer = $this->getViewer();
109 $curtain = $this->newCurtainView($build);
112 id(new PhabricatorActionView())
113 ->setName(pht('View Build'))
114 ->setHref($build->getURI())
115 ->setIcon('fa-wrench'));