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

Modernize "user or project" typeahead datasources

Summary: Ref T4420. These are used for some stuff like "reviewer".

Test Plan:
- Edited "reviewers" in differential edit.
- Edited "reviewers" in differential search.
- Edited "reviewers" in Differential "add reviewers..." action on detail page.
- Edited a "reviewers" field in a herald rule.
- Edited "owner" in owners search.
- Edited "primary owner", "owners" on owners edit.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T4420

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

+28 -17
+2
src/__phutil_library_map__.php
··· 2011 2011 'PhabricatorProjectMoveController' => 'applications/project/controller/PhabricatorProjectMoveController.php', 2012 2012 'PhabricatorProjectNameCollisionException' => 'applications/project/exception/PhabricatorProjectNameCollisionException.php', 2013 2013 'PhabricatorProjectObjectHasProjectEdgeType' => 'applications/project/edge/PhabricatorProjectObjectHasProjectEdgeType.php', 2014 + 'PhabricatorProjectOrUserDatasource' => 'applications/project/typeahead/PhabricatorProjectOrUserDatasource.php', 2014 2015 'PhabricatorProjectPHIDTypeColumn' => 'applications/project/phid/PhabricatorProjectPHIDTypeColumn.php', 2015 2016 'PhabricatorProjectPHIDTypeProject' => 'applications/project/phid/PhabricatorProjectPHIDTypeProject.php', 2016 2017 'PhabricatorProjectProfileController' => 'applications/project/controller/PhabricatorProjectProfileController.php', ··· 4827 4828 'PhabricatorProjectMoveController' => 'PhabricatorProjectController', 4828 4829 'PhabricatorProjectNameCollisionException' => 'Exception', 4829 4830 'PhabricatorProjectObjectHasProjectEdgeType' => 'PhabricatorEdgeType', 4831 + 'PhabricatorProjectOrUserDatasource' => 'PhabricatorTypeaheadCompositeDatasource', 4830 4832 'PhabricatorProjectPHIDTypeColumn' => 'PhabricatorPHIDType', 4831 4833 'PhabricatorProjectPHIDTypeProject' => 'PhabricatorPHIDType', 4832 4834 'PhabricatorProjectProfileController' => 'PhabricatorProjectController',
+1 -1
src/applications/differential/customfield/DifferentialReviewersField.php
··· 69 69 public function renderEditControl(array $handles) { 70 70 return id(new AphrontFormTokenizerControl()) 71 71 ->setName($this->getFieldKey()) 72 - ->setDatasource('/typeahead/common/usersorprojects/') 72 + ->setDatasource(new PhabricatorProjectOrUserDatasource()) 73 73 ->setValue($handles) 74 74 ->setError($this->getFieldError()) 75 75 ->setLabel($this->getFieldName());
+1 -1
src/applications/differential/query/DifferentialRevisionSearchEngine.php
··· 155 155 id(new AphrontFormTokenizerControl()) 156 156 ->setLabel(pht('Reviewers')) 157 157 ->setName('reviewers') 158 - ->setDatasource('/typeahead/common/accountsorprojects/') 158 + ->setDatasource(new PhabricatorProjectOrUserDatasource()) 159 159 ->setValue(array_select_keys($handles, $reviewer_phids))) 160 160 ->appendChild( 161 161 id(new AphrontFormTokenizerControl())
+3 -2
src/applications/differential/view/DifferentialAddCommentView.php
··· 109 109 ->setValue(pht('Submit'))); 110 110 111 111 $mailable_source = new PhabricatorMetaMTAMailableDatasource(); 112 + $reviewer_source = new PhabricatorProjectOrUserDatasource(); 112 113 113 114 Javelin::initBehavior( 114 115 'differential-add-reviewers-and-ccs', ··· 120 121 'add_reviewers' => 1, 121 122 'resign' => 1, 122 123 ), 123 - 'src' => '/typeahead/common/usersorprojects/', 124 + 'src' => $reviewer_source->getDatasourceURI(), 124 125 'value' => $this->reviewers, 125 126 'row' => 'add-reviewers', 126 127 'labels' => $add_reviewers_labels, 127 - 'placeholder' => pht('Type a user or project name...'), 128 + 'placeholder' => $reviewer_source->getPlaceholderText(), 128 129 ), 129 130 'add-ccs-tokenizer' => array( 130 131 'actions' => array('add_ccs' => 1),
+1 -3
src/applications/herald/controller/HeraldRuleController.php
··· 598 598 'project' => new PhabricatorProjectDatasource(), 599 599 'user' => new PhabricatorPeopleDatasource(), 600 600 'email' => new PhabricatorMetaMTAMailableDatasource(), 601 + 'userorproject' => new PhabricatorProjectOrUserDatasource(), 601 602 ); 602 603 603 604 $sources = mpull($sources, 'getDatasourceURI'); 604 - $sources += array( 605 - 'userorproject' => '/typeahead/common/accountsorprojects/', 606 - ); 607 605 608 606 return array( 609 607 'source' => $sources,
+2 -2
src/applications/owners/controller/PhabricatorOwnersEditController.php
··· 181 181 ->setError($e_name)) 182 182 ->appendChild( 183 183 id(new AphrontFormTokenizerControl()) 184 - ->setDatasource('/typeahead/common/usersorprojects/') 184 + ->setDatasource(new PhabricatorProjectOrUserDatasource()) 185 185 ->setLabel(pht('Primary Owner')) 186 186 ->setName('primary') 187 187 ->setLimit(1) ··· 189 189 ->setError($e_primary)) 190 190 ->appendChild( 191 191 id(new AphrontFormTokenizerControl()) 192 - ->setDatasource('/typeahead/common/usersorprojects/') 192 + ->setDatasource(new PhabricatorProjectOrUserDatasource()) 193 193 ->setLabel(pht('Owners')) 194 194 ->setName('owners') 195 195 ->setValue($handles_all_owners))
+1 -1
src/applications/owners/controller/PhabricatorOwnersListController.php
··· 177 177 ->setValue($request->getStr('name'))) 178 178 ->appendChild( 179 179 id(new AphrontFormTokenizerControl()) 180 - ->setDatasource('/typeahead/common/usersorprojects/') 180 + ->setDatasource(new PhabricatorProjectOrUserDatasource()) 181 181 ->setLimit(1) 182 182 ->setName('owner') 183 183 ->setLabel(pht('Owner'))
+17
src/applications/project/typeahead/PhabricatorProjectOrUserDatasource.php
··· 1 + <?php 2 + 3 + final class PhabricatorProjectOrUserDatasource 4 + extends PhabricatorTypeaheadCompositeDatasource { 5 + 6 + public function getPlaceholderText() { 7 + return pht('Type a user or project name...'); 8 + } 9 + 10 + public function getComponentDatasources() { 11 + return array( 12 + new PhabricatorPeopleDatasource(), 13 + new PhabricatorProjectDatasource(), 14 + ); 15 + } 16 + 17 + }
-5
src/applications/typeahead/controller/PhabricatorTypeaheadCommonDatasourceController.php
··· 47 47 $need_projs = true; 48 48 $need_noproject = true; 49 49 break; 50 - case 'usersorprojects': 51 - case 'accountsorprojects': 52 - $need_users = true; 53 - $need_projs = true; 54 - break; 55 50 case 'usersprojectsorpackages': 56 51 $need_users = true; 57 52 $need_projs = true;
-2
src/view/form/control/AphrontFormTokenizerControl.php
··· 95 95 $request = $matches[1]; 96 96 97 97 $map = array( 98 - 'usersorprojects' => pht('Type a user or project name...'), 99 98 'searchowner' => pht('Type a user name...'), 100 99 'searchproject' => pht('Type a project name...'), 101 - 'accountsorprojects' => pht('Type a user or project name...'), 102 100 'usersprojectsorpackages' => 103 101 pht('Type a user, project, or package name...'), 104 102 );