Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / phlux / controller / PhluxViewController.php
blob6ad0fe22cd2e5388aef78229be59e9a914fa7a92
1 <?php
3 final class PhluxViewController extends PhluxController {
5 public function handleRequest(AphrontRequest $request) {
6 $viewer = $this->getViewer();
7 $key = $request->getURIData('key');
9 $var = id(new PhluxVariableQuery())
10 ->setViewer($viewer)
11 ->withKeys(array($key))
12 ->executeOne();
14 if (!$var) {
15 return new Aphront404Response();
18 $title = $var->getVariableKey();
20 $crumbs = $this->buildApplicationCrumbs();
21 $crumbs->addTextCrumb($title, $request->getRequestURI());
22 $crumbs->setBorder(true);
24 $curtain = $this->buildCurtainView($var);
26 $header = id(new PHUIHeaderView())
27 ->setHeader($title)
28 ->setUser($viewer)
29 ->setPolicyObject($var)
30 ->setHeaderIcon('fa-copy');
32 $display_value = json_encode($var->getVariableValue());
34 $properties = id(new PHUIPropertyListView())
35 ->setUser($viewer)
36 ->addProperty(pht('Value'), $display_value);
38 $timeline = $this->buildTransactionTimeline(
39 $var,
40 new PhluxTransactionQuery());
41 $timeline->setShouldTerminate(true);
43 $object_box = id(new PHUIObjectBoxView())
44 ->setHeaderText(pht('Details'))
45 ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
46 ->addPropertyList($properties);
48 $view = id(new PHUITwoColumnView())
49 ->setHeader($header)
50 ->setCurtain($curtain)
51 ->setMainColumn(array(
52 $object_box,
53 $timeline,
54 ));
56 return $this->newPage()
57 ->setTitle($title)
58 ->setCrumbs($crumbs)
59 ->appendChild($view);
62 private function buildCurtainView(PhluxVariable $var) {
63 $viewer = $this->getViewer();
65 $curtain = $this->newCurtainView($var);
67 $can_edit = PhabricatorPolicyFilter::hasCapability(
68 $viewer,
69 $var,
70 PhabricatorPolicyCapability::CAN_EDIT);
72 $curtain->addAction(
73 id(new PhabricatorActionView())
74 ->setIcon('fa-pencil')
75 ->setName(pht('Edit Variable'))
76 ->setHref($this->getApplicationURI('/edit/'.$var->getVariableKey().'/'))
77 ->setDisabled(!$can_edit)
78 ->setWorkflow(!$can_edit));
80 return $curtain;