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

Stop using forms to download files in file embed and lightbox elements

Summary: Depends on D19156. Ref T13094. This replaces the remaining forms in the file embed view and lightbox with normal download links.

Test Plan: Clicked "Download" and lightbox -> download for embedded files.

Maniphest Tasks: T13094

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

+47 -86
+12 -12
resources/celerity/map.php
··· 10 10 'conpherence.pkg.css' => 'e68cf1fa', 11 11 'conpherence.pkg.js' => '15191c65', 12 12 'core.pkg.css' => '2fa91e14', 13 - 'core.pkg.js' => 'e7ce7bba', 13 + 'core.pkg.js' => 'a3ceffdb', 14 14 'darkconsole.pkg.js' => '1f9a31bc', 15 15 'differential.pkg.css' => '113e692c', 16 16 'differential.pkg.js' => 'f6d809c0', ··· 494 494 'rsrc/js/core/behavior-hovercard.js' => 'bcaccd64', 495 495 'rsrc/js/core/behavior-keyboard-pager.js' => 'a8da01f0', 496 496 'rsrc/js/core/behavior-keyboard-shortcuts.js' => '01fca1f0', 497 - 'rsrc/js/core/behavior-lightbox-attachments.js' => '560f41da', 497 + 'rsrc/js/core/behavior-lightbox-attachments.js' => 'e31fad01', 498 498 'rsrc/js/core/behavior-line-linker.js' => '1499a8cb', 499 499 'rsrc/js/core/behavior-more.js' => 'a80d0378', 500 500 'rsrc/js/core/behavior-object-selector.js' => '77c1f0b0', ··· 642 642 'javelin-behavior-history-install' => '7ee2b591', 643 643 'javelin-behavior-icon-composer' => '8499b6ab', 644 644 'javelin-behavior-launch-icon-composer' => '48086888', 645 - 'javelin-behavior-lightbox-attachments' => '560f41da', 645 + 'javelin-behavior-lightbox-attachments' => 'e31fad01', 646 646 'javelin-behavior-line-chart' => 'e4232876', 647 647 'javelin-behavior-load-blame' => '42126667', 648 648 'javelin-behavior-maniphest-batch-selector' => 'ad54037e', ··· 1359 1359 'javelin-vector', 1360 1360 'javelin-dom', 1361 1361 ), 1362 - '560f41da' => array( 1363 - 'javelin-behavior', 1364 - 'javelin-stratcom', 1365 - 'javelin-dom', 1366 - 'javelin-mask', 1367 - 'javelin-util', 1368 - 'phuix-icon-view', 1369 - 'phabricator-busy', 1370 - ), 1371 1362 '58dea2fa' => array( 1372 1363 'javelin-install', 1373 1364 'javelin-util', ··· 2069 2060 'javelin-workflow', 2070 2061 'javelin-dom', 2071 2062 'phabricator-draggable-list', 2063 + ), 2064 + 'e31fad01' => array( 2065 + 'javelin-behavior', 2066 + 'javelin-stratcom', 2067 + 'javelin-dom', 2068 + 'javelin-mask', 2069 + 'javelin-util', 2070 + 'phuix-icon-view', 2071 + 'phabricator-busy', 2072 2072 ), 2073 2073 'e379b58e' => array( 2074 2074 'javelin-behavior',
+6 -14
src/view/layout/PhabricatorFileLinkView.php
··· 134 134 $dl_icon = id(new PHUIIconView()) 135 135 ->setIcon('fa-download'); 136 136 137 - $download_form = phabricator_form( 138 - $this->getViewer(), 137 + $download_link = phutil_tag( 138 + 'a', 139 139 array( 140 - 'action' => $this->getFileDownloadURI(), 141 - 'method' => 'POST', 142 - 'class' => 'embed-download-form', 143 - 'sigil' => 'embed-download-form download', 140 + 'class' => 'phabricator-remarkup-embed-layout-download', 141 + 'href' => $this->getFileDownloadURI(), 144 142 ), 145 - phutil_tag( 146 - 'button', 147 - array( 148 - 'class' => 'phabricator-remarkup-embed-layout-download', 149 - 'type' => 'submit', 150 - ), 151 - pht('Download'))); 143 + pht('Download')); 152 144 153 145 $info = phutil_tag( 154 146 'span', ··· 177 169 return array( 178 170 $icon, 179 171 $inner, 180 - $download_form, 172 + $download_link, 181 173 ); 182 174 } 183 175 }
+1 -29
src/view/page/PhabricatorStandardPageView.php
··· 279 279 } 280 280 } 281 281 282 - $icon = id(new PHUIIconView()) 283 - ->setIcon('fa-download') 284 - ->addClass('phui-icon-circle-icon'); 285 - $lightbox_id = celerity_generate_unique_node_id(); 286 - $download_form = phabricator_form( 287 - $user, 288 - array( 289 - 'action' => '#', 290 - 'method' => 'POST', 291 - 'class' => 'lightbox-download-form', 292 - 'sigil' => 'download lightbox-download-submit', 293 - 'id' => 'lightbox-download-form', 294 - ), 295 - phutil_tag( 296 - 'a', 297 - array( 298 - 'class' => 'lightbox-download phui-icon-circle hover-green', 299 - 'href' => '#', 300 - ), 301 - array( 302 - $icon, 303 - ))); 304 - 305 - Javelin::initBehavior( 306 - 'lightbox-attachments', 307 - array( 308 - 'lightbox_id' => $lightbox_id, 309 - 'downloadForm' => $download_form, 310 - )); 282 + Javelin::initBehavior('lightbox-attachments'); 311 283 } 312 284 313 285 Javelin::initBehavior('aphront-form-disable-on-submit');
+28 -31
webroot/rsrc/js/core/behavior-lightbox-attachments.js
··· 9 9 * phabricator-busy 10 10 */ 11 11 12 - JX.behavior('lightbox-attachments', function (config) { 12 + JX.behavior('lightbox-attachments', function() { 13 + 14 + var lightbox = null; 13 15 14 - var lightbox = null; 15 16 var prev = null; 16 17 var next = null; 17 18 var shown = false; 18 - var downloadForm = JX.$H(config.downloadForm).getFragment().firstChild; 19 - var lightbox_id = config.lightbox_id; 20 19 21 20 function _toggleComment(e) { 22 21 e.kill(); 23 22 shown = !shown; 24 - JX.DOM.alterClass(JX.$(lightbox_id), 'comment-panel-open', shown); 23 + JX.DOM.alterClass(lightbox, 'comment-panel-open', shown); 25 24 } 26 25 27 26 function markCommentsLoading(loading) { ··· 45 44 46 45 function loadLightBox(e) { 47 46 if (!e.isNormalClick()) { 47 + return; 48 + } 49 + 50 + // If you click the "Download" link inside an embedded file element, 51 + // don't lightbox the file. 52 + if (e.getNode('tag:a')) { 48 53 return; 49 54 } 50 55 ··· 82 87 var img_uri = ''; 83 88 var img = ''; 84 89 var extra_status = ''; 85 - // for now, this conditional is always true 86 - // revisit if / when we decide to add non-images to lightbox view 90 + 87 91 if (target_data.viewable) { 88 92 img_uri = target_data.uri; 89 93 var alt_name = ''; ··· 114 118 { 115 119 className : 'lightbox-icon-frame', 116 120 sigil : 'lightbox-download-submit', 117 - href : '#', 121 + href : target_data.dUri, 118 122 }, 119 123 [ imgIcon, nameElement ] 120 124 ); ··· 138 142 ); 139 143 140 144 var commentClass = (shown) ? 'comment-panel-open' : ''; 145 + 141 146 lightbox = 142 147 JX.$N('div', 143 148 { 144 149 className : 'lightbox-attachment ' + commentClass, 145 - sigil : 'lightbox-attachment', 146 - id : lightbox_id 150 + sigil : 'lightbox-attachment' 147 151 }, 148 152 [imgFrame, commentFrame] 149 153 ); ··· 161 165 ] 162 166 ); 163 167 164 - var downloadSpan = 165 - JX.$N('span', 166 - { 167 - className : 'lightbox-download' 168 - } 169 - ); 168 + var download_icon = new JX.PHUIXIconView() 169 + .setIcon('fa-download phui-icon-circle-icon') 170 + .getNode(); 171 + 172 + var download_button = JX.$N( 173 + 'a', 174 + { 175 + className: 'lightbox-download phui-icon-circle hover-sky', 176 + href: target_data.dUri 177 + }, 178 + download_icon); 170 179 171 180 var commentIcon = new JX.PHUIXIconView() 172 181 .setIcon('fa-comments phui-icon-circle-icon') ··· 180 189 }, 181 190 commentIcon 182 191 ); 192 + 183 193 var closeIcon = new JX.PHUIXIconView() 184 194 .setIcon('fa-times phui-icon-circle-icon') 185 195 .getNode(); ··· 190 200 href : '#' 191 201 }, 192 202 closeIcon); 203 + 193 204 var statusHTML = 194 205 JX.$N('div', 195 206 { 196 207 className : 'lightbox-status' 197 208 }, 198 - [statusSpan, closeButton, commentButton, downloadSpan] 209 + [statusSpan, closeButton, commentButton, download_button] 199 210 ); 200 211 JX.DOM.appendContent(lightbox, statusHTML); 201 212 JX.DOM.listen(closeButton, 'click', null, closeLightBox); ··· 245 256 246 257 JX.DOM.alterClass(document.body, 'lightbox-attached', true); 247 258 JX.Mask.show('jx-dark-mask'); 248 - 249 - downloadForm.action = target_data.dUri; 250 - downloadSpan.appendChild(downloadForm); 251 259 252 260 document.body.appendChild(lightbox); 253 261 ··· 365 373 'lightbox-comment-form', 366 374 _sendMessage); 367 375 368 - var _startDownload = function(e) { 369 - e.kill(); 370 - var form = JX.$('lightbox-download-form'); 371 - form.submit(); 372 - }; 373 - 374 376 var _startPageDownload = function(e) { 375 377 e.kill(); 376 378 var form = e.getNode('tag:form'); 377 379 form.submit(); 378 380 }; 379 - 380 - JX.Stratcom.listen( 381 - 'click', 382 - 'lightbox-download-submit', 383 - _startDownload); 384 381 385 382 JX.Stratcom.listen( 386 383 'click',