diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -4216,12 +4216,14 @@ 'PhabricatorPeopleProfileMenuEngine' => 'applications/people/engine/PhabricatorPeopleProfileMenuEngine.php', 'PhabricatorPeopleProfilePictureController' => 'applications/people/controller/PhabricatorPeopleProfilePictureController.php', 'PhabricatorPeopleProfileRevisionsController' => 'applications/people/controller/PhabricatorPeopleProfileRevisionsController.php', + 'PhabricatorPeopleProfileTasksAuthoredController' => 'applications/people/controller/PhabricatorPeopleProfileTasksAuthoredController.php', 'PhabricatorPeopleProfileTasksController' => 'applications/people/controller/PhabricatorPeopleProfileTasksController.php', 'PhabricatorPeopleProfileViewController' => 'applications/people/controller/PhabricatorPeopleProfileViewController.php', 'PhabricatorPeopleQuery' => 'applications/people/query/PhabricatorPeopleQuery.php', 'PhabricatorPeopleRenameController' => 'applications/people/controller/PhabricatorPeopleRenameController.php', 'PhabricatorPeopleRevisionsProfileMenuItem' => 'applications/people/menuitem/PhabricatorPeopleRevisionsProfileMenuItem.php', 'PhabricatorPeopleSearchEngine' => 'applications/people/query/PhabricatorPeopleSearchEngine.php', + 'PhabricatorPeopleTasksAuthoredProfileMenuItem' => 'applications/people/menuitem/PhabricatorPeopleTasksAuthoredProfileMenuItem.php', 'PhabricatorPeopleTasksProfileMenuItem' => 'applications/people/menuitem/PhabricatorPeopleTasksProfileMenuItem.php', 'PhabricatorPeopleTestDataGenerator' => 'applications/people/lipsum/PhabricatorPeopleTestDataGenerator.php', 'PhabricatorPeopleTransactionQuery' => 'applications/people/query/PhabricatorPeopleTransactionQuery.php', @@ -10812,12 +10814,14 @@ 'PhabricatorPeopleProfileMenuEngine' => 'PhabricatorProfileMenuEngine', 'PhabricatorPeopleProfilePictureController' => 'PhabricatorPeopleProfileController', 'PhabricatorPeopleProfileRevisionsController' => 'PhabricatorPeopleProfileController', + 'PhabricatorPeopleProfileTasksAuthoredController' => 'PhabricatorPeopleProfileController', 'PhabricatorPeopleProfileTasksController' => 'PhabricatorPeopleProfileController', 'PhabricatorPeopleProfileViewController' => 'PhabricatorPeopleProfileController', 'PhabricatorPeopleQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 'PhabricatorPeopleRenameController' => 'PhabricatorPeopleController', 'PhabricatorPeopleRevisionsProfileMenuItem' => 'PhabricatorProfileMenuItem', 'PhabricatorPeopleSearchEngine' => 'PhabricatorApplicationSearchEngine', + 'PhabricatorPeopleTasksAuthoredProfileMenuItem' => 'PhabricatorProfileMenuItem', 'PhabricatorPeopleTasksProfileMenuItem' => 'PhabricatorProfileMenuItem', 'PhabricatorPeopleTestDataGenerator' => 'PhabricatorTestDataGenerator', 'PhabricatorPeopleTransactionQuery' => 'PhabricatorApplicationTransactionQuery', diff --git a/src/applications/people/application/PhabricatorPeopleApplication.php b/src/applications/people/application/PhabricatorPeopleApplication.php --- a/src/applications/people/application/PhabricatorPeopleApplication.php +++ b/src/applications/people/application/PhabricatorPeopleApplication.php @@ -70,6 +70,8 @@ 'PhabricatorPeopleProfileBadgesController', 'tasks/(?P[1-9]\d*)/' => 'PhabricatorPeopleProfileTasksController', + 'tasks-authored/(?P[1-9]\d*)/' => + 'PhabricatorPeopleProfileTasksAuthoredController', 'commits/(?P[1-9]\d*)/' => 'PhabricatorPeopleProfileCommitsController', 'revisions/(?P[1-9]\d*)/' => diff --git a/src/applications/people/controller/PhabricatorPeopleProfileTasksAuthoredController.php b/src/applications/people/controller/PhabricatorPeopleProfileTasksAuthoredController.php new file mode 100644 --- /dev/null +++ b/src/applications/people/controller/PhabricatorPeopleProfileTasksAuthoredController.php @@ -0,0 +1,81 @@ +getViewer(); + $id = $request->getURIData('id'); + + $user = id(new PhabricatorPeopleQuery()) + ->setViewer($viewer) + ->withIDs(array($id)) + ->needProfile(true) + ->needProfileImage(true) + ->needAvailability(true) + ->executeOne(); + if (!$user) { + return new Aphront404Response(); + } + + $class = 'PhabricatorManiphestApplication'; + if (!PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) { + return new Aphront404Response(); + } + + $this->setUser($user); + $title = array(pht('Assigned Tasks'), $user->getUsername()); + $header = $this->buildProfileHeader(); + $tasks = $this->buildTasksView($user); + + $crumbs = $this->buildApplicationCrumbs(); + $crumbs->addTextCrumb(pht('Assigned Tasks')); + $crumbs->setBorder(true); + + $nav = $this->newNavigation( + $user, + PhabricatorPeopleProfileMenuEngine::ITEM_TASKS); + + $view = id(new PHUITwoColumnView()) + ->setHeader($header) + ->addClass('project-view-home') + ->addClass('project-view-people-home') + ->setFooter(array( + $tasks, + )); + + return $this->newPage() + ->setTitle($title) + ->setCrumbs($crumbs) + ->setNavigation($nav) + ->appendChild($view); + } + + private function buildTasksView(PhabricatorUser $user) { + $viewer = $this->getViewer(); + + $open = ManiphestTaskStatus::getOpenStatusConstants(); + + $tasks = id(new ManiphestTaskQuery()) + ->setViewer($viewer) + ->withAuthors(array($user->getPHID())) + ->needProjectPHIDs(true) + ->setLimit(100) + ->execute(); + + $handles = ManiphestTaskListView::loadTaskHandles($viewer, $tasks); + + $list = id(new ManiphestTaskListView()) + ->setUser($viewer) + ->setHandles($handles) + ->setTasks($tasks) + ->setNoDataString(pht('No authored tasks.')); + + $view = id(new PHUIObjectBoxView()) + ->setHeaderText(pht('Authored Tasks')) + ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) + ->appendChild($list); + + return $view; + } +} diff --git a/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php b/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php --- a/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php +++ b/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php @@ -8,6 +8,7 @@ const ITEM_PICTURE = 'people.picture'; const ITEM_BADGES = 'people.badges'; const ITEM_TASKS = 'people.tasks'; + const ITEM_TASKS_AUTHORED = 'people.tasks.authored'; const ITEM_COMMITS = 'people.commits'; const ITEM_REVISIONS = 'people.revisions'; @@ -42,6 +43,10 @@ $items[] = $this->newItem() ->setBuiltinKey(self::ITEM_TASKS) ->setMenuItemKey(PhabricatorPeopleTasksProfileMenuItem::MENUITEMKEY); + $items[] = $this->newItem() + ->setBuiltinKey(self::ITEM_TASKS_AUTHORED) + ->setMenuItemKey( + PhabricatorPeopleTasksAuthoredProfileMenuItem::MENUITEMKEY); } $have_differential = PhabricatorApplication::isClassInstalledForViewer( diff --git a/src/applications/people/menuitem/PhabricatorPeopleBadgesProfileMenuItem.php b/src/applications/people/menuitem/PhabricatorPeopleBadgesProfileMenuItem.php --- a/src/applications/people/menuitem/PhabricatorPeopleBadgesProfileMenuItem.php +++ b/src/applications/people/menuitem/PhabricatorPeopleBadgesProfileMenuItem.php @@ -6,11 +6,11 @@ const MENUITEMKEY = 'people.badges'; public function getMenuItemTypeName() { - return pht('Badges'); + return pht('Received Badges'); } private function getDefaultName() { - return pht('Badges'); + return pht('Received Badges'); } public function canHideMenuItem( diff --git a/src/applications/people/menuitem/PhabricatorPeopleCommitsProfileMenuItem.php b/src/applications/people/menuitem/PhabricatorPeopleCommitsProfileMenuItem.php --- a/src/applications/people/menuitem/PhabricatorPeopleCommitsProfileMenuItem.php +++ b/src/applications/people/menuitem/PhabricatorPeopleCommitsProfileMenuItem.php @@ -6,11 +6,11 @@ const MENUITEMKEY = 'people.commits'; public function getMenuItemTypeName() { - return pht('Commits'); + return pht('Authored Commits'); } private function getDefaultName() { - return pht('Commits'); + return pht('Authored Commits'); } public function canHideMenuItem( diff --git a/src/applications/people/menuitem/PhabricatorPeopleDetailsProfileMenuItem.php b/src/applications/people/menuitem/PhabricatorPeopleDetailsProfileMenuItem.php --- a/src/applications/people/menuitem/PhabricatorPeopleDetailsProfileMenuItem.php +++ b/src/applications/people/menuitem/PhabricatorPeopleDetailsProfileMenuItem.php @@ -45,7 +45,7 @@ $item = $this->newItemView() ->setURI($uri) - ->setName(pht('Profile')) + ->setName(pht('User Profile')) ->setIcon('fa-user'); return array( diff --git a/src/applications/people/menuitem/PhabricatorPeopleManageProfileMenuItem.php b/src/applications/people/menuitem/PhabricatorPeopleManageProfileMenuItem.php --- a/src/applications/people/menuitem/PhabricatorPeopleManageProfileMenuItem.php +++ b/src/applications/people/menuitem/PhabricatorPeopleManageProfileMenuItem.php @@ -10,7 +10,7 @@ } private function getDefaultName() { - return pht('Manage'); + return pht('Manage User'); } public function canHideMenuItem( diff --git a/src/applications/people/menuitem/PhabricatorPeopleRevisionsProfileMenuItem.php b/src/applications/people/menuitem/PhabricatorPeopleRevisionsProfileMenuItem.php --- a/src/applications/people/menuitem/PhabricatorPeopleRevisionsProfileMenuItem.php +++ b/src/applications/people/menuitem/PhabricatorPeopleRevisionsProfileMenuItem.php @@ -6,11 +6,11 @@ const MENUITEMKEY = 'people.revisions'; public function getMenuItemTypeName() { - return pht('Revisions'); + return pht('Authored Revisions'); } private function getDefaultName() { - return pht('Revisions'); + return pht('Authored Revisions'); } public function canHideMenuItem( diff --git a/src/applications/people/menuitem/PhabricatorPeopleTasksProfileMenuItem.php b/src/applications/people/menuitem/PhabricatorPeopleTasksAuthoredProfileMenuItem.php copy from src/applications/people/menuitem/PhabricatorPeopleTasksProfileMenuItem.php copy to src/applications/people/menuitem/PhabricatorPeopleTasksAuthoredProfileMenuItem.php --- a/src/applications/people/menuitem/PhabricatorPeopleTasksProfileMenuItem.php +++ b/src/applications/people/menuitem/PhabricatorPeopleTasksAuthoredProfileMenuItem.php @@ -1,16 +1,16 @@ getID(); $item = $this->newItemView() - ->setURI("/people/tasks/{$id}/") + ->setURI("/people/tasks-authored/{$id}/") ->setName($this->getDisplayName($config)) ->setIcon('fa-anchor'); diff --git a/src/applications/people/menuitem/PhabricatorPeopleTasksProfileMenuItem.php b/src/applications/people/menuitem/PhabricatorPeopleTasksProfileMenuItem.php --- a/src/applications/people/menuitem/PhabricatorPeopleTasksProfileMenuItem.php +++ b/src/applications/people/menuitem/PhabricatorPeopleTasksProfileMenuItem.php @@ -6,11 +6,11 @@ const MENUITEMKEY = 'people.tasks'; public function getMenuItemTypeName() { - return pht('Tasks'); + return pht('Assigned Tasks'); } private function getDefaultName() { - return pht('Tasks'); + return pht('Assigned Tasks'); } public function canHideMenuItem(