Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/legalpad/controller/LegalpadDocumentSignatureListController.php
13452 views
1
<?php
2
3
final class LegalpadDocumentSignatureListController extends LegalpadController {
4
5
private $document;
6
7
public function handleRequest(AphrontRequest $request) {
8
$viewer = $request->getViewer();
9
$id = $request->getURIData('id');
10
$querykey = $request->getURIData('queryKey');
11
12
if ($id) {
13
$document = id(new LegalpadDocumentQuery())
14
->setViewer($viewer)
15
->withIDs(array($id))
16
->requireCapabilities(
17
array(
18
PhabricatorPolicyCapability::CAN_VIEW,
19
PhabricatorPolicyCapability::CAN_EDIT,
20
))
21
->executeOne();
22
if (!$document) {
23
return new Aphront404Response();
24
}
25
26
$this->document = $document;
27
}
28
29
$engine = id(new LegalpadDocumentSignatureSearchEngine());
30
31
if ($this->document) {
32
$engine->setDocument($this->document);
33
}
34
35
$controller = id(new PhabricatorApplicationSearchController())
36
->setQueryKey($querykey)
37
->setSearchEngine($engine)
38
->setNavigation($this->buildSideNav());
39
40
return $this->delegateToController($controller);
41
}
42
43
public function buildSideNav($for_app = false) {
44
$viewer = $this->getViewer();
45
46
$nav = new AphrontSideNavFilterView();
47
$nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
48
49
$engine = id(new LegalpadDocumentSignatureSearchEngine())
50
->setViewer($viewer);
51
52
if ($this->document) {
53
$engine->setDocument($this->document);
54
}
55
56
$engine->addNavigationItems($nav->getMenu());
57
58
return $nav;
59
}
60
61
protected function buildApplicationCrumbs() {
62
$crumbs = parent::buildApplicationCrumbs();
63
64
if ($this->document) {
65
$crumbs->addTextCrumb(
66
$this->document->getMonogram(),
67
'/'.$this->document->getMonogram());
68
$crumbs->addTextCrumb(
69
pht('Manage'),
70
$this->getApplicationURI('view/'.$this->document->getID().'/'));
71
} else {
72
$crumbs->addTextCrumb(
73
pht('Signatures'),
74
'/legalpad/signatures/');
75
}
76
77
return $crumbs;
78
}
79
80
}
81
82