Page MenuHomePhabricator

D16734.id40298.diff
No OneTemporary

D16734.id40298.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -10,7 +10,7 @@
'conpherence.pkg.css' => 'cea72e09',
'conpherence.pkg.js' => '6249a1cf',
'core.pkg.css' => '46d588e4',
- 'core.pkg.js' => '2d9fc958',
+ 'core.pkg.js' => '87990e62',
'darkconsole.pkg.js' => 'e7393ebb',
'differential.pkg.css' => 'e1d704ce',
'differential.pkg.js' => '634399e9',
@@ -425,7 +425,7 @@
'rsrc/image/texture/table_header_hover.png' => '038ec3b9',
'rsrc/image/texture/table_header_tall.png' => 'd56b434f',
'rsrc/js/application/aphlict/Aphlict.js' => '5359e785',
- 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '49e20786',
+ 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '40d4343f',
'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'fb20ac8d',
'rsrc/js/application/aphlict/behavior-aphlict-status.js' => '5e2634b9',
'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => 'edd1ba66',
@@ -530,6 +530,7 @@
'rsrc/js/core/Busy.js' => '59a7976a',
'rsrc/js/core/DragAndDropFileUpload.js' => '58dea2fa',
'rsrc/js/core/DraggableList.js' => '5a13c79f',
+ 'rsrc/js/core/Favicon.js' => '1fe2510c',
'rsrc/js/core/FileUpload.js' => '680ea2c8',
'rsrc/js/core/Hovercard.js' => '1bd28176',
'rsrc/js/core/KeyboardShortcut.js' => '1ae869f2',
@@ -539,7 +540,7 @@
'rsrc/js/core/Prefab.js' => 'cfd23f37',
'rsrc/js/core/ShapedRequest.js' => '7cbe244b',
'rsrc/js/core/TextAreaUtils.js' => '320810c8',
- 'rsrc/js/core/Title.js' => 'df5e11d2',
+ 'rsrc/js/core/Title.js' => '485aaa6c',
'rsrc/js/core/ToolTip.js' => '6323f942',
'rsrc/js/core/behavior-active-nav.js' => 'e379b58e',
'rsrc/js/core/behavior-audio-source.js' => '59b251eb',
@@ -648,7 +649,7 @@
'inline-comment-summary-css' => '51efda3a',
'javelin-aphlict' => '5359e785',
'javelin-behavior' => '61cbc29a',
- 'javelin-behavior-aphlict-dropdown' => '49e20786',
+ 'javelin-behavior-aphlict-dropdown' => '40d4343f',
'javelin-behavior-aphlict-listen' => 'fb20ac8d',
'javelin-behavior-aphlict-status' => '5e2634b9',
'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884',
@@ -846,6 +847,7 @@
'phabricator-drag-and-drop-file-upload' => '58dea2fa',
'phabricator-draggable-list' => '5a13c79f',
'phabricator-fatal-config-template-css' => '8f18fa41',
+ 'phabricator-favicon' => '1fe2510c',
'phabricator-feed-css' => 'ecd4ec57',
'phabricator-file-upload' => '680ea2c8',
'phabricator-filetree-view-css' => 'fccf9f82',
@@ -867,7 +869,7 @@
'phabricator-source-code-view-css' => 'cbeef983',
'phabricator-standard-page-view' => '79176f5a',
'phabricator-textareautils' => '320810c8',
- 'phabricator-title' => 'df5e11d2',
+ 'phabricator-title' => '485aaa6c',
'phabricator-tooltip' => '6323f942',
'phabricator-ui-example-css' => '528b19de',
'phabricator-uiexample-javelin-view' => 'd4a14807',
@@ -1139,6 +1141,10 @@
'javelin-uri',
'javelin-routable',
),
+ '1fe2510c' => array(
+ 'javelin-install',
+ 'javelin-dom',
+ ),
'21df4ff5' => array(
'javelin-install',
'javelin-workboard-card',
@@ -1230,6 +1236,17 @@
'javelin-dom',
'javelin-reactor-dom',
),
+ '40d4343f' => array(
+ 'javelin-behavior',
+ 'javelin-request',
+ 'javelin-stratcom',
+ 'javelin-vector',
+ 'javelin-dom',
+ 'javelin-uri',
+ 'javelin-behavior-device',
+ 'phabricator-title',
+ 'phabricator-favicon',
+ ),
42126667 => array(
'javelin-behavior',
'javelin-dom',
@@ -1277,6 +1294,9 @@
'phabricator-drag-and-drop-file-upload',
'phabricator-textareautils',
),
+ '485aaa6c' => array(
+ 'javelin-install',
+ ),
'491416b3' => array(
'javelin-behavior',
'javelin-uri',
@@ -1287,16 +1307,6 @@
'javelin-dom',
'javelin-stratcom',
),
- '49e20786' => array(
- 'javelin-behavior',
- 'javelin-request',
- 'javelin-stratcom',
- 'javelin-vector',
- 'javelin-dom',
- 'javelin-uri',
- 'javelin-behavior-device',
- 'phabricator-title',
- ),
'4a021c10' => array(
'javelin-install',
'javelin-util',
@@ -2092,9 +2102,6 @@
'javelin-typeahead-ondemand-source',
'javelin-dom',
),
- 'df5e11d2' => array(
- 'javelin-install',
- ),
'e0ec7f2f' => array(
'javelin-behavior',
'javelin-dom',
diff --git a/src/view/page/PhabricatorBarePageView.php b/src/view/page/PhabricatorBarePageView.php
--- a/src/view/page/PhabricatorBarePageView.php
+++ b/src/view/page/PhabricatorBarePageView.php
@@ -111,11 +111,12 @@
'/rsrc/favicons/apple-touch-icon-152x152.png'),
));
- $apple_tag = phutil_tag(
- 'meta',
+ $favicon_tag = phutil_tag(
+ 'link',
array(
- 'name' => 'apple-mobile-web-app-status-bar-style',
- 'content' => 'black-translucent',
+ 'id' => 'favicon',
+ 'rel' => 'shortcut icon',
+ 'href' => '/favicon.ico', // celerity doesn't work on ico ?
));
$referrer_tag = phutil_tag(
@@ -146,7 +147,7 @@
$icon_tag_76,
$icon_tag_120,
$icon_tag_152,
- $apple_tag,
+ $favicon_tag,
$referrer_tag,
CelerityStaticResourceResponse::renderInlineScript(
$framebust.jsprintf('window.__DEV__=%d;', ($developer ? 1 : 0))),
diff --git a/webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js b/webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js
--- a/webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js
+++ b/webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js
@@ -8,6 +8,7 @@
* javelin-uri
* javelin-behavior-device
* phabricator-title
+ * phabricator-favicon
*/
JX.behavior('aphlict-dropdown', function(config, statics) {
@@ -17,6 +18,7 @@
var dropdown = JX.$(config.dropdownID);
var bubble = JX.$(config.bubbleID);
var icon = JX.DOM.scry(bubble, 'span', 'menu-icon')[0];
+ var favicon = '/favicon.ico';
var count;
if (config.countID) {
@@ -33,6 +35,10 @@
function _updateCount(number) {
if (config.countType) {
JX.Title.setCount(config.countType, number);
+ if ((config.countType == 'messages') && (number)) {
+ favicon = '/rsrc/favicons/red/favicon.ico';
+ }
+ JX.Favicon.setFavicon(favicon);
} else {
return;
}
diff --git a/webroot/rsrc/js/core/Favicon.js b/webroot/rsrc/js/core/Favicon.js
new file mode 100644
--- /dev/null
+++ b/webroot/rsrc/js/core/Favicon.js
@@ -0,0 +1,35 @@
+/**
+ * @provides phabricator-favicon
+ * @requires javelin-install
+ * javelin-dom
+ */
+JX.install('Favicon', {
+ statics: {
+ _favicon: null,
+
+ setFavicon: function(favicon) {
+ var self = JX.Favicon;
+ self._favicon = favicon;
+ self._update();
+ },
+
+ _update: function() {
+ var self = JX.Favicon;
+ var cur_favicon = JX.$('favicon');
+
+ if (self._favicon === null) {
+ self._favicon = cur_favicon.href;
+ }
+
+ var new_favicon = JX.$N(
+ 'link',
+ {href: self._favicon,
+ id: 'favicon',
+ rel: 'shortcut icon',
+ });
+
+ JX.DOM.replace(cur_favicon, new_favicon);
+
+ }
+ }
+});
diff --git a/webroot/rsrc/js/core/Title.js b/webroot/rsrc/js/core/Title.js
--- a/webroot/rsrc/js/core/Title.js
+++ b/webroot/rsrc/js/core/Title.js
@@ -1,7 +1,6 @@
/**
- * @requires javelin-install
* @provides phabricator-title
- * @javelin
+ * @requires javelin-install
*/
/**
@@ -44,6 +43,7 @@
}
document.title = title;
+
}
}
});

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 5, 8:12 AM (22 h, 9 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
9121252
Default Alt Text
D16734.id40298.diff (7 KB)

Event Timeline