@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 AlmanacNetworkViewController
4 extends AlmanacNetworkController {
5
6 public function shouldAllowPublic() {
7 return true;
8 }
9
10 public function handleRequest(AphrontRequest $request) {
11 $viewer = $request->getViewer();
12
13 $id = $request->getURIData('id');
14 $network = id(new AlmanacNetworkQuery())
15 ->setViewer($viewer)
16 ->withIDs(array($id))
17 ->executeOne();
18 if (!$network) {
19 return new Aphront404Response();
20 }
21
22 $title = pht('Network %s', $network->getName());
23
24 $curtain = $this->buildCurtain($network);
25
26 $header = id(new PHUIHeaderView())
27 ->setUser($viewer)
28 ->setHeader($network->getName())
29 ->setHeaderIcon('fa-globe')
30 ->setPolicyObject($network);
31
32 $crumbs = $this->buildApplicationCrumbs();
33 $crumbs->addTextCrumb($network->getName());
34 $crumbs->setBorder(true);
35
36 $timeline = $this->buildTransactionTimeline(
37 $network,
38 new AlmanacNetworkTransactionQuery());
39 $timeline->setShouldTerminate(true);
40
41 $view = id(new PHUITwoColumnView())
42 ->setHeader($header)
43 ->setCurtain($curtain)
44 ->setMainColumn(array(
45 $timeline,
46 ));
47
48 return $this->newPage()
49 ->setTitle($title)
50 ->setCrumbs($crumbs)
51 ->appendChild(
52 array(
53 $view,
54 ));
55 }
56
57
58 private function buildCurtain(AlmanacNetwork $network) {
59 $viewer = $this->getViewer();
60
61 $can_edit = PhabricatorPolicyFilter::hasCapability(
62 $viewer,
63 $network,
64 PhabricatorPolicyCapability::CAN_EDIT);
65
66 $id = $network->getID();
67 $edit_uri = $this->getApplicationURI("network/edit/{$id}/");
68
69 $curtain = $this->newCurtainView($network);
70
71 $curtain->addAction(
72 id(new PhabricatorActionView())
73 ->setIcon('fa-pencil')
74 ->setName(pht('Edit Network'))
75 ->setHref($edit_uri)
76 ->setWorkflow(!$can_edit)
77 ->setDisabled(!$can_edit));
78
79 return $curtain;
80 }
81
82}