@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 DrydockAuthorizationListController
4 extends DrydockController {
5
6 private $blueprint;
7
8 public function setBlueprint(DrydockBlueprint $blueprint) {
9 $this->blueprint = $blueprint;
10 return $this;
11 }
12
13 public function getBlueprint() {
14 return $this->blueprint;
15 }
16
17 public function shouldAllowPublic() {
18 return true;
19 }
20
21 public function handleRequest(AphrontRequest $request) {
22 $viewer = $this->getViewer();
23
24 $engine = new DrydockAuthorizationSearchEngine();
25
26 $id = $request->getURIData('id');
27
28 $blueprint = id(new DrydockBlueprintQuery())
29 ->setViewer($viewer)
30 ->withIDs(array($id))
31 ->executeOne();
32 if (!$blueprint) {
33 return new Aphront404Response();
34 }
35
36 $this->setBlueprint($blueprint);
37 $engine->setBlueprint($blueprint);
38
39 $querykey = $request->getURIData('queryKey');
40
41 $controller = id(new PhabricatorApplicationSearchController())
42 ->setQueryKey($querykey)
43 ->setSearchEngine($engine)
44 ->setNavigation($this->buildSideNavView());
45
46 return $this->delegateToController($controller);
47 }
48
49 public function buildSideNavView() {
50 $nav = new AphrontSideNavFilterView();
51 $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
52
53 $engine = id(new DrydockAuthorizationSearchEngine())
54 ->setViewer($this->getViewer());
55
56 $engine->setBlueprint($this->getBlueprint());
57 $engine->addNavigationItems($nav->getMenu());
58
59 $nav->selectFilter(null);
60
61 return $nav;
62 }
63
64 protected function buildApplicationCrumbs() {
65 $crumbs = parent::buildApplicationCrumbs();
66
67 $blueprint = $this->getBlueprint();
68 if ($blueprint) {
69 $id = $blueprint->getID();
70
71 $crumbs->addTextCrumb(
72 pht('Blueprints'),
73 $this->getApplicationURI('blueprint/'));
74
75 $crumbs->addTextCrumb(
76 $blueprint->getBlueprintName(),
77 $this->getApplicationURI("blueprint/{$id}/"));
78
79 $crumbs->addTextCrumb(
80 pht('Authorizations'),
81 $this->getApplicationURI("blueprint/{$id}/authorizations/"));
82 }
83
84 return $crumbs;
85 }
86
87}