Page MenuHomePhabricator

D10457.diff
No OneTemporary

D10457.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -8,7 +8,7 @@
return array(
'names' => array(
'core.pkg.css' => '974635bb',
- 'core.pkg.js' => 'f0e2c091',
+ 'core.pkg.js' => 'cbdbd552',
'darkconsole.pkg.js' => 'df001cab',
'differential.pkg.css' => '36884139',
'differential.pkg.js' => '73337d1d',
@@ -348,7 +348,7 @@
'rsrc/image/texture/table_header_hover.png' => '038ec3b9',
'rsrc/image/texture/table_header_tall.png' => 'd56b434f',
'rsrc/js/application/aphlict/Aphlict.js' => '4a07e8e3',
- 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => 'f51afce0',
+ 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '7d4cc76c',
'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'a826c925',
'rsrc/js/application/aphlict/behavior-aphlict-status.js' => '58f7803f',
'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18',
@@ -448,6 +448,7 @@
'rsrc/js/core/Prefab.js' => 'bbae734c',
'rsrc/js/core/ShapedRequest.js' => '7cbe244b',
'rsrc/js/core/TextAreaUtils.js' => '5c93c52c',
+ 'rsrc/js/core/Title.js' => '5c1c758c',
'rsrc/js/core/ToolTip.js' => '3915d490',
'rsrc/js/core/behavior-active-nav.js' => 'e379b58e',
'rsrc/js/core/behavior-audio-source.js' => '59b251eb',
@@ -542,7 +543,7 @@
'inline-comment-summary-css' => '8cfd34e8',
'javelin-aphlict' => '4a07e8e3',
'javelin-behavior' => '61cbc29a',
- 'javelin-behavior-aphlict-dropdown' => 'f51afce0',
+ 'javelin-behavior-aphlict-dropdown' => '7d4cc76c',
'javelin-behavior-aphlict-listen' => 'a826c925',
'javelin-behavior-aphlict-status' => '58f7803f',
'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884',
@@ -740,6 +741,7 @@
'phabricator-source-code-view-css' => '7d346aa4',
'phabricator-standard-page-view' => '517cdfb1',
'phabricator-textareautils' => '5c93c52c',
+ 'phabricator-title' => '5c1c758c',
'phabricator-tooltip' => '3915d490',
'phabricator-transaction-view-css' => '5d0cae25',
'phabricator-ui-example-css' => '528b19de',
@@ -1190,6 +1192,9 @@
'javelin-behavior',
'javelin-stratcom',
),
+ '5c1c758c' => array(
+ 'javelin-install',
+ ),
'5c54cbf3' => array(
'javelin-behavior',
'javelin-stratcom',
@@ -1328,6 +1333,16 @@
'javelin-request',
'javelin-router',
),
+ '7d4cc76c' => array(
+ 'javelin-behavior',
+ 'javelin-request',
+ 'javelin-stratcom',
+ 'javelin-vector',
+ 'javelin-dom',
+ 'javelin-uri',
+ 'javelin-behavior-device',
+ 'phabricator-title',
+ ),
'7e41274a' => array(
'javelin-install',
),
@@ -1859,15 +1874,6 @@
'phuix-action-view',
'javelin-workflow',
),
- 'f51afce0' => array(
- 'javelin-behavior',
- 'javelin-request',
- 'javelin-stratcom',
- 'javelin-vector',
- 'javelin-dom',
- 'javelin-uri',
- 'javelin-behavior-device',
- ),
'f588412e' => array(
'javelin-behavior',
'javelin-dom',
diff --git a/src/view/page/menu/PhabricatorMainMenuView.php b/src/view/page/menu/PhabricatorMainMenuView.php
--- a/src/view/page/menu/PhabricatorMainMenuView.php
+++ b/src/view/page/menu/PhabricatorMainMenuView.php
@@ -349,6 +349,8 @@
'dropdownID' => $message_dropdown_id,
'loadingText' => pht('Loading...'),
'uri' => '/conpherence/panel/',
+ 'countType' => 'messages',
+ 'countNumber' => $message_count_number,
));
$message_notification_dropdown = javelin_tag(
@@ -428,6 +430,8 @@
'dropdownID' => $dropdown_id,
'loadingText' => pht('Loading...'),
'uri' => '/notification/panel/',
+ 'countType' => 'notifications',
+ 'countNumber' => $count_number,
));
$notification_dropdown = javelin_tag(
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
@@ -7,6 +7,7 @@
* javelin-dom
* javelin-uri
* javelin-behavior-device
+ * phabricator-title
*/
JX.behavior('aphlict-dropdown', function(config, statics) {
@@ -24,6 +25,8 @@
var request = null;
var dirty = config.local ? false : true;
+ JX.Title.setCount(config.countType, config.countNumber);
+
function refresh() {
if (dirty) {
JX.DOM.setContent(dropdown, config.loadingText);
@@ -38,6 +41,8 @@
}
request = new JX.Request(config.uri, function(response) {
+ JX.Title.setCount(config.countType, response.number);
+
var display = (response.number > 999) ? '\u221E' : response.number;
JX.DOM.setContent(count, display);
diff --git a/webroot/rsrc/js/core/Title.js b/webroot/rsrc/js/core/Title.js
new file mode 100644
--- /dev/null
+++ b/webroot/rsrc/js/core/Title.js
@@ -0,0 +1,43 @@
+/**
+ * @requires javelin-install
+ * @provides phabricator-title
+ * @javelin
+ */
+
+/**
+ * Update the document title to show a notification/message count.
+ */
+JX.install('Title', {
+ statics: {
+ _counts: {},
+ _title: null,
+
+ setCount: function(k, v) {
+ var self = JX.Title;
+ self._counts[k] = v;
+ self._update();
+ },
+
+ _update: function() {
+ var self = JX.Title;
+
+ if (self._title === null) {
+ self._title = document.title;
+ }
+
+ var sum = 0;
+ for (var k in self._counts) {
+ sum += parseInt(self._counts[k], 10) || 0;
+ }
+
+ var title;
+ if (sum) {
+ title = '(' + sum + ') ' + self._title;
+ } else {
+ title = self._title;
+ }
+
+ document.title = title;
+ }
+ }
+});

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 7, 12:37 PM (2 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7269469
Default Alt Text
D10457.diff (5 KB)

Event Timeline