@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.

Add a list view for Nuance sources

Summary: Ref T8434. Now you can list them.

Test Plan: Listed sources.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T8434

Differential Revision: https://secure.phabricator.com/D13162

+131
+4
src/__phutil_library_map__.php
··· 1144 1144 'NuanceSourceDefinition' => 'applications/nuance/source/NuanceSourceDefinition.php', 1145 1145 'NuanceSourceEditController' => 'applications/nuance/controller/NuanceSourceEditController.php', 1146 1146 'NuanceSourceEditor' => 'applications/nuance/editor/NuanceSourceEditor.php', 1147 + 'NuanceSourceListController' => 'applications/nuance/controller/NuanceSourceListController.php', 1147 1148 'NuanceSourceManageCapability' => 'applications/nuance/capability/NuanceSourceManageCapability.php', 1148 1149 'NuanceSourcePHIDType' => 'applications/nuance/phid/NuanceSourcePHIDType.php', 1149 1150 'NuanceSourceQuery' => 'applications/nuance/query/NuanceSourceQuery.php', 1151 + 'NuanceSourceSearchEngine' => 'applications/nuance/query/NuanceSourceSearchEngine.php', 1150 1152 'NuanceSourceTransaction' => 'applications/nuance/storage/NuanceSourceTransaction.php', 1151 1153 'NuanceSourceTransactionComment' => 'applications/nuance/storage/NuanceSourceTransactionComment.php', 1152 1154 'NuanceSourceTransactionQuery' => 'applications/nuance/query/NuanceSourceTransactionQuery.php', ··· 4489 4491 'NuanceSourceDefinition' => 'Phobject', 4490 4492 'NuanceSourceEditController' => 'NuanceController', 4491 4493 'NuanceSourceEditor' => 'PhabricatorApplicationTransactionEditor', 4494 + 'NuanceSourceListController' => 'NuanceController', 4492 4495 'NuanceSourceManageCapability' => 'PhabricatorPolicyCapability', 4493 4496 'NuanceSourcePHIDType' => 'PhabricatorPHIDType', 4494 4497 'NuanceSourceQuery' => 'NuanceQuery', 4498 + 'NuanceSourceSearchEngine' => 'PhabricatorApplicationSearchEngine', 4495 4499 'NuanceSourceTransaction' => 'NuanceTransaction', 4496 4500 'NuanceSourceTransactionComment' => 'PhabricatorApplicationTransactionComment', 4497 4501 'NuanceSourceTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
+1
src/applications/nuance/application/PhabricatorNuanceApplication.php
··· 44 44 'new/' => 'NuanceItemEditController', 45 45 ), 46 46 'source/' => array( 47 + '(?:query/(?P<queryKey>[^/]+)/)?' => 'NuanceSourceListController', 47 48 'view/(?P<id>[1-9]\d*)/' => 'NuanceSourceViewController', 48 49 'edit/(?P<id>[1-9]\d*)/' => 'NuanceSourceEditController', 49 50 'new/(?P<type>[^/]+)/' => 'NuanceSourceEditController',
+48
src/applications/nuance/controller/NuanceSourceListController.php
··· 1 + <?php 2 + 3 + final class NuanceSourceListController 4 + extends NuanceController { 5 + 6 + public function handleRequest(AphrontRequest $request) { 7 + $request = $this->getRequest(); 8 + $controller = id(new PhabricatorApplicationSearchController($request)) 9 + ->setQueryKey($request->getURIData('queryKey')) 10 + ->setSearchEngine(new NuanceSourceSearchEngine()) 11 + ->setNavigation($this->buildSideNavView()); 12 + 13 + return $this->delegateToController($controller); 14 + } 15 + 16 + public function buildSideNavView($for_app = false) { 17 + $user = $this->getRequest()->getUser(); 18 + 19 + $nav = new AphrontSideNavFilterView(); 20 + $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); 21 + 22 + id(new NuanceSourceSearchEngine()) 23 + ->setViewer($user) 24 + ->addNavigationItems($nav->getMenu()); 25 + 26 + $nav->selectFilter(null); 27 + 28 + return $nav; 29 + } 30 + 31 + protected function buildApplicationCrumbs() { 32 + $crumbs = parent::buildApplicationCrumbs(); 33 + 34 + $can_create = $this->hasApplicationCapability( 35 + NuanceSourceManageCapability::CAPABILITY); 36 + 37 + $crumbs->addAction( 38 + id(new PHUIListItemView()) 39 + ->setName(pht('Create Source')) 40 + ->setHref($this->getApplicationURI('source/create/')) 41 + ->setIcon('fa-plus-square') 42 + ->setDisabled(!$can_create) 43 + ->setWorkflow(!$can_create)); 44 + 45 + return $crumbs; 46 + } 47 + 48 + }
+78
src/applications/nuance/query/NuanceSourceSearchEngine.php
··· 1 + <?php 2 + 3 + final class NuanceSourceSearchEngine 4 + extends PhabricatorApplicationSearchEngine { 5 + 6 + public function getApplicationClassName() { 7 + return 'PhabricatorNuanceApplication'; 8 + } 9 + 10 + public function getResultTypeDescription() { 11 + return pht('Nuance Sources'); 12 + } 13 + 14 + public function buildSavedQueryFromRequest(AphrontRequest $request) { 15 + $saved = new PhabricatorSavedQuery(); 16 + 17 + return $saved; 18 + } 19 + 20 + public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { 21 + $query = id(new NuanceSourceQuery()); 22 + 23 + return $query; 24 + } 25 + 26 + public function buildSearchForm( 27 + AphrontFormView $form, 28 + PhabricatorSavedQuery $saved_query) {} 29 + 30 + protected function getURI($path) { 31 + return '/nuance/source/'.$path; 32 + } 33 + 34 + protected function getBuiltinQueryNames() { 35 + $names = array( 36 + 'all' => pht('All Sources'), 37 + ); 38 + 39 + return $names; 40 + } 41 + 42 + public function buildSavedQueryFromBuiltin($query_key) { 43 + $query = $this->newSavedQuery(); 44 + $query->setQueryKey($query_key); 45 + 46 + switch ($query_key) { 47 + case 'all': 48 + return $query; 49 + } 50 + 51 + return parent::buildSavedQueryFromBuiltin($query_key); 52 + } 53 + 54 + protected function renderResultList( 55 + array $sources, 56 + PhabricatorSavedQuery $query, 57 + array $handles) { 58 + assert_instances_of($sources, 'NuanceSource'); 59 + 60 + $viewer = $this->requireViewer(); 61 + 62 + $list = new PHUIObjectItemListView(); 63 + $list->setUser($viewer); 64 + foreach ($sources as $source) { 65 + $item = id(new PHUIObjectItemView()) 66 + ->setObjectName(pht('Source %d', $source->getID())) 67 + ->setHeader($source->getName()) 68 + ->setHref($source->getURI()); 69 + 70 + $item->addIcon('none', $source->getType()); 71 + 72 + $list->addItem($item); 73 + } 74 + 75 + return $list; 76 + } 77 + 78 + }