[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/phame/controller/blog/ -> PhameBlogListController.php (source)

   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  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1