Page MenuHomePhabricator

D9874.id23711.diff
No OneTemporary

D9874.id23711.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -544,6 +544,7 @@
'DiffusionRenameHistoryQuery' => 'applications/diffusion/query/DiffusionRenameHistoryQuery.php',
'DiffusionRepositoryController' => 'applications/diffusion/controller/DiffusionRepositoryController.php',
'DiffusionRepositoryCreateController' => 'applications/diffusion/controller/DiffusionRepositoryCreateController.php',
+ 'DiffusionRepositoryDatasource' => 'applications/diffusion/typeahead/DiffusionRepositoryDatasource.php',
'DiffusionRepositoryDefaultController' => 'applications/diffusion/controller/DiffusionRepositoryDefaultController.php',
'DiffusionRepositoryEditActionsController' => 'applications/diffusion/controller/DiffusionRepositoryEditActionsController.php',
'DiffusionRepositoryEditActivateController' => 'applications/diffusion/controller/DiffusionRepositoryEditActivateController.php',
@@ -3245,6 +3246,7 @@
'DiffusionRefNotFoundException' => 'Exception',
'DiffusionRepositoryController' => 'DiffusionController',
'DiffusionRepositoryCreateController' => 'DiffusionRepositoryEditController',
+ 'DiffusionRepositoryDatasource' => 'PhabricatorTypeaheadDatasource',
'DiffusionRepositoryDefaultController' => 'DiffusionController',
'DiffusionRepositoryEditActionsController' => 'DiffusionRepositoryEditController',
'DiffusionRepositoryEditActivateController' => 'DiffusionRepositoryEditController',
diff --git a/src/applications/differential/customfield/DifferentialRepositoryField.php b/src/applications/differential/customfield/DifferentialRepositoryField.php
--- a/src/applications/differential/customfield/DifferentialRepositoryField.php
+++ b/src/applications/differential/customfield/DifferentialRepositoryField.php
@@ -49,7 +49,7 @@
return id(new AphrontFormTokenizerControl())
->setName($this->getFieldKey())
- ->setDatasource('/typeahead/common/repositories/')
+ ->setDatasource(new DiffusionRepositoryDatasource())
->setValue($control_value)
->setError($this->getFieldError())
->setLabel($this->getFieldName())
diff --git a/src/applications/differential/query/DifferentialRevisionSearchEngine.php b/src/applications/differential/query/DifferentialRevisionSearchEngine.php
--- a/src/applications/differential/query/DifferentialRevisionSearchEngine.php
+++ b/src/applications/differential/query/DifferentialRevisionSearchEngine.php
@@ -167,7 +167,7 @@
id(new AphrontFormTokenizerControl())
->setLabel(pht('Repositories'))
->setName('repositories')
- ->setDatasource('/typeahead/common/repositories/')
+ ->setDatasource(new DiffusionRepositoryDatasource())
->setValue(array_select_keys($handles, $repository_phids)))
->appendChild(
id(new AphrontFormSelectControl())
diff --git a/src/applications/diffusion/typeahead/DiffusionRepositoryDatasource.php b/src/applications/diffusion/typeahead/DiffusionRepositoryDatasource.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/typeahead/DiffusionRepositoryDatasource.php
@@ -0,0 +1,35 @@
+<?php
+
+final class DiffusionRepositoryDatasource
+ extends PhabricatorTypeaheadDatasource {
+
+ public function getPlaceholderText() {
+ return pht('Type a repository name...');
+ }
+
+ public function getDatasourceApplicationClass() {
+ return null;
+ }
+
+ public function loadResults() {
+ $viewer = $this->getViewer();
+ $raw_query = $this->getRawQuery();
+
+ $results = array();
+
+ $repos = id(new PhabricatorRepositoryQuery())
+ ->setViewer($viewer)
+ ->execute();
+ foreach ($repos as $repo) {
+ $results[] = id(new PhabricatorTypeaheadResult())
+ ->setName($repo->getMonogram().' '.$repo->getName())
+ ->setURI('/diffusion/'.$repo->getCallsign().'/')
+ ->setPHID($repo->getPHID())
+ ->setPriorityString($repo->getMonogram())
+ ->setIcon('fa-database bluegrey');
+ }
+
+ return $results;
+ }
+
+}
diff --git a/src/applications/herald/controller/HeraldRuleController.php b/src/applications/herald/controller/HeraldRuleController.php
--- a/src/applications/herald/controller/HeraldRuleController.php
+++ b/src/applications/herald/controller/HeraldRuleController.php
@@ -592,7 +592,8 @@
'source' => array(
'email' => '/typeahead/common/mailable/',
'user' => '/typeahead/common/accounts/',
- 'repository' => '/typeahead/common/repositories/',
+ 'repository' =>
+ id(new DiffusionRepositoryDatasource())->getDatasourceURI(),
'package' => '/typeahead/common/packages/',
'project' => '/typeahead/common/projects/',
'userorproject' => '/typeahead/common/accountsorprojects/',
diff --git a/src/applications/repository/phid/PhabricatorRepositoryPHIDTypeRepository.php b/src/applications/repository/phid/PhabricatorRepositoryPHIDTypeRepository.php
--- a/src/applications/repository/phid/PhabricatorRepositoryPHIDTypeRepository.php
+++ b/src/applications/repository/phid/PhabricatorRepositoryPHIDTypeRepository.php
@@ -33,12 +33,14 @@
foreach ($handles as $phid => $handle) {
$repository = $objects[$phid];
+ $monogram = $repository->getMonogram();
$callsign = $repository->getCallsign();
$name = $repository->getName();
- $handle->setName("r{$callsign}");
- $handle->setFullName("r{$callsign} ({$name})");
+ $handle->setName($monogram);
+ $handle->setFullName("{$monogram} {$name}");
$handle->setURI("/diffusion/{$callsign}/");
+ $handle->setIcon('fa-database');
}
}
diff --git a/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php b/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php
--- a/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php
+++ b/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php
@@ -74,7 +74,7 @@
$form
->appendChild(
id(new AphrontFormTokenizerControl())
- ->setDatasource('/typeahead/common/repositories/')
+ ->setDatasource(new DiffusionRepositoryDatasource())
->setName('repositories')
->setLabel(pht('Repositories'))
->setValue($repository_handles))
diff --git a/src/applications/typeahead/controller/PhabricatorTypeaheadCommonDatasourceController.php b/src/applications/typeahead/controller/PhabricatorTypeaheadCommonDatasourceController.php
--- a/src/applications/typeahead/controller/PhabricatorTypeaheadCommonDatasourceController.php
+++ b/src/applications/typeahead/controller/PhabricatorTypeaheadCommonDatasourceController.php
@@ -26,7 +26,6 @@
$need_applications = false;
$need_lists = false;
$need_projs = false;
- $need_repos = false;
$need_packages = false;
$need_upforgrabs = false;
$need_arcanist_projects = false;
@@ -78,9 +77,6 @@
$need_projs = true;
$need_packages = true;
break;
- case 'repositories':
- $need_repos = true;
- break;
case 'packages':
$need_packages = true;
break;
@@ -298,19 +294,6 @@
}
}
- if ($need_repos) {
- $repos = id(new PhabricatorRepositoryQuery())
- ->setViewer($viewer)
- ->execute();
- foreach ($repos as $repo) {
- $results[] = id(new PhabricatorTypeaheadResult())
- ->setName('r'.$repo->getCallsign().' ('.$repo->getName().')')
- ->setURI('/diffusion/'.$repo->getCallsign().'/')
- ->setPHID($repo->getPHID())
- ->setPriorityString('r'.$repo->getCallsign());
- }
- }
-
if ($need_packages) {
$packages = id(new PhabricatorOwnersPackage())->loadAll();
foreach ($packages as $package) {
diff --git a/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php b/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php
--- a/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php
+++ b/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php
@@ -43,6 +43,10 @@
return $this->query;
}
+ public function getDatasourceURI() {
+ return '/typeahead/class/'.get_class($this).'/';
+ }
+
abstract public function getPlaceholderText();
abstract public function getDatasourceApplicationClass();
abstract public function loadResults();
diff --git a/src/view/form/control/AphrontFormTokenizerControl.php b/src/view/form/control/AphrontFormTokenizerControl.php
--- a/src/view/form/control/AphrontFormTokenizerControl.php
+++ b/src/view/form/control/AphrontFormTokenizerControl.php
@@ -43,8 +43,10 @@
$id = celerity_generate_unique_node_id();
}
- if (!$this->placeholder) {
- $this->placeholder = $this->getDefaultPlaceholder();
+ if (!strlen($this->placeholder)) {
+ $placeholder = $this->getDefaultPlaceholder();
+ } else {
+ $placeholder = $this->placeholder;
}
$template = new AphrontTokenizerTemplateView();
@@ -57,15 +59,21 @@
$username = $this->user->getUsername();
}
+ if ($this->datasource instanceof PhabricatorTypeaheadDatasource) {
+ $datasource_uri = $this->datasource->getDatasourceURI();
+ } else {
+ $datasource_uri = $this->datasource;
+ }
+
if (!$this->disableBehavior) {
Javelin::initBehavior('aphront-basic-tokenizer', array(
'id' => $id,
- 'src' => $this->datasource,
+ 'src' => $datasource_uri,
'value' => mpull($values, 'getFullName', 'getPHID'),
'icons' => mpull($values, 'getIcon', 'getPHID'),
'limit' => $this->limit,
'username' => $username,
- 'placeholder' => $this->placeholder,
+ 'placeholder' => $placeholder,
));
}
@@ -75,6 +83,10 @@
private function getDefaultPlaceholder() {
$datasource = $this->datasource;
+ if ($datasource instanceof PhabricatorTypeaheadDatasource) {
+ return $datasource->getPlaceholderText();
+ }
+
$matches = null;
if (!preg_match('@^/typeahead/common/(.*)/$@', $datasource, $matches)) {
return null;

File Metadata

Mime Type
text/plain
Expires
Sat, May 11, 6:58 AM (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6285041
Default Alt Text
D9874.id23711.diff (10 KB)

Event Timeline