@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Conpherence - make show older messages work correctly in durable column

Summary:
Fixes T8009. This was basically moving the behavior from conpherence full behavior menu into the ConpherenceThreadManager so it could be re used in the durable column.

The durable column bit has no special styles - its just a link - but it seems to work well enough. I think it could be removed altogether if / when we add some automagical scrolling back into history stuff.

Test Plan: loaded up a conpherence in a durable column and used 'show older messages' successfully. loaded up a conpherence in regular view mid transaction and used show older and show newer successfully

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin, epriestley

Maniphest Tasks: T8009

Differential Revision: https://secure.phabricator.com/D12816

+110 -97
+42 -42
resources/celerity/map.php
··· 8 8 return array( 9 9 'names' => array( 10 10 'core.pkg.css' => 'ed3d6355', 11 - 'core.pkg.js' => '3ed82e2f', 11 + 'core.pkg.js' => '616511ac', 12 12 'darkconsole.pkg.js' => 'e7393ebb', 13 13 'differential.pkg.css' => 'bb338e4b', 14 14 'differential.pkg.js' => '895b8d62', ··· 348 348 'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18', 349 349 'rsrc/js/application/calendar/event-all-day.js' => 'ca5fa62a', 350 350 'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de', 351 - 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '9e507b59', 351 + 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => 'de397217', 352 352 'rsrc/js/application/conpherence/behavior-drag-and-drop-photo.js' => 'cf86d16a', 353 - 'rsrc/js/application/conpherence/behavior-durable-column.js' => 'bc5107aa', 354 - 'rsrc/js/application/conpherence/behavior-menu.js' => '804b0773', 353 + 'rsrc/js/application/conpherence/behavior-durable-column.js' => '61252a27', 354 + 'rsrc/js/application/conpherence/behavior-menu.js' => 'eb61cb03', 355 355 'rsrc/js/application/conpherence/behavior-pontificate.js' => '21ba5861', 356 356 'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3', 357 357 'rsrc/js/application/conpherence/behavior-widget-pane.js' => '93568464', ··· 516 516 'conpherence-menu-css' => 'f389e048', 517 517 'conpherence-message-pane-css' => '0e75feef', 518 518 'conpherence-notification-css' => 'd208f806', 519 - 'conpherence-thread-manager' => '9e507b59', 519 + 'conpherence-thread-manager' => 'de397217', 520 520 'conpherence-transaction-css' => '42a457f6', 521 521 'conpherence-update-css' => '1099a660', 522 522 'conpherence-widget-pane-css' => '2af42ebe', ··· 557 557 'javelin-behavior-choose-control' => '6153c708', 558 558 'javelin-behavior-config-reorder-fields' => '14a827de', 559 559 'javelin-behavior-conpherence-drag-and-drop-photo' => 'cf86d16a', 560 - 'javelin-behavior-conpherence-menu' => '804b0773', 560 + 'javelin-behavior-conpherence-menu' => 'eb61cb03', 561 561 'javelin-behavior-conpherence-pontificate' => '21ba5861', 562 562 'javelin-behavior-conpherence-widget-pane' => '93568464', 563 563 'javelin-behavior-countdown-timer' => 'e4cc26b3', ··· 584 584 'javelin-behavior-diffusion-locate-file' => '6d3e1947', 585 585 'javelin-behavior-diffusion-pull-lastmodified' => '2b228192', 586 586 'javelin-behavior-doorkeeper-tag' => 'e5822781', 587 - 'javelin-behavior-durable-column' => 'bc5107aa', 587 + 'javelin-behavior-durable-column' => '61252a27', 588 588 'javelin-behavior-error-log' => '6882e80a', 589 589 'javelin-behavior-event-all-day' => 'ca5fa62a', 590 590 'javelin-behavior-fancy-datepicker' => '5c0f680f', ··· 1256 1256 'javelin-stratcom', 1257 1257 'javelin-dom', 1258 1258 ), 1259 + '61252a27' => array( 1260 + 'javelin-behavior', 1261 + 'javelin-dom', 1262 + 'javelin-stratcom', 1263 + 'javelin-behavior-device', 1264 + 'javelin-scrollbar', 1265 + 'javelin-quicksand', 1266 + 'phabricator-keyboard-shortcut', 1267 + 'conpherence-thread-manager', 1268 + ), 1259 1269 '6153c708' => array( 1260 1270 'javelin-behavior', 1261 1271 'javelin-stratcom', ··· 1394 1404 '7ee2b591' => array( 1395 1405 'javelin-behavior', 1396 1406 'javelin-history', 1397 - ), 1398 - '804b0773' => array( 1399 - 'javelin-behavior', 1400 - 'javelin-dom', 1401 - 'javelin-util', 1402 - 'javelin-stratcom', 1403 - 'javelin-workflow', 1404 - 'javelin-behavior-device', 1405 - 'javelin-history', 1406 - 'javelin-vector', 1407 - 'javelin-scrollbar', 1408 - 'phabricator-title', 1409 - 'phabricator-shaped-request', 1410 - 'conpherence-thread-manager', 1411 1407 ), 1412 1408 82439934 => array( 1413 1409 'javelin-behavior', ··· 1578 1574 'phuix-action-view', 1579 1575 'javelin-workflow', 1580 1576 ), 1581 - '9e507b59' => array( 1582 - 'javelin-dom', 1583 - 'javelin-util', 1584 - 'javelin-stratcom', 1585 - 'javelin-install', 1586 - 'javelin-aphlict', 1587 - 'javelin-workflow', 1588 - 'javelin-router', 1589 - 'javelin-behavior-device', 1590 - 'javelin-vector', 1591 - ), 1592 1577 '9f36c42d' => array( 1593 1578 'javelin-behavior', 1594 1579 'javelin-stratcom', ··· 1734 1719 'javelin-stratcom', 1735 1720 'javelin-dom', 1736 1721 ), 1737 - 'bc5107aa' => array( 1738 - 'javelin-behavior', 1739 - 'javelin-dom', 1740 - 'javelin-stratcom', 1741 - 'javelin-behavior-device', 1742 - 'javelin-scrollbar', 1743 - 'javelin-quicksand', 1744 - 'phabricator-keyboard-shortcut', 1745 - 'conpherence-thread-manager', 1746 - ), 1747 1722 'bd4c8dca' => array( 1748 1723 'javelin-install', 1749 1724 'javelin-util', ··· 1857 1832 'javelin-typeahead-ondemand-source', 1858 1833 'javelin-dom', 1859 1834 ), 1835 + 'de397217' => array( 1836 + 'javelin-dom', 1837 + 'javelin-util', 1838 + 'javelin-stratcom', 1839 + 'javelin-install', 1840 + 'javelin-aphlict', 1841 + 'javelin-workflow', 1842 + 'javelin-router', 1843 + 'javelin-behavior-device', 1844 + 'javelin-vector', 1845 + ), 1860 1846 'df5e11d2' => array( 1861 1847 'javelin-install', 1862 1848 ), ··· 1933 1919 'javelin-aphlict', 1934 1920 'phabricator-phtize', 1935 1921 'javelin-dom', 1922 + ), 1923 + 'eb61cb03' => array( 1924 + 'javelin-behavior', 1925 + 'javelin-dom', 1926 + 'javelin-util', 1927 + 'javelin-stratcom', 1928 + 'javelin-workflow', 1929 + 'javelin-behavior-device', 1930 + 'javelin-history', 1931 + 'javelin-vector', 1932 + 'javelin-scrollbar', 1933 + 'phabricator-title', 1934 + 'phabricator-shaped-request', 1935 + 'conpherence-thread-manager', 1936 1936 ), 1937 1937 'efe49472' => array( 1938 1938 'javelin-install',
+62 -5
webroot/rsrc/js/application/conpherence/ConpherenceThreadManager.js
··· 30 30 _canEditLoadedThread: null, 31 31 _updating: null, 32 32 _minimalDisplay: false, 33 + _messagesRootCallback: JX.bag, 33 34 _willLoadThreadCallback: JX.bag, 34 35 _didLoadThreadCallback: JX.bag, 35 36 _didUpdateThreadCallback: JX.bag, ··· 96 97 97 98 setMinimalDisplay: function(bool) { 98 99 this._minimalDisplay = bool; 100 + return this; 101 + }, 102 + 103 + setMessagesRootCallback: function(callback) { 104 + this._messagesRootCallback = callback; 99 105 return this; 100 106 }, 101 107 ··· 183 189 184 190 this._updateThread(); 185 191 })); 192 + 193 + JX.Stratcom.listen( 194 + 'click', 195 + 'show-older-messages', 196 + JX.bind(this, function(e) { 197 + e.kill(); 198 + var data = e.getNodeData('show-older-messages'); 199 + 200 + var node = e.getNode('show-older-messages'); 201 + JX.DOM.setContent(node, 'Loading...'); 202 + JX.DOM.alterClass( 203 + node, 204 + 'conpherence-show-more-messages-loading', 205 + true); 206 + 207 + new JX.Workflow(this._getMoreMessagesURI(), data) 208 + .setHandler(JX.bind(this, function(r) { 209 + JX.DOM.remove(node); 210 + var messages = JX.$H(r.messages); 211 + JX.DOM.prependContent( 212 + this._messagesRootCallback(), 213 + messages); 214 + })).start(); 215 + })); 216 + JX.Stratcom.listen( 217 + 'click', 218 + 'show-newer-messages', 219 + JX.bind(this, function(e) { 220 + e.kill(); 221 + var data = e.getNodeData('show-newer-messages'); 222 + var node = e.getNode('show-newer-messages'); 223 + JX.DOM.setContent(node, 'Loading...'); 224 + JX.DOM.alterClass( 225 + node, 226 + 'conpherence-show-more-messages-loading', 227 + true); 228 + 229 + new JX.Workflow(this._getMoreMessagesURI(), data) 230 + .setHandler(JX.bind(this, function(r) { 231 + JX.DOM.remove(node); 232 + var messages = JX.$H(r.messages); 233 + JX.DOM.appendContent( 234 + this._messagesRootCallback(), 235 + JX.$H(messages)); 236 + })).start(); 237 + })); 186 238 }, 187 239 188 240 _shouldUpdateDOM: function(r) { ··· 216 268 action: 'load', 217 269 }); 218 270 219 - var uri = '/conpherence/update/' + this._loadedThreadID + '/'; 220 - 221 - var workflow = new JX.Workflow(uri) 271 + var workflow = new JX.Workflow(this._getUpdateURI()) 222 272 .setData(params) 223 273 .setHandler(JX.bind(this, function(r) { 224 274 if (this._shouldUpdateDOM(r)) { ··· 350 400 var data = e.getNodeData('tag:form'); 351 401 352 402 if (!data.preview) { 353 - var uri = '/conpherence/update/' + this._loadedThreadID + '/'; 354 403 data.preview = new JX.PhabricatorShapedRequest( 355 - uri, 404 + this._getUpdateURI(), 356 405 JX.bag, 357 406 JX.bind(this, function () { 358 407 var data = JX.DOM.convertFormToDictionary(form); ··· 362 411 })); 363 412 } 364 413 data.preview.trigger(); 414 + }, 415 + 416 + _getUpdateURI: function() { 417 + return '/conpherence/update/' + this._loadedThreadID + '/'; 418 + }, 419 + 420 + _getMoreMessagesURI: function() { 421 + return '/conpherence/' + this._loadedThreadID + '/'; 365 422 } 366 423 }, 367 424
+3
webroot/rsrc/js/application/conpherence/behavior-durable-column.js
··· 119 119 120 120 var threadManager = new JX.ConpherenceThreadManager(); 121 121 threadManager.setMinimalDisplay(true); 122 + threadManager.setMessagesRootCallback(function() { 123 + return _getColumnMessagesNode(); 124 + }); 122 125 threadManager.setLoadThreadURI('/conpherence/columnview/'); 123 126 threadManager.setWillLoadThreadCallback(function() { 124 127 _markLoading(true);
+3 -50
webroot/rsrc/js/application/conpherence/behavior-menu.js
··· 28 28 29 29 // TODO - move more logic into the ThreadManager 30 30 var threadManager = new JX.ConpherenceThreadManager(); 31 + threadManager.setMessagesRootCallback(function() { 32 + return scrollbar.getContentNode(); 33 + }); 31 34 threadManager.setWillLoadThreadCallback(function() { 32 35 markThreadLoading(true); 33 36 }); ··· 413 416 } 414 417 })) 415 418 .start(); 416 - }); 417 - 418 - var _oldLoadingTransactionID = null; 419 - JX.Stratcom.listen('click', 'show-older-messages', function(e) { 420 - e.kill(); 421 - var data = e.getNodeData('show-older-messages'); 422 - if (data.oldest_transaction_id == _oldLoadingTransactionID) { 423 - return; 424 - } 425 - _oldLoadingTransactionID = data.oldest_transaction_id; 426 - 427 - var node = e.getNode('show-older-messages'); 428 - JX.DOM.setContent(node, 'Loading...'); 429 - JX.DOM.alterClass(node, 'conpherence-show-more-messages-loading', true); 430 - 431 - var conf_id = _thread.selected; 432 - var messages_root = scrollbar.getContentNode(); 433 - new JX.Workflow(config.baseURI + conf_id + '/', data) 434 - .setHandler(function(r) { 435 - JX.DOM.remove(node); 436 - var messages = JX.$H(r.messages); 437 - JX.DOM.prependContent( 438 - messages_root, 439 - JX.$H(messages)); 440 - }).start(); 441 - }); 442 - 443 - var _newLoadingTransactionID = null; 444 - JX.Stratcom.listen('click', 'show-newer-messages', function(e) { 445 - e.kill(); 446 - var data = e.getNodeData('show-newer-messages'); 447 - if (data.newest_transaction_id == _newLoadingTransactionID) { 448 - return; 449 - } 450 - _newLoadingTransactionID = data.newest_transaction_id; 451 - 452 - var node = e.getNode('show-newer-messages'); 453 - JX.DOM.setContent(node, 'Loading...'); 454 - JX.DOM.alterClass(node, 'conpherence-show-more-messages-loading', true); 455 - 456 - var conf_id = _thread.selected; 457 - var messages_root = scrollbar.getContentNode(); 458 - new JX.Workflow(config.baseURI + conf_id + '/', data) 459 - .setHandler(function(r) { 460 - JX.DOM.remove(node); 461 - var messages = JX.$H(r.messages); 462 - JX.DOM.appendContent( 463 - messages_root, 464 - JX.$H(messages)); 465 - }).start(); 466 419 }); 467 420 468 421 /**