diff --git a/src/applications/people/controller/profile/PhabricatorPeopleProfileController.php b/src/applications/people/controller/profile/PhabricatorPeopleProfileController.php index 71a50c61c1..bc45f37c0a 100644 --- a/src/applications/people/controller/profile/PhabricatorPeopleProfileController.php +++ b/src/applications/people/controller/profile/PhabricatorPeopleProfileController.php @@ -37,6 +37,8 @@ class PhabricatorPeopleProfileController extends PhabricatorPeopleController { return new Aphront404Response(); } + require_celerity_resource('phabricator-profile-css'); + $profile = id(new PhabricatorUserProfile())->loadOneWhere( 'userPHID = %s', $user->getPHID()); @@ -44,16 +46,29 @@ class PhabricatorPeopleProfileController extends PhabricatorPeopleController { $profile = new PhabricatorUserProfile(); } - $links = array(); + $nav = new AphrontSideNavFilterView(); + $nav->setBaseURI(new PhutilURI('/p/'.$user->getUserName().'/')); + $nav->addFilter('feed', 'Feed'); + $nav->addFilter('about', 'About'); - if ($user->getPHID() == $viewer->getPHID()) { - $links[] = phutil_render_tag( - 'a', - array( - 'href' => '/settings/page/profile/', - ), - 'Edit Profile'); - } + $nav->addSpacer(); + $nav->addLabel('Activity'); + + $external_arrow = "\xE2\x86\x97"; + $nav->addFilter( + null, + "Revisions {$external_arrow}", + '/differential/filter/revisions/?phid='.$user->getPHID()); + + $nav->addFilter( + null, + "Tasks {$external_arrow}", + '/maniphest/view/action/?users='.$user->getPHID()); + + $nav->addFilter( + null, + "Commits {$external_arrow}", + '/diffusion/author/'.$user->getUserName().'/'); $oauths = id(new PhabricatorUserOAuthInfo())->loadAllWhere( 'userID = %d', @@ -61,6 +76,7 @@ class PhabricatorPeopleProfileController extends PhabricatorPeopleController { $oauths = mpull($oauths, null, 'getOAuthProvider'); $providers = PhabricatorOAuthProvider::getAllProviders(); + $added_spacer = false; foreach ($providers as $provider) { if (!$provider->isProviderEnabled()) { continue; @@ -76,28 +92,26 @@ class PhabricatorPeopleProfileController extends PhabricatorPeopleController { $href = $oauths[$provider_key]->getAccountURI(); if ($href) { - $links[] = phutil_render_tag( - 'a', - array( - 'href' => $href, - ), - phutil_escape_html($name)); + if (!$added_spacer) { + $nav->addSpacer(); + $nav->addLabel('Linked Accounts'); + $added_spacer = true; + } + $nav->addFilter(null, $name.' '.$external_arrow, $href); } } - // TODO: perhaps, if someone wants to add to the profile of the user the - // ability to show the task/revisions where he is working/commenting - // on, this has to be changed to something like - // |$this->page = key($pages)|, since the "page" regexp was added to - // the aphrontconfiguration. - if (empty($links[$this->page])) { - $this->page = 'action'; - } + $this->page = $nav->selectFilter($this->page, 'feed'); switch ($this->page) { - default: + case 'feed': + $content = $this->renderUserFeed($user); + break; + case 'about': $content = $this->renderBasicInformation($user, $profile); break; + default: + throw new Exception("Unknown page '{$this->page}'!"); } $src_phid = $profile->getProfileImagePHID(); @@ -105,36 +119,31 @@ class PhabricatorPeopleProfileController extends PhabricatorPeopleController { $src_phid = $user->getProfileImagePHID(); } $picture = PhabricatorFileURI::getViewURIForPHID($src_phid); - $title = nonempty($profile->getTitle(), 'Untitled Document'); - $realname = '('.$user->getRealName().')'; - $profile = new PhabricatorProfileView(); - $profile->setProfilePicture($picture); - $profile->setProfileNames( - $user->getUserName(), - $realname, - $title); - foreach ($links as $page => $name) { - if (is_integer($page)) { - $profile->addProfileItem( - phutil_render_tag( - 'span', - array(), - $name)); - } else { - $profile->addProfileItem($page); - } + $header = new PhabricatorProfileHeaderView(); + $header + ->setProfilePicture($picture) + ->setName($user->getUserName().' ('.$user->getRealName().')') + ->setDescription($profile->getTitle()); + + $header->appendChild($nav); + $nav->appendChild( + '
| Commits | -'.$commit_list.' | -
|---|