mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-03 18:38:27 +01:00
Respect token limits for "Assign to" and custom datasource fields in Herald
Summary: See PHI173. Currently, Herald has an "Assign to" action for tasks, and you can specify custom fields with datasource values (like users or projects) that have a limit (like 1 "Owner", or 12 "Jury Members"). Herald doesn't support these limits right now, so you can write `[ Assign to ][ X, Y, Z ]`. This just means "Assign to X", but make it more clear by actually enforcing the limit in the UI. Test Plan: - Created a "projects" custom field with limit 1. - Tried to create actions that 'assign to' or 'set custom field to' more than one thing, got helpfully rebuffed by the UI. - Created an "add subscribers" action with more than one value. Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D18887
This commit is contained in:
parent
6a62797056
commit
fbfcc37531
5 changed files with 24 additions and 16 deletions
|
@ -416,7 +416,7 @@ return array(
|
||||||
'rsrc/js/application/drydock/drydock-live-operation-status.js' => '901935ef',
|
'rsrc/js/application/drydock/drydock-live-operation-status.js' => '901935ef',
|
||||||
'rsrc/js/application/files/behavior-icon-composer.js' => '8499b6ab',
|
'rsrc/js/application/files/behavior-icon-composer.js' => '8499b6ab',
|
||||||
'rsrc/js/application/files/behavior-launch-icon-composer.js' => '48086888',
|
'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/PathTypeahead.js' => 'f7fc67ec',
|
||||||
'rsrc/js/application/herald/herald-rule-editor.js' => '7ebaeed3',
|
'rsrc/js/application/herald/herald-rule-editor.js' => '7ebaeed3',
|
||||||
'rsrc/js/application/maniphest/behavior-batch-selector.js' => 'ad54037e',
|
'rsrc/js/application/maniphest/behavior-batch-selector.js' => 'ad54037e',
|
||||||
|
@ -580,7 +580,7 @@ return array(
|
||||||
'global-drag-and-drop-css' => 'b556a948',
|
'global-drag-and-drop-css' => 'b556a948',
|
||||||
'harbormaster-css' => 'f491c9f4',
|
'harbormaster-css' => 'f491c9f4',
|
||||||
'herald-css' => 'cd8d0134',
|
'herald-css' => 'cd8d0134',
|
||||||
'herald-rule-editor' => '2dff5579',
|
'herald-rule-editor' => 'dca75c0e',
|
||||||
'herald-test-css' => 'a52e323e',
|
'herald-test-css' => 'a52e323e',
|
||||||
'inline-comment-summary-css' => 'f23d4e8f',
|
'inline-comment-summary-css' => 'f23d4e8f',
|
||||||
'javelin-aphlict' => 'e1d4b11a',
|
'javelin-aphlict' => 'e1d4b11a',
|
||||||
|
@ -1106,15 +1106,6 @@ return array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-event',
|
'javelin-event',
|
||||||
),
|
),
|
||||||
'2dff5579' => array(
|
|
||||||
'multirow-row-manager',
|
|
||||||
'javelin-install',
|
|
||||||
'javelin-util',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-json',
|
|
||||||
'phabricator-prefab',
|
|
||||||
),
|
|
||||||
'2ee659ce' => array(
|
'2ee659ce' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
),
|
),
|
||||||
|
@ -2030,6 +2021,15 @@ return array(
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
'phabricator-shaped-request',
|
'phabricator-shaped-request',
|
||||||
),
|
),
|
||||||
|
'dca75c0e' => array(
|
||||||
|
'multirow-row-manager',
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-util',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-json',
|
||||||
|
'phabricator-prefab',
|
||||||
|
),
|
||||||
'de2e896f' => array(
|
'de2e896f' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
|
|
|
@ -58,6 +58,7 @@ final class HeraldTokenizerFieldValue
|
||||||
'datasourceURI' => $datasource->getDatasourceURI(),
|
'datasourceURI' => $datasource->getDatasourceURI(),
|
||||||
'browseURI' => $datasource->getBrowseURI(),
|
'browseURI' => $datasource->getBrowseURI(),
|
||||||
'placeholder' => $datasource->getPlaceholderText(),
|
'placeholder' => $datasource->getPlaceholderText(),
|
||||||
|
'limit' => $datasource->getLimit(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,8 @@ final class ManiphestTaskAssignOtherHeraldAction
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getDatasource() {
|
protected function getDatasource() {
|
||||||
// TODO: Eventually, it would be nice to get "limit = 1" exported from here
|
return id(new ManiphestAssigneeDatasource())
|
||||||
// up to the UI.
|
->setLimit(1);
|
||||||
return new ManiphestAssigneeDatasource();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderActionDescription($value) {
|
public function renderActionDescription($value) {
|
||||||
|
|
|
@ -94,7 +94,14 @@ abstract class PhabricatorStandardCustomFieldTokenizer
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getHeraldActionDatasource() {
|
public function getHeraldActionDatasource() {
|
||||||
return $this->getDatasource();
|
$datasource = $this->getDatasource();
|
||||||
|
|
||||||
|
$limit = $this->getFieldConfigValue('limit');
|
||||||
|
if ($limit) {
|
||||||
|
$datasource->setLimit($limit);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $datasource;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function renderHeraldHandleList($value) {
|
private function renderHeraldHandleList($value) {
|
||||||
|
|
|
@ -283,7 +283,8 @@ JX.install('HeraldRuleEditor', {
|
||||||
var tokenizerConfig = {
|
var tokenizerConfig = {
|
||||||
src: spec.datasourceURI,
|
src: spec.datasourceURI,
|
||||||
placeholder: spec.placeholder,
|
placeholder: spec.placeholder,
|
||||||
browseURI: spec.browseURI
|
browseURI: spec.browseURI,
|
||||||
|
limit: spec.limit
|
||||||
};
|
};
|
||||||
|
|
||||||
var build = JX.Prefab.newTokenizerFromTemplate(
|
var build = JX.Prefab.newTokenizerFromTemplate(
|
||||||
|
|
Loading…
Add table
Reference in a new issue