@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 PhabricatorConfigIssueViewController
4 extends PhabricatorConfigController {
5
6 public function handleRequest(AphrontRequest $request) {
7 $viewer = $request->getViewer();
8 $issue_key = $request->getURIData('key');
9
10 $engine = new PhabricatorSetupEngine();
11 $response = $engine->execute();
12 if ($response) {
13 return $response;
14 }
15 $issues = $engine->getIssues();
16
17 if (empty($issues[$issue_key])) {
18 $content = id(new PHUIInfoView())
19 ->setSeverity(PHUIInfoView::SEVERITY_NOTICE)
20 ->setTitle(pht('Issue Resolved'))
21 ->appendChild(pht('This setup issue has been resolved. '))
22 ->appendChild(
23 phutil_tag(
24 'a',
25 array(
26 'href' => $this->getApplicationURI('issue/'),
27 ),
28 pht('Return to Open Issue List')));
29 $title = pht('Resolved Issue');
30 } else {
31 $issue = $issues[$issue_key];
32 $content = $this->renderIssue($issue);
33 $title = $issue->getShortName();
34 }
35
36 $crumbs = $this
37 ->buildApplicationCrumbs()
38 ->addTextCrumb(pht('Setup Issues'), $this->getApplicationURI('issue/'))
39 ->addTextCrumb($title, $request->getRequestURI())
40 ->setBorder(true);
41
42 $launcher_view = id(new PHUILauncherView())
43 ->appendChild($content);
44
45 $content = id(new PHUITwoColumnView())
46 ->setFooter($launcher_view);
47
48 return $this->newPage()
49 ->setTitle($title)
50 ->setCrumbs($crumbs)
51 ->appendChild($content);
52 }
53
54 private function renderIssue(PhabricatorSetupIssue $issue) {
55 require_celerity_resource('setup-issue-css');
56
57 $view = new PhabricatorSetupIssueView();
58 $view->setIssue($issue);
59
60 $container = phutil_tag(
61 'div',
62 array(
63 'class' => 'setup-issue-background',
64 ),
65 $view->render());
66
67 return $container;
68 }
69
70}