@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 126 lines 3.2 kB view raw
1<?php 2 3final class PhabricatorSpacesNamespaceSearchEngine 4 extends PhabricatorApplicationSearchEngine { 5 6 public function getApplicationClassName() { 7 return PhabricatorSpacesApplication::class; 8 } 9 10 public function getResultTypeDescription() { 11 return pht('Spaces'); 12 } 13 14 public function newQuery() { 15 return new PhabricatorSpacesNamespaceQuery(); 16 } 17 18 protected function buildCustomSearchFields() { 19 return array( 20 id(new PhabricatorSearchThreeStateField()) 21 ->setLabel(pht('Active')) 22 ->setKey('active') 23 ->setOptions( 24 pht('(Show All)'), 25 pht('Show Only Active Spaces'), 26 pht('Hide Active Spaces')), 27 ); 28 } 29 30 protected function buildQueryFromParameters(array $map) { 31 $query = $this->newQuery(); 32 33 if ($map['active']) { 34 $query->withIsArchived(!$map['active']); 35 } 36 37 return $query; 38 } 39 40 protected function getURI($path) { 41 return '/spaces/'.$path; 42 } 43 44 protected function getBuiltinQueryNames() { 45 $names = array( 46 'active' => pht('Active Spaces'), 47 'all' => pht('All Spaces'), 48 ); 49 50 return $names; 51 } 52 53 public function buildSavedQueryFromBuiltin($query_key) { 54 $query = $this->newSavedQuery(); 55 $query->setQueryKey($query_key); 56 57 switch ($query_key) { 58 case 'active': 59 return $query->setParameter('active', true); 60 case 'all': 61 return $query; 62 } 63 64 return parent::buildSavedQueryFromBuiltin($query_key); 65 } 66 67 /** 68 * @param array<PhabricatorSpacesNamespace> $spaces 69 * @param PhabricatorSavedQuery $query 70 * @param array<PhabricatorObjectHandle> $handles 71 */ 72 protected function renderResultList( 73 array $spaces, 74 PhabricatorSavedQuery $query, 75 array $handles) { 76 assert_instances_of($spaces, PhabricatorSpacesNamespace::class); 77 78 $viewer = $this->requireViewer(); 79 80 $list = new PHUIObjectItemListView(); 81 $list->setViewer($viewer); 82 foreach ($spaces as $space) { 83 $item = id(new PHUIObjectItemView()) 84 ->setObjectName($space->getMonogram()) 85 ->setHeader($space->getNamespaceName()) 86 ->setHref('/'.$space->getMonogram()); 87 88 if ($space->getIsDefaultNamespace()) { 89 $item->addIcon('fa-certificate', pht('Default Space')); 90 } 91 92 if ($space->getIsArchived()) { 93 $item->setDisabled(true); 94 } 95 96 $list->addItem($item); 97 } 98 99 $result = new PhabricatorApplicationSearchResultView(); 100 $result->setObjectList($list); 101 $result->setNoDataString(pht('No spaces found.')); 102 103 return $result; 104 } 105 106 protected function getNewUserBody() { 107 $create_button = id(new PHUIButtonView()) 108 ->setTag('a') 109 ->setText(pht('Create a Space')) 110 ->setHref('/spaces/create/') 111 ->setColor(PHUIButtonView::GREEN); 112 113 $icon = $this->getApplication()->getIcon(); 114 $app_name = $this->getApplication()->getName(); 115 $view = id(new PHUIBigInfoView()) 116 ->setIcon($icon) 117 ->setTitle(pht('Welcome to %s', $app_name)) 118 ->setDescription( 119 pht('Policy namespaces to segment object visibility throughout your '. 120 'instance.')) 121 ->addAction($create_button); 122 123 return $view; 124 } 125 126}