Path: blob/master/src/applications/badges/controller/PhabricatorBadgesViewController.php
12256 views
<?php12final class PhabricatorBadgesViewController3extends PhabricatorBadgesProfileController {45public function shouldAllowPublic() {6return true;7}89public function handleRequest(AphrontRequest $request) {10$viewer = $request->getViewer();11$id = $request->getURIData('id');1213$badge = id(new PhabricatorBadgesQuery())14->setViewer($viewer)15->withIDs(array($id))16->executeOne();17if (!$badge) {18return new Aphront404Response();19}2021$this->setBadge($badge);2223$crumbs = $this->buildApplicationCrumbs();24$title = $badge->getName();2526$header = $this->buildHeaderView();27$curtain = $this->buildCurtain($badge);28$details = $this->buildDetailsView($badge);2930$timeline = $this->buildTransactionTimeline(31$badge,32new PhabricatorBadgesTransactionQuery());3334$comment_view = id(new PhabricatorBadgesEditEngine())35->setViewer($viewer)36->buildEditEngineCommentView($badge);3738$view = id(new PHUITwoColumnView())39->setHeader($header)40->setCurtain($curtain)41->setMainColumn(array(42$timeline,43$comment_view,44))45->addPropertySection(pht('Description'), $details);4647$navigation = $this->buildSideNavView('view');4849return $this->newPage()50->setTitle($title)51->setCrumbs($crumbs)52->setPageObjectPHIDs(array($badge->getPHID()))53->setNavigation($navigation)54->appendChild($view);55}5657private function buildDetailsView(58PhabricatorBadgesBadge $badge) {59$viewer = $this->getViewer();6061$view = id(new PHUIPropertyListView())62->setUser($viewer);6364$description = $badge->getDescription();65if (strlen($description)) {66$view->addTextContent(67new PHUIRemarkupView($viewer, $description));68}6970$badge = id(new PHUIBadgeView())71->setIcon($badge->getIcon())72->setHeader($badge->getName())73->setSubhead($badge->getFlavor())74->setQuality($badge->getQuality());7576$view->addTextContent($badge);7778return $view;79}8081private function buildCurtain(PhabricatorBadgesBadge $badge) {82$viewer = $this->getViewer();8384$can_edit = PhabricatorPolicyFilter::hasCapability(85$viewer,86$badge,87PhabricatorPolicyCapability::CAN_EDIT);8889$id = $badge->getID();90$edit_uri = $this->getApplicationURI("/edit/{$id}/");91$archive_uri = $this->getApplicationURI("/archive/{$id}/");9293$curtain = $this->newCurtainView($badge);9495$curtain->addAction(96id(new PhabricatorActionView())97->setName(pht('Edit Badge'))98->setIcon('fa-pencil')99->setDisabled(!$can_edit)100->setHref($edit_uri));101102if ($badge->isArchived()) {103$curtain->addAction(104id(new PhabricatorActionView())105->setName(pht('Activate Badge'))106->setIcon('fa-check')107->setDisabled(!$can_edit)108->setWorkflow($can_edit)109->setHref($archive_uri));110} else {111$curtain->addAction(112id(new PhabricatorActionView())113->setName(pht('Archive Badge'))114->setIcon('fa-ban')115->setDisabled(!$can_edit)116->setWorkflow($can_edit)117->setHref($archive_uri));118}119120return $curtain;121}122123}124125126