@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 127 lines 3.5 kB view raw
1<?php 2 3final class PhabricatorPackagesPublisherViewController 4 extends PhabricatorPackagesPublisherController { 5 6 public function shouldAllowPublic() { 7 return true; 8 } 9 10 public function handleRequest(AphrontRequest $request) { 11 $viewer = $request->getViewer(); 12 $publisher_key = $request->getURIData('publisherKey'); 13 14 $publisher = id(new PhabricatorPackagesPublisherQuery()) 15 ->setViewer($viewer) 16 ->withPublisherKeys(array($publisher_key)) 17 ->executeOne(); 18 if (!$publisher) { 19 return new Aphront404Response(); 20 } 21 22 $crumbs = $this->buildApplicationCrumbs() 23 ->addTextCrumb( 24 pht('Publishers'), 25 $this->getApplicationURI('publisher/')) 26 ->addTextCrumb($publisher->getName()) 27 ->setBorder(true); 28 29 $header = $this->buildHeaderView($publisher); 30 $curtain = $this->buildCurtain($publisher); 31 32 $packages_view = $this->buildPackagesView($publisher); 33 34 $timeline = $this->buildTransactionTimeline( 35 $publisher, 36 new PhabricatorPackagesPublisherTransactionQuery()); 37 $timeline->setShouldTerminate(true); 38 39 $publisher_view = id(new PHUITwoColumnView()) 40 ->setHeader($header) 41 ->setCurtain($curtain) 42 ->setMainColumn( 43 array( 44 $packages_view, 45 $timeline, 46 )); 47 48 return $this->newPage() 49 ->setCrumbs($crumbs) 50 ->setPageObjectPHIDs( 51 array( 52 $publisher->getPHID(), 53 )) 54 ->appendChild($publisher_view); 55 } 56 57 58 private function buildHeaderView(PhabricatorPackagesPublisher $publisher) { 59 $viewer = $this->getViewer(); 60 $name = $publisher->getName(); 61 62 return id(new PHUIHeaderView()) 63 ->setViewer($viewer) 64 ->setHeader($name) 65 ->setPolicyObject($publisher) 66 ->setHeaderIcon('fa-paw'); 67 } 68 69 private function buildCurtain(PhabricatorPackagesPublisher $publisher) { 70 $viewer = $this->getViewer(); 71 $curtain = $this->newCurtainView($publisher); 72 73 $can_edit = PhabricatorPolicyFilter::hasCapability( 74 $viewer, 75 $publisher, 76 PhabricatorPolicyCapability::CAN_EDIT); 77 78 $id = $publisher->getID(); 79 $edit_uri = $this->getApplicationURI("publisher/edit/{$id}/"); 80 81 $curtain->addAction( 82 id(new PhabricatorActionView()) 83 ->setName(pht('Edit Publisher')) 84 ->setIcon('fa-pencil') 85 ->setDisabled(!$can_edit) 86 ->setHref($edit_uri)); 87 88 return $curtain; 89 } 90 91 private function buildPackagesView(PhabricatorPackagesPublisher $publisher) { 92 $viewer = $this->getViewer(); 93 94 $packages = id(new PhabricatorPackagesPackageQuery()) 95 ->setViewer($viewer) 96 ->withPublisherPHIDs(array($publisher->getPHID())) 97 ->setLimit(25) 98 ->execute(); 99 100 $packages_list = id(new PhabricatorPackagesPackageListView()) 101 ->setViewer($viewer) 102 ->setPackages($packages); 103 104 $all_href = urisprintf( 105 'package/?publisher=%s#R', 106 $publisher->getPHID()); 107 $all_href = $this->getApplicationURI($all_href); 108 109 $view_all = id(new PHUIButtonView()) 110 ->setTag('a') 111 ->setIcon('fa-search') 112 ->setText(pht('View All')) 113 ->setHref($all_href); 114 115 $header = id(new PHUIHeaderView()) 116 ->setHeader(pht('Packages')) 117 ->addActionLink($view_all); 118 119 $packages_view = id(new PHUIObjectBoxView()) 120 ->setHeader($header) 121 ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 122 ->setObjectList($packages_list); 123 124 return $packages_view; 125 } 126 127}