Changeset View
Changeset View
Standalone View
Standalone View
src/applications/phame/controller/post/PhamePostListController.php
<?php | <?php | ||||
final class PhamePostListController extends PhameController { | final class PhamePostListController extends PhameController { | ||||
public function handleRequest(AphrontRequest $request) { | public function shouldAllowPublic() { | ||||
$viewer = $request->getViewer(); | return true; | ||||
$filter = $request->getURIData('filter'); | |||||
$bloggername = $request->getURIData('bloggername'); | |||||
$query = id(new PhamePostQuery()) | |||||
->setViewer($viewer); | |||||
$nav = $this->renderSideNavFilterView(); | |||||
$nodata = null; | |||||
switch ($filter) { | |||||
case 'draft': | |||||
$query->withBloggerPHIDs(array($viewer->getPHID())); | |||||
$query->withVisibility(PhamePost::VISIBILITY_DRAFT); | |||||
$nodata = pht('You have no unpublished drafts.'); | |||||
$title = pht('Unpublished Drafts'); | |||||
$nav->selectFilter('post/draft'); | |||||
break; | |||||
case 'blogger': | |||||
if ($bloggername) { | |||||
$blogger = id(new PhabricatorUser())->loadOneWhere( | |||||
'username = %s', | |||||
$bloggername); | |||||
if (!$blogger) { | |||||
return new Aphront404Response(); | |||||
} | |||||
} else { | |||||
$blogger = $viewer; | |||||
} | } | ||||
$query->withBloggerPHIDs(array($blogger->getPHID())); | public function handleRequest(AphrontRequest $request) { | ||||
if ($blogger->getPHID() == $viewer->getPHID()) { | $query_key = $request->getURIData('queryKey'); | ||||
$nav->selectFilter('post'); | $controller = id(new PhabricatorApplicationSearchController()) | ||||
$nodata = pht('You have not written any posts.'); | ->setQueryKey($query_key) | ||||
} else { | ->setSearchEngine(new PhamePostSearchEngine()) | ||||
$nodata = pht('%s has not written any posts.', $blogger); | ->setNavigation($this->buildSideNavView()); | ||||
} | |||||
$title = pht('Posts by %s', $blogger); | return $this->delegateToController($controller); | ||||
break; | |||||
default: | |||||
case 'all': | |||||
$nodata = pht('There are no visible posts.'); | |||||
$title = pht('Posts'); | |||||
$nav->selectFilter('post/all'); | |||||
break; | |||||
} | } | ||||
$pager = id(new AphrontCursorPagerView()) | public function buildSideNavView() { | ||||
->readFromRequest($request); | $viewer = $this->getRequest()->getUser(); | ||||
$posts = $query->executeWithCursorPager($pager); | $nav = new AphrontSideNavFilterView(); | ||||
$nav->setBaseURI(new PhutilURI($this->getApplicationURI())); | |||||
$post_list = $this->renderPostList($posts, $viewer, $nodata); | id(new PhamePostSearchEngine()) | ||||
$post_list = id(new PHUIObjectBoxView()) | ->setViewer($viewer) | ||||
->setHeaderText($title) | ->addNavigationItems($nav->getMenu()); | ||||
->appendChild($post_list); | |||||
$nav->addLabel(pht('Blogs')); | |||||
$crumbs = $this->buildApplicationCrumbs(); | $nav->addFilter('blog/', pht('Manage Blogs')); | ||||
$crumbs->addTextCrumb($title, $this->getApplicationURI()); | |||||
$nav->selectFilter(null); | |||||
$nav->appendChild( | |||||
array( | return $nav; | ||||
$crumbs, | |||||
$post_list, | |||||
)); | |||||
return $this->buildApplicationPage( | |||||
$nav, | |||||
array( | |||||
'title' => $title, | |||||
)); | |||||
} | } | ||||
} | } |