3
final class PhabricatorSpacesViewController
4
extends PhabricatorSpacesController {
6
public function shouldAllowPublic() {
10
public function handleRequest(AphrontRequest $request) {
11
$viewer = $this->getViewer();
13
$space = id(new PhabricatorSpacesNamespaceQuery())
15
->withIDs(array($request->getURIData('id')))
18
return new Aphront404Response();
21
$action_list = $this->buildActionListView($space);
22
$property_list = $this->buildPropertyListView($space);
23
$property_list->setActionList($action_list);
25
$xactions = id(new PhabricatorSpacesNamespaceTransactionQuery())
27
->withObjectPHIDs(array($space->getPHID()))
30
$timeline = $this->buildTransactionTimeline(
32
new PhabricatorSpacesNamespaceTransactionQuery());
33
$timeline->setShouldTerminate(true);
35
$header = id(new PHUIHeaderView())
37
->setHeader($space->getNamespaceName())
38
->setPolicyObject($space);
40
if ($space->getIsArchived()) {
41
$header->setStatus('fa-ban', 'red', pht('Archived'));
43
$header->setStatus('fa-check', 'bluegrey', pht('Active'));
46
$box = id(new PHUIObjectBoxView())
48
->addPropertyList($property_list);
50
$crumbs = $this->buildApplicationCrumbs();
51
$crumbs->addTextCrumb($space->getMonogram());
53
return $this->buildApplicationPage(
60
'title' => array($space->getMonogram(), $space->getNamespaceName()),
64
private function buildPropertyListView(PhabricatorSpacesNamespace $space) {
65
$viewer = $this->getRequest()->getUser();
67
$list = id(new PHUIPropertyListView())
72
$space->getIsDefaultNamespace()
76
$descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions(
82
$descriptions[PhabricatorPolicyCapability::CAN_EDIT]);
84
$description = $space->getDescription();
85
if (strlen($description)) {
86
$description = PhabricatorMarkupEngine::renderOneObject(
87
id(new PhabricatorMarkupOneOff())->setContent($description),
91
$list->addSectionHeader(
93
PHUIPropertyListView::ICON_SUMMARY);
95
$list->addTextContent($description);
101
private function buildActionListView(PhabricatorSpacesNamespace $space) {
102
$viewer = $this->getRequest()->getUser();
104
$list = id(new PhabricatorActionListView())
106
->setObjectURI('/'.$space->getMonogram());
108
$can_edit = PhabricatorPolicyFilter::hasCapability(
111
PhabricatorPolicyCapability::CAN_EDIT);
114
id(new PhabricatorActionView())
115
->setName(pht('Edit Space'))
116
->setIcon('fa-pencil')
117
->setHref($this->getApplicationURI('edit/'.$space->getID().'/'))
118
->setWorkflow(!$can_edit)
119
->setDisabled(!$can_edit));
121
$id = $space->getID();
123
if ($space->getIsArchived()) {
125
id(new PhabricatorActionView())
126
->setName(pht('Activate Space'))
127
->setIcon('fa-check')
128
->setHref($this->getApplicationURI("activate/{$id}/"))
129
->setDisabled(!$can_edit)
130
->setWorkflow(true));
133
id(new PhabricatorActionView())
134
->setName(pht('Archive Space'))
136
->setHref($this->getApplicationURI("archive/{$id}/"))
137
->setDisabled(!$can_edit)
138
->setWorkflow(true));