Path: blob/master/src/applications/harbormaster/controller/HarbormasterUnitMessageViewController.php
12256 views
<?php12final class HarbormasterUnitMessageViewController3extends HarbormasterController {45public function shouldAllowPublic() {6return true;7}89public function handleRequest(AphrontRequest $request) {10$viewer = $this->getViewer();1112$message_id = $request->getURIData('id');1314$message = id(new HarbormasterBuildUnitMessageQuery())15->setViewer($viewer)16->withIDs(array($message_id))17->executeOne();18if (!$message) {19return new Aphront404Response();20}2122$build_target = id(new HarbormasterBuildTargetQuery())23->setViewer($viewer)24->withPHIDs(array($message->getBuildTargetPHID()))25->executeOne();26if (!$build_target) {27return new Aphront404Response();28}2930$build = $build_target->getBuild();31$buildable = $build->getBuildable();32$buildable_id = $buildable->getID();3334$id = $message->getID();35$display_name = $message->getUnitMessageDisplayName();3637$status = $message->getResult();38$status_icon = HarbormasterUnitStatus::getUnitStatusIcon($status);39$status_color = HarbormasterUnitStatus::getUnitStatusColor($status);40$status_label = HarbormasterUnitStatus::getUnitStatusLabel($status);4142$header = id(new PHUIHeaderView())43->setHeader($display_name)44->setStatus($status_icon, $status_color, $status_label);4546$properties = $this->buildPropertyListView($message);47$curtain = $this->buildCurtainView($message, $build);4849$unit = id(new PHUIObjectBoxView())50->setHeaderText(pht('TEST RESULT'))51->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)52->addPropertyList($properties);5354$crumbs = $this->buildApplicationCrumbs();55$this->addBuildableCrumb($crumbs, $buildable);5657$crumbs->addTextCrumb(58pht('Unit Tests'),59"/harbormaster/unit/{$buildable_id}/");6061$crumbs->addTextCrumb(pht('Unit %d', $id));62$crumbs->setBorder(true);6364$title = array(65$display_name,66$buildable->getMonogram(),67);6869$view = id(new PHUITwoColumnView())70->setHeader($header)71->setCurtain($curtain)72->setMainColumn(array(73$unit,74));7576return $this->newPage()77->setTitle($title)78->setCrumbs($crumbs)79->appendChild($view);80}8182private function buildPropertyListView(83HarbormasterBuildUnitMessage $message) {84$viewer = $this->getViewer();8586$view = id(new PHUIPropertyListView())87->setUser($viewer);8889$view->addProperty(90pht('Run At'),91phabricator_datetime($message->getDateCreated(), $viewer));9293$details = $message->newUnitMessageDetailsView($viewer);9495$view->addSectionHeader(96pht('Details'),97PHUIPropertyListView::ICON_TESTPLAN);98$view->addTextContent($details);99100return $view;101}102103private function buildCurtainView(104HarbormasterBuildUnitMessage $message,105HarbormasterBuild $build) {106$viewer = $this->getViewer();107108$curtain = $this->newCurtainView($build);109110$curtain->addAction(111id(new PhabricatorActionView())112->setName(pht('View Build'))113->setHref($build->getURI())114->setIcon('fa-wrench'));115116return $curtain;117}118}119120121