Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/nuance/controller/NuanceItemManageController.php
12256 views
1
<?php
2
3
final class NuanceItemManageController extends NuanceController {
4
5
public function handleRequest(AphrontRequest $request) {
6
$viewer = $this->getViewer();
7
$id = $request->getURIData('id');
8
9
$item = id(new NuanceItemQuery())
10
->setViewer($viewer)
11
->withIDs(array($id))
12
->executeOne();
13
if (!$item) {
14
return new Aphront404Response();
15
}
16
17
$title = pht('Item %d', $item->getID());
18
19
$crumbs = $this->buildApplicationCrumbs();
20
$crumbs->addTextCrumb(
21
pht('Items'),
22
$this->getApplicationURI('item/'));
23
$crumbs->addTextCrumb(
24
$title,
25
$item->getURI());
26
$crumbs->addTextCrumb(pht('Manage'));
27
$crumbs->setBorder(true);
28
29
$properties = $this->buildPropertyView($item);
30
$curtain = $this->buildCurtain($item);
31
32
$header = id(new PHUIHeaderView())
33
->setHeader($title);
34
35
$timeline = $this->buildTransactionTimeline(
36
$item,
37
new NuanceItemTransactionQuery());
38
$timeline->setShouldTerminate(true);
39
40
$view = id(new PHUITwoColumnView())
41
->setHeader($header)
42
->setCurtain($curtain)
43
->addPropertySection(pht('Details'), $properties)
44
->setMainColumn($timeline);
45
46
return $this->newPage()
47
->setTitle($title)
48
->setCrumbs($crumbs)
49
->appendChild($view);
50
}
51
52
private function buildPropertyView(NuanceItem $item) {
53
$viewer = $this->getViewer();
54
55
$properties = id(new PHUIPropertyListView())
56
->setUser($viewer);
57
58
$properties->addProperty(
59
pht('Date Created'),
60
phabricator_datetime($item->getDateCreated(), $viewer));
61
62
$requestor_phid = $item->getRequestorPHID();
63
if ($requestor_phid) {
64
$requestor_view = $viewer->renderHandle($requestor_phid);
65
} else {
66
$requestor_view = phutil_tag('em', array(), pht('None'));
67
}
68
$properties->addProperty(pht('Requestor'), $requestor_view);
69
70
$properties->addProperty(
71
pht('Source'),
72
$viewer->renderHandle($item->getSourcePHID()));
73
74
$queue_phid = $item->getQueuePHID();
75
if ($queue_phid) {
76
$queue_view = $viewer->renderHandle($queue_phid);
77
} else {
78
$queue_view = phutil_tag('em', array(), pht('None'));
79
}
80
$properties->addProperty(pht('Queue'), $queue_view);
81
82
$source = $item->getSource();
83
$definition = $source->getDefinition();
84
85
$definition->renderItemEditProperties(
86
$viewer,
87
$item,
88
$properties);
89
90
return $properties;
91
}
92
93
private function buildCurtain(NuanceItem $item) {
94
$viewer = $this->getViewer();
95
$id = $item->getID();
96
97
$curtain = $this->newCurtainView($item);
98
99
$curtain->addAction(
100
id(new PhabricatorActionView())
101
->setName(pht('View Item'))
102
->setIcon('fa-eye')
103
->setHref($item->getURI()));
104
105
return $curtain;
106
}
107
108
109
}
110
111