From 452f5bce18e59693d71b672697529d38d1aa0d06 Mon Sep 17 00:00:00 2001 From: Chad Little Date: Wed, 11 Jan 2017 08:36:30 -0800 Subject: [PATCH] Make some defaults for Quick Create / Favorites Summary: Add in some basic defaults, Tasks, Projects, Repositories... anything else? Also switches "manage" context if you are an admin or user. Hides link if you are not logged in. Test Plan: Review Global/Personal in Favorites app, click on each link. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Differential Revision: https://secure.phabricator.com/D17174 --- .../PhabricatorFavoritesConstants.php | 3 ++ .../PhabricatorFavoritesProfileMenuEngine.php | 44 ++++++++++++++++--- ...bricatorFavoritesManageProfileMenuItem.php | 21 ++++++--- .../editengine/PhabricatorEditEngine.php | 4 ++ 4 files changed, 60 insertions(+), 12 deletions(-) diff --git a/src/applications/favorites/constants/PhabricatorFavoritesConstants.php b/src/applications/favorites/constants/PhabricatorFavoritesConstants.php index 5da0862985..c11a435eef 100644 --- 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 index 114235b76b..a12922a6e8 100644 --- a/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php +++ b/src/applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php @@ -20,16 +20,50 @@ final class PhabricatorFavoritesProfileMenuEngine 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 index 0f0a3d10a6..36847061bf 100644 --- a/src/applications/favorites/menuitem/PhabricatorFavoritesManageProfileMenuItem.php +++ b/src/applications/favorites/menuitem/PhabricatorFavoritesManageProfileMenuItem.php @@ -47,15 +47,22 @@ final class PhabricatorFavoritesManageProfileMenuItem 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 index 29c78a4e9f..30e87fa0ad 100644 --- a/src/applications/transactions/editengine/PhabricatorEditEngine.php +++ b/src/applications/transactions/editengine/PhabricatorEditEngine.php @@ -107,6 +107,10 @@ abstract class PhabricatorEditEngine return $this->hideHeader; } + public function getProfileMenuItemDefault() { + return $this->getEngineKey().'/'.self::EDITENGINECONFIG_DEFAULT; + } + /* -( Managing Fields )---------------------------------------------------- */