Changeset View
Changeset View
Standalone View
Standalone View
src/view/page/menu/PhabricatorMainMenuView.php
| <?php | <?php | ||||
| final class PhabricatorMainMenuView extends AphrontView { | final class PhabricatorMainMenuView extends AphrontView { | ||||
| private $controller; | private $controller; | ||||
| private $applicationMenu; | private $applicationMenu; | ||||
epriestley: Unused? | |||||
| public function setApplicationMenu(PHUIListView $application_menu) { | public function setApplicationMenu(PHUIListView $application_menu) { | ||||
| $this->applicationMenu = $application_menu; | $this->applicationMenu = $application_menu; | ||||
| return $this; | return $this; | ||||
| } | } | ||||
| public function getApplicationMenu() { | public function getApplicationMenu() { | ||||
| return $this->applicationMenu; | return $this->applicationMenu; | ||||
| } | } | ||||
| Show All 31 Lines | public function render() { | ||||
| $aural = null; | $aural = null; | ||||
| if ($viewer->isLoggedIn() && $viewer->isUserActivated()) { | if ($viewer->isLoggedIn() && $viewer->isUserActivated()) { | ||||
| list($menu, $dropdowns, $aural) = $this->renderNotificationMenu(); | list($menu, $dropdowns, $aural) = $this->renderNotificationMenu(); | ||||
| if (array_filter($menu)) { | if (array_filter($menu)) { | ||||
| $alerts[] = $menu; | $alerts[] = $menu; | ||||
| } | } | ||||
| $menu_bar = array_merge($menu_bar, $dropdowns); | $menu_bar = array_merge($menu_bar, $dropdowns); | ||||
| $app_button = $this->renderApplicationMenuButton($header_id); | $app_button = $this->renderApplicationMenuButton(); | ||||
| $search_button = $this->renderSearchMenuButton($header_id); | $search_button = $this->renderSearchMenuButton($header_id); | ||||
| } else { | } else { | ||||
| $app_button = $this->renderApplicationMenuButton($header_id); | $app_button = $this->renderApplicationMenuButton(); | ||||
| if (PhabricatorEnv::getEnvConfig('policy.allow-public')) { | if (PhabricatorEnv::getEnvConfig('policy.allow-public')) { | ||||
| $search_button = $this->renderSearchMenuButton($header_id); | $search_button = $this->renderSearchMenuButton($header_id); | ||||
| } | } | ||||
| } | } | ||||
| $search_menu = $this->renderPhabricatorSearchMenu(); | $search_menu = $this->renderPhabricatorSearchMenu(); | ||||
| if ($alerts) { | if ($alerts) { | ||||
| Show All 10 Lines | if ($aural) { | ||||
| $aural = javelin_tag( | $aural = javelin_tag( | ||||
| 'span', | 'span', | ||||
| array( | array( | ||||
| 'aural' => true, | 'aural' => true, | ||||
| ), | ), | ||||
| phutil_implode_html(' ', $aural)); | phutil_implode_html(' ', $aural)); | ||||
| } | } | ||||
| // Build out Header Menus | |||||
| $applications = PhabricatorApplication::getAllInstalledApplications(); | $applications = PhabricatorApplication::getAllInstalledApplications(); | ||||
| $menus = array(); | $menus = array(); | ||||
| $controller = $this->getController(); | $controller = $this->getController(); | ||||
| foreach ($applications as $application) { | foreach ($applications as $application) { | ||||
| $app_actions = $application->buildMainMenuItems( | |||||
| $viewer, | |||||
| $controller); | |||||
| $app_extra = $application->buildMainMenuExtraNodes( | $app_extra = $application->buildMainMenuExtraNodes( | ||||
| $viewer, | $viewer, | ||||
| $controller); | $controller); | ||||
| foreach ($app_actions as $action) { | |||||
| $menus[] = id(new PHUIMainMenuView()) | |||||
| ->setMenuBarItem($action) | |||||
| ->setOrder($action->getOrder()); | |||||
| } | |||||
| if ($app_extra !== null) { | if ($app_extra !== null) { | ||||
| $menus[] = id(new PHUIMainMenuView()) | $menus[] = $app_extra; | ||||
| ->appendChild($app_extra); | |||||
| } | } | ||||
| } | } | ||||
| $extensions = PhabricatorMainMenuBarExtension::getAllEnabledExtensions(); | $extensions = PhabricatorMainMenuBarExtension::getAllEnabledExtensions(); | ||||
| foreach ($extensions as $extension) { | foreach ($extensions as $extension) { | ||||
| $extension->setViewer($viewer); | $extension->setViewer($viewer); | ||||
| $controller = $this->getController(); | $controller = $this->getController(); | ||||
| if ($controller) { | if ($controller) { | ||||
| $extension->setController($controller); | $extension->setController($controller); | ||||
| $application = $controller->getCurrentApplication(); | $application = $controller->getCurrentApplication(); | ||||
| if ($application) { | if ($application) { | ||||
| $extension->setApplication($application); | $extension->setApplication($application); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| foreach ($extensions as $key => $extension) { | foreach ($extensions as $key => $extension) { | ||||
| if (!$extension->isExtensionEnabledForViewer($extension->getViewer())) { | if (!$extension->isExtensionEnabledForViewer($extension->getViewer())) { | ||||
| unset($extensions[$key]); | unset($extensions[$key]); | ||||
| } | } | ||||
| } | } | ||||
| // Builds out "login" button | |||||
| foreach ($extensions as $extension) { | foreach ($extensions as $extension) { | ||||
| foreach ($extension->buildMainMenus() as $menu) { | foreach ($extension->buildMainMenus() as $menu) { | ||||
| $menus[] = $menu; | $menus[] = $menu; | ||||
| } | } | ||||
| } | } | ||||
| $menus = msort($menus, 'getOrder'); | |||||
| $bar_items = array(); | |||||
| foreach ($menus as $menu) { | foreach ($menus as $menu) { | ||||
| $menu_bar[] = $menu; | $menu_bar[] = $menu; | ||||
| $item = $menu->getMenuBarItem(); | |||||
| if ($item === null) { | |||||
| continue; | |||||
| } | |||||
| $bar_items[] = $item; | |||||
| } | } | ||||
| $application_menu = $this->renderApplicationMenu($bar_items); | |||||
| $classes = array(); | $classes = array(); | ||||
| $classes[] = 'phabricator-main-menu'; | $classes[] = 'phabricator-main-menu'; | ||||
| $classes[] = 'phabricator-main-menu-background'; | $classes[] = 'phabricator-main-menu-background'; | ||||
| return phutil_tag( | return phutil_tag( | ||||
| 'div', | 'div', | ||||
| array( | array( | ||||
| 'class' => implode(' ', $classes), | 'class' => implode(' ', $classes), | ||||
| 'id' => $header_id, | 'id' => $header_id, | ||||
| ), | ), | ||||
| array( | array( | ||||
| $app_button, | $app_button, | ||||
| $search_button, | $search_button, | ||||
| $this->renderPhabricatorLogo(), | $this->renderPhabricatorLogo(), | ||||
| $alerts, | $alerts, | ||||
| $aural, | $aural, | ||||
| $application_menu, | |||||
| $search_menu, | $search_menu, | ||||
| $menu_bar, | $menu_bar, | ||||
| )); | )); | ||||
| } | } | ||||
| private function renderSearch() { | private function renderSearch() { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| Show All 39 Lines | if ($result) { | ||||
| $result = id(new PHUIListItemView()) | $result = id(new PHUIListItemView()) | ||||
| ->addClass('phabricator-main-menu-search') | ->addClass('phabricator-main-menu-search') | ||||
| ->appendChild($result); | ->appendChild($result); | ||||
| } | } | ||||
| return $result; | return $result; | ||||
| } | } | ||||
| public function renderApplicationMenuButton($header_id) { | public function renderApplicationMenuButton() { | ||||
| $button_id = celerity_generate_unique_node_id(); | $dropdown = $this->renderApplicationMenu(); | ||||
| return javelin_tag( | if (!$dropdown) { | ||||
| 'a', | return null; | ||||
| array( | } | ||||
| 'class' => 'phabricator-main-menu-expand-button '. | |||||
| 'phabricator-expand-search-menu', | return id(new PHUIButtonView()) | ||||
| 'sigil' => 'jx-toggle-class', | ->setTag('a') | ||||
| 'meta' => array( | ->setHref('#') | ||||
| 'map' => array( | ->setIcon('fa-bars') | ||||
| $header_id => 'phabricator-application-menu-expanded', | ->addClass('phabricator-core-user-menu') | ||||
| $button_id => 'menu-icon-selected', | ->addClass('phabricator-core-user-mobile-menu') | ||||
| ), | ->setNoCSS(true) | ||||
| ), | ->setDropdownMenu($dropdown); | ||||
| ), | |||||
| phutil_tag( | |||||
| 'span', | |||||
| array( | |||||
| 'class' => 'phabricator-menu-button-icon phui-icon-view '. | |||||
| 'phui-font-fa fa-bars', | |||||
| 'id' => $button_id, | |||||
| ), | |||||
| '')); | |||||
| } | } | ||||
| private function renderApplicationMenu(array $bar_items) { | private function renderApplicationMenu() { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| $view = $this->getApplicationMenu(); | $view = $this->getApplicationMenu(); | ||||
| if ($view) { | |||||
| if (!$view) { | $items = $view->getItems(); | ||||
| $view = new PHUIListView(); | $view = id(new PhabricatorActionListView()) | ||||
| } | ->setViewer($viewer); | ||||
| foreach ($items as $item) { | |||||
| $view->addClass('phabricator-dark-menu'); | $view->addAction( | ||||
| $view->addClass('phabricator-application-menu'); | id(new PhabricatorActionView()) | ||||
| ->setName($item->getName()) | |||||
| if ($bar_items) { | ->setHref($item->getHref()) | ||||
| $view->addMenuItem( | ->setType($item->getType())); | ||||
| id(new PHUIListItemView()) | |||||
| ->setType(PHUIListItemView::TYPE_LABEL) | |||||
| ->setName(pht('Actions'))); | |||||
| foreach ($bar_items as $bar_item) { | |||||
| $view->addMenuItem($bar_item); | |||||
| } | } | ||||
| } | } | ||||
| return $view; | return $view; | ||||
| } | } | ||||
| public function renderSearchMenuButton($header_id) { | public function renderSearchMenuButton($header_id) { | ||||
| $button_id = celerity_generate_unique_node_id(); | $button_id = celerity_generate_unique_node_id(); | ||||
| return javelin_tag( | return javelin_tag( | ||||
| 'a', | 'a', | ||||
| array( | array( | ||||
| Show All 15 Lines | return javelin_tag( | ||||
| 'id' => $button_id, | 'id' => $button_id, | ||||
| ), | ), | ||||
| '')); | '')); | ||||
| } | } | ||||
| private function renderPhabricatorSearchMenu() { | private function renderPhabricatorSearchMenu() { | ||||
| $view = new PHUIListView(); | $view = new PHUIListView(); | ||||
| $view->addClass('phabricator-dark-menu'); | |||||
| $view->addClass('phabricator-search-menu'); | $view->addClass('phabricator-search-menu'); | ||||
| $search = $this->renderSearch(); | $search = $this->renderSearch(); | ||||
| if ($search) { | if ($search) { | ||||
| $view->addMenuItem($search); | $view->addMenuItem($search); | ||||
| } | } | ||||
| return $view; | return $view; | ||||
| ▲ Show 20 Lines • Show All 354 Lines • Show Last 20 Lines | |||||
Unused?