Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15387029
D14672.id35482.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Referenced Files
None
Subscribers
None
D14672.id35482.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D14672: Unify EditEngine preview behavior; prepare for saving complex drafts
Attached
Detach File
Event Timeline
Log In to Comment