Skip to content

Commit bdc5174

Browse files
author
epriestley
committedDec 24, 2015
Modernize Hovercard implementation
Summary: Ref T8980. Move away from events to EngineExtensions. This also simplifies hovercards a bit: - Removes tasks from revision cards. - Removes blockers/blocked from task cards. - Removes "Send Message" from user cards. These mostly felt cluttery to me. Open to arguments to retain them. I think we can make better use of the space, though (e.g., flags, projects + board columns). Test Plan: - Viewed people, task, revision, commit and project hovercards. {F1043256} {F1043257} Reviewers: chad Reviewed By: chad Maniphest Tasks: T8980 Differential Revision: https://secure.phabricator.com/D14878
1 parent 3ec07c4 commit bdc5174

21 files changed

+407
-384
lines changed
 

‎resources/celerity/map.php

+10-10
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
return array(
99
'names' => array(
1010
'core.pkg.css' => 'a419cf4b',
11-
'core.pkg.js' => 'cf262309',
11+
'core.pkg.js' => 'b826f522',
1212
'darkconsole.pkg.js' => 'e7393ebb',
1313
'differential.pkg.css' => '2de124c9',
1414
'differential.pkg.js' => '64e69521',
@@ -452,7 +452,7 @@
452452
'rsrc/js/core/DragAndDropFileUpload.js' => 'ad10aeac',
453453
'rsrc/js/core/DraggableList.js' => 'a16ec1c6',
454454
'rsrc/js/core/FileUpload.js' => '477359c8',
455-
'rsrc/js/core/Hovercard.js' => '14ac66f5',
455+
'rsrc/js/core/Hovercard.js' => '6914d0dd',
456456
'rsrc/js/core/KeyboardShortcut.js' => '1ae869f2',
457457
'rsrc/js/core/KeyboardShortcutManager.js' => 'c1700f6f',
458458
'rsrc/js/core/MultirowRowManager.js' => 'b5d57730',
@@ -747,7 +747,7 @@
747747
'phabricator-file-upload' => '477359c8',
748748
'phabricator-filetree-view-css' => 'fccf9f82',
749749
'phabricator-flag-css' => '5337623f',
750-
'phabricator-hovercard' => '14ac66f5',
750+
'phabricator-hovercard' => '6914d0dd',
751751
'phabricator-hovercard-view-css' => '1239cd52',
752752
'phabricator-keyboard-shortcut' => '1ae869f2',
753753
'phabricator-keyboard-shortcut-manager' => 'c1700f6f',
@@ -935,13 +935,6 @@
935935
'javelin-dom',
936936
'javelin-history',
937937
),
938-
'14ac66f5' => array(
939-
'javelin-install',
940-
'javelin-dom',
941-
'javelin-vector',
942-
'javelin-request',
943-
'javelin-uri',
944-
),
945938
'1ad0a787' => array(
946939
'javelin-install',
947940
'javelin-reactor',
@@ -1311,6 +1304,13 @@
13111304
'6882e80a' => array(
13121305
'javelin-dom',
13131306
),
1307+
'6914d0dd' => array(
1308+
'javelin-install',
1309+
'javelin-dom',
1310+
'javelin-vector',
1311+
'javelin-request',
1312+
'javelin-uri',
1313+
),
13141314
'69adf288' => array(
13151315
'javelin-install',
13161316
),

‎src/__phutil_library_map__.php

+12-10
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,6 @@
262262
'ConpherenceEditor' => 'applications/conpherence/editor/ConpherenceEditor.php',
263263
'ConpherenceFormDragAndDropUploadControl' => 'applications/conpherence/view/ConpherenceFormDragAndDropUploadControl.php',
264264
'ConpherenceFulltextQuery' => 'applications/conpherence/query/ConpherenceFulltextQuery.php',
265-
'ConpherenceHovercardEventListener' => 'applications/conpherence/events/ConpherenceHovercardEventListener.php',
266265
'ConpherenceImageData' => 'applications/conpherence/constants/ConpherenceImageData.php',
267266
'ConpherenceIndex' => 'applications/conpherence/storage/ConpherenceIndex.php',
268267
'ConpherenceLayoutView' => 'applications/conpherence/view/ConpherenceLayoutView.php',
@@ -420,7 +419,7 @@
420419
'DifferentialHostField' => 'applications/differential/customfield/DifferentialHostField.php',
421420
'DifferentialHostedGitLandingStrategy' => 'applications/differential/landing/DifferentialHostedGitLandingStrategy.php',
422421
'DifferentialHostedMercurialLandingStrategy' => 'applications/differential/landing/DifferentialHostedMercurialLandingStrategy.php',
423-
'DifferentialHovercardEventListener' => 'applications/differential/event/DifferentialHovercardEventListener.php',
422+
'DifferentialHovercardEngineExtension' => 'applications/differential/engineextension/DifferentialHovercardEngineExtension.php',
424423
'DifferentialHunk' => 'applications/differential/storage/DifferentialHunk.php',
425424
'DifferentialHunkParser' => 'applications/differential/parser/DifferentialHunkParser.php',
426425
'DifferentialHunkParserTestCase' => 'applications/differential/parser/__tests__/DifferentialHunkParserTestCase.php',
@@ -620,7 +619,7 @@
620619
'DiffusionHistoryController' => 'applications/diffusion/controller/DiffusionHistoryController.php',
621620
'DiffusionHistoryQueryConduitAPIMethod' => 'applications/diffusion/conduit/DiffusionHistoryQueryConduitAPIMethod.php',
622621
'DiffusionHistoryTableView' => 'applications/diffusion/view/DiffusionHistoryTableView.php',
623-
'DiffusionHovercardEventListener' => 'applications/diffusion/events/DiffusionHovercardEventListener.php',
622+
'DiffusionHovercardEngineExtension' => 'applications/diffusion/engineextension/DiffusionHovercardEngineExtension.php',
624623
'DiffusionInlineCommentController' => 'applications/diffusion/controller/DiffusionInlineCommentController.php',
625624
'DiffusionInlineCommentPreviewController' => 'applications/diffusion/controller/DiffusionInlineCommentPreviewController.php',
626625
'DiffusionLastModifiedController' => 'applications/diffusion/controller/DiffusionLastModifiedController.php',
@@ -1292,7 +1291,7 @@
12921291
'ManiphestExcelFormatTestCase' => 'applications/maniphest/export/__tests__/ManiphestExcelFormatTestCase.php',
12931292
'ManiphestExportController' => 'applications/maniphest/controller/ManiphestExportController.php',
12941293
'ManiphestGetTaskTransactionsConduitAPIMethod' => 'applications/maniphest/conduit/ManiphestGetTaskTransactionsConduitAPIMethod.php',
1295-
'ManiphestHovercardEventListener' => 'applications/maniphest/event/ManiphestHovercardEventListener.php',
1294+
'ManiphestHovercardEngineExtension' => 'applications/maniphest/engineextension/ManiphestHovercardEngineExtension.php',
12961295
'ManiphestInfoConduitAPIMethod' => 'applications/maniphest/conduit/ManiphestInfoConduitAPIMethod.php',
12971296
'ManiphestNameIndex' => 'applications/maniphest/storage/ManiphestNameIndex.php',
12981297
'ManiphestPriorityConfigOptionType' => 'applications/maniphest/config/ManiphestPriorityConfigOptionType.php',
@@ -2370,6 +2369,8 @@
23702369
'PhabricatorHomeMainController' => 'applications/home/controller/PhabricatorHomeMainController.php',
23712370
'PhabricatorHomePreferencesSettingsPanel' => 'applications/settings/panel/PhabricatorHomePreferencesSettingsPanel.php',
23722371
'PhabricatorHomeQuickCreateController' => 'applications/home/controller/PhabricatorHomeQuickCreateController.php',
2372+
'PhabricatorHovercardEngineExtension' => 'applications/search/engineextension/PhabricatorHovercardEngineExtension.php',
2373+
'PhabricatorHovercardEngineExtensionModule' => 'applications/search/engineextension/PhabricatorHovercardEngineExtensionModule.php',
23732374
'PhabricatorHovercardUIExample' => 'applications/uiexample/examples/PhabricatorHovercardUIExample.php',
23742375
'PhabricatorHovercardView' => 'view/widget/hovercard/PhabricatorHovercardView.php',
23752376
'PhabricatorHunksManagementMigrateWorkflow' => 'applications/differential/management/PhabricatorHunksManagementMigrateWorkflow.php',
@@ -2711,7 +2712,7 @@
27112712
'PhabricatorPeopleDisableController' => 'applications/people/controller/PhabricatorPeopleDisableController.php',
27122713
'PhabricatorPeopleEmpowerController' => 'applications/people/controller/PhabricatorPeopleEmpowerController.php',
27132714
'PhabricatorPeopleExternalPHIDType' => 'applications/people/phid/PhabricatorPeopleExternalPHIDType.php',
2714-
'PhabricatorPeopleHovercardEventListener' => 'applications/people/event/PhabricatorPeopleHovercardEventListener.php',
2715+
'PhabricatorPeopleHovercardEngineExtension' => 'applications/people/engineextension/PhabricatorPeopleHovercardEngineExtension.php',
27152716
'PhabricatorPeopleInviteController' => 'applications/people/controller/PhabricatorPeopleInviteController.php',
27162717
'PhabricatorPeopleInviteListController' => 'applications/people/controller/PhabricatorPeopleInviteListController.php',
27172718
'PhabricatorPeopleInviteSendController' => 'applications/people/controller/PhabricatorPeopleInviteSendController.php',
@@ -4172,7 +4173,6 @@
41724173
'ConpherenceEditor' => 'PhabricatorApplicationTransactionEditor',
41734174
'ConpherenceFormDragAndDropUploadControl' => 'AphrontFormControl',
41744175
'ConpherenceFulltextQuery' => 'PhabricatorOffsetPagedQuery',
4175-
'ConpherenceHovercardEventListener' => 'PhabricatorEventListener',
41764176
'ConpherenceImageData' => 'ConpherenceConstants',
41774177
'ConpherenceIndex' => 'ConpherenceDAO',
41784178
'ConpherenceLayoutView' => 'AphrontView',
@@ -4347,7 +4347,7 @@
43474347
'DifferentialHostField' => 'DifferentialCustomField',
43484348
'DifferentialHostedGitLandingStrategy' => 'DifferentialLandingStrategy',
43494349
'DifferentialHostedMercurialLandingStrategy' => 'DifferentialLandingStrategy',
4350-
'DifferentialHovercardEventListener' => 'PhabricatorEventListener',
4350+
'DifferentialHovercardEngineExtension' => 'PhabricatorHovercardEngineExtension',
43514351
'DifferentialHunk' => array(
43524352
'DifferentialDAO',
43534353
'PhabricatorPolicyInterface',
@@ -4568,7 +4568,7 @@
45684568
'DiffusionHistoryController' => 'DiffusionController',
45694569
'DiffusionHistoryQueryConduitAPIMethod' => 'DiffusionQueryConduitAPIMethod',
45704570
'DiffusionHistoryTableView' => 'DiffusionView',
4571-
'DiffusionHovercardEventListener' => 'PhabricatorEventListener',
4571+
'DiffusionHovercardEngineExtension' => 'PhabricatorHovercardEngineExtension',
45724572
'DiffusionInlineCommentController' => 'PhabricatorInlineCommentController',
45734573
'DiffusionInlineCommentPreviewController' => 'PhabricatorInlineCommentPreviewController',
45744574
'DiffusionLastModifiedController' => 'DiffusionController',
@@ -5361,7 +5361,7 @@
53615361
'ManiphestExcelFormatTestCase' => 'PhabricatorTestCase',
53625362
'ManiphestExportController' => 'ManiphestController',
53635363
'ManiphestGetTaskTransactionsConduitAPIMethod' => 'ManiphestConduitAPIMethod',
5364-
'ManiphestHovercardEventListener' => 'PhabricatorEventListener',
5364+
'ManiphestHovercardEngineExtension' => 'PhabricatorHovercardEngineExtension',
53655365
'ManiphestInfoConduitAPIMethod' => 'ManiphestConduitAPIMethod',
53665366
'ManiphestNameIndex' => 'ManiphestDAO',
53675367
'ManiphestPriorityConfigOptionType' => 'PhabricatorConfigJSONOptionType',
@@ -6624,6 +6624,8 @@
66246624
'PhabricatorHomeMainController' => 'PhabricatorHomeController',
66256625
'PhabricatorHomePreferencesSettingsPanel' => 'PhabricatorSettingsPanel',
66266626
'PhabricatorHomeQuickCreateController' => 'PhabricatorHomeController',
6627+
'PhabricatorHovercardEngineExtension' => 'Phobject',
6628+
'PhabricatorHovercardEngineExtensionModule' => 'PhabricatorConfigModule',
66276629
'PhabricatorHovercardUIExample' => 'PhabricatorUIExample',
66286630
'PhabricatorHovercardView' => 'AphrontView',
66296631
'PhabricatorHunksManagementMigrateWorkflow' => 'PhabricatorHunksManagementWorkflow',
@@ -7010,7 +7012,7 @@
70107012
'PhabricatorPeopleDisableController' => 'PhabricatorPeopleController',
70117013
'PhabricatorPeopleEmpowerController' => 'PhabricatorPeopleController',
70127014
'PhabricatorPeopleExternalPHIDType' => 'PhabricatorPHIDType',
7013-
'PhabricatorPeopleHovercardEventListener' => 'PhabricatorEventListener',
7015+
'PhabricatorPeopleHovercardEngineExtension' => 'PhabricatorHovercardEngineExtension',
70147016
'PhabricatorPeopleInviteController' => 'PhabricatorPeopleController',
70157017
'PhabricatorPeopleInviteListController' => 'PhabricatorPeopleInviteController',
70167018
'PhabricatorPeopleInviteSendController' => 'PhabricatorPeopleInviteController',

‎src/applications/conpherence/application/PhabricatorConpherenceApplication.php

-6
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,6 @@ public function getRemarkupRules() {
2828
);
2929
}
3030

31-
public function getEventListeners() {
32-
return array(
33-
new ConpherenceHovercardEventListener(),
34-
);
35-
}
36-
3731
public function getRoutes() {
3832
return array(
3933
'/Z(?P<id>[1-9]\d*)' => 'ConpherenceViewController',

‎src/applications/conpherence/events/ConpherenceHovercardEventListener.php

-41
This file was deleted.

‎src/applications/differential/application/PhabricatorDifferentialApplication.php

-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ public function getTitleGlyph() {
4444
public function getEventListeners() {
4545
return array(
4646
new DifferentialActionMenuEventListener(),
47-
new DifferentialHovercardEventListener(),
4847
new DifferentialLandingActionMenuEventListener(),
4948
);
5049
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
3+
final class DifferentialHovercardEngineExtension
4+
extends PhabricatorHovercardEngineExtension {
5+
6+
const EXTENSIONKEY = 'differential';
7+
8+
public function isExtensionEnabled() {
9+
return PhabricatorApplication::isClassInstalled(
10+
'PhabricatorDifferentialApplication');
11+
}
12+
13+
public function getExtensionName() {
14+
return pht('Differential Revisions');
15+
}
16+
17+
public function canRenderObjectHovercard($object) {
18+
return ($object instanceof DifferentialRevision);
19+
}
20+
21+
public function willRenderHovercards(array $objects) {
22+
$viewer = $this->getViewer();
23+
$phids = mpull($objects, 'getPHID');
24+
25+
$revisions = id(new DifferentialRevisionQuery())
26+
->setViewer($viewer)
27+
->withPHIDs($phids)
28+
->needReviewerStatus(true)
29+
->execute();
30+
$revisions = mpull($revisions, null, 'getPHID');
31+
32+
return array(
33+
'revisions' => $revisions,
34+
);
35+
}
36+
37+
public function renderHovercard(
38+
PhabricatorHovercardView $hovercard,
39+
PhabricatorObjectHandle $handle,
40+
$object,
41+
$data) {
42+
43+
$viewer = $this->getViewer();
44+
45+
$revision = idx($data['revisions'], $object->getPHID());
46+
if (!$revision) {
47+
return;
48+
}
49+
50+
$hovercard->setTitle('D'.$revision->getID());
51+
$hovercard->setDetail($revision->getTitle());
52+
53+
$hovercard->addField(
54+
pht('Author'),
55+
$viewer->renderHandle($revision->getAuthorPHID()));
56+
57+
$reviewer_phids = $revision->getReviewerStatus();
58+
$reviewer_phids = mpull($reviewer_phids, 'getReviewerPHID');
59+
60+
$hovercard->addField(
61+
pht('Reviewers'),
62+
$viewer->renderHandleList($reviewer_phids)->setAsInline(true));
63+
64+
$summary = $revision->getSummary();
65+
if (strlen($summary)) {
66+
$summary = id(new PhutilUTF8StringTruncator())
67+
->setMaximumGlyphs(120)
68+
->truncateString($summary);
69+
70+
$hovercard->addField(pht('Summary'), $summary);
71+
}
72+
73+
$tag = DifferentialRevisionDetailView::renderTagForRevision($revision);
74+
$hovercard->addTag($tag);
75+
}
76+
77+
}

‎src/applications/differential/event/DifferentialHovercardEventListener.php

-71
This file was deleted.

‎src/applications/diffusion/application/PhabricatorDiffusionApplication.php

-6
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,6 @@ public function getFactObjectsForAnalysis() {
3737
);
3838
}
3939

40-
public function getEventListeners() {
41-
return array(
42-
new DiffusionHovercardEventListener(),
43-
);
44-
}
45-
4640
public function getRemarkupRules() {
4741
return array(
4842
new DiffusionCommitRemarkupRule(),

0 commit comments

Comments
 (0)
Failed to load comments.