@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<?php
2
3final class DrydockLeaseListView extends AphrontView {
4
5 private $leases;
6
7 /**
8 * @param array<DrydockLease> $leases
9 */
10 public function setLeases(array $leases) {
11 assert_instances_of($leases, DrydockLease::class);
12 $this->leases = $leases;
13 return $this;
14 }
15
16 public function render() {
17 $leases = $this->leases;
18 $viewer = $this->getUser();
19
20 $view = new PHUIObjectItemListView();
21
22 foreach ($leases as $lease) {
23 $item = id(new PHUIObjectItemView())
24 ->setUser($viewer)
25 ->setHeader($lease->getLeaseName())
26 ->setHref('/drydock/lease/'.$lease->getID().'/');
27
28 $resource_phid = $lease->getResourcePHID();
29 if ($resource_phid) {
30 $item->addAttribute(
31 $viewer->renderHandle($resource_phid));
32 } else {
33 $item->addAttribute(
34 pht(
35 'Resource: %s',
36 $lease->getResourceType()));
37 }
38
39 $item->setEpoch($lease->getDateCreated());
40
41 $icon = $lease->getStatusIcon();
42 $color = $lease->getStatusColor();
43 $label = $lease->getStatusDisplayName();
44
45 $item->setStatusIcon("{$icon} {$color}", $label);
46
47 $view->addItem($item);
48 }
49
50 return $view;
51 }
52
53}