Path: blob/master/src/applications/countdown/controller/PhabricatorCountdownViewController.php
12256 views
<?php12final class PhabricatorCountdownViewController3extends PhabricatorCountdownController {45public function shouldAllowPublic() {6return true;7}89public function handleRequest(AphrontRequest $request) {10$viewer = $request->getViewer();11$id = $request->getURIData('id');1213$countdown = id(new PhabricatorCountdownQuery())14->setViewer($viewer)15->withIDs(array($id))16->executeOne();17if (!$countdown) {18return new Aphront404Response();19}2021$countdown_view = id(new PhabricatorCountdownView())22->setUser($viewer)23->setCountdown($countdown);2425$id = $countdown->getID();26$title = $countdown->getTitle();2728$crumbs = $this29->buildApplicationCrumbs()30->addTextCrumb($countdown->getMonogram())31->setBorder(true);3233$epoch = $countdown->getEpoch();34if ($epoch >= PhabricatorTime::getNow()) {35$icon = 'fa-clock-o';36$color = '';37$status = pht('Running');38} else {39$icon = 'fa-check-square-o';40$color = 'dark';41$status = pht('Launched');42}4344$header = id(new PHUIHeaderView())45->setHeader($title)46->setUser($viewer)47->setPolicyObject($countdown)48->setStatus($icon, $color, $status)49->setHeaderIcon('fa-rocket');5051$curtain = $this->buildCurtain($countdown);52$subheader = $this->buildSubheaderView($countdown);5354$timeline = $this->buildTransactionTimeline(55$countdown,56new PhabricatorCountdownTransactionQuery());5758$comment_view = id(new PhabricatorCountdownEditEngine())59->setViewer($viewer)60->buildEditEngineCommentView($countdown);6162$content = array(63$countdown_view,64$timeline,65$comment_view,66);6768$view = id(new PHUITwoColumnView())69->setHeader($header)70->setSubheader($subheader)71->setCurtain($curtain)72->setMainColumn($content);7374return $this->newPage()75->setTitle($title)76->setCrumbs($crumbs)77->setPageObjectPHIDs(78array(79$countdown->getPHID(),80))81->appendChild($view);82}8384private function buildCurtain(PhabricatorCountdown $countdown) {85$viewer = $this->getViewer();8687$id = $countdown->getID();8889$can_edit = PhabricatorPolicyFilter::hasCapability(90$viewer,91$countdown,92PhabricatorPolicyCapability::CAN_EDIT);9394$curtain = $this->newCurtainView($countdown);9596$curtain->addAction(97id(new PhabricatorActionView())98->setIcon('fa-pencil')99->setName(pht('Edit Countdown'))100->setHref($this->getApplicationURI("edit/{$id}/"))101->setDisabled(!$can_edit)102->setWorkflow(!$can_edit));103104return $curtain;105}106107private function buildSubheaderView(108PhabricatorCountdown $countdown) {109$viewer = $this->getViewer();110111$author = $viewer->renderHandle($countdown->getAuthorPHID())->render();112$date = phabricator_datetime($countdown->getDateCreated(), $viewer);113$author = phutil_tag('strong', array(), $author);114115$person = id(new PhabricatorPeopleQuery())116->setViewer($viewer)117->withPHIDs(array($countdown->getAuthorPHID()))118->needProfileImage(true)119->executeOne();120121$image_uri = $person->getProfileImageURI();122$image_href = '/p/'.$person->getUsername();123124$content = pht('Authored by %s on %s.', $author, $date);125126return id(new PHUIHeadThingView())127->setImage($image_uri)128->setImageHref($image_href)129->setContent($content);130}131132}133134135