diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -416,7 +416,7 @@ 'rsrc/js/application/drydock/drydock-live-operation-status.js' => '901935ef', 'rsrc/js/application/files/behavior-icon-composer.js' => '8499b6ab', 'rsrc/js/application/files/behavior-launch-icon-composer.js' => '48086888', - 'rsrc/js/application/herald/HeraldRuleEditor.js' => '2dff5579', + 'rsrc/js/application/herald/HeraldRuleEditor.js' => 'dca75c0e', 'rsrc/js/application/herald/PathTypeahead.js' => 'f7fc67ec', 'rsrc/js/application/herald/herald-rule-editor.js' => '7ebaeed3', 'rsrc/js/application/maniphest/behavior-batch-selector.js' => 'ad54037e', @@ -580,7 +580,7 @@ 'global-drag-and-drop-css' => 'b556a948', 'harbormaster-css' => 'f491c9f4', 'herald-css' => 'cd8d0134', - 'herald-rule-editor' => '2dff5579', + 'herald-rule-editor' => 'dca75c0e', 'herald-test-css' => 'a52e323e', 'inline-comment-summary-css' => 'f23d4e8f', 'javelin-aphlict' => 'e1d4b11a', @@ -1106,15 +1106,6 @@ 'javelin-install', 'javelin-event', ), - '2dff5579' => array( - 'multirow-row-manager', - 'javelin-install', - 'javelin-util', - 'javelin-dom', - 'javelin-stratcom', - 'javelin-json', - 'phabricator-prefab', - ), '2ee659ce' => array( 'javelin-install', ), @@ -2030,6 +2021,15 @@ 'javelin-util', 'phabricator-shaped-request', ), + 'dca75c0e' => array( + 'multirow-row-manager', + 'javelin-install', + 'javelin-util', + 'javelin-dom', + 'javelin-stratcom', + 'javelin-json', + 'phabricator-prefab', + ), 'de2e896f' => array( 'javelin-behavior', 'javelin-dom', diff --git a/src/applications/herald/value/HeraldTokenizerFieldValue.php b/src/applications/herald/value/HeraldTokenizerFieldValue.php --- a/src/applications/herald/value/HeraldTokenizerFieldValue.php +++ b/src/applications/herald/value/HeraldTokenizerFieldValue.php @@ -58,6 +58,7 @@ 'datasourceURI' => $datasource->getDatasourceURI(), 'browseURI' => $datasource->getBrowseURI(), 'placeholder' => $datasource->getPlaceholderText(), + 'limit' => $datasource->getLimit(), ), ); } diff --git a/src/applications/maniphest/herald/ManiphestTaskAssignOtherHeraldAction.php b/src/applications/maniphest/herald/ManiphestTaskAssignOtherHeraldAction.php --- a/src/applications/maniphest/herald/ManiphestTaskAssignOtherHeraldAction.php +++ b/src/applications/maniphest/herald/ManiphestTaskAssignOtherHeraldAction.php @@ -22,9 +22,8 @@ } protected function getDatasource() { - // TODO: Eventually, it would be nice to get "limit = 1" exported from here - // up to the UI. - return new ManiphestAssigneeDatasource(); + return id(new ManiphestAssigneeDatasource()) + ->setLimit(1); } public function renderActionDescription($value) { diff --git a/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldTokenizer.php b/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldTokenizer.php --- a/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldTokenizer.php +++ b/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldTokenizer.php @@ -94,7 +94,14 @@ } public function getHeraldActionDatasource() { - return $this->getDatasource(); + $datasource = $this->getDatasource(); + + $limit = $this->getFieldConfigValue('limit'); + if ($limit) { + $datasource->setLimit($limit); + } + + return $datasource; } private function renderHeraldHandleList($value) { diff --git a/webroot/rsrc/js/application/herald/HeraldRuleEditor.js b/webroot/rsrc/js/application/herald/HeraldRuleEditor.js --- a/webroot/rsrc/js/application/herald/HeraldRuleEditor.js +++ b/webroot/rsrc/js/application/herald/HeraldRuleEditor.js @@ -283,7 +283,8 @@ var tokenizerConfig = { src: spec.datasourceURI, placeholder: spec.placeholder, - browseURI: spec.browseURI + browseURI: spec.browseURI, + limit: spec.limit }; var build = JX.Prefab.newTokenizerFromTemplate(