From 4c9c6fcda848ddaa0a2d3bf23783aa299c110cf6 Mon Sep 17 00:00:00 2001 From: Bob Trahan Date: Tue, 11 Jun 2013 15:07:53 -1000 Subject: [PATCH] Conpherence - fix some ajax bugs Summary: the people widget was returning a comma-delimited list of HTML nodes so kill that noise with some hsprintf action. We also weren't consistently updating the latest transaction id so simplify those codepaths (widgets vs pontificate) a bit. Fixes T3336. Test Plan: left some messages, added some participants. noted that the people widget looked good and only the pertinent transactions were pulled down on updates. Reviewers: epriestley, chad Reviewed By: epriestley CC: aran, Korvin Maniphest Tasks: T3336 Differential Revision: https://secure.phabricator.com/D6180 --- .../controller/ConpherenceUpdateController.php | 6 +++++- .../controller/ConpherenceViewController.php | 7 ++----- .../application/conpherence/behavior-pontificate.js | 12 +++++------- .../application/conpherence/behavior-widget-pane.js | 13 ++++++------- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/applications/conpherence/controller/ConpherenceUpdateController.php b/src/applications/conpherence/controller/ConpherenceUpdateController.php index aaae6d4005..92e0237fba 100644 --- a/src/applications/conpherence/controller/ConpherenceUpdateController.php +++ b/src/applications/conpherence/controller/ConpherenceUpdateController.php @@ -319,6 +319,10 @@ final class ConpherenceUpdateController break; } + $people_html = null; + if ($people_widget) { + $people_html = hsprintf('%s', $people_widget->render()); + } $content = array( 'transactions' => hsprintf('%s', $rendered_transactions), 'latest_transaction_id' => $new_latest_transaction_id, @@ -326,7 +330,7 @@ final class ConpherenceUpdateController 'conpherence_phid' => $conpherence->getPHID(), 'header' => hsprintf('%s', $header), 'file_widget' => $file_widget ? $file_widget->render() : null, - 'people_widget' => $people_widget ? $people_widget->render() : null, + 'people_widget' => $people_html, ); return $content; diff --git a/src/applications/conpherence/controller/ConpherenceViewController.php b/src/applications/conpherence/controller/ConpherenceViewController.php index 9720b44018..c65901edb0 100644 --- a/src/applications/conpherence/controller/ConpherenceViewController.php +++ b/src/applications/conpherence/controller/ConpherenceViewController.php @@ -156,12 +156,9 @@ final class ConpherenceViewController extends 'type' => 'hidden', 'name' => 'latest_transaction_id', 'value' => $latest_transaction_id, - 'sigil' => 'latest-transaction-id', - 'meta' => array( - 'id' => $latest_transaction_id - ) + 'sigil' => 'latest-transaction-id' ), - '')) + '')) ->render(); return $form; diff --git a/webroot/rsrc/js/application/conpherence/behavior-pontificate.js b/webroot/rsrc/js/application/conpherence/behavior-pontificate.js index 8f4f922d6b..1690701b0e 100644 --- a/webroot/rsrc/js/application/conpherence/behavior-pontificate.js +++ b/webroot/rsrc/js/application/conpherence/behavior-pontificate.js @@ -38,13 +38,11 @@ JX.behavior('conpherence-pontificate', function(config) { ); } - var inputs = JX.DOM.scry(form, 'input'); - for (var ii = 0; ii < inputs.length; ii++) { - if (inputs[ii].name == 'latest_transaction_id') { - inputs[ii].value = r.latest_transaction_id; - break; - } - } + var latest_transaction_dom = JX.DOM.find( + root, + 'input', + 'latest-transaction-id'); + latest_transaction_dom.value = r.latest_transaction_id; var textarea = JX.DOM.find(form, 'textarea'); textarea.value = ''; diff --git a/webroot/rsrc/js/application/conpherence/behavior-widget-pane.js b/webroot/rsrc/js/application/conpherence/behavior-widget-pane.js index 097dfdeeb6..7c3c6c0ca1 100644 --- a/webroot/rsrc/js/application/conpherence/behavior-widget-pane.js +++ b/webroot/rsrc/js/application/conpherence/behavior-widget-pane.js @@ -258,19 +258,18 @@ JX.behavior('conpherence-widget-pane', function(config) { } var root = JX.DOM.find(document, 'div', 'conpherence-layout'); - var latest_transaction_data = JX.Stratcom.getData( - JX.DOM.find( - root, - 'input', - 'latest-transaction-id' - )); + var latest_transaction_dom = JX.DOM.find( + root, + 'input', + 'latest-transaction-id'); var data = { - latest_transaction_id : latest_transaction_data.id, + latest_transaction_id : latest_transaction_dom.value, action : create_data.action }; new JX.Workflow(href, data) .setHandler(function (r) { + latest_transaction_dom.value = r.latest_transaction_id; if (create_data.refreshFromResponse) { var messages = null; try {