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())
11 ->withKeys(array($key))
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())
29 ->setPolicyObject($var)
30 ->setHeaderIcon('fa-copy');
32 $display_value = json_encode($var->getVariableValue());
34 $properties = id(new PHUIPropertyListView())
36 ->addProperty(pht('Value'), $display_value);
38 $timeline = $this->buildTransactionTimeline(
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())
50 ->setCurtain($curtain)
51 ->setMainColumn(array(
56 return $this->newPage()
62 private function buildCurtainView(PhluxVariable
$var) {
63 $viewer = $this->getViewer();
65 $curtain = $this->newCurtainView($var);
67 $can_edit = PhabricatorPolicyFilter
::hasCapability(
70 PhabricatorPolicyCapability
::CAN_EDIT
);
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));