@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.

Transactions - make ctrl + enter submit ajax-style

Summary: We were correctly invoked a didSyntheticSubmit event on the form, but nothing was listening to it. Re-jigger the workflow submit code a tad so an onsyntheticsubmit event handler can be written to fill this gap. Fixes T4669.

Test Plan: edited comments, submitting both via clicking the button and apple + enter LIKE A BOSS

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: epriestley, Korvin

Maniphest Tasks: T4669

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

+50 -32
+14 -14
resources/celerity/map.php
··· 14 14 'differential.pkg.js' => '11a5b750', 15 15 'diffusion.pkg.css' => '3783278d', 16 16 'diffusion.pkg.js' => '5b4010f4', 17 - 'javelin.pkg.js' => '0452e69d', 17 + 'javelin.pkg.js' => '9f6d38c7', 18 18 'maniphest.pkg.css' => 'f1887d71', 19 19 'maniphest.pkg.js' => '2fe8af22', 20 20 'rsrc/css/aphront/aphront-bars.css' => '231ac33c', ··· 208 208 'rsrc/externals/javelin/lib/Resource.js' => '356de121', 209 209 'rsrc/externals/javelin/lib/URI.js' => 'd9a9b862', 210 210 'rsrc/externals/javelin/lib/Vector.js' => '039fb90d', 211 - 'rsrc/externals/javelin/lib/Workflow.js' => 'f28bf201', 211 + 'rsrc/externals/javelin/lib/Workflow.js' => 'ff8091f7', 212 212 'rsrc/externals/javelin/lib/__tests__/Cookie.js' => '5ed109e8', 213 213 'rsrc/externals/javelin/lib/__tests__/DOM.js' => 'c984504b', 214 214 'rsrc/externals/javelin/lib/__tests__/JSON.js' => '2295d074', ··· 668 668 'javelin-view-interpreter' => '0c33c1a0', 669 669 'javelin-view-renderer' => '6c2b09a2', 670 670 'javelin-view-visitor' => 'efe49472', 671 - 'javelin-workflow' => 'f28bf201', 671 + 'javelin-workflow' => 'ff8091f7', 672 672 'lightbox-attachment-css' => '7acac05d', 673 673 'maniphest-batch-editor' => '8f380ebc', 674 674 'maniphest-report-css' => '6fc16517', ··· 1883 1883 4 => 'javelin-request', 1884 1884 5 => 'javelin-workflow', 1885 1885 ), 1886 - 'f28bf201' => 1887 - array( 1888 - 0 => 'javelin-stratcom', 1889 - 1 => 'javelin-request', 1890 - 2 => 'javelin-dom', 1891 - 3 => 'javelin-vector', 1892 - 4 => 'javelin-install', 1893 - 5 => 'javelin-util', 1894 - 6 => 'javelin-mask', 1895 - 7 => 'javelin-uri', 1896 - ), 1897 1886 'f42bb8c6' => 1898 1887 array( 1899 1888 0 => 'javelin-stratcom', ··· 1984 1973 1 => 'javelin-stratcom', 1985 1974 2 => 'javelin-workflow', 1986 1975 3 => 'javelin-dom', 1976 + ), 1977 + 'ff8091f7' => 1978 + array( 1979 + 0 => 'javelin-stratcom', 1980 + 1 => 'javelin-request', 1981 + 2 => 'javelin-dom', 1982 + 3 => 'javelin-vector', 1983 + 4 => 'javelin-install', 1984 + 5 => 'javelin-util', 1985 + 6 => 'javelin-mask', 1986 + 7 => 'javelin-uri', 1987 1987 ), 1988 1988 28497740 => 1989 1989 array(
+36 -18
webroot/rsrc/externals/javelin/lib/Workflow.js
··· 107 107 JX.Workflow._pop(); 108 108 } else { 109 109 var form = event.getNode('jx-dialog'); 110 - 111 - // Issue a DOM event first, so form-oriented handlers can act. 112 - var dom_event = JX.DOM.invoke(form, 'didWorkflowSubmit'); 113 - if (dom_event.getPrevented()) { 114 - return; 115 - } 116 - 117 - var data = JX.DOM.convertFormToListOfPairs(form); 110 + JX.Workflow._dosubmit(form, t); 111 + } 112 + }, 113 + _onsyntheticsubmit : function(e) { 114 + if (JX.Stratcom.pass()) { 115 + return; 116 + } 117 + if (JX.Workflow._disabled) { 118 + return; 119 + } 120 + e.prevent(); 121 + var form = e.getNode('jx-dialog'); 122 + var button = JX.DOM.find(form, 'button', '__default__'); 123 + JX.Workflow._dosubmit(form, button); 124 + }, 125 + _dosubmit : function(form, button) { 126 + // Issue a DOM event first, so form-oriented handlers can act. 127 + var dom_event = JX.DOM.invoke(form, 'didWorkflowSubmit'); 128 + if (dom_event.getPrevented()) { 129 + return; 130 + } 118 131 119 - data.push([t.name, t.value || true]); 132 + var data = JX.DOM.convertFormToListOfPairs(form); 133 + data.push([button.name, button.value || true]); 120 134 121 - var active = JX.Workflow._getActiveWorkflow(); 122 - var e = active.invoke('submit', {form: form, data: data}); 123 - if (!e.getStopped()) { 124 - active._destroy(); 125 - active 126 - .setURI(form.getAttribute('action') || active.getURI()) 127 - .setDataWithListOfPairs(data) 128 - .start(); 129 - } 135 + var active = JX.Workflow._getActiveWorkflow(); 136 + var e = active.invoke('submit', {form: form, data: data}); 137 + if (!e.getStopped()) { 138 + active._destroy(); 139 + active 140 + .setURI(form.getAttribute('action') || active.getURI()) 141 + .setDataWithListOfPairs(data) 142 + .start(); 130 143 } 131 144 }, 132 145 _getActiveWorkflow : function() { ··· 155 168 'click', 156 169 [['jx-workflow-button'], ['tag:button']], 157 170 JX.Workflow._onbutton); 171 + JX.DOM.listen( 172 + this._root, 173 + 'didSyntheticSubmit', 174 + [], 175 + JX.Workflow._onsyntheticsubmit); 158 176 document.body.appendChild(this._root); 159 177 var d = JX.Vector.getDim(this._root); 160 178 var v = JX.Vector.getViewport();