@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 upstream/main 124 lines 3.3 kB view raw
1<?php 2 3final class PhabricatorBadgesViewController 4 extends PhabricatorBadgesProfileController { 5 6 public function shouldAllowPublic() { 7 return true; 8 } 9 10 public function handleRequest(AphrontRequest $request) { 11 $viewer = $request->getViewer(); 12 $id = $request->getURIData('id'); 13 14 $badge = id(new PhabricatorBadgesQuery()) 15 ->setViewer($viewer) 16 ->withIDs(array($id)) 17 ->executeOne(); 18 if (!$badge) { 19 return new Aphront404Response(); 20 } 21 22 $this->setBadge($badge); 23 24 $crumbs = $this->buildApplicationCrumbs(); 25 $title = $badge->getName(); 26 27 $header = $this->buildHeaderView(); 28 $curtain = $this->buildCurtain($badge); 29 $details = $this->buildDetailsView($badge); 30 31 $timeline = $this->buildTransactionTimeline( 32 $badge, 33 new PhabricatorBadgesTransactionQuery()); 34 35 $comment_view = id(new PhabricatorBadgesEditEngine()) 36 ->setViewer($viewer) 37 ->buildEditEngineCommentView($badge); 38 39 $view = id(new PHUITwoColumnView()) 40 ->setHeader($header) 41 ->setCurtain($curtain) 42 ->setMainColumn(array( 43 $timeline, 44 $comment_view, 45 )) 46 ->addPropertySection(pht('Description'), $details); 47 48 $navigation = $this->buildSideNavView('view'); 49 50 return $this->newPage() 51 ->setTitle($title) 52 ->setCrumbs($crumbs) 53 ->setPageObjectPHIDs(array($badge->getPHID())) 54 ->setNavigation($navigation) 55 ->appendChild($view); 56 } 57 58 private function buildDetailsView( 59 PhabricatorBadgesBadge $badge) { 60 $viewer = $this->getViewer(); 61 62 $view = id(new PHUIPropertyListView()) 63 ->setUser($viewer); 64 65 $description = $badge->getDescription(); 66 if (strlen($description)) { 67 $view->addTextContent( 68 new PHUIRemarkupView($viewer, $description)); 69 } 70 71 $badge = id(new PHUIBadgeView()) 72 ->setIcon($badge->getIcon()) 73 ->setHeader($badge->getName()) 74 ->setSubhead($badge->getFlavor()) 75 ->setQuality($badge->getQuality()); 76 77 $view->addTextContent($badge); 78 79 return $view; 80 } 81 82 private function buildCurtain(PhabricatorBadgesBadge $badge) { 83 $viewer = $this->getViewer(); 84 85 $can_edit = PhabricatorPolicyFilter::hasCapability( 86 $viewer, 87 $badge, 88 PhabricatorPolicyCapability::CAN_EDIT); 89 90 $id = $badge->getID(); 91 $edit_uri = $this->getApplicationURI("/edit/{$id}/"); 92 $archive_uri = $this->getApplicationURI("/archive/{$id}/"); 93 94 $curtain = $this->newCurtainView($badge); 95 96 $curtain->addAction( 97 id(new PhabricatorActionView()) 98 ->setName(pht('Edit Badge')) 99 ->setIcon('fa-pencil') 100 ->setDisabled(!$can_edit) 101 ->setHref($edit_uri)); 102 103 if ($badge->isArchived()) { 104 $curtain->addAction( 105 id(new PhabricatorActionView()) 106 ->setName(pht('Activate Badge')) 107 ->setIcon('fa-check') 108 ->setDisabled(!$can_edit) 109 ->setWorkflow($can_edit) 110 ->setHref($archive_uri)); 111 } else { 112 $curtain->addAction( 113 id(new PhabricatorActionView()) 114 ->setName(pht('Archive Badge')) 115 ->setIcon('fa-ban') 116 ->setDisabled(!$can_edit) 117 ->setWorkflow($can_edit) 118 ->setHref($archive_uri)); 119 } 120 121 return $curtain; 122 } 123 124}