Differential D17239 Diff 41459 src/applications/favorites/engineextension/PhabricatorFavoritesMainMenuBarExtension.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/favorites/engineextension/PhabricatorFavoritesMainMenuBarExtension.php
- This file was copied from src/applications/favorites/application/PhabricatorFavoritesApplication.php.
<?php | <?php | ||||
final class PhabricatorFavoritesApplication extends PhabricatorApplication { | final class PhabricatorFavoritesMainMenuBarExtension | ||||
extends PhabricatorMainMenuBarExtension { | |||||
public function getBaseURI() { | const MAINMENUBARKEY = 'favorites'; | ||||
return '/favorites/'; | |||||
} | |||||
public function getName() { | public function isExtensionEnabledForViewer(PhabricatorUser $viewer) { | ||||
return pht('Favorites'); | return PhabricatorApplication::isClassInstalledForViewer( | ||||
'PhabricatorFavoritesApplication', | |||||
$viewer); | |||||
} | } | ||||
public function getShortDescription() { | public function getExtensionOrder() { | ||||
return pht('Favorite Items'); | return 1100; | ||||
} | } | ||||
public function getIcon() { | public function buildMainMenus() { | ||||
return 'fa-star'; | $viewer = $this->getViewer(); | ||||
} | |||||
public function getRoutes() { | $dropdown = $this->newDropdown($viewer); | ||||
return array( | |||||
'/favorites/' => array( | |||||
'' => 'PhabricatorFavoritesMainController', | |||||
'(?P<type>global|personal)/item/' => $this->getProfileMenuRouting( | |||||
'PhabricatorFavoritesMenuItemController'), | |||||
), | |||||
); | |||||
} | |||||
public function isLaunchable() { | |||||
return false; | |||||
} | |||||
public function buildMainMenuExtraNodes( | |||||
PhabricatorUser $viewer, | |||||
PhabricatorController $controller = null) { | |||||
$dropdown = $this->renderFavoritesDropdown($viewer); | |||||
if (!$dropdown) { | if (!$dropdown) { | ||||
return null; | return null; | ||||
} | } | ||||
return id(new PHUIButtonView()) | $favorites_menu = id(new PHUIButtonView()) | ||||
->setTag('a') | ->setTag('a') | ||||
->setHref('#') | ->setHref('#') | ||||
->setIcon('fa-star') | ->setIcon('fa-star') | ||||
->addClass('phabricator-core-user-menu') | ->addClass('phabricator-core-user-menu') | ||||
->setNoCSS(true) | ->setNoCSS(true) | ||||
->setDropdown(true) | ->setDropdown(true) | ||||
->setDropdownMenu($dropdown); | ->setDropdownMenu($dropdown); | ||||
} | |||||
private function renderFavoritesDropdown(PhabricatorUser $viewer) { | return array( | ||||
$application = __CLASS__; | $favorites_menu, | ||||
); | |||||
} | |||||
private function newDropdown(PhabricatorUser $viewer) { | |||||
$applications = id(new PhabricatorApplicationQuery()) | $applications = id(new PhabricatorApplicationQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withClasses(array($application)) | ->withClasses(array('PhabricatorFavoritesApplication')) | ||||
->withInstalled(true) | ->withInstalled(true) | ||||
->execute(); | ->execute(); | ||||
$favorites = head($applications); | $favorites = head($applications); | ||||
if (!$favorites) { | if (!$favorites) { | ||||
return null; | return null; | ||||
} | } | ||||
$menu_engine = id(new PhabricatorFavoritesProfileMenuEngine()) | $menu_engine = id(new PhabricatorFavoritesProfileMenuEngine()) | ||||
Show All 23 Lines | foreach ($item_views as $item) { | ||||
} | } | ||||
$action = id(new PhabricatorActionView()) | $action = id(new PhabricatorActionView()) | ||||
->setName($item->getName()) | ->setName($item->getName()) | ||||
->setHref($item->getHref()) | ->setHref($item->getHref()) | ||||
->setType($type); | ->setType($type); | ||||
$view->addAction($action); | $view->addAction($action); | ||||
} | } | ||||
// Build out edit interface | |||||
if ($viewer->isLoggedIn()) { | if ($viewer->isLoggedIn()) { | ||||
$view->addAction( | $view->addAction( | ||||
id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
->setType(PhabricatorActionView::TYPE_DIVIDER)); | ->setType(PhabricatorActionView::TYPE_DIVIDER)); | ||||
$view->addAction( | $view->addAction( | ||||
id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
->setName(pht('Edit Favorites')) | ->setName(pht('Edit Favorites')) | ||||
->setHref('/favorites/')); | ->setHref('/favorites/')); | ||||
} | } | ||||
return $view; | return $view; | ||||
} | } | ||||
} | } |