Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/almanac/controller/AlmanacNamespaceViewController.php
12262 views
1
<?php
2
3
final class AlmanacNamespaceViewController
4
extends AlmanacNamespaceController {
5
6
public function shouldAllowPublic() {
7
return true;
8
}
9
10
public function handleRequest(AphrontRequest $request) {
11
$viewer = $request->getViewer();
12
13
$id = $request->getURIData('id');
14
$namespace = id(new AlmanacNamespaceQuery())
15
->setViewer($viewer)
16
->withIDs(array($id))
17
->executeOne();
18
if (!$namespace) {
19
return new Aphront404Response();
20
}
21
22
$title = pht('Namespace %s', $namespace->getName());
23
24
$curtain = $this->buildCurtain($namespace);
25
26
$header = id(new PHUIHeaderView())
27
->setUser($viewer)
28
->setHeader($namespace->getName())
29
->setPolicyObject($namespace)
30
->setHeaderIcon('fa-asterisk');
31
32
$crumbs = $this->buildApplicationCrumbs();
33
$crumbs->addTextCrumb($namespace->getName());
34
$crumbs->setBorder(true);
35
36
$timeline = $this->buildTransactionTimeline(
37
$namespace,
38
new AlmanacNamespaceTransactionQuery());
39
$timeline->setShouldTerminate(true);
40
41
$view = id(new PHUITwoColumnView())
42
->setHeader($header)
43
->setCurtain($curtain)
44
->setMainColumn(array(
45
$timeline,
46
));
47
48
return $this->newPage()
49
->setTitle($title)
50
->setCrumbs($crumbs)
51
->appendChild(
52
array(
53
$view,
54
));
55
}
56
57
private function buildCurtain(AlmanacNamespace $namespace) {
58
$viewer = $this->getViewer();
59
60
$can_edit = PhabricatorPolicyFilter::hasCapability(
61
$viewer,
62
$namespace,
63
PhabricatorPolicyCapability::CAN_EDIT);
64
65
$id = $namespace->getID();
66
$edit_uri = $this->getApplicationURI("namespace/edit/{$id}/");
67
68
$curtain = $this->newCurtainView($namespace);
69
70
$curtain->addAction(
71
id(new PhabricatorActionView())
72
->setIcon('fa-pencil')
73
->setName(pht('Edit Namespace'))
74
->setHref($edit_uri)
75
->setWorkflow(!$can_edit)
76
->setDisabled(!$can_edit));
77
78
return $curtain;
79
}
80
81
}
82
83