[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
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 }
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 |