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

Fix bad JS rendering in "Allow Desktop Notifications" workflow

Summary:
See downstream <https://phabricator.kde.org/T5404>. This code was doing some `.firstChild` shenanigans which didn't survive some UI refactoring.

This whole UI is a little iffy but just unbreak it for now.

Test Plan: Allowed and rejected desktop notifications, got largely reasonable UI rendering.

Reviewers: chad

Reviewed By: chad

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

+30 -16
+9 -9
resources/celerity/map.php
··· 376 376 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => 'caade6f2', 377 377 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'fb20ac8d', 378 378 'rsrc/js/application/aphlict/behavior-aphlict-status.js' => '5e2634b9', 379 - 'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => 'edd1ba66', 379 + 'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => 'd5a2d665', 380 380 'rsrc/js/application/calendar/behavior-day-view.js' => '4b3c4443', 381 381 'rsrc/js/application/calendar/behavior-event-all-day.js' => 'b41537c9', 382 382 'rsrc/js/application/calendar/behavior-month-view.js' => 'fe33e256', ··· 621 621 'javelin-behavior-dashboard-query-panel-select' => '453c5375', 622 622 'javelin-behavior-dashboard-tab-panel' => 'd4eecc63', 623 623 'javelin-behavior-day-view' => '4b3c4443', 624 - 'javelin-behavior-desktop-notifications-control' => 'edd1ba66', 624 + 'javelin-behavior-desktop-notifications-control' => 'd5a2d665', 625 625 'javelin-behavior-detect-timezone' => '4c193c96', 626 626 'javelin-behavior-device' => 'bb1dd507', 627 627 'javelin-behavior-diff-preview-link' => '051c7832', ··· 2060 2060 'javelin-dom', 2061 2061 'javelin-stratcom', 2062 2062 ), 2063 + 'd5a2d665' => array( 2064 + 'javelin-behavior', 2065 + 'javelin-stratcom', 2066 + 'javelin-dom', 2067 + 'javelin-uri', 2068 + 'phabricator-notification', 2069 + ), 2063 2070 'd6a7e717' => array( 2064 2071 'multirow-row-manager', 2065 2072 'javelin-install', ··· 2153 2160 'javelin-workflow', 2154 2161 'javelin-dom', 2155 2162 'phabricator-draggable-list', 2156 - ), 2157 - 'edd1ba66' => array( 2158 - 'javelin-behavior', 2159 - 'javelin-stratcom', 2160 - 'javelin-dom', 2161 - 'javelin-uri', 2162 - 'phabricator-notification', 2163 2163 ), 2164 2164 'edf8a145' => array( 2165 2165 'javelin-behavior',
+11 -1
src/applications/settings/panel/PhabricatorDesktopNotificationsSettingsPanel.php
··· 88 88 'for this Phabricator instance. Consult your browser settings / '. 89 89 'documentation to figure out how to clear this setting, do so, '. 90 90 'and then re-visit this page to grant permission.')); 91 + 92 + $message_id = celerity_generate_unique_node_id(); 93 + 94 + $message_container = phutil_tag( 95 + 'span', 96 + array( 97 + 'id' => $message_id, 98 + )); 99 + 91 100 $status_box = id(new PHUIInfoView()) 92 101 ->setSeverity(PHUIInfoView::SEVERITY_NOTICE) 93 102 ->setID($status_id) 94 103 ->setIsHidden(true) 95 - ->appendChild($accept_ask); 104 + ->appendChild($message_container); 96 105 97 106 $control_config = array( 98 107 'controlID' => $control_id, 99 108 'statusID' => $status_id, 109 + 'messageID' => $message_id, 100 110 'browserStatusID' => $browser_status_id, 101 111 'defaultMode' => 0, 102 112 'desktopMode' => 1,
+10 -6
webroot/rsrc/js/application/aphlict/behavior-desktop-notifications-control.js
··· 19 19 return el; 20 20 } 21 21 function updateFormStatus(permission) { 22 - var statusEl = findEl(config.statusID); 23 - if (!statusEl) { 22 + var status_node = findEl(config.statusID); 23 + if (!status_node) { 24 24 return; 25 25 } 26 + 27 + var message_node = JX.$(config.messageID); 28 + 26 29 switch (permission) { 27 30 case 'default': 28 - JX.DOM.setContent(statusEl.firstChild, config.cancelAsk); 31 + JX.DOM.setContent(message_node, config.cancelAsk); 29 32 break; 30 33 case 'granted': 31 - JX.DOM.setContent(statusEl.firstChild, config.grantedAsk); 34 + JX.DOM.setContent(message_node, config.grantedAsk); 32 35 break; 33 36 case 'denied': 34 - JX.DOM.setContent(statusEl.firstChild, config.deniedAsk); 37 + JX.DOM.setContent(message_node, config.deniedAsk); 35 38 break; 36 39 } 37 - JX.DOM.show(statusEl); 40 + 41 + JX.DOM.show(status_node); 38 42 } 39 43 40 44 function updateBrowserStatus(permission) {