Path: blob/master/src/applications/favorites/engineextension/PhabricatorFavoritesMainMenuBarExtension.php
12256 views
<?php12final class PhabricatorFavoritesMainMenuBarExtension3extends PhabricatorMainMenuBarExtension {45const MAINMENUBARKEY = 'favorites';67public function isExtensionEnabledForViewer(PhabricatorUser $viewer) {8return PhabricatorApplication::isClassInstalledForViewer(9'PhabricatorFavoritesApplication',10$viewer);11}1213public function getExtensionOrder() {14return 1100;15}1617public function buildMainMenus() {18$viewer = $this->getViewer();1920$dropdown = $this->newDropdown($viewer);21if (!$dropdown) {22return array();23}2425$favorites_menu = id(new PHUIButtonView())26->setTag('a')27->setHref('#')28->setIcon('fa-bookmark')29->addClass('phabricator-core-user-menu')30->setNoCSS(true)31->setDropdown(true)32->setDropdownMenu($dropdown)33->setAuralLabel(pht('Favorites Menu'));3435return array(36$favorites_menu,37);38}3940private function newDropdown(PhabricatorUser $viewer) {41$applications = id(new PhabricatorApplicationQuery())42->setViewer($viewer)43->withClasses(array('PhabricatorFavoritesApplication'))44->withInstalled(true)45->execute();46$favorites = head($applications);47if (!$favorites) {48return null;49}5051$menu_engine = id(new PhabricatorFavoritesProfileMenuEngine())52->setViewer($viewer)53->setProfileObject($favorites)54->setCustomPHID($viewer->getPHID());5556$controller = $this->getController();57if ($controller) {58$menu_engine->setController($controller);59}6061$filter_view = $menu_engine->newProfileMenuItemViewList()62->newNavigationView();6364$menu_view = $filter_view->getMenu();65$item_views = $menu_view->getItems();6667$view = id(new PhabricatorActionListView())68->setViewer($viewer);69foreach ($item_views as $item) {70$action = id(new PhabricatorActionView())71->setName($item->getName())72->setHref($item->getHref())73->setIcon($item->getIcon())74->setType($item->getType());75$view->addAction($action);76}7778return $view;79}8081}828384