mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-02 03:32:42 +01:00
Provide comment actions for tokenizer custom fields
Summary: Ref T13114. See PHI519. An install is interested in modifying a tokenizer custom field from the comment area. Provide this capability. This patch is fairly narrow but should solve the immediate need. Test Plan: Added, removed, and modified a tokenizer custom field using the comment action dropdown. Maniphest Tasks: T13114 Differential Revision: https://secure.phabricator.com/D19270
This commit is contained in:
parent
7f9a9bc800
commit
9fbf4ee58c
3 changed files with 77 additions and 0 deletions
|
@ -7,6 +7,7 @@ final class PhabricatorCustomFieldEditField
|
||||||
private $httpParameterType;
|
private $httpParameterType;
|
||||||
private $conduitParameterType;
|
private $conduitParameterType;
|
||||||
private $bulkParameterType;
|
private $bulkParameterType;
|
||||||
|
private $commentAction;
|
||||||
|
|
||||||
public function setCustomField(PhabricatorCustomField $custom_field) {
|
public function setCustomField(PhabricatorCustomField $custom_field) {
|
||||||
$this->customField = $custom_field;
|
$this->customField = $custom_field;
|
||||||
|
@ -47,6 +48,16 @@ final class PhabricatorCustomFieldEditField
|
||||||
return $this->bulkParameterType;
|
return $this->bulkParameterType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setCustomFieldCommentAction(
|
||||||
|
PhabricatorEditEngineCommentAction $comment_action) {
|
||||||
|
$this->commentAction = $comment_action;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustomFieldCommentAction() {
|
||||||
|
return $this->commentAction;
|
||||||
|
}
|
||||||
|
|
||||||
protected function buildControl() {
|
protected function buildControl() {
|
||||||
if ($this->getIsConduitOnly()) {
|
if ($this->getIsConduitOnly()) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -77,6 +88,19 @@ final class PhabricatorCustomFieldEditField
|
||||||
return $clone->getNewValueForApplicationTransactions();
|
return $clone->getNewValueForApplicationTransactions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function getValueForCommentAction($value) {
|
||||||
|
$field = $this->getCustomField();
|
||||||
|
$clone = clone $field;
|
||||||
|
$clone->setValueFromApplicationTransactions($value);
|
||||||
|
|
||||||
|
// TODO: This is somewhat bogus because only StandardCustomFields
|
||||||
|
// implement a getFieldValue() method -- not all CustomFields. Today,
|
||||||
|
// only StandardCustomFields can ever actually generate a comment action
|
||||||
|
// so we never reach this method with other field types.
|
||||||
|
|
||||||
|
return $clone->getFieldValue();
|
||||||
|
}
|
||||||
|
|
||||||
protected function getValueExistsInSubmit(AphrontRequest $request, $key) {
|
protected function getValueExistsInSubmit(AphrontRequest $request, $key) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -110,6 +134,16 @@ final class PhabricatorCustomFieldEditField
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function newCommentAction() {
|
||||||
|
$action = $this->getCustomFieldCommentAction();
|
||||||
|
|
||||||
|
if ($action) {
|
||||||
|
return clone $action;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
protected function newConduitParameterType() {
|
protected function newConduitParameterType() {
|
||||||
$type = $this->getCustomFieldConduitParameterType();
|
$type = $this->getCustomFieldConduitParameterType();
|
||||||
|
|
||||||
|
|
|
@ -1127,6 +1127,16 @@ abstract class PhabricatorCustomField extends Phobject {
|
||||||
$field->setCustomFieldBulkParameterType($bulk_type);
|
$field->setCustomFieldBulkParameterType($bulk_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$comment_action = $this->getCommentAction();
|
||||||
|
if ($comment_action) {
|
||||||
|
$field
|
||||||
|
->setCustomFieldCommentAction($comment_action)
|
||||||
|
->setCommentActionLabel(
|
||||||
|
pht(
|
||||||
|
'Change %s',
|
||||||
|
$this->getFieldName()));
|
||||||
|
}
|
||||||
|
|
||||||
return $field;
|
return $field;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1459,6 +1469,17 @@ abstract class PhabricatorCustomField extends Phobject {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getCommentAction() {
|
||||||
|
return $this->newCommentAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function newCommentAction() {
|
||||||
|
if ($this->proxy) {
|
||||||
|
return $this->proxy->newCommentAction();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -( Herald )------------------------------------------------------------- */
|
/* -( Herald )------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
|
@ -143,4 +143,26 @@ abstract class PhabricatorStandardCustomFieldTokenizer
|
||||||
->setDatasource($datasource);
|
->setDatasource($datasource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function newCommentAction() {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
|
$datasource = $this->getDatasource()
|
||||||
|
->setViewer($viewer);
|
||||||
|
|
||||||
|
$action = id(new PhabricatorEditEngineTokenizerCommentAction())
|
||||||
|
->setDatasource($datasource);
|
||||||
|
|
||||||
|
$limit = $this->getFieldConfigValue('limit');
|
||||||
|
if ($limit) {
|
||||||
|
$action->setLimit($limit);
|
||||||
|
}
|
||||||
|
|
||||||
|
$value = $this->getFieldValue();
|
||||||
|
if ($value !== null) {
|
||||||
|
$action->setInitialValue($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $action;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue