Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / nuance / controller / NuanceItemViewController.php
bloba902dc3b06a480fadf55649ba4d53af8c9e5c83e
1 <?php
3 final class NuanceItemViewController extends NuanceController {
5 public function handleRequest(AphrontRequest $request) {
6 $viewer = $this->getViewer();
7 $id = $request->getURIData('id');
9 $item = id(new NuanceItemQuery())
10 ->setViewer($viewer)
11 ->withIDs(array($id))
12 ->executeOne();
13 if (!$item) {
14 return new Aphront404Response();
17 $title = pht('Item %d', $item->getID());
18 $name = $item->getDisplayName();
20 $crumbs = $this->buildApplicationCrumbs();
21 $crumbs->addTextCrumb(
22 pht('Items'),
23 $this->getApplicationURI('item/'));
24 $crumbs->addTextCrumb($title);
25 $crumbs->setBorder(true);
27 $curtain = $this->buildCurtain($item);
28 $content = $this->buildContent($item);
30 $timeline = $this->buildTransactionTimeline(
31 $item,
32 new NuanceItemTransactionQuery());
34 $main = array(
35 $content,
36 $timeline,
39 $header = id(new PHUIHeaderView())
40 ->setHeader($name);
42 $view = id(new PHUITwoColumnView())
43 ->setHeader($header)
44 ->setCurtain($curtain)
45 ->setMainColumn($main);
47 return $this->newPage()
48 ->setTitle($title)
49 ->setCrumbs($crumbs)
50 ->appendChild($view);
53 private function buildCurtain(NuanceItem $item) {
54 $viewer = $this->getViewer();
55 $id = $item->getID();
57 $can_edit = PhabricatorPolicyFilter::hasCapability(
58 $viewer,
59 $item,
60 PhabricatorPolicyCapability::CAN_EDIT);
62 $curtain = $this->newCurtainView($item);
64 $curtain->addAction(
65 id(new PhabricatorActionView())
66 ->setName(pht('Manage Item'))
67 ->setIcon('fa-cogs')
68 ->setHref($this->getApplicationURI("item/manage/{$id}/")));
70 $impl = $item->getImplementation();
71 $impl->setViewer($viewer);
73 foreach ($impl->getItemActions($item) as $action) {
74 $curtain->addAction($action);
77 foreach ($impl->getItemCurtainPanels($item) as $panel) {
78 $curtain->addPanel($panel);
81 return $curtain;
84 private function buildContent(NuanceItem $item) {
85 $viewer = $this->getViewer();
86 $impl = $item->getImplementation();
88 $impl->setViewer($viewer);
89 return $impl->buildItemView($item);