diff --git a/src/applications/favorites/constants/PhabricatorFavoritesConstants.php b/src/applications/favorites/constants/PhabricatorFavoritesConstants.php --- a/src/applications/favorites/constants/PhabricatorFavoritesConstants.php +++ b/src/applications/favorites/constants/PhabricatorFavoritesConstants.php @@ -3,6 +3,9 @@ final class PhabricatorFavoritesConstants extends PhabricatorFavoritesController { + const ITEM_TASK = 'favorites.task'; + const ITEM_PROJECT = 'favorites.project'; + const ITEM_REPOSITORY = 'favorites.repository'; const ITEM_MANAGE = 'favorites.manage'; } diff --git a/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php b/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php --- a/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php +++ b/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php @@ -20,16 +20,50 @@ protected function getBuiltinProfileItems($object) { $items = array(); + $custom_phid = $this->getCustomPHID(); - $custom = $this->getCustomPHID(); + // Built-in Global Defaults + if (!$custom_phid) { + $create_task = array( + 'name' => null, + 'formKey' => + id(new ManiphestEditEngine())->getProfileMenuItemDefault(), + ); + + $create_project = array( + 'name' => null, + 'formKey' => + id(new PhabricatorProjectEditEngine())->getProfileMenuItemDefault(), + ); + + $create_repository = array( + 'name' => null, + 'formKey' => + id(new DiffusionRepositoryEditEngine())->getProfileMenuItemDefault(), + ); - if ($custom) { $items[] = $this->newItem() - ->setBuiltinKey(PhabricatorFavoritesConstants::ITEM_MANAGE) - ->setMenuItemKey( - PhabricatorFavoritesManageProfileMenuItem::MENUITEMKEY); + ->setBuiltinKey(PhabricatorFavoritesConstants::ITEM_TASK) + ->setMenuItemKey(PhabricatorEditEngineProfileMenuItem::MENUITEMKEY) + ->setMenuItemProperties($create_task); + + $items[] = $this->newItem() + ->setBuiltinKey(PhabricatorFavoritesConstants::ITEM_PROJECT) + ->setMenuItemKey(PhabricatorEditEngineProfileMenuItem::MENUITEMKEY) + ->setMenuItemProperties($create_project); + + $items[] = $this->newItem() + ->setBuiltinKey(PhabricatorFavoritesConstants::ITEM_REPOSITORY) + ->setMenuItemKey(PhabricatorEditEngineProfileMenuItem::MENUITEMKEY) + ->setMenuItemProperties($create_repository); } + // Single Manage Item, switches URI based on admin/user + $items[] = $this->newItem() + ->setBuiltinKey(PhabricatorFavoritesConstants::ITEM_MANAGE) + ->setMenuItemKey( + PhabricatorFavoritesManageProfileMenuItem::MENUITEMKEY); + return $items; } diff --git a/src/applications/favorites/menuitem/PhabricatorFavoritesManageProfileMenuItem.php b/src/applications/favorites/menuitem/PhabricatorFavoritesManageProfileMenuItem.php --- a/src/applications/favorites/menuitem/PhabricatorFavoritesManageProfileMenuItem.php +++ b/src/applications/favorites/menuitem/PhabricatorFavoritesManageProfileMenuItem.php @@ -47,15 +47,22 @@ protected function newNavigationMenuItems( PhabricatorProfileMenuItemConfiguration $config) { + $viewer = $this->getViewer(); - $name = $this->getDisplayName($config); - $icon = 'fa-pencil'; - $href = '/favorites/personal/item/configure/'; + if ($viewer->isLoggedIn()) { + $admin = $viewer->getIsAdmin(); + $name = $this->getDisplayName($config); + $icon = 'fa-pencil'; + $href = '/favorites/personal/item/configure/'; + if ($admin) { + $href = '/favorites/'; + } - $item = $this->newItem() - ->setHref($href) - ->setName($name) - ->setIcon($icon); + $item = $this->newItem() + ->setHref($href) + ->setName($name) + ->setIcon($icon); + } return array( $item, diff --git a/src/applications/transactions/editengine/PhabricatorEditEngine.php b/src/applications/transactions/editengine/PhabricatorEditEngine.php --- a/src/applications/transactions/editengine/PhabricatorEditEngine.php +++ b/src/applications/transactions/editengine/PhabricatorEditEngine.php @@ -107,6 +107,10 @@ return $this->hideHeader; } + public function getProfileMenuItemDefault() { + return $this->getEngineKey().'/'.self::EDITENGINECONFIG_DEFAULT; + } + /* -( Managing Fields )---------------------------------------------------- */