Page MenuHomePhabricator

D21828.id52014.diff
No OneTemporary

D21828.id52014.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -13,7 +13,7 @@
'core.pkg.js' => 'd2de90d9',
'dark-console.pkg.js' => '187792c2',
'differential.pkg.css' => 'ffb69e3d',
- 'differential.pkg.js' => 'e31329dc',
+ 'differential.pkg.js' => 'c60bec1b',
'diffusion.pkg.css' => '42c75c37',
'diffusion.pkg.js' => '78c9885d',
'maniphest.pkg.css' => '35995d6d',
@@ -473,7 +473,7 @@
'rsrc/js/core/behavior-copy.js' => 'cf32921f',
'rsrc/js/core/behavior-detect-timezone.js' => '78bc5d94',
'rsrc/js/core/behavior-device.js' => 'ac2b1e01',
- 'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '7df68a45',
+ 'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '3277c62d',
'rsrc/js/core/behavior-fancy-datepicker.js' => '36821f8d',
'rsrc/js/core/behavior-form.js' => '55d7b788',
'rsrc/js/core/behavior-gesture.js' => 'b58d1a2a',
@@ -589,7 +589,7 @@
'javelin-behavior-aphlict-listen' => '4e61fa88',
'javelin-behavior-aphlict-status' => 'c3703a16',
'javelin-behavior-aphront-basic-tokenizer' => '3b4899b0',
- 'javelin-behavior-aphront-drag-and-drop-textarea' => '7df68a45',
+ 'javelin-behavior-aphront-drag-and-drop-textarea' => '3277c62d',
'javelin-behavior-aphront-form-disable-on-submit' => '55d7b788',
'javelin-behavior-aphront-more' => '506aa3f4',
'javelin-behavior-audio-source' => '3dc5ad43',
@@ -1195,6 +1195,13 @@
'javelin-install',
'javelin-util',
),
+ '3277c62d' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-json',
+ 'phabricator-drag-and-drop-file-upload',
+ 'phabricator-textareautils',
+ ),
'32db8374' => array(
'javelin-behavior',
'javelin-stratcom',
@@ -1614,13 +1621,6 @@
'javelin-install',
'javelin-dom',
),
- '7df68a45' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-json',
- 'phabricator-drag-and-drop-file-upload',
- 'phabricator-textareautils',
- ),
'80bff3af' => array(
'javelin-install',
'javelin-typeahead-source',
diff --git a/src/applications/transactions/editengine/PhabricatorEditEngine.php b/src/applications/transactions/editengine/PhabricatorEditEngine.php
--- a/src/applications/transactions/editengine/PhabricatorEditEngine.php
+++ b/src/applications/transactions/editengine/PhabricatorEditEngine.php
@@ -1908,6 +1908,11 @@
$comment_text = $request->getStr('comment');
+ $comment_metadata = $request->getStr('comment_metadata');
+ if (strlen($comment_metadata)) {
+ $comment_metadata = phutil_json_decode($comment_metadata);
+ }
+
$actions = $request->getStr('editengine.actions');
if ($actions) {
$actions = phutil_json_decode($actions);
@@ -1923,10 +1928,9 @@
$viewer->getPHID(),
$current_version);
- $is_empty = (!strlen($comment_text) && !$actions);
-
$draft
->setProperty('comment', $comment_text)
+ ->setProperty('metadata', $comment_metadata)
->setProperty('actions', $actions)
->save();
diff --git a/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php b/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php
--- a/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php
+++ b/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php
@@ -294,18 +294,39 @@
}
private function renderCommentPanel() {
+ $viewer = $this->getViewer();
+
+ $remarkup_control = id(new PhabricatorRemarkupControl())
+ ->setViewer($viewer)
+ ->setID($this->getCommentID())
+ ->addClass('phui-comment-fullwidth-control')
+ ->addClass('phui-comment-textarea-control')
+ ->setCanPin(true)
+ ->setName('comment');
+
$draft_comment = '';
+ $draft_metadata = array();
$draft_key = null;
- if ($this->getDraft()) {
- $draft_comment = $this->getDraft()->getDraft();
- $draft_key = $this->getDraft()->getDraftKey();
+
+ $legacy_draft = $this->getDraft();
+ if ($legacy_draft) {
+ $draft_comment = $legacy_draft->getDraft();
+ $draft_key = $legacy_draft->getDraftKey();
}
$versioned_draft = $this->getVersionedDraft();
if ($versioned_draft) {
- $draft_comment = $versioned_draft->getProperty('comment', '');
+ $draft_comment = $versioned_draft->getProperty(
+ 'comment',
+ $draft_comment);
+ $draft_metadata = $versioned_draft->getProperty(
+ 'metadata',
+ $draft_metadata);
}
+ $remarkup_control->setValue($draft_comment);
+ $remarkup_control->setRemarkupMetadata($draft_metadata);
+
if (!$this->getObjectPHID()) {
throw new PhutilInvalidStateException('setObjectPHID', 'render');
}
@@ -314,7 +335,7 @@
$version_value = $this->getCurrentVersion();
$form = id(new AphrontFormView())
- ->setUser($this->getUser())
+ ->setUser($viewer)
->addSigil('transaction-append')
->setWorkflow(true)
->setFullWidth($this->fullWidth)
@@ -465,15 +486,7 @@
->setValue($this->getSubmitButtonName());
$form
- ->appendChild(
- id(new PhabricatorRemarkupControl())
- ->setID($this->getCommentID())
- ->addClass('phui-comment-fullwidth-control')
- ->addClass('phui-comment-textarea-control')
- ->setCanPin(true)
- ->setName('comment')
- ->setUser($this->getUser())
- ->setValue($draft_comment))
+ ->appendChild($remarkup_control)
->appendChild(
id(new AphrontFormSubmitControl())
->addClass('phui-comment-fullwidth-control')
diff --git a/webroot/rsrc/js/core/behavior-drag-and-drop-textarea.js b/webroot/rsrc/js/core/behavior-drag-and-drop-textarea.js
--- a/webroot/rsrc/js/core/behavior-drag-and-drop-textarea.js
+++ b/webroot/rsrc/js/core/behavior-drag-and-drop-textarea.js
@@ -16,7 +16,7 @@
function set_metadata(key, value) {
metadata_value[key] = value;
- metadata_node.value = JX.JSON.stringify(metadata_value);
+ write_metadata();
}
function get_metadata(key, default_value) {
@@ -26,6 +26,12 @@
return default_value;
}
+ function write_metadata() {
+ metadata_node.value = JX.JSON.stringify(metadata_value);
+ }
+
+ write_metadata();
+
if (JX.PhabricatorDragAndDropFileUpload.isSupported()) {
var drop = new JX.PhabricatorDragAndDropFileUpload(target)
.setURI(config.uri)
@@ -41,6 +47,10 @@
drop.listen('didUpload', function(file) {
JX.TextAreaUtils.insertFileReference(target, file);
+
+ var phids = get_metadata('attachedFilePHIDs', []);
+ phids.push(file.getPHID());
+ set_metadata('attachedFilePHIDs', phids);
});
drop.start();

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 10, 6:24 PM (1 d, 14 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7463190
Default Alt Text
D21828.id52014.diff (6 KB)

Event Timeline