Path: blob/master/src/applications/owners/engineextension/PhabricatorOwnersHovercardEngineExtension.php
12256 views
<?php12final class PhabricatorOwnersHovercardEngineExtension3extends PhabricatorHovercardEngineExtension {45const EXTENSIONKEY = 'owners';67public function isExtensionEnabled() {8return PhabricatorApplication::isClassInstalled(9'PhabricatorOwnersApplication');10}1112public function getExtensionName() {13return pht('Owner Packages');14}1516public function canRenderObjectHovercard($object) {17return ($object instanceof PhabricatorOwnersPackage);18}1920public function willRenderHovercards(array $objects) {21$viewer = $this->getViewer();22$phids = mpull($objects, 'getPHID');2324$packages = id(new PhabricatorOwnersPackageQuery())25->setViewer($viewer)26->withPHIDs($phids)27->execute();28$packages = mpull($packages, null, 'getPHID');2930return array(31'packages' => $packages,32);33}3435public function renderHovercard(36PHUIHovercardView $hovercard,37PhabricatorObjectHandle $handle,38$object,39$data) {4041$viewer = $this->getViewer();4243$package = idx($data['packages'], $object->getPHID());44if (!$package) {45return;46}4748$title = pht('%s: %s', 'O'.$package->getID(), $package->getName());49$hovercard->setTitle($title);5051$dominion = $package->getDominion();52$dominion_map = PhabricatorOwnersPackage::getDominionOptionsMap();53$spec = idx($dominion_map, $dominion, array());54$name = idx($spec, 'short', $dominion);55$hovercard->addField(pht('Dominion'), $name);5657$auto = $package->getAutoReview();58$autoreview_map = PhabricatorOwnersPackage::getAutoreviewOptionsMap();59$spec = idx($autoreview_map, $auto, array());60$name = idx($spec, 'name', $auto);61$hovercard->addField(pht('Auto Review'), $name);6263if ($package->isArchived()) {64$tag = id(new PHUITagView())65->setName(pht('Archived'))66->setColor(PHUITagView::COLOR_INDIGO)67->setType(PHUITagView::TYPE_OBJECT);68$hovercard->addTag($tag);69}7071$owner_phids = $package->getOwnerPHIDs();7273$hovercard->addField(74pht('Owners'),75$viewer->renderHandleList($owner_phids)->setAsInline(true));7677$description = $package->getDescription();78if (strlen($description)) {79$description = id(new PhutilUTF8StringTruncator())80->setMaximumGlyphs(120)81->truncateString($description);8283$hovercard->addField(pht('Description'), $description);84}8586}8788}899091