@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 - add draft support to column and refine sending message user workflow

Summary: Ref T7014. This diff adds draft support.

Test Plan: made many comments and they submitted nicely.

Reviewers: chad, epriestley

Reviewed By: epriestley

Subscribers: Korvin, epriestley

Maniphest Tasks: T7014

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

+90 -59
+37 -37
resources/celerity/map.php
··· 352 352 'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'ea681761', 353 353 'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18', 354 354 'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de', 355 - 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => 'efef202b', 356 - 'rsrc/js/application/conpherence/behavior-durable-column.js' => '016fa2e9', 357 - 'rsrc/js/application/conpherence/behavior-menu.js' => 'e476c952', 355 + 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '0324970d', 356 + 'rsrc/js/application/conpherence/behavior-durable-column.js' => '8908d403', 357 + 'rsrc/js/application/conpherence/behavior-menu.js' => 'c4151295', 358 358 'rsrc/js/application/conpherence/behavior-pontificate.js' => '21ba5861', 359 359 'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3', 360 360 'rsrc/js/application/conpherence/behavior-widget-pane.js' => '2c1cd7f5', ··· 518 518 'conpherence-menu-css' => 'c6ac5299', 519 519 'conpherence-message-pane-css' => '5930260a', 520 520 'conpherence-notification-css' => '04a6e10a', 521 - 'conpherence-thread-manager' => 'efef202b', 521 + 'conpherence-thread-manager' => '0324970d', 522 522 'conpherence-update-css' => '1099a660', 523 523 'conpherence-widget-pane-css' => '3d575438', 524 524 'differential-changeset-view-css' => '6a8b172a', ··· 558 558 'javelin-behavior-boards-dropdown' => '0ec56e1d', 559 559 'javelin-behavior-choose-control' => '6153c708', 560 560 'javelin-behavior-config-reorder-fields' => '14a827de', 561 - 'javelin-behavior-conpherence-menu' => 'e476c952', 561 + 'javelin-behavior-conpherence-menu' => 'c4151295', 562 562 'javelin-behavior-conpherence-pontificate' => '21ba5861', 563 563 'javelin-behavior-conpherence-widget-pane' => '2c1cd7f5', 564 564 'javelin-behavior-countdown-timer' => 'e4cc26b3', ··· 585 585 'javelin-behavior-diffusion-locate-file' => '6d3e1947', 586 586 'javelin-behavior-diffusion-pull-lastmodified' => '2b228192', 587 587 'javelin-behavior-doorkeeper-tag' => 'e5822781', 588 - 'javelin-behavior-durable-column' => '016fa2e9', 588 + 'javelin-behavior-durable-column' => '8908d403', 589 589 'javelin-behavior-error-log' => '6882e80a', 590 590 'javelin-behavior-fancy-datepicker' => 'c51ae228', 591 591 'javelin-behavior-global-drag-and-drop' => '07f199d8', ··· 834 834 'unhandled-exception-css' => '37d4f9a2', 835 835 ), 836 836 'requires' => array( 837 - '016fa2e9' => array( 838 - 'javelin-behavior', 839 - 'javelin-dom', 840 - 'javelin-stratcom', 841 - 'javelin-scrollbar', 842 - 'javelin-quicksand', 843 - 'phabricator-keyboard-shortcut', 844 - 'conpherence-thread-manager', 845 - ), 846 837 '0286a1db' => array( 847 838 'javelin-dom', 848 839 'javelin-util', ··· 853 844 ), 854 845 '029a133d' => array( 855 846 'aphront-dialog-view-css', 847 + ), 848 + '0324970d' => array( 849 + 'javelin-dom', 850 + 'javelin-util', 851 + 'javelin-stratcom', 852 + 'javelin-install', 853 + 'javelin-workflow', 854 + 'javelin-router', 855 + 'javelin-behavior-device', 856 + 'javelin-vector', 856 857 ), 857 858 '03d6ed07' => array( 858 859 'javelin-behavior', ··· 1504 1505 'javelin-dom', 1505 1506 'javelin-vector', 1506 1507 ), 1508 + '8908d403' => array( 1509 + 'javelin-behavior', 1510 + 'javelin-dom', 1511 + 'javelin-stratcom', 1512 + 'javelin-scrollbar', 1513 + 'javelin-quicksand', 1514 + 'phabricator-keyboard-shortcut', 1515 + 'conpherence-thread-manager', 1516 + ), 1507 1517 '8a41885b' => array( 1508 1518 'javelin-install', 1509 1519 'javelin-dom', ··· 1747 1757 'javelin-dom', 1748 1758 'javelin-vector', 1749 1759 ), 1760 + 'c4151295' => array( 1761 + 'javelin-behavior', 1762 + 'javelin-dom', 1763 + 'javelin-util', 1764 + 'javelin-stratcom', 1765 + 'javelin-workflow', 1766 + 'javelin-behavior-device', 1767 + 'javelin-history', 1768 + 'javelin-vector', 1769 + 'phabricator-shaped-request', 1770 + 'conpherence-thread-manager', 1771 + ), 1750 1772 'c51ae228' => array( 1751 1773 'javelin-behavior', 1752 1774 'javelin-util', ··· 1850 1872 'javelin-dom', 1851 1873 'javelin-uri', 1852 1874 ), 1853 - 'e476c952' => array( 1854 - 'javelin-behavior', 1855 - 'javelin-dom', 1856 - 'javelin-util', 1857 - 'javelin-stratcom', 1858 - 'javelin-workflow', 1859 - 'javelin-behavior-device', 1860 - 'javelin-history', 1861 - 'javelin-vector', 1862 - 'phabricator-shaped-request', 1863 - 'conpherence-thread-manager', 1864 - ), 1865 1875 'e4cc26b3' => array( 1866 1876 'javelin-behavior', 1867 1877 'javelin-dom', ··· 1908 1918 'efe49472' => array( 1909 1919 'javelin-install', 1910 1920 'javelin-util', 1911 - ), 1912 - 'efef202b' => array( 1913 - 'javelin-dom', 1914 - 'javelin-util', 1915 - 'javelin-stratcom', 1916 - 'javelin-install', 1917 - 'javelin-workflow', 1918 - 'javelin-router', 1919 - 'javelin-behavior-device', 1920 - 'javelin-vector', 1921 1921 ), 1922 1922 'f24f3253' => array( 1923 1923 'javelin-behavior',
+5
src/applications/conpherence/controller/ConpherenceColumnViewController.php
··· 67 67 $participant->markUpToDate($conpherence, $latest_transaction); 68 68 unset($write_guard); 69 69 70 + $draft = PhabricatorDraft::newFromUserAndKey( 71 + $user, 72 + $conpherence->getPHID()); 73 + 70 74 $durable_column 75 + ->setDraft($draft) 71 76 ->setSelectedConpherence($conpherence) 72 77 ->setConpherences($latest_conpherences); 73 78 $conpherence_id = $conpherence->getID();
+19 -2
src/applications/conpherence/view/ConpherenceDurableColumnView.php
··· 2 2 3 3 final class ConpherenceDurableColumnView extends AphrontTagView { 4 4 5 - private $conpherences; 5 + private $conpherences = array(); 6 + private $draft; 6 7 private $selectedConpherence; 7 8 private $transactions; 8 9 private $visible; ··· 15 16 16 17 public function getConpherences() { 17 18 return $this->conpherences; 19 + } 20 + 21 + public function setDraft(PhabricatorDraft $draft) { 22 + $this->draft = $draft; 23 + return $this; 24 + } 25 + 26 + public function getDraft() { 27 + return $this->draft; 18 28 } 19 29 20 30 public function setSelectedConpherence( ··· 343 353 return null; 344 354 } 345 355 356 + $draft = $this->getDraft(); 357 + $draft_value = null; 358 + if ($draft) { 359 + $draft_value = $draft->getDraft(); 360 + } 361 + 346 362 $textarea = javelin_tag( 347 363 'textarea', 348 364 array( ··· 350 366 'class' => 'conpherence-durable-column-textarea', 351 367 'sigil' => 'conpherence-durable-column-textarea', 352 368 'placeholder' => pht('Send a message...'), 353 - )); 369 + ), 370 + $draft_value); 354 371 $id = $conpherence->getID(); 355 372 return phabricator_form( 356 373 $this->getUser(),
+19
webroot/rsrc/js/application/conpherence/ConpherenceThreadManager.js
··· 252 252 this._didSendMessageCallback(r); 253 253 })); 254 254 this.syncWorkflow(workflow, 'finally'); 255 + }, 256 + 257 + handleDraftKeydown: function(e) { 258 + var form = e.getNode('tag:form'); 259 + var data = e.getNodeData('tag:form'); 260 + 261 + if (!data.preview) { 262 + var uri = '/conpherence/update/' + this._loadedThreadID + '/'; 263 + data.preview = new JX.PhabricatorShapedRequest( 264 + uri, 265 + JX.bag, 266 + JX.bind(this, function () { 267 + var data = JX.DOM.convertFormToDictionary(form); 268 + data.action = 'draft'; 269 + data = this._getParams(data); 270 + return data; 271 + })); 272 + } 273 + data.preview.trigger(); 255 274 } 256 275 }, 257 276
+7
webroot/rsrc/js/application/conpherence/behavior-durable-column.js
··· 234 234 'conpherence-message-form', 235 235 _sendMessage); 236 236 237 + JX.Stratcom.listen( 238 + ['keydown'], 239 + 'conpherence-durable-column-textarea', 240 + function (e) { 241 + threadManager.handleDraftKeydown(e); 242 + }); 243 + 237 244 if (config.visible) { 238 245 _toggleColumn(false); 239 246 }
+3 -20
webroot/rsrc/js/application/conpherence/behavior-menu.js
··· 564 564 handleThreadScrollers 565 565 ); 566 566 567 - var onkeydownDraft = function (e) { 568 - var form = e.getNode('tag:form'); 569 - var data = e.getNodeData('tag:form'); 570 - 571 - if (!data.preview) { 572 - var uri = config.baseURI + 'update/' + _thread.selected + '/'; 573 - data.preview = new JX.PhabricatorShapedRequest( 574 - uri, 575 - JX.bag, 576 - function () { 577 - var data = JX.DOM.convertFormToDictionary(form); 578 - data.action = 'draft'; 579 - return data; 580 - }); 581 - } 582 - 583 - data.preview.trigger(); 584 - }; 585 - 586 567 JX.Stratcom.listen( 587 568 ['keydown'], 588 569 'conpherence-pontificate', 589 - onkeydownDraft); 570 + function (e) { 571 + threadManager.handleDraftKeydown(e); 572 + }); 590 573 591 574 });