Path: blob/master/src/applications/packages/controller/PhabricatorPackagesPackageViewController.php
12242 views
<?php12final class PhabricatorPackagesPackageViewController3extends PhabricatorPackagesPackageController {45public function shouldAllowPublic() {6return true;7}89public function handleRequest(AphrontRequest $request) {10$viewer = $request->getViewer();1112$publisher_key = $request->getURIData('publisherKey');13$package_key = $request->getURIData('packageKey');14$full_key = $publisher_key.'/'.$package_key;1516$package = id(new PhabricatorPackagesPackageQuery())17->setViewer($viewer)18->withFullKeys(array($full_key))19->executeOne();20if (!$package) {21return new Aphront404Response();22}2324$publisher = $package->getPublisher();2526$crumbs = $this->buildApplicationCrumbs()27->addTextCrumb($publisher->getName(), $publisher->getURI())28->addTextCrumb($package->getName())29->setBorder(true);3031$header = $this->buildHeaderView($package);32$curtain = $this->buildCurtain($package);3334$versions_view = $this->buildVersionsView($package);3536$timeline = $this->buildTransactionTimeline(37$package,38new PhabricatorPackagesPackageTransactionQuery());39$timeline->setShouldTerminate(true);4041$package_view = id(new PHUITwoColumnView())42->setHeader($header)43->setCurtain($curtain)44->setMainColumn(45array(46$versions_view,47$timeline,48));4950return $this->newPage()51->setCrumbs($crumbs)52->setPageObjectPHIDs(53array(54$package->getPHID(),55))56->appendChild($package_view);57}585960private function buildHeaderView(PhabricatorPackagesPackage $package) {61$viewer = $this->getViewer();62$name = $package->getName();6364return id(new PHUIHeaderView())65->setViewer($viewer)66->setHeader($name)67->setPolicyObject($package)68->setHeaderIcon('fa-gift');69}7071private function buildCurtain(PhabricatorPackagesPackage $package) {72$viewer = $this->getViewer();73$curtain = $this->newCurtainView($package);7475$can_edit = PhabricatorPolicyFilter::hasCapability(76$viewer,77$package,78PhabricatorPolicyCapability::CAN_EDIT);7980$id = $package->getID();81$edit_uri = $this->getApplicationURI("package/edit/{$id}/");8283$curtain->addAction(84id(new PhabricatorActionView())85->setName(pht('Edit Package'))86->setIcon('fa-pencil')87->setDisabled(!$can_edit)88->setHref($edit_uri));8990return $curtain;91}9293private function buildVersionsView(PhabricatorPackagesPackage $package) {94$viewer = $this->getViewer();9596$versions = id(new PhabricatorPackagesVersionQuery())97->setViewer($viewer)98->withPackagePHIDs(array($package->getPHID()))99->setLimit(25)100->execute();101102$versions_list = id(new PhabricatorPackagesVersionListView())103->setViewer($viewer)104->setVersions($versions);105106$all_href = urisprintf(107'version/?package=%s#R',108$package->getPHID());109$all_href = $this->getApplicationURI($all_href);110111$view_all = id(new PHUIButtonView())112->setTag('a')113->setIcon('fa-search')114->setText(pht('View All'))115->setHref($all_href);116117$header = id(new PHUIHeaderView())118->setHeader(pht('Versions'))119->addActionLink($view_all);120121$versions_view = id(new PHUIObjectBoxView())122->setHeader($header)123->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)124->setObjectList($versions_list);125126return $versions_view;127}128}129130131