Page MenuHomePhabricator

D14672.id35482.diff
No OneTemporary

D14672.id35482.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -417,7 +417,7 @@
'rsrc/js/application/repository/repository-crossreference.js' => 'e5339c43',
'rsrc/js/application/search/behavior-reorder-queries.js' => 'e9581f08',
'rsrc/js/application/slowvote/behavior-slowvote-embed.js' => '887ad43f',
- 'rsrc/js/application/transactions/behavior-comment-actions.js' => '2ada1547',
+ 'rsrc/js/application/transactions/behavior-comment-actions.js' => 'f293e8a0',
'rsrc/js/application/transactions/behavior-reorder-fields.js' => 'b59e1e96',
'rsrc/js/application/transactions/behavior-show-older-transactions.js' => 'dbbf48b6',
'rsrc/js/application/transactions/behavior-transaction-comment-form.js' => 'b23b49e6',
@@ -561,7 +561,7 @@
'javelin-behavior-audit-preview' => 'd835b03a',
'javelin-behavior-bulk-job-reload' => 'edf8a145',
'javelin-behavior-choose-control' => '6153c708',
- 'javelin-behavior-comment-actions' => '2ada1547',
+ 'javelin-behavior-comment-actions' => 'f293e8a0',
'javelin-behavior-config-reorder-fields' => 'b6993408',
'javelin-behavior-conpherence-drag-and-drop-photo' => 'cf86d16a',
'javelin-behavior-conpherence-menu' => '1d45c74d',
@@ -1033,14 +1033,6 @@
'javelin-install',
'javelin-util',
),
- '2ada1547' => array(
- 'javelin-behavior',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'javelin-dom',
- 'phuix-form-control-view',
- 'phuix-icon-view',
- ),
'2b8de964' => array(
'javelin-install',
'javelin-util',
@@ -1970,6 +1962,14 @@
'javelin-workflow',
'javelin-json',
),
+ 'f293e8a0' => array(
+ 'javelin-behavior',
+ 'javelin-stratcom',
+ 'javelin-workflow',
+ 'javelin-dom',
+ 'phuix-form-control-view',
+ 'phuix-icon-view',
+ ),
'f36e01af' => array(
'javelin-behavior',
'javelin-behavior-device',
diff --git a/src/applications/transactions/editfield/PhabricatorPHIDListEditField.php b/src/applications/transactions/editfield/PhabricatorPHIDListEditField.php
--- a/src/applications/transactions/editfield/PhabricatorPHIDListEditField.php
+++ b/src/applications/transactions/editfield/PhabricatorPHIDListEditField.php
@@ -44,6 +44,14 @@
return new AphrontPHIDListHTTPParameterType();
}
+ public function readValueFromComment($value) {
+ // TODO: This is really hacky -- make sure we pass a plain PHID list to
+ // the edit type. This method probably needs to move down to EditType, and
+ // maybe more additional logic does too.
+ $this->setUseEdgeTransactions(false);
+ return parent::readValueFromComment($value);
+ }
+
public function getValueForTransaction() {
$new = parent::getValueForTransaction();
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
@@ -12,7 +12,6 @@
private $previewTimelineID;
private $previewToggleID;
private $formID;
- private $statusID;
private $commentID;
private $draft;
private $requestURI;
@@ -148,23 +147,17 @@
$preview = null;
}
- Javelin::initBehavior(
- 'phabricator-transaction-comment-form',
- array(
- 'formID' => $this->getFormID(),
- 'timelineID' => $this->getPreviewTimelineID(),
- 'panelID' => $this->getPreviewPanelID(),
- 'statusID' => $this->getStatusID(),
- 'commentID' => $this->getCommentID(),
-
- 'loadingString' => pht('Loading Preview...'),
- 'savingString' => pht('Saving Draft...'),
- 'draftString' => pht('Saved Draft'),
-
- 'showPreview' => $this->getShowPreview(),
-
- 'actionURI' => $this->getAction(),
- ));
+ if (!$this->getEditTypes()) {
+ Javelin::initBehavior(
+ 'phabricator-transaction-comment-form',
+ array(
+ 'formID' => $this->getFormID(),
+ 'timelineID' => $this->getPreviewTimelineID(),
+ 'panelID' => $this->getPreviewPanelID(),
+ 'showPreview' => $this->getShowPreview(),
+ 'actionURI' => $this->getAction(),
+ ));
+ }
$comment_box = id(new PHUIObjectBoxView())
->setFlush(true)
@@ -175,13 +168,6 @@
}
private function renderCommentPanel() {
- $status = phutil_tag(
- 'div',
- array(
- 'id' => $this->getStatusID(),
- ),
- '');
-
$draft_comment = '';
$draft_key = null;
if ($this->getDraft()) {
@@ -269,7 +255,11 @@
'inputID' => $input_id,
'formID' => $this->getFormID(),
'placeID' => $place_id,
+ 'panelID' => $this->getPreviewPanelID(),
+ 'timelineID' => $this->getPreviewTimelineID(),
'actions' => $action_map,
+ 'showPreview' => $this->getShowPreview(),
+ 'actionURI' => $this->getAction(),
));
}
@@ -283,10 +273,7 @@
->setValue($draft_comment))
->appendChild(
id(new AphrontFormSubmitControl())
- ->setValue($this->getSubmitButtonName()))
- ->appendChild(
- id(new AphrontFormMarkupControl())
- ->setValue($status));
+ ->setValue($this->getSubmitButtonName()));
return $form;
}
diff --git a/webroot/rsrc/js/application/transactions/behavior-comment-actions.js b/webroot/rsrc/js/application/transactions/behavior-comment-actions.js
--- a/webroot/rsrc/js/application/transactions/behavior-comment-actions.js
+++ b/webroot/rsrc/js/application/transactions/behavior-comment-actions.js
@@ -34,19 +34,6 @@
}
});
- JX.DOM.listen(form_node, 'submit', null, function() {
- var data = [];
-
- for (var k in rows) {
- data.push({
- type: k,
- value: rows[k].getValue()
- });
- }
-
- input_node.value = JX.JSON.stringify(data);
- });
-
function add_row(option) {
var action = action_map[option.value];
if (!action) {
@@ -77,4 +64,65 @@
place_node.parentNode.insertBefore(node, place_node);
}
+ function serialize_actions() {
+ var data = [];
+
+ for (var k in rows) {
+ data.push({
+ type: k,
+ value: rows[k].getValue()
+ });
+ }
+
+ return JX.JSON.stringify(data);
+ }
+
+ function get_data() {
+ var data = JX.DOM.convertFormToDictionary(form_node);
+
+ data.__preview__ = 1;
+ data[input_node.name] = serialize_actions();
+
+ return data;
+ }
+
+ function onresponse(response) {
+ var panel = JX.$(config.panelID);
+ if (!response.xactions.length) {
+ JX.DOM.hide(panel);
+ } else {
+ JX.DOM.setContent(
+ JX.$(config.timelineID),
+ [
+ JX.$H(response.spacer),
+ JX.$H(response.xactions.join(response.spacer))
+ ]);
+ JX.DOM.show(panel);
+ }
+ }
+
+ JX.DOM.listen(form_node, 'submit', null, function() {
+ input_node.value = serialize_actions();
+ });
+
+ if (config.showPreview) {
+ var request = new JX.PhabricatorShapedRequest(
+ config.actionURI,
+ onresponse,
+ get_data);
+
+ var trigger = JX.bind(request, request.trigger);
+
+ JX.DOM.listen(form_node, 'keydown', null, trigger);
+
+ var always_trigger = function() {
+ new JX.Request(config.actionURI, onresponse)
+ .setData(get_data())
+ .send();
+ };
+
+ JX.DOM.listen(form_node, 'shouldRefresh', null, always_trigger);
+ request.start();
+ }
+
});

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 16, 1:40 AM (1 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7705005
Default Alt Text
D14672.id35482.diff (7 KB)

Event Timeline