Page MenuHomePhabricator

D12037.diff
No OneTemporary

D12037.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -44,7 +44,7 @@
'rsrc/css/application/config/config-welcome.css' => '6abd79be',
'rsrc/css/application/config/setup-issue.css' => '22270af2',
'rsrc/css/application/config/unhandled-exception.css' => '37d4f9a2',
- 'rsrc/css/application/conpherence/durable-column.css' => '9207426d',
+ 'rsrc/css/application/conpherence/durable-column.css' => '7abcc3f2',
'rsrc/css/application/conpherence/menu.css' => 'c6ac5299',
'rsrc/css/application/conpherence/message-pane.css' => '5930260a',
'rsrc/css/application/conpherence/notification.css' => '04a6e10a',
@@ -207,8 +207,8 @@
'rsrc/externals/javelin/lib/Resource.js' => '44959b73',
'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692',
'rsrc/externals/javelin/lib/Router.js' => '29274e2b',
- 'rsrc/externals/javelin/lib/Scrollbar.js' => '1ed54a27',
- 'rsrc/externals/javelin/lib/Sound.js' => '59655c83',
+ 'rsrc/externals/javelin/lib/Scrollbar.js' => '1feea462',
+ 'rsrc/externals/javelin/lib/Sound.js' => '949c0fe5',
'rsrc/externals/javelin/lib/URI.js' => '6eff08aa',
'rsrc/externals/javelin/lib/Vector.js' => '2caa8fb8',
'rsrc/externals/javelin/lib/WebSocket.js' => 'e292eaf4',
@@ -352,10 +352,11 @@
'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'ea681761',
'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18',
'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de',
- 'rsrc/js/application/conpherence/behavior-durable-column.js' => 'e4affa94',
- 'rsrc/js/application/conpherence/behavior-menu.js' => '869e3445',
- 'rsrc/js/application/conpherence/behavior-pontificate.js' => '86df5915',
- 'rsrc/js/application/conpherence/behavior-widget-pane.js' => '40b1ff90',
+ 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => 'efef202b',
+ 'rsrc/js/application/conpherence/behavior-durable-column.js' => 'd8dab826',
+ 'rsrc/js/application/conpherence/behavior-menu.js' => 'e476c952',
+ 'rsrc/js/application/conpherence/behavior-pontificate.js' => '21ba5861',
+ 'rsrc/js/application/conpherence/behavior-widget-pane.js' => '2c1cd7f5',
'rsrc/js/application/countdown/timer.js' => 'e4cc26b3',
'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '469c0d9e',
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '82439934',
@@ -513,10 +514,11 @@
'changeset-view-manager' => '88be0133',
'config-options-css' => '7fedf08b',
'config-welcome-css' => '6abd79be',
- 'conpherence-durable-column-view' => '9207426d',
+ 'conpherence-durable-column-view' => '7abcc3f2',
'conpherence-menu-css' => 'c6ac5299',
'conpherence-message-pane-css' => '5930260a',
'conpherence-notification-css' => '04a6e10a',
+ 'conpherence-thread-manager' => 'efef202b',
'conpherence-update-css' => '1099a660',
'conpherence-widget-pane-css' => '3d575438',
'differential-changeset-view-css' => '6a8b172a',
@@ -556,9 +558,9 @@
'javelin-behavior-boards-dropdown' => '0ec56e1d',
'javelin-behavior-choose-control' => '6153c708',
'javelin-behavior-config-reorder-fields' => '14a827de',
- 'javelin-behavior-conpherence-menu' => '869e3445',
- 'javelin-behavior-conpherence-pontificate' => '86df5915',
- 'javelin-behavior-conpherence-widget-pane' => '40b1ff90',
+ 'javelin-behavior-conpherence-menu' => 'e476c952',
+ 'javelin-behavior-conpherence-pontificate' => '21ba5861',
+ 'javelin-behavior-conpherence-widget-pane' => '2c1cd7f5',
'javelin-behavior-countdown-timer' => 'e4cc26b3',
'javelin-behavior-dark-console' => '08883e8b',
'javelin-behavior-dashboard-async-panel' => '469c0d9e',
@@ -583,7 +585,7 @@
'javelin-behavior-diffusion-locate-file' => '6d3e1947',
'javelin-behavior-diffusion-pull-lastmodified' => '2b228192',
'javelin-behavior-doorkeeper-tag' => 'e5822781',
- 'javelin-behavior-durable-column' => 'e4affa94',
+ 'javelin-behavior-durable-column' => 'd8dab826',
'javelin-behavior-error-log' => '6882e80a',
'javelin-behavior-fancy-datepicker' => 'c51ae228',
'javelin-behavior-global-drag-and-drop' => '07f199d8',
@@ -677,8 +679,8 @@
'javelin-resource' => '44959b73',
'javelin-routable' => 'b3e7d692',
'javelin-router' => '29274e2b',
- 'javelin-scrollbar' => '1ed54a27',
- 'javelin-sound' => '59655c83',
+ 'javelin-scrollbar' => '1feea462',
+ 'javelin-sound' => '949c0fe5',
'javelin-stratcom' => '6c53634d',
'javelin-tokenizer' => '7644823e',
'javelin-typeahead' => '70baed2f',
@@ -952,7 +954,7 @@
'javelin-dom',
'javelin-reactor-dom',
),
- '1ed54a27' => array(
+ '1feea462' => array(
'javelin-install',
'javelin-dom',
'javelin-stratcom',
@@ -970,6 +972,14 @@
'phabricator-phtize',
'changeset-view-manager',
),
+ '21ba5861' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-workflow',
+ 'javelin-stratcom',
+ 'conpherence-thread-manager',
+ ),
'2290aeef' => array(
'javelin-install',
'javelin-dom',
@@ -1014,6 +1024,19 @@
'javelin-stratcom',
'javelin-dom',
),
+ '2c1cd7f5' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-stratcom',
+ 'javelin-workflow',
+ 'javelin-util',
+ 'phabricator-notification',
+ 'javelin-behavior-device',
+ 'phuix-dropdown-menu',
+ 'phuix-action-list-view',
+ 'phuix-action-view',
+ 'conpherence-thread-manager',
+ ),
'2c426492' => array(
'javelin-behavior',
'javelin-dom',
@@ -1069,18 +1092,6 @@
'javelin-dom',
'javelin-reactor-dom',
),
- '40b1ff90' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'javelin-util',
- 'phabricator-notification',
- 'javelin-behavior-device',
- 'phuix-dropdown-menu',
- 'phuix-action-list-view',
- 'phuix-action-view',
- ),
42126667 => array(
'javelin-behavior',
'javelin-dom',
@@ -1177,9 +1188,6 @@
'javelin-vector',
'javelin-dom',
),
- '59655c83' => array(
- 'javelin-install',
- ),
'59b251eb' => array(
'javelin-behavior',
'javelin-stratcom',
@@ -1439,24 +1447,6 @@
'phabricator-tooltip',
'changeset-view-manager',
),
- '869e3445' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-util',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'javelin-behavior-device',
- 'javelin-history',
- 'javelin-vector',
- 'phabricator-shaped-request',
- ),
- '86df5915' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-util',
- 'javelin-workflow',
- 'javelin-stratcom',
- ),
'87cb6b51' => array(
'javelin-behavior',
'javelin-dom',
@@ -1553,6 +1543,9 @@
'javelin-workflow',
'javelin-util',
),
+ '949c0fe5' => array(
+ 'javelin-install',
+ ),
'94b750d2' => array(
'javelin-install',
'javelin-stratcom',
@@ -1793,6 +1786,15 @@
'javelin-util',
'phabricator-shaped-request',
),
+ 'd8dab826' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-stratcom',
+ 'javelin-scrollbar',
+ 'javelin-quicksand',
+ 'phabricator-keyboard-shortcut',
+ 'conpherence-thread-manager',
+ ),
'dbbf48b6' => array(
'javelin-behavior',
'javelin-stratcom',
@@ -1842,13 +1844,17 @@
'javelin-dom',
'javelin-uri',
),
- 'e4affa94' => array(
+ 'e476c952' => array(
'javelin-behavior',
'javelin-dom',
+ 'javelin-util',
'javelin-stratcom',
- 'javelin-scrollbar',
- 'javelin-quicksand',
- 'phabricator-keyboard-shortcut',
+ 'javelin-workflow',
+ 'javelin-behavior-device',
+ 'javelin-history',
+ 'javelin-vector',
+ 'phabricator-shaped-request',
+ 'conpherence-thread-manager',
),
'e4cc26b3' => array(
'javelin-behavior',
@@ -1897,6 +1903,16 @@
'javelin-install',
'javelin-util',
),
+ 'efef202b' => array(
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-stratcom',
+ 'javelin-install',
+ 'javelin-workflow',
+ 'javelin-router',
+ 'javelin-behavior-device',
+ 'javelin-vector',
+ ),
'f24f3253' => array(
'javelin-behavior',
'javelin-dom',
diff --git a/src/applications/conpherence/controller/ConpherenceColumnViewController.php b/src/applications/conpherence/controller/ConpherenceColumnViewController.php
--- a/src/applications/conpherence/controller/ConpherenceColumnViewController.php
+++ b/src/applications/conpherence/controller/ConpherenceColumnViewController.php
@@ -6,6 +6,24 @@
public function handleRequest(AphrontRequest $request) {
$user = $request->getUser();
+ $latest_conpherences = array();
+ $latest_participant = id(new ConpherenceParticipantQuery())
+ ->withParticipantPHIDs(array($user->getPHID()))
+ ->setLimit(6)
+ ->execute();
+ if ($latest_participant) {
+ $conpherence_phids = mpull($latest_participant, 'getConpherencePHID');
+ $latest_conpherences = id(new ConpherenceThreadQuery())
+ ->setViewer($user)
+ ->withPHIDs($conpherence_phids)
+ ->needParticipantCache(true)
+ ->execute();
+ $latest_conpherences = mpull($latest_conpherences, null, 'getPHID');
+ $latest_conpherences = array_select_keys(
+ $latest_conpherences,
+ $conpherence_phids);
+ }
+
$conpherence = null;
if ($request->getInt('id')) {
$conpherence = id(new ConpherenceThreadQuery())
@@ -14,13 +32,7 @@
->needTransactions(true)
->setTransactionLimit(ConpherenceThreadQuery::TRANSACTION_LIMIT)
->executeOne();
- } else {
- // TODO - should be pulling more data than this to build the
- // icon bar, etc, kind of always
- $latest_participant = id(new ConpherenceParticipantQuery())
- ->withParticipantPHIDs(array($user->getPHID()))
- ->setLimit(1)
- ->execute();
+ } else if ($latest_participant) {
$participant = head($latest_participant);
$conpherence = id(new ConpherenceThreadQuery())
->setViewer($user)
@@ -45,6 +57,7 @@
$durable_column = id(new ConpherenceDurableColumnView())
->setUser($user)
->setSelectedConpherence($conpherence)
+ ->setConpherences($latest_conpherences)
->setStyle(null);
$response = array(
diff --git a/src/applications/conpherence/view/ConpherenceDurableColumnView.php b/src/applications/conpherence/view/ConpherenceDurableColumnView.php
--- a/src/applications/conpherence/view/ConpherenceDurableColumnView.php
+++ b/src/applications/conpherence/view/ConpherenceDurableColumnView.php
@@ -129,7 +129,36 @@
}
private function buildIconBar() {
- return null;
+ $icons = array();
+ $selected_conpherence = $this->getSelectedConpherence();
+ $conpherences = $this->getConpherences();
+
+ foreach ($conpherences as $conpherence) {
+ $classes = array('conpherence-durable-column-thread-icon');
+ if ($selected_conpherence->getID() == $conpherence->getID()) {
+ $classes[] = 'selected';
+ }
+ $data = $conpherence->getDisplayData($this->getUser());
+ $image = $data['image'];
+ $icons[] =
+ javelin_tag(
+ 'a',
+ array(
+ 'href' => '/conpherence/columnview/',
+ 'class' => implode(' ', $classes),
+ 'sigil' => 'conpherence-durable-column-thread-icon',
+ 'meta' => array(
+ 'threadID' => $conpherence->getID(),
+ ),
+ ),
+ phutil_tag(
+ 'span',
+ array(
+ 'style' => 'background-image: url('.$image.')',
+ ),
+ ''));
+ }
+ return $icons;
}
private function buildHeader() {
diff --git a/webroot/rsrc/css/application/conpherence/durable-column.css b/webroot/rsrc/css/application/conpherence/durable-column.css
--- a/webroot/rsrc/css/application/conpherence/durable-column.css
+++ b/webroot/rsrc/css/application/conpherence/durable-column.css
@@ -55,10 +55,36 @@
.conpherence-durable-column-icon-bar {
height: 34px;
- padding: 5px 16px;
+ padding: 5px 12px;
border-bottom: 1px solid {$thinblueborder};
}
+.conpherence-durable-column-icon-bar .conpherence-durable-column-thread-icon {
+ float: left;
+ display: block;
+ width: 30px;
+ height: 30px;
+ margin: 0px 8px 0px 0px;
+ border: 2px solid transparent;
+ border-radius: 3px;
+}
+
+.conpherence-durable-column-icon-bar
+.conpherence-durable-column-thread-icon.selected {
+ border-color: {$blueborder};
+}
+
+.conpherence-durable-column-icon-bar
+.conpherence-durable-column-thread-icon span {
+ position: relative;
+ display: block;
+ width: 26px;
+ height: 26px;
+ top: 2px;
+ left: 2px;
+ background-size: 26px 26px;
+}
+
.conpherence-durable-column-body {
position: absolute;
top: 44px;
diff --git a/webroot/rsrc/js/application/conpherence/behavior-durable-column.js b/webroot/rsrc/js/application/conpherence/behavior-durable-column.js
--- a/webroot/rsrc/js/application/conpherence/behavior-durable-column.js
+++ b/webroot/rsrc/js/application/conpherence/behavior-durable-column.js
@@ -141,6 +141,15 @@
}
});
+ JX.Stratcom.listen(
+ 'click',
+ 'conpherence-durable-column-thread-icon',
+ function (e) {
+ e.kill();
+ var data = e.getNodeData('conpherence-durable-column-thread-icon');
+ threadManager.loadThreadByID(data.threadID);
+ });
+
function _getColumnBodyNode() {
var column = JX.$('conpherence-durable-column');
return JX.DOM.find(

File Metadata

Mime Type
text/plain
Expires
Sun, May 12, 4:18 AM (2 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6288731
Default Alt Text
D12037.diff (13 KB)

Event Timeline