Differential D17209 Diff 41403 src/applications/auth/extension/PhabricatorAuthMainMenuBarExtension.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/auth/extension/PhabricatorAuthMainMenuBarExtension.php
| <?php | <?php | ||||
| final class PhabricatorAuthMainMenuBarExtension | final class PhabricatorAuthMainMenuBarExtension | ||||
| extends PhabricatorMainMenuBarExtension { | extends PhabricatorMainMenuBarExtension { | ||||
| const MAINMENUBARKEY = 'auth'; | const MAINMENUBARKEY = 'auth'; | ||||
| public function isExtensionEnabledForViewer(PhabricatorUser $viewer) { | public function isExtensionEnabledForViewer(PhabricatorUser $viewer) { | ||||
| return true; | return true; | ||||
| } | } | ||||
| public function buildMainMenus() { | public function buildMainMenus() { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| if ($viewer->isLoggedIn()) { | if ($viewer->isLoggedIn()) { | ||||
| return array( | return array(); | ||||
| $this->buildLogoutMenu(), | |||||
| ); | |||||
| } | } | ||||
| $controller = $this->getController(); | $controller = $this->getController(); | ||||
| if ($controller instanceof PhabricatorAuthController) { | if ($controller instanceof PhabricatorAuthController) { | ||||
| // Don't show the "Login" item on auth controllers, since they're | // Don't show the "Login" item on auth controllers, since they're | ||||
| // generally all related to logging in anyway. | // generally all related to logging in anyway. | ||||
| return array(); | return array(); | ||||
| } | } | ||||
| return array( | return array( | ||||
| $this->buildLoginMenu(), | $this->buildLoginMenu(), | ||||
| ); | ); | ||||
| } | } | ||||
| private function buildLogoutMenu() { | |||||
| $controller = $this->getController(); | |||||
| $is_selected = ($controller instanceof PhabricatorLogoutController); | |||||
| $bar_item = id(new PHUIListItemView()) | |||||
| ->addClass('core-menu-item') | |||||
| ->setName(pht('Log Out')) | |||||
| ->setIcon('fa-sign-out') | |||||
| ->setWorkflow(true) | |||||
| ->setHref('/logout/') | |||||
| ->setSelected($is_selected) | |||||
| ->setAural(pht('Log Out')); | |||||
| return id(new PHUIMainMenuView()) | |||||
| ->setOrder(900) | |||||
| ->setMenuBarItem($bar_item); | |||||
| } | |||||
| private function buildLoginMenu() { | private function buildLoginMenu() { | ||||
| $controller = $this->getController(); | $controller = $this->getController(); | ||||
| $uri = new PhutilURI('/auth/start/'); | $uri = new PhutilURI('/auth/start/'); | ||||
| if ($controller) { | if ($controller) { | ||||
| $path = $controller->getRequest()->getPath(); | $path = $controller->getRequest()->getPath(); | ||||
| $uri->setQueryParam('next', $path); | $uri->setQueryParam('next', $path); | ||||
| } | } | ||||
| $bar_item = id(new PHUIListItemView()) | return id(new PHUIButtonView()) | ||||
| ->addClass('core-menu-item') | ->setTag('a') | ||||
| ->setName(pht('Log In')) | ->setText(pht('Log In')) | ||||
| ->setIcon('fa-sign-in') | |||||
| ->setHref($uri) | ->setHref($uri) | ||||
| ->setAural(pht('Log In')); | ->setNoCSS(true) | ||||
| ->addClass('phabricator-core-login-button'); | |||||
| return id(new PHUIMainMenuView()) | |||||
| ->setOrder(900) | |||||
| ->setMenuBarItem($bar_item); | |||||
| } | } | ||||
| } | } | ||||