Differential D15063 Diff 36382 src/applications/project/controller/PhabricatorProjectProfileController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectProfileController.php
Show First 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | $watcher_list = id(new PhabricatorProjectWatcherListView()) | ||||
->setUser($viewer) | ->setUser($viewer) | ||||
->setProject($project) | ->setProject($project) | ||||
->setLimit(5) | ->setLimit(5) | ||||
->setUserPHIDs($project->getWatcherPHIDs()); | ->setUserPHIDs($project->getWatcherPHIDs()); | ||||
$nav = $this->getProfileMenu(); | $nav = $this->getProfileMenu(); | ||||
$nav->selectFilter(PhabricatorProject::PANEL_PROFILE); | $nav->selectFilter(PhabricatorProject::PANEL_PROFILE); | ||||
$watch_action = $this->renderWatchAction($project); | |||||
$stories = id(new PhabricatorFeedQuery()) | $stories = id(new PhabricatorFeedQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->setFilterPHIDs( | ->setFilterPHIDs( | ||||
array( | array( | ||||
$project->getPHID(), | $project->getPHID(), | ||||
)) | )) | ||||
->setLimit(50) | ->setLimit(50) | ||||
->execute(); | ->execute(); | ||||
$feed = $this->renderStories($stories); | $feed = $this->renderStories($stories); | ||||
$feed_header = id(new PHUIHeaderView()) | |||||
->setHeader(pht('Recent Activity')) | |||||
->addActionLink($watch_action); | |||||
$feed = id(new PHUIObjectBoxView()) | $feed = id(new PHUIObjectBoxView()) | ||||
->setHeaderText(pht('Recent Activity')) | ->setHeader($feed_header) | ||||
->appendChild($feed); | ->appendChild($feed); | ||||
$columns = id(new AphrontMultiColumnView()) | $columns = id(new AphrontMultiColumnView()) | ||||
->setFluidLayout(true) | ->setFluidLayout(true) | ||||
->addColumn($feed) | ->addColumn($feed) | ||||
->addColumn( | ->addColumn( | ||||
array( | array( | ||||
$member_list, | $member_list, | ||||
▲ Show 20 Lines • Show All 62 Lines • ▼ Show 20 Lines | private function renderStories(array $stories) { | ||||
$builder = new PhabricatorFeedBuilder($stories); | $builder = new PhabricatorFeedBuilder($stories); | ||||
$builder->setUser($this->getRequest()->getUser()); | $builder->setUser($this->getRequest()->getUser()); | ||||
$builder->setShowHovercards(true); | $builder->setShowHovercards(true); | ||||
$view = $builder->buildView(); | $view = $builder->buildView(); | ||||
return phutil_tag_div('profile-feed', $view->render()); | return phutil_tag_div('profile-feed', $view->render()); | ||||
} | } | ||||
private function renderWatchAction(PhabricatorProject $project) { | |||||
$viewer = $this->getViewer(); | |||||
$viewer_phid = $viewer->getPHID(); | |||||
$id = $project->getID(); | |||||
$is_watcher = ($viewer_phid && $project->isUserWatcher($viewer_phid)); | |||||
if (!$is_watcher) { | |||||
$watch_icon = 'fa-eye'; | |||||
$watch_text = pht('Watch Project'); | |||||
$watch_href = "/project/watch/{$id}/?via=profile"; | |||||
} else { | |||||
$watch_icon = 'fa-eye-slash'; | |||||
$watch_text = pht('Unwatch Project'); | |||||
$watch_href = "/project/unwatch/{$id}/?via=profile"; | |||||
} | |||||
$watch_icon = id(new PHUIIconView()) | |||||
->setIconFont($watch_icon); | |||||
return id(new PHUIButtonView()) | |||||
->setTag('a') | |||||
->setWorkflow(true) | |||||
->setIcon($watch_icon) | |||||
->setText($watch_text) | |||||
->setHref($watch_href); | |||||
} | |||||
} | } |