[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

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

   1  <?php
   2  
   3  abstract class PhameController extends PhabricatorController {
   4  
   5    protected function renderSideNavFilterView() {
   6  
   7      $base_uri = new PhutilURI($this->getApplicationURI());
   8  
   9      $nav = new AphrontSideNavFilterView();
  10      $nav->setBaseURI($base_uri);
  11  
  12      $nav->addLabel(pht('Create'));
  13      $nav->addFilter('post/new', pht('New Post'));
  14      $nav->addFilter('blog/new', pht('New Blog'));
  15  
  16      $nav->addLabel(pht('Posts'));
  17      $nav->addFilter('post/draft', pht('My Drafts'));
  18      $nav->addFilter('post', pht('My Posts'));
  19      $nav->addFilter('post/all', pht('All Posts'));
  20  
  21      $nav->addLabel(pht('Blogs'));
  22      $nav->addFilter('blog/user', pht('Joinable Blogs'));
  23      $nav->addFilter('blog/all', pht('All Blogs'));
  24  
  25      $nav->selectFilter(null);
  26  
  27      return $nav;
  28    }
  29  
  30    protected function renderPostList(
  31      array $posts,
  32      PhabricatorUser $viewer,
  33      $nodata) {
  34      assert_instances_of($posts, 'PhamePost');
  35  
  36      $stories = array();
  37  
  38      foreach ($posts as $post) {
  39        $blogger = $this->getHandle($post->getBloggerPHID())->renderLink();
  40        $bloggerURI = $this->getHandle($post->getBloggerPHID())->getURI();
  41        $bloggerImage = $this->getHandle($post->getBloggerPHID())->getImageURI();
  42  
  43        $blog = null;
  44        if ($post->getBlog()) {
  45          $blog = $this->getHandle($post->getBlog()->getPHID())->renderLink();
  46        }
  47  
  48        $phame_post = '';
  49        if ($post->getBody()) {
  50          $phame_post = PhabricatorMarkupEngine::summarize($post->getBody());
  51        }
  52  
  53        $blog_view = $post->getViewURI();
  54        $phame_title = phutil_tag('a', array('href' => $blog_view),
  55          $post->getTitle());
  56  
  57        $blogger = phutil_tag('strong', array(), $blogger);
  58        if ($post->isDraft()) {
  59          $title = pht('%s drafted a blog post on %s.',
  60            $blogger, $blog);
  61          $title = phutil_tag('em', array(), $title);
  62        } else {
  63          $title = pht('%s wrote a blog post on %s.',
  64            $blogger, $blog);
  65        }
  66  
  67        $item = id(new PHUIObjectItemView())
  68          ->setObject($post)
  69          ->setHeader($post->getTitle())
  70          ->setHref($this->getApplicationURI('post/view/'.$post->getID().'/'));
  71  
  72        $story = id(new PHUIFeedStoryView())
  73          ->setTitle($title)
  74          ->setImage($bloggerImage)
  75          ->setImageHref($bloggerURI)
  76          ->setAppIcon('phame-dark')
  77          ->setUser($viewer)
  78          ->setPontification($phame_post, $phame_title);
  79  
  80        if (PhabricatorPolicyFilter::hasCapability(
  81          $viewer,
  82          $post,
  83          PhabricatorPolicyCapability::CAN_EDIT)) {
  84  
  85          $story->addAction(id(new PHUIIconView())
  86            ->setHref($this->getApplicationURI('post/edit/'.$post->getID().'/'))
  87            ->setIconFont('fa-pencil'));
  88        }
  89  
  90        if ($post->getDatePublished()) {
  91          $story->setEpoch($post->getDatePublished());
  92        }
  93  
  94        $stories[] = $story;
  95      }
  96  
  97      if (empty($stories)) {
  98        return id(new AphrontErrorView())
  99          ->setSeverity(AphrontErrorView::SEVERITY_NODATA)
 100          ->appendChild($nodata);
 101      }
 102  
 103      return $stories;
 104    }
 105  
 106    public function buildApplicationMenu() {
 107      return $this->renderSideNavFilterView()->getMenu();
 108    }
 109  
 110    protected function buildApplicationCrumbs() {
 111      $crumbs = parent::buildApplicationCrumbs();
 112      $crumbs->addAction(
 113        id(new PHUIListItemView())
 114          ->setName(pht('New Blog'))
 115          ->setHref($this->getApplicationURI('/blog/new'))
 116          ->setIcon('fa-plus-square'));
 117      $crumbs->addAction(
 118        id(new PHUIListItemView())
 119          ->setName(pht('New Post'))
 120          ->setHref($this->getApplicationURI('/post/new'))
 121          ->setIcon('fa-pencil'));
 122      return $crumbs;
 123    }
 124  }


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