diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 0ea66bec26..d937b91e4f 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -80,7 +80,7 @@ return array( 'rsrc/css/application/flag/flag.css' => 'bba8f811', 'rsrc/css/application/harbormaster/harbormaster.css' => 'f491c9f4', 'rsrc/css/application/herald/herald-test.css' => 'a52e323e', - 'rsrc/css/application/herald/herald.css' => 'dc31f6e9', + 'rsrc/css/application/herald/herald.css' => 'cd8d0134', 'rsrc/css/application/maniphest/batch-editor.css' => 'b0f0b6d5', 'rsrc/css/application/maniphest/report.css' => '9b9580b7', 'rsrc/css/application/maniphest/task-edit.css' => 'fda62a9b', @@ -416,7 +416,7 @@ return array( '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' => 'd6a7e717', + 'rsrc/js/application/herald/HeraldRuleEditor.js' => '2dff5579', 'rsrc/js/application/herald/PathTypeahead.js' => 'f7fc67ec', 'rsrc/js/application/herald/herald-rule-editor.js' => '7ebaeed3', 'rsrc/js/application/maniphest/behavior-batch-editor.js' => '782ab6e7', @@ -578,8 +578,8 @@ return array( 'font-lato' => 'c7ccd872', 'global-drag-and-drop-css' => 'b556a948', 'harbormaster-css' => 'f491c9f4', - 'herald-css' => 'dc31f6e9', - 'herald-rule-editor' => 'd6a7e717', + 'herald-css' => 'cd8d0134', + 'herald-rule-editor' => '2dff5579', 'herald-test-css' => 'a52e323e', 'inline-comment-summary-css' => 'f23d4e8f', 'javelin-aphlict' => 'e1d4b11a', @@ -1106,6 +1106,15 @@ return array( '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', ), @@ -2001,15 +2010,6 @@ return array( 'javelin-dom', 'javelin-stratcom', ), - 'd6a7e717' => array( - 'multirow-row-manager', - 'javelin-install', - 'javelin-util', - 'javelin-dom', - 'javelin-stratcom', - 'javelin-json', - 'phabricator-prefab', - ), 'd7a74243' => array( 'javelin-behavior', 'javelin-stratcom', diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 35be621604..924e81a5ff 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1337,6 +1337,7 @@ phutil_register_library_map(array( 'HeraldApplyTranscript' => 'applications/herald/storage/transcript/HeraldApplyTranscript.php', 'HeraldBasicFieldGroup' => 'applications/herald/field/HeraldBasicFieldGroup.php', 'HeraldBuildableState' => 'applications/herald/state/HeraldBuildableState.php', + 'HeraldCommentAction' => 'applications/herald/action/HeraldCommentAction.php', 'HeraldCommitAdapter' => 'applications/diffusion/herald/HeraldCommitAdapter.php', 'HeraldCondition' => 'applications/herald/storage/HeraldCondition.php', 'HeraldConditionTranscript' => 'applications/herald/storage/transcript/HeraldConditionTranscript.php', @@ -1378,6 +1379,7 @@ phutil_register_library_map(array( 'HeraldProjectsField' => 'applications/project/herald/HeraldProjectsField.php', 'HeraldRecursiveConditionsException' => 'applications/herald/engine/exception/HeraldRecursiveConditionsException.php', 'HeraldRelatedFieldGroup' => 'applications/herald/field/HeraldRelatedFieldGroup.php', + 'HeraldRemarkupFieldValue' => 'applications/herald/value/HeraldRemarkupFieldValue.php', 'HeraldRemarkupRule' => 'applications/herald/remarkup/HeraldRemarkupRule.php', 'HeraldRepetitionPolicyConfig' => 'applications/herald/config/HeraldRepetitionPolicyConfig.php', 'HeraldRule' => 'applications/herald/storage/HeraldRule.php', @@ -6488,6 +6490,7 @@ phutil_register_library_map(array( 'HeraldApplyTranscript' => 'Phobject', 'HeraldBasicFieldGroup' => 'HeraldFieldGroup', 'HeraldBuildableState' => 'HeraldState', + 'HeraldCommentAction' => 'HeraldAction', 'HeraldCommitAdapter' => array( 'HeraldAdapter', 'HarbormasterBuildableAdapterInterface', @@ -6535,6 +6538,7 @@ phutil_register_library_map(array( 'HeraldProjectsField' => 'HeraldField', 'HeraldRecursiveConditionsException' => 'Exception', 'HeraldRelatedFieldGroup' => 'HeraldFieldGroup', + 'HeraldRemarkupFieldValue' => 'HeraldFieldValue', 'HeraldRemarkupRule' => 'PhabricatorObjectRemarkupRule', 'HeraldRepetitionPolicyConfig' => 'Phobject', 'HeraldRule' => array( diff --git a/src/applications/herald/action/HeraldAction.php b/src/applications/herald/action/HeraldAction.php index a2d589f9f2..04884a94d4 100644 --- a/src/applications/herald/action/HeraldAction.php +++ b/src/applications/herald/action/HeraldAction.php @@ -9,6 +9,7 @@ abstract class HeraldAction extends Phobject { const STANDARD_NONE = 'standard.none'; const STANDARD_PHID_LIST = 'standard.phid.list'; const STANDARD_TEXT = 'standard.text'; + const STANDARD_REMARKUP = 'standard.remarkup'; const DO_STANDARD_EMPTY = 'do.standard.empty'; const DO_STANDARD_NO_EFFECT = 'do.standard.no-effect'; @@ -60,6 +61,8 @@ abstract class HeraldAction extends Phobject { return new HeraldEmptyFieldValue(); case self::STANDARD_TEXT: return new HeraldTextFieldValue(); + case self::STANDARD_REMARKUP: + return new HeraldRemarkupFieldValue(); case self::STANDARD_PHID_LIST: $tokenizer = id(new HeraldTokenizerFieldValue()) ->setKey($this->getHeraldActionName()) diff --git a/src/applications/herald/action/HeraldCommentAction.php b/src/applications/herald/action/HeraldCommentAction.php new file mode 100644 index 0000000000..fa52ba1f5f --- /dev/null +++ b/src/applications/herald/action/HeraldCommentAction.php @@ -0,0 +1,79 @@ +getApplicationTransactionTemplate(); + try { + $comment = $xaction->getApplicationTransactionCommentObject(); + if (!$comment) { + return false; + } + } catch (PhutilMethodNotImplementedException $ex) { + return false; + } + + return true; + } + + public function supportsRuleType($rule_type) { + return ($rule_type != HeraldRuleTypeConfig::RULE_TYPE_PERSONAL); + } + + public function applyEffect($object, HeraldEffect $effect) { + $adapter = $this->getAdapter(); + $comment_text = $effect->getTarget(); + + $xaction = $adapter->newTransaction() + ->setTransactionType(PhabricatorTransactions::TYPE_COMMENT); + + $comment = $xaction->getApplicationTransactionCommentObject() + ->setContent($comment_text); + + $xaction->attachComment($comment); + + $adapter->queueTransaction($xaction); + + $this->logEffect(self::DO_COMMENT, $comment_text); + } + + public function getHeraldActionStandardType() { + return self::STANDARD_REMARKUP; + } + + protected function getActionEffectMap() { + return array( + self::DO_COMMENT => array( + 'icon' => 'fa-comment', + 'color' => 'blue', + 'name' => pht('Added Comment'), + ), + ); + } + + public function renderActionDescription($value) { + $summary = PhabricatorMarkupEngine::summarize($value); + return pht('Add comment: %s', $summary); + } + + protected function renderActionEffectDescription($type, $data) { + $summary = PhabricatorMarkupEngine::summarize($data); + return pht('Added a comment: %s', $summary); + } + +} diff --git a/src/applications/herald/value/HeraldFieldValue.php b/src/applications/herald/value/HeraldFieldValue.php index b3f35968e2..c88776f53a 100644 --- a/src/applications/herald/value/HeraldFieldValue.php +++ b/src/applications/herald/value/HeraldFieldValue.php @@ -8,6 +8,7 @@ abstract class HeraldFieldValue extends Phobject { const CONTROL_TEXT = 'herald.control.text'; const CONTROL_SELECT = 'herald.control.select'; const CONTROL_TOKENIZER = 'herald.control.tokenizer'; + const CONTROL_REMARKUP = 'herald.control.remarkup'; abstract public function getFieldValueKey(); abstract public function getControlType(); diff --git a/src/applications/herald/value/HeraldRemarkupFieldValue.php b/src/applications/herald/value/HeraldRemarkupFieldValue.php new file mode 100644 index 0000000000..4740ec7342 --- /dev/null +++ b/src/applications/herald/value/HeraldRemarkupFieldValue.php @@ -0,0 +1,22 @@ +