Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/favorites/engineextension/PhabricatorFavoritesMainMenuBarExtension.php
12256 views
1
<?php
2
3
final class PhabricatorFavoritesMainMenuBarExtension
4
extends PhabricatorMainMenuBarExtension {
5
6
const MAINMENUBARKEY = 'favorites';
7
8
public function isExtensionEnabledForViewer(PhabricatorUser $viewer) {
9
return PhabricatorApplication::isClassInstalledForViewer(
10
'PhabricatorFavoritesApplication',
11
$viewer);
12
}
13
14
public function getExtensionOrder() {
15
return 1100;
16
}
17
18
public function buildMainMenus() {
19
$viewer = $this->getViewer();
20
21
$dropdown = $this->newDropdown($viewer);
22
if (!$dropdown) {
23
return array();
24
}
25
26
$favorites_menu = id(new PHUIButtonView())
27
->setTag('a')
28
->setHref('#')
29
->setIcon('fa-bookmark')
30
->addClass('phabricator-core-user-menu')
31
->setNoCSS(true)
32
->setDropdown(true)
33
->setDropdownMenu($dropdown)
34
->setAuralLabel(pht('Favorites Menu'));
35
36
return array(
37
$favorites_menu,
38
);
39
}
40
41
private function newDropdown(PhabricatorUser $viewer) {
42
$applications = id(new PhabricatorApplicationQuery())
43
->setViewer($viewer)
44
->withClasses(array('PhabricatorFavoritesApplication'))
45
->withInstalled(true)
46
->execute();
47
$favorites = head($applications);
48
if (!$favorites) {
49
return null;
50
}
51
52
$menu_engine = id(new PhabricatorFavoritesProfileMenuEngine())
53
->setViewer($viewer)
54
->setProfileObject($favorites)
55
->setCustomPHID($viewer->getPHID());
56
57
$controller = $this->getController();
58
if ($controller) {
59
$menu_engine->setController($controller);
60
}
61
62
$filter_view = $menu_engine->newProfileMenuItemViewList()
63
->newNavigationView();
64
65
$menu_view = $filter_view->getMenu();
66
$item_views = $menu_view->getItems();
67
68
$view = id(new PhabricatorActionListView())
69
->setViewer($viewer);
70
foreach ($item_views as $item) {
71
$action = id(new PhabricatorActionView())
72
->setName($item->getName())
73
->setHref($item->getHref())
74
->setIcon($item->getIcon())
75
->setType($item->getType());
76
$view->addAction($action);
77
}
78
79
return $view;
80
}
81
82
}
83
84