@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 DrydockConsoleController extends DrydockController {
4
5 public function shouldAllowPublic() {
6 return true;
7 }
8
9 public function buildSideNavView() {
10 $nav = new AphrontSideNavFilterView();
11 $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
12
13 // These are only used on mobile.
14
15 $nav->addFilter('blueprint', pht('Blueprints'));
16 $nav->addFilter('resource', pht('Resources'));
17 $nav->addFilter('lease', pht('Leases'));
18 $nav->addFilter('operation', pht('Repository Operations'));
19
20 $nav->selectFilter(null);
21
22 return $nav;
23 }
24
25 public function handleRequest(AphrontRequest $request) {
26 $viewer = $request->getViewer();
27
28 $menu = id(new PHUIObjectItemListView())
29 ->setUser($viewer)
30 ->setBig(true);
31
32 $menu->addItem(
33 id(new PHUIObjectItemView())
34 ->setHeader(pht('Blueprints'))
35 ->setImageIcon('fa-map-o')
36 ->setHref($this->getApplicationURI('blueprint/'))
37 ->setClickable(true)
38 ->addAttribute(
39 pht(
40 'Configure blueprints so Drydock can build resources, like '.
41 'hosts and working copies.')));
42
43 $menu->addItem(
44 id(new PHUIObjectItemView())
45 ->setHeader(pht('Resources'))
46 ->setImageIcon('fa-map')
47 ->setHref($this->getApplicationURI('resource/'))
48 ->setClickable(true)
49 ->addAttribute(
50 pht('View and manage resources Drydock has built, like hosts.')));
51
52 $menu->addItem(
53 id(new PHUIObjectItemView())
54 ->setHeader(pht('Leases'))
55 ->setImageIcon('fa-link')
56 ->setHref($this->getApplicationURI('lease/'))
57 ->setClickable(true)
58 ->addAttribute(pht('Manage leases on resources.')));
59
60 $menu->addItem(
61 id(new PHUIObjectItemView())
62 ->setHeader(pht('Repository Operations'))
63 ->setImageIcon('fa-fighter-jet')
64 ->setHref($this->getApplicationURI('operation/'))
65 ->setClickable(true)
66 ->addAttribute(pht('Review the repository operation queue.')));
67
68 $crumbs = $this->buildApplicationCrumbs();
69 $crumbs->addTextCrumb(pht('Console'));
70 $crumbs->setBorder(true);
71
72 $title = pht('Drydock Console');
73
74 $box = id(new PHUIObjectBoxView())
75 ->setHeaderText($title)
76 ->setBackground(PHUIObjectBoxView::WHITE_CONFIG)
77 ->setObjectList($menu);
78
79 $launcher_view = id(new PHUILauncherView())
80 ->appendChild($box);
81
82 $view = id(new PHUITwoColumnView())
83 ->setFooter($launcher_view);
84
85 return $this->newPage()
86 ->setTitle($title)
87 ->setCrumbs($crumbs)
88 ->appendChild($view);
89 }
90
91}