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

JX.Favicon for Conpherence

Summary: I think maybe these should be more separate from JX.Title, but seems to work ok. May build new favicons just for messages though. Proof of concept UI.

Test Plan: Send message on one browser, see red icon in other browser. Click on menu, count and favicon switch back to normal.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

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

+104 -82
+27 -75
resources/celerity/map.php
··· 10 10 'conpherence.pkg.css' => 'cea72e09', 11 11 'conpherence.pkg.js' => '6249a1cf', 12 12 'core.pkg.css' => '46d588e4', 13 - 'core.pkg.js' => '2d9fc958', 13 + 'core.pkg.js' => '035325a7', 14 14 'darkconsole.pkg.js' => 'e7393ebb', 15 15 'differential.pkg.css' => 'e1d704ce', 16 16 'differential.pkg.js' => '634399e9', ··· 273 273 'rsrc/favicons/apple-touch-icon-60x60.png' => '8ff52925', 274 274 'rsrc/favicons/apple-touch-icon-72x72.png' => 'a2bb65d6', 275 275 'rsrc/favicons/apple-touch-icon-76x76.png' => '2d061a11', 276 - 'rsrc/favicons/dark/apple-touch-icon-114x114.png' => 'd0c8978c', 277 - 'rsrc/favicons/dark/apple-touch-icon-120x120.png' => '3a618bc0', 278 - 'rsrc/favicons/dark/apple-touch-icon-144x144.png' => '92c1e188', 279 - 'rsrc/favicons/dark/apple-touch-icon-152x152.png' => '7ce7e469', 280 - 'rsrc/favicons/dark/apple-touch-icon-57x57.png' => 'e3f3f38b', 281 - 'rsrc/favicons/dark/apple-touch-icon-60x60.png' => '1e0dcc72', 282 - 'rsrc/favicons/dark/apple-touch-icon-72x72.png' => '7fb599b6', 283 - 'rsrc/favicons/dark/apple-touch-icon-76x76.png' => '91146961', 284 - 'rsrc/favicons/dark/favicon-128.png' => 'd6ac4346', 285 - 'rsrc/favicons/dark/favicon-16x16.png' => '17434bb0', 286 - 'rsrc/favicons/dark/favicon-196x196.png' => '5e06ee72', 287 - 'rsrc/favicons/dark/favicon-32x32.png' => 'bdd7e16b', 288 - 'rsrc/favicons/dark/favicon-96x96.png' => '0cf55978', 289 - 'rsrc/favicons/dark/favicon.ico' => '4343aaa6', 290 - 'rsrc/favicons/dark/mstile-144x144.png' => '4dc9d42d', 291 - 'rsrc/favicons/dark/mstile-150x150.png' => '2dc61c90', 292 - 'rsrc/favicons/dark/mstile-310x150.png' => '4fe58ab2', 293 - 'rsrc/favicons/dark/mstile-310x310.png' => 'e62c1677', 294 - 'rsrc/favicons/dark/mstile-70x70.png' => '6d1f41b7', 295 276 'rsrc/favicons/favicon-128.png' => '72f7e812', 296 277 'rsrc/favicons/favicon-16x16.png' => 'fc6275ba', 297 278 'rsrc/favicons/favicon-196x196.png' => '95db275e', 298 279 'rsrc/favicons/favicon-32x32.png' => '5bd18b6c', 299 280 'rsrc/favicons/favicon-96x96.png' => '7242c8e9', 281 + 'rsrc/favicons/favicon-mention.ico' => '1fdd0fa4', 282 + 'rsrc/favicons/favicon-message.ico' => '115bc010', 300 283 'rsrc/favicons/favicon.ico' => 'cdb11121', 301 284 'rsrc/favicons/mask-icon.svg' => 'e132a80f', 302 285 'rsrc/favicons/mstile-144x144.png' => '310c2ee5', ··· 304 287 'rsrc/favicons/mstile-310x150.png' => '4a49d3ee', 305 288 'rsrc/favicons/mstile-310x310.png' => 'a52ab264', 306 289 'rsrc/favicons/mstile-70x70.png' => '5edce7b8', 307 - 'rsrc/favicons/red/apple-touch-icon-114x114.png' => '91e37d1d', 308 - 'rsrc/favicons/red/apple-touch-icon-120x120.png' => '66687533', 309 - 'rsrc/favicons/red/apple-touch-icon-144x144.png' => 'bc06002c', 310 - 'rsrc/favicons/red/apple-touch-icon-152x152.png' => 'a713de42', 311 - 'rsrc/favicons/red/apple-touch-icon-57x57.png' => '4729688b', 312 - 'rsrc/favicons/red/apple-touch-icon-60x60.png' => '07b9b609', 313 - 'rsrc/favicons/red/apple-touch-icon-72x72.png' => 'b20c3698', 314 - 'rsrc/favicons/red/apple-touch-icon-76x76.png' => 'c6e7dd5c', 315 - 'rsrc/favicons/red/favicon-128.png' => 'e2b2f8fe', 316 - 'rsrc/favicons/red/favicon-16x16.png' => '929fbceb', 317 - 'rsrc/favicons/red/favicon-196x196.png' => '94c089a5', 318 - 'rsrc/favicons/red/favicon-32x32.png' => '5848673e', 319 - 'rsrc/favicons/red/favicon-96x96.png' => '895d54e8', 320 - 'rsrc/favicons/red/favicon.ico' => '25172b6b', 321 - 'rsrc/favicons/red/mstile-144x144.png' => '448639f5', 322 - 'rsrc/favicons/red/mstile-150x150.png' => 'c2ba45d0', 323 - 'rsrc/favicons/red/mstile-310x150.png' => 'b0e50799', 324 - 'rsrc/favicons/red/mstile-310x310.png' => '2475c5a5', 325 - 'rsrc/favicons/red/mstile-70x70.png' => '49b197e8', 326 - 'rsrc/favicons/yellow/apple-touch-icon-114x114.png' => '5271fb3f', 327 - 'rsrc/favicons/yellow/apple-touch-icon-120x120.png' => '6c3d9bf9', 328 - 'rsrc/favicons/yellow/apple-touch-icon-144x144.png' => '6484472c', 329 - 'rsrc/favicons/yellow/apple-touch-icon-152x152.png' => 'e305dda8', 330 - 'rsrc/favicons/yellow/apple-touch-icon-57x57.png' => 'fa6c43d4', 331 - 'rsrc/favicons/yellow/apple-touch-icon-60x60.png' => '2673f162', 332 - 'rsrc/favicons/yellow/apple-touch-icon-72x72.png' => '3ad8020c', 333 - 'rsrc/favicons/yellow/apple-touch-icon-76x76.png' => '58cffd81', 334 - 'rsrc/favicons/yellow/favicon-128.png' => '3b2f8233', 335 - 'rsrc/favicons/yellow/favicon-16x16.png' => 'f3a90518', 336 - 'rsrc/favicons/yellow/favicon-196x196.png' => '932c7c65', 337 - 'rsrc/favicons/yellow/favicon-32x32.png' => '005c9f92', 338 - 'rsrc/favicons/yellow/favicon-96x96.png' => '3ad9bfa9', 339 - 'rsrc/favicons/yellow/favicon.ico' => '2f5b2991', 340 - 'rsrc/favicons/yellow/mstile-144x144.png' => 'fc52335c', 341 - 'rsrc/favicons/yellow/mstile-150x150.png' => '9e556f80', 342 - 'rsrc/favicons/yellow/mstile-310x150.png' => '2c915073', 343 - 'rsrc/favicons/yellow/mstile-310x310.png' => 'ee49978d', 344 - 'rsrc/favicons/yellow/mstile-70x70.png' => '85c7c939', 345 290 'rsrc/image/BFCFDA.png' => 'd5ec91f4', 346 291 'rsrc/image/actions/edit.png' => '2fc41442', 347 292 'rsrc/image/avatar.png' => 'e132bb6a', ··· 430 375 'rsrc/image/texture/table_header_hover.png' => '038ec3b9', 431 376 'rsrc/image/texture/table_header_tall.png' => 'd56b434f', 432 377 'rsrc/js/application/aphlict/Aphlict.js' => '5359e785', 433 - 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '49e20786', 378 + 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '2a171a9d', 434 379 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'fb20ac8d', 435 380 'rsrc/js/application/aphlict/behavior-aphlict-status.js' => '5e2634b9', 436 381 'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => 'edd1ba66', ··· 535 480 'rsrc/js/core/Busy.js' => '59a7976a', 536 481 'rsrc/js/core/DragAndDropFileUpload.js' => '58dea2fa', 537 482 'rsrc/js/core/DraggableList.js' => '5a13c79f', 483 + 'rsrc/js/core/Favicon.js' => '1fe2510c', 538 484 'rsrc/js/core/FileUpload.js' => '680ea2c8', 539 485 'rsrc/js/core/Hovercard.js' => '1bd28176', 540 486 'rsrc/js/core/KeyboardShortcut.js' => '1ae869f2', ··· 544 490 'rsrc/js/core/Prefab.js' => 'cfd23f37', 545 491 'rsrc/js/core/ShapedRequest.js' => '7cbe244b', 546 492 'rsrc/js/core/TextAreaUtils.js' => '320810c8', 547 - 'rsrc/js/core/Title.js' => 'df5e11d2', 493 + 'rsrc/js/core/Title.js' => '485aaa6c', 548 494 'rsrc/js/core/ToolTip.js' => '6323f942', 549 495 'rsrc/js/core/behavior-active-nav.js' => 'e379b58e', 550 496 'rsrc/js/core/behavior-audio-source.js' => '59b251eb', ··· 653 599 'inline-comment-summary-css' => '51efda3a', 654 600 'javelin-aphlict' => '5359e785', 655 601 'javelin-behavior' => '61cbc29a', 656 - 'javelin-behavior-aphlict-dropdown' => '49e20786', 602 + 'javelin-behavior-aphlict-dropdown' => '2a171a9d', 657 603 'javelin-behavior-aphlict-listen' => 'fb20ac8d', 658 604 'javelin-behavior-aphlict-status' => '5e2634b9', 659 605 'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884', ··· 851 797 'phabricator-drag-and-drop-file-upload' => '58dea2fa', 852 798 'phabricator-draggable-list' => '5a13c79f', 853 799 'phabricator-fatal-config-template-css' => '8f18fa41', 800 + 'phabricator-favicon' => '1fe2510c', 854 801 'phabricator-feed-css' => 'ecd4ec57', 855 802 'phabricator-file-upload' => '680ea2c8', 856 803 'phabricator-filetree-view-css' => 'fccf9f82', ··· 872 819 'phabricator-source-code-view-css' => 'cbeef983', 873 820 'phabricator-standard-page-view' => '79176f5a', 874 821 'phabricator-textareautils' => '320810c8', 875 - 'phabricator-title' => 'df5e11d2', 822 + 'phabricator-title' => '485aaa6c', 876 823 'phabricator-tooltip' => '6323f942', 877 824 'phabricator-ui-example-css' => '528b19de', 878 825 'phabricator-uiexample-javelin-view' => 'd4a14807', ··· 1144 1091 'javelin-uri', 1145 1092 'javelin-routable', 1146 1093 ), 1094 + '1fe2510c' => array( 1095 + 'javelin-install', 1096 + 'javelin-dom', 1097 + ), 1147 1098 '21df4ff5' => array( 1148 1099 'javelin-install', 1149 1100 'javelin-workboard-card', ··· 1163 1114 'javelin-install', 1164 1115 'javelin-util', 1165 1116 ), 1117 + '2a171a9d' => array( 1118 + 'javelin-behavior', 1119 + 'javelin-request', 1120 + 'javelin-stratcom', 1121 + 'javelin-vector', 1122 + 'javelin-dom', 1123 + 'javelin-uri', 1124 + 'javelin-behavior-device', 1125 + 'phabricator-title', 1126 + 'phabricator-favicon', 1127 + ), 1166 1128 '2b8de964' => array( 1167 1129 'javelin-install', 1168 1130 'javelin-util', ··· 1282 1244 'phabricator-drag-and-drop-file-upload', 1283 1245 'phabricator-textareautils', 1284 1246 ), 1247 + '485aaa6c' => array( 1248 + 'javelin-install', 1249 + ), 1285 1250 '491416b3' => array( 1286 1251 'javelin-behavior', 1287 1252 'javelin-uri', ··· 1291 1256 'javelin-behavior', 1292 1257 'javelin-dom', 1293 1258 'javelin-stratcom', 1294 - ), 1295 - '49e20786' => array( 1296 - 'javelin-behavior', 1297 - 'javelin-request', 1298 - 'javelin-stratcom', 1299 - 'javelin-vector', 1300 - 'javelin-dom', 1301 - 'javelin-uri', 1302 - 'javelin-behavior-device', 1303 - 'phabricator-title', 1304 1259 ), 1305 1260 '4a021c10' => array( 1306 1261 'javelin-install', ··· 2096 2051 'javelin-typeahead', 2097 2052 'javelin-typeahead-ondemand-source', 2098 2053 'javelin-dom', 2099 - ), 2100 - 'df5e11d2' => array( 2101 - 'javelin-install', 2102 2054 ), 2103 2055 'e0ec7f2f' => array( 2104 2056 'javelin-behavior',
+7 -5
src/view/page/PhabricatorBarePageView.php
··· 111 111 '/rsrc/favicons/apple-touch-icon-152x152.png'), 112 112 )); 113 113 114 - $apple_tag = phutil_tag( 115 - 'meta', 114 + $favicon_tag = phutil_tag( 115 + 'link', 116 116 array( 117 - 'name' => 'apple-mobile-web-app-status-bar-style', 118 - 'content' => 'black-translucent', 117 + 'id' => 'favicon', 118 + 'rel' => 'shortcut icon', 119 + 'href' => celerity_get_resource_uri( 120 + '/rsrc/favicons/favicon.ico'), 119 121 )); 120 122 121 123 $referrer_tag = phutil_tag( ··· 146 148 $icon_tag_76, 147 149 $icon_tag_120, 148 150 $icon_tag_152, 149 - $apple_tag, 151 + $favicon_tag, 150 152 $referrer_tag, 151 153 CelerityStaticResourceResponse::renderInlineScript( 152 154 $framebust.jsprintf('window.__DEV__=%d;', ($developer ? 1 : 0))),
+20
src/view/page/menu/PhabricatorMainMenuView.php
··· 23 23 return $this->controller; 24 24 } 25 25 26 + private function getFaviconURI($type = null) { 27 + switch ($type) { 28 + case 'message': 29 + return celerity_get_resource_uri('/rsrc/favicons/favicon-message.ico'); 30 + case 'mention': 31 + return celerity_get_resource_uri('/rsrc/favicons/favicon-mention.ico'); 32 + default: 33 + return celerity_get_resource_uri('/rsrc/favicons/favicon.ico'); 34 + } 35 + } 36 + 26 37 public function render() { 27 38 $viewer = $this->getViewer(); 28 39 ··· 440 451 'countType' => $conpherence_data['countType'], 441 452 'countNumber' => $message_count_number, 442 453 'unreadClass' => 'message-unread', 454 + 'favicon' => $this->getFaviconURI('default'), 455 + 'message_favicon' => $this->getFaviconURI('message'), 456 + 'mention_favicon' => $this->getFaviconURI('mention'), 443 457 )); 444 458 445 459 $message_notification_dropdown = javelin_tag( ··· 518 532 'countType' => $notification_data['countType'], 519 533 'countNumber' => $count_number, 520 534 'unreadClass' => 'alert-unread', 535 + 'favicon' => $this->getFaviconURI('default'), 536 + 'message_favicon' => $this->getFaviconURI('message'), 537 + 'mention_favicon' => $this->getFaviconURI('mention'), 521 538 )); 522 539 523 540 $notification_dropdown = javelin_tag( ··· 600 617 'countType' => null, 601 618 'countNumber' => null, 602 619 'unreadClass' => 'setup-unread', 620 + 'favicon' => $this->getFaviconURI('default'), 621 + 'message_favicon' => $this->getFaviconURI('message'), 622 + 'mention_favicon' => $this->getFaviconURI('mention'), 603 623 )); 604 624 605 625 $setup_notification_dropdown = javelin_tag(
webroot/rsrc/favicons/dark/apple-touch-icon-114x114.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/apple-touch-icon-120x120.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/apple-touch-icon-144x144.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/apple-touch-icon-152x152.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/apple-touch-icon-57x57.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/apple-touch-icon-60x60.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/apple-touch-icon-72x72.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/apple-touch-icon-76x76.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/favicon-128.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/favicon-16x16.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/favicon-196x196.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/favicon-32x32.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/favicon-96x96.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/favicon.ico

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/mstile-144x144.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/mstile-150x150.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/mstile-310x150.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/mstile-310x310.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/dark/mstile-70x70.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/favicon-mention.ico

This is a binary file and will not be displayed.

webroot/rsrc/favicons/favicon-message.ico

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/apple-touch-icon-114x114.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/apple-touch-icon-120x120.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/apple-touch-icon-144x144.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/apple-touch-icon-152x152.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/apple-touch-icon-57x57.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/apple-touch-icon-60x60.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/apple-touch-icon-72x72.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/apple-touch-icon-76x76.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/favicon-128.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/favicon-16x16.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/favicon-196x196.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/favicon-32x32.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/favicon-96x96.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/favicon.ico

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/mstile-144x144.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/mstile-150x150.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/mstile-310x150.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/mstile-310x310.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/red/mstile-70x70.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/apple-touch-icon-114x114.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/apple-touch-icon-120x120.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/apple-touch-icon-144x144.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/apple-touch-icon-152x152.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/apple-touch-icon-57x57.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/apple-touch-icon-60x60.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/apple-touch-icon-72x72.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/apple-touch-icon-76x76.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/favicon-128.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/favicon-16x16.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/favicon-196x196.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/favicon-32x32.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/favicon-96x96.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/favicon.ico

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/mstile-144x144.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/mstile-150x150.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/mstile-310x150.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/mstile-310x310.png

This is a binary file and will not be displayed.

webroot/rsrc/favicons/yellow/mstile-70x70.png

This is a binary file and will not be displayed.

+13
webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js
··· 8 8 * javelin-uri 9 9 * javelin-behavior-device 10 10 * phabricator-title 11 + * phabricator-favicon 11 12 */ 12 13 13 14 JX.behavior('aphlict-dropdown', function(config, statics) { ··· 17 18 var dropdown = JX.$(config.dropdownID); 18 19 var bubble = JX.$(config.bubbleID); 19 20 var icon = JX.DOM.scry(bubble, 'span', 'menu-icon')[0]; 21 + var favicon = config.favicon; 22 + var message_favicon = config.message_favicon; 20 23 21 24 var count; 22 25 if (config.countID) { ··· 26 29 var request = null; 27 30 var dirty = config.local ? false : true; 28 31 32 + function _updateFavicon(new_count) { 33 + if ((config.countType == 'messages') && (new_count)) { 34 + JX.Favicon.setFavicon(message_favicon); 35 + } else if (config.countType == 'messages') { 36 + JX.Favicon.setFavicon(favicon); 37 + } 38 + } 39 + 29 40 if (config.countType) { 30 41 JX.Title.setCount(config.countType, config.countNumber); 42 + _updateFavicon(config.countNumber); 31 43 } 32 44 33 45 function _updateCount(number) { 34 46 if (config.countType) { 35 47 JX.Title.setCount(config.countType, number); 48 + _updateFavicon(number); 36 49 } else { 37 50 return; 38 51 }
+35
webroot/rsrc/js/core/Favicon.js
··· 1 + /** 2 + * @provides phabricator-favicon 3 + * @requires javelin-install 4 + * javelin-dom 5 + */ 6 + JX.install('Favicon', { 7 + statics: { 8 + _favicon: null, 9 + 10 + setFavicon: function(favicon) { 11 + var self = JX.Favicon; 12 + self._favicon = favicon; 13 + self._update(); 14 + }, 15 + 16 + _update: function() { 17 + var self = JX.Favicon; 18 + var cur_favicon = JX.$('favicon'); 19 + 20 + if (self._favicon === null) { 21 + self._favicon = cur_favicon.href; 22 + } 23 + 24 + var new_favicon = JX.$N( 25 + 'link', 26 + {href: self._favicon, 27 + id: 'favicon', 28 + rel: 'shortcut icon', 29 + }); 30 + 31 + JX.DOM.replace(cur_favicon, new_favicon); 32 + 33 + } 34 + } 35 + });
+2 -2
webroot/rsrc/js/core/Title.js
··· 1 1 /** 2 - * @requires javelin-install 3 2 * @provides phabricator-title 4 - * @javelin 3 + * @requires javelin-install 5 4 */ 6 5 7 6 /** ··· 44 43 } 45 44 46 45 document.title = title; 46 + 47 47 } 48 48 } 49 49 });