@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 89 lines 2.4 kB view raw
1<?php 2 3final class PhabricatorOwnersHovercardEngineExtension 4 extends PhabricatorHovercardEngineExtension { 5 6 const EXTENSIONKEY = 'owners'; 7 8 public function isExtensionEnabled() { 9 return PhabricatorApplication::isClassInstalled( 10 PhabricatorOwnersApplication::class); 11 } 12 13 public function getExtensionName() { 14 return pht('Owner Packages'); 15 } 16 17 public function canRenderObjectHovercard($object) { 18 return ($object instanceof PhabricatorOwnersPackage); 19 } 20 21 public function willRenderHovercards(array $objects) { 22 $viewer = $this->getViewer(); 23 $phids = mpull($objects, 'getPHID'); 24 25 $packages = id(new PhabricatorOwnersPackageQuery()) 26 ->setViewer($viewer) 27 ->withPHIDs($phids) 28 ->execute(); 29 $packages = mpull($packages, null, 'getPHID'); 30 31 return array( 32 'packages' => $packages, 33 ); 34 } 35 36 public function renderHovercard( 37 PHUIHovercardView $hovercard, 38 PhabricatorObjectHandle $handle, 39 $object, 40 $data) { 41 42 $viewer = $this->getViewer(); 43 44 $package = idx($data['packages'], $object->getPHID()); 45 if (!$package) { 46 return; 47 } 48 49 $title = pht('%s: %s', 'O'.$package->getID(), $package->getName()); 50 $hovercard->setTitle($title); 51 52 $dominion = $package->getDominion(); 53 $dominion_map = PhabricatorOwnersPackage::getDominionOptionsMap(); 54 $spec = idx($dominion_map, $dominion, array()); 55 $name = idx($spec, 'short', $dominion); 56 $hovercard->addField(pht('Dominion'), $name); 57 58 $auto = $package->getAutoReview(); 59 $autoreview_map = PhabricatorOwnersPackage::getAutoreviewOptionsMap(); 60 $spec = idx($autoreview_map, $auto, array()); 61 $name = idx($spec, 'name', $auto); 62 $hovercard->addField(pht('Auto Review'), $name); 63 64 if ($package->isArchived()) { 65 $tag = id(new PHUITagView()) 66 ->setName(pht('Archived')) 67 ->setColor(PHUITagView::COLOR_INDIGO) 68 ->setType(PHUITagView::TYPE_OBJECT); 69 $hovercard->addTag($tag); 70 } 71 72 $owner_phids = $package->getOwnerPHIDs(); 73 74 $hovercard->addField( 75 pht('Owners'), 76 $viewer->renderHandleList($owner_phids)->setAsInline(true)); 77 78 $description = $package->getDescription(); 79 if (strlen($description)) { 80 $description = id(new PhutilUTF8StringTruncator()) 81 ->setMaximumGlyphs(120) 82 ->truncateString($description); 83 84 $hovercard->addField(pht('Description'), $description); 85 } 86 87 } 88 89}