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

Don't show participants in Conpherence left open on mobile

Summary: Fixes T11764. Moves rendering of the column to client-side, which can skip if it detects we're on mobile.

Test Plan: Open column on desktop, switch to mobile, don't see column. Toggle column on mobile on and off. Switch back to desktop.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Maniphest Tasks: T11764

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

+53 -78
+26 -26
resources/celerity/map.php
··· 8 8 return array( 9 9 'names' => array( 10 10 'conpherence.pkg.css' => 'fabab894', 11 - 'conpherence.pkg.js' => 'cbe4d9be', 11 + 'conpherence.pkg.js' => '6249a1cf', 12 12 'core.pkg.css' => 'b99bbf5e', 13 13 'core.pkg.js' => '2d9fc958', 14 14 'darkconsole.pkg.js' => 'e7393ebb', ··· 438 438 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '358c717b', 439 439 'rsrc/js/application/conpherence/behavior-conpherence-search.js' => '9bbf3762', 440 440 'rsrc/js/application/conpherence/behavior-durable-column.js' => 'aa3bd034', 441 - 'rsrc/js/application/conpherence/behavior-menu.js' => '07928ca3', 441 + 'rsrc/js/application/conpherence/behavior-menu.js' => '7524fcfa', 442 442 'rsrc/js/application/conpherence/behavior-participant-pane.js' => '8604caa8', 443 443 'rsrc/js/application/conpherence/behavior-pontificate.js' => 'f2e58483', 444 444 'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3', 445 - 'rsrc/js/application/conpherence/behavior-toggle-widget.js' => '9bdbbab0', 445 + 'rsrc/js/application/conpherence/behavior-toggle-widget.js' => '3dbf94d5', 446 446 'rsrc/js/application/countdown/timer.js' => 'e4cc26b3', 447 447 'rsrc/js/application/daemon/behavior-bulk-job-reload.js' => 'edf8a145', 448 448 'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '469c0d9e', ··· 663 663 'javelin-behavior-choose-control' => '327a00d1', 664 664 'javelin-behavior-comment-actions' => '0300eae6', 665 665 'javelin-behavior-config-reorder-fields' => 'b6993408', 666 - 'javelin-behavior-conpherence-menu' => '07928ca3', 666 + 'javelin-behavior-conpherence-menu' => '7524fcfa', 667 667 'javelin-behavior-conpherence-participant-pane' => '8604caa8', 668 668 'javelin-behavior-conpherence-pontificate' => 'f2e58483', 669 669 'javelin-behavior-conpherence-search' => '9bbf3762', ··· 772 772 'javelin-behavior-test-payment-form' => 'fc91ab6c', 773 773 'javelin-behavior-time-typeahead' => '522431f7', 774 774 'javelin-behavior-toggle-class' => '92b9ec77', 775 - 'javelin-behavior-toggle-widget' => '9bdbbab0', 775 + 'javelin-behavior-toggle-widget' => '3dbf94d5', 776 776 'javelin-behavior-typeahead-browse' => '635de1ec', 777 777 'javelin-behavior-typeahead-search' => '93d0c9e3', 778 778 'javelin-behavior-view-placeholder' => '47830651', ··· 1029 1029 'phabricator-prefab', 1030 1030 'phuix-icon-view', 1031 1031 ), 1032 - '07928ca3' => array( 1033 - 'javelin-behavior', 1034 - 'javelin-dom', 1035 - 'javelin-util', 1036 - 'javelin-stratcom', 1037 - 'javelin-workflow', 1038 - 'javelin-behavior-device', 1039 - 'javelin-history', 1040 - 'javelin-vector', 1041 - 'javelin-scrollbar', 1042 - 'phabricator-title', 1043 - 'phabricator-shaped-request', 1044 - 'conpherence-thread-manager', 1045 - ), 1046 1032 '08675c6d' => array( 1047 1033 'javelin-behavior', 1048 1034 'javelin-behavior-device', ··· 1227 1213 'javelin-util', 1228 1214 'javelin-uri', 1229 1215 ), 1216 + '3dbf94d5' => array( 1217 + 'javelin-behavior', 1218 + 'javelin-dom', 1219 + 'javelin-util', 1220 + 'javelin-workflow', 1221 + 'javelin-stratcom', 1222 + ), 1230 1223 '3f5d6dbf' => array( 1231 1224 'javelin-behavior', 1232 1225 'javelin-dom', ··· 1548 1541 'javelin-vector', 1549 1542 'javelin-dom', 1550 1543 ), 1544 + '7524fcfa' => array( 1545 + 'javelin-behavior', 1546 + 'javelin-dom', 1547 + 'javelin-util', 1548 + 'javelin-stratcom', 1549 + 'javelin-workflow', 1550 + 'javelin-behavior-device', 1551 + 'javelin-history', 1552 + 'javelin-vector', 1553 + 'javelin-scrollbar', 1554 + 'phabricator-title', 1555 + 'phabricator-shaped-request', 1556 + 'conpherence-thread-manager', 1557 + ), 1551 1558 '769d3498' => array( 1552 1559 'syntax-default-css', 1553 1560 ), ··· 1760 1767 'changeset-view-manager', 1761 1768 ), 1762 1769 '9bbf3762' => array( 1763 - 'javelin-behavior', 1764 - 'javelin-dom', 1765 - 'javelin-util', 1766 - 'javelin-workflow', 1767 - 'javelin-stratcom', 1768 - ), 1769 - '9bdbbab0' => array( 1770 1770 'javelin-behavior', 1771 1771 'javelin-dom', 1772 1772 'javelin-util',
+7 -16
src/applications/conpherence/view/ConpherenceLayoutView.php
··· 61 61 return $this; 62 62 } 63 63 64 - public function getWidgetColumnVisible() { 65 - $widget_key = PhabricatorConpherenceWidgetVisibleSetting::SETTINGKEY; 66 - $user = $this->getUser(); 67 - return (bool)$user->getUserSetting($widget_key, false); 68 - } 69 - 70 64 protected function getTagAttributes() { 71 65 $classes = array(); 72 - if (!$this->getWidgetColumnVisible()) { 73 - $classes[] = 'hide-widgets'; 74 - } 66 + $classes[] = 'conpherence-layout'; 67 + $classes[] = 'hide-widgets'; 68 + $classes[] = 'conpherence-role-'.$this->role; 75 69 76 70 return array( 77 - 'id' => 'conpherence-main-layout', 78 - 'sigil' => 'conpherence-layout', 79 - 'class' => 'conpherence-layout '. 80 - implode(' ', $classes). 81 - ' conpherence-role-'.$this->role, 82 - ); 83 - 71 + 'id' => 'conpherence-main-layout', 72 + 'sigil' => 'conpherence-layout', 73 + 'class' => implode(' ', $classes), 74 + ); 84 75 } 85 76 86 77 protected function getTagContent() {
+1 -33
webroot/rsrc/js/application/conpherence/behavior-menu.js
··· 191 191 192 192 if (_thread.visible !== null || !config.hasWidgets) { 193 193 reloadWidget(data); 194 - } else { 195 - JX.Stratcom.invoke( 196 - 'conpherence-update-widgets', 197 - null, 198 - { 199 - widget : getDefaultWidget(), 200 - buildSelectors : false, 201 - toggleWidget : true, 202 - threadID : _thread.selected 203 - }); 204 194 } 205 195 206 196 _thread.visible = _thread.selected; ··· 259 249 var root = JX.DOM.find(document, 'div', 'conpherence-layout'); 260 250 var widgets_root = JX.DOM.find(root, 'div', 'conpherence-widgets-holder'); 261 251 JX.DOM.setContent(widgets_root, JX.$H(response.widgets)); 262 - 263 - JX.Stratcom.invoke( 264 - 'conpherence-update-widgets', 265 - null, 266 - { 267 - widget : widget, 268 - buildSelectors : true, 269 - toggleWidget : true, 270 - threadID : _thread.selected 271 - }); 272 - 273 - markWidgetLoading(false); 274 252 } 275 253 276 254 function getDefaultWidget() { 277 - var device = JX.Device.getDevice(); 278 - var widget = 'conpherence-message-pane'; 279 - if (device == 'desktop') { 280 - widget = 'widgets-people'; 281 - var uri = JX.$U(location.href); 282 - var params = uri.getQueryParams(); 283 - if ('settings' in params) { 284 - widget = 'widgets-settings'; 285 - } 286 - } 287 - return widget; 255 + return 'widgets-people'; 288 256 } 289 257 290 258 /**
+19 -3
webroot/rsrc/js/application/conpherence/behavior-toggle-widget.js
··· 9 9 10 10 JX.behavior('toggle-widget', function(config) { 11 11 12 + var device; 13 + 14 + function init() { 15 + device = JX.Device.getDevice(); 16 + if (device != 'phone') { 17 + var node = JX.$('conpherence-main-layout'); 18 + JX.DOM.alterClass(node, 'hide-widgets', !config.show); 19 + JX.Stratcom.invoke('resize'); 20 + } else { 21 + config.show = 0; 22 + } 23 + } 24 + init(); 25 + 12 26 function _toggleColumn(e) { 13 27 e.kill(); 14 28 var node = JX.$('conpherence-main-layout'); ··· 16 30 JX.DOM.alterClass(node, 'hide-widgets', !config.show); 17 31 JX.Stratcom.invoke('resize'); 18 32 19 - new JX.Request(config.settingsURI) 20 - .setData({value: (config.show ? 1 : 0)}) 21 - .send(); 33 + if (device != 'phone') { 34 + new JX.Request(config.settingsURI) 35 + .setData({value: (config.show ? 1 : 0)}) 36 + .send(); 37 + } 22 38 } 23 39 24 40 JX.Stratcom.listen(