[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhameBlogListController extends PhameController { 4 5 private $filter; 6 7 public function willProcessRequest(array $data) { 8 $this->filter = idx($data, 'filter'); 9 } 10 11 public function processRequest() { 12 $request = $this->getRequest(); 13 $user = $request->getUser(); 14 15 $nav = $this->renderSideNavFilterView(null); 16 $filter = $nav->selectFilter('blog/'.$this->filter, 'blog/user'); 17 18 $query = id(new PhameBlogQuery()) 19 ->setViewer($user); 20 21 switch ($filter) { 22 case 'blog/all': 23 $title = pht('All Blogs'); 24 $nodata = pht('No blogs have been created.'); 25 break; 26 case 'blog/user': 27 $title = pht('Joinable Blogs'); 28 $nodata = pht('There are no blogs you can contribute to.'); 29 $query->requireCapabilities( 30 array( 31 PhabricatorPolicyCapability::CAN_JOIN, 32 )); 33 break; 34 default: 35 throw new Exception("Unknown filter '{$filter}'!"); 36 } 37 38 $pager = id(new AphrontPagerView()) 39 ->setURI($request->getRequestURI(), 'offset') 40 ->setOffset($request->getInt('offset')); 41 42 $blogs = $query->executeWithOffsetPager($pager); 43 44 $blog_list = $this->renderBlogList($blogs, $user, $nodata); 45 $blog_list->setPager($pager); 46 47 $crumbs = $this->buildApplicationCrumbs(); 48 $crumbs->addTextCrumb($title, $this->getApplicationURI()); 49 50 $nav->appendChild( 51 array( 52 $crumbs, 53 $blog_list, 54 )); 55 56 return $this->buildApplicationPage( 57 $nav, 58 array( 59 'title' => $title, 60 )); 61 } 62 63 private function renderBlogList( 64 array $blogs, 65 PhabricatorUser $user, 66 $nodata) { 67 68 $view = new PHUIObjectItemListView(); 69 $view->setNoDataString($nodata); 70 $view->setUser($user); 71 foreach ($blogs as $blog) { 72 73 $item = id(new PHUIObjectItemView()) 74 ->setHeader($blog->getName()) 75 ->setHref($this->getApplicationURI('blog/view/'.$blog->getID().'/')) 76 ->setObject($blog); 77 78 $view->addItem($item); 79 } 80 81 return $view; 82 } 83 84 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |