Path: blob/master/src/applications/almanac/controller/AlmanacNamespaceViewController.php
12262 views
<?php12final class AlmanacNamespaceViewController3extends AlmanacNamespaceController {45public function shouldAllowPublic() {6return true;7}89public function handleRequest(AphrontRequest $request) {10$viewer = $request->getViewer();1112$id = $request->getURIData('id');13$namespace = id(new AlmanacNamespaceQuery())14->setViewer($viewer)15->withIDs(array($id))16->executeOne();17if (!$namespace) {18return new Aphront404Response();19}2021$title = pht('Namespace %s', $namespace->getName());2223$curtain = $this->buildCurtain($namespace);2425$header = id(new PHUIHeaderView())26->setUser($viewer)27->setHeader($namespace->getName())28->setPolicyObject($namespace)29->setHeaderIcon('fa-asterisk');3031$crumbs = $this->buildApplicationCrumbs();32$crumbs->addTextCrumb($namespace->getName());33$crumbs->setBorder(true);3435$timeline = $this->buildTransactionTimeline(36$namespace,37new AlmanacNamespaceTransactionQuery());38$timeline->setShouldTerminate(true);3940$view = id(new PHUITwoColumnView())41->setHeader($header)42->setCurtain($curtain)43->setMainColumn(array(44$timeline,45));4647return $this->newPage()48->setTitle($title)49->setCrumbs($crumbs)50->appendChild(51array(52$view,53));54}5556private function buildCurtain(AlmanacNamespace $namespace) {57$viewer = $this->getViewer();5859$can_edit = PhabricatorPolicyFilter::hasCapability(60$viewer,61$namespace,62PhabricatorPolicyCapability::CAN_EDIT);6364$id = $namespace->getID();65$edit_uri = $this->getApplicationURI("namespace/edit/{$id}/");6667$curtain = $this->newCurtainView($namespace);6869$curtain->addAction(70id(new PhabricatorActionView())71->setIcon('fa-pencil')72->setName(pht('Edit Namespace'))73->setHref($edit_uri)74->setWorkflow(!$can_edit)75->setDisabled(!$can_edit));7677return $curtain;78}7980}818283