--- a/src/applications/people/controller/PhabricatorPeopleProfileViewController.php +++ b/src/applications/people/controller/PhabricatorPeopleProfileViewController.php @@ -58,8 +58,9 @@ ->appendChild($feed); $projects = $this->buildProjectsView($user); - $calendar = $this->buildCalendarDayView($user); + $repo = $this->buildrepoView($user); $badges = $this->buildBadgesView($user); + $calendar = $this->buildCalendarDayView($user); require_celerity_resource('project-view-css'); $home = id(new PHUITwoColumnView()) @@ -73,8 +74,9 @@ ->setSideColumn( array( $projects, - $calendar, + $repo, $badges, + $calendar, )); $nav = $this->getProfileMenu(); @@ -125,10 +127,8 @@ ->setViewer($viewer) ->withMemberPHIDs(array($user->getPHID())) ->needImages(true) - ->withStatuses( - array( - PhabricatorProjectStatus::STATUS_ACTIVE, - )) + ->withStatuses(array(PhabricatorProjectStatus::STATUS_ACTIVE)) + ->withIcons(array('project')) ->execute(); $header = id(new PHUIHeaderView()) @@ -174,6 +174,72 @@ return $box; } + private function buildRepoView( + PhabricatorUser $user) { + + $viewer = $this->getViewer(); + + $repo_transaction = id(new PhabricatorRepositoryTransactionQuery()) + ->setViewer($viewer) + ->withAuthorPHIDs(array($user->getPHID())) + ->withTransactionTypes(array(PhabricatorTransactions::TYPE_CREATE)) + ->execute(); + + if(!empty($repo_transaction)) { + $repo_phids = mpull($repo_transaction, 'getObjectPHID'); + $repo = id(new PhabricatorRepositoryQuery()) + ->setViewer($viewer) + ->withPHIDs($repo_phids) + ->setOrder('committed') + ->execute(); + } + + $header = id(new PHUIHeaderView()); + + if (!empty($repo)) { + $nb = count($repo); + $limit = 5; + $repo = array_slice($repo, 0, $limit); + $list = new PHUIObjectItemListView(); + foreach($repo as $r){ + $list->addItem( + id(new PHUIObjectItemView()) + ->setHeader($r->getName()) + ->addAttribute($r->getDisplayName()) + ->setHref($r->getURI())); + } + + $header_text = pht('Repositories (%s)', $nb); + + if($nb > $limit) { + $header->addActionLink( + id(new PHUIButtonView()) + ->setTag('a') + ->setIcon('fa-list-ul') + ->setText(pht('View All')) + ->setHref('/repository/?authorPHID='.$user->getPHID())); + } + + } else { + $header_text = pht('Repositories'); + $error = id(new PHUIBoxView()) + ->addClass('mlb') + ->appendChild(pht('User does not have any repository.')); + $list = id(new PHUIInfoView()) + ->setSeverity(PHUIInfoView::SEVERITY_NODATA) + ->appendChild($error); + } + + $header->setHeader($header_text); + + $box = id(new PHUIObjectBoxView()) + ->setHeader($header) + ->appendChild($list) + ->setBackground(PHUIObjectBoxView::GREY); + + return $box; + } + private function buildCalendarDayView(PhabricatorUser $user) { $viewer = $this->getViewer(); $class = 'PhabricatorCalendarApplication';