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())
14 return new Aphront404Response();
17 $title = pht('Item %d', $item->getID());
18 $name = $item->getDisplayName();
20 $crumbs = $this->buildApplicationCrumbs();
21 $crumbs->addTextCrumb(
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(
32 new NuanceItemTransactionQuery());
39 $header = id(new PHUIHeaderView())
42 $view = id(new PHUITwoColumnView())
44 ->setCurtain($curtain)
45 ->setMainColumn($main);
47 return $this->newPage()
53 private function buildCurtain(NuanceItem
$item) {
54 $viewer = $this->getViewer();
57 $can_edit = PhabricatorPolicyFilter
::hasCapability(
60 PhabricatorPolicyCapability
::CAN_EDIT
);
62 $curtain = $this->newCurtainView($item);
65 id(new PhabricatorActionView())
66 ->setName(pht('Manage Item'))
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);
84 private function buildContent(NuanceItem
$item) {
85 $viewer = $this->getViewer();
86 $impl = $item->getImplementation();
88 $impl->setViewer($viewer);
89 return $impl->buildItemView($item);