diff --git a/src/applications/phame/controller/PhameHomeController.php b/src/applications/phame/controller/PhameHomeController.php --- a/src/applications/phame/controller/PhameHomeController.php +++ b/src/applications/phame/controller/PhameHomeController.php @@ -15,16 +15,37 @@ ->needProfileImage(true) ->execute(); - $blog_phids = mpull($blogs, 'getPHID'); + $post_list = null; + if ($blogs) { + $blog_phids = mpull($blogs, 'getPHID'); - $pager = id(new AphrontCursorPagerView()) - ->readFromRequest($request); + $pager = id(new AphrontCursorPagerView()) + ->readFromRequest($request); - $posts = id(new PhamePostQuery()) - ->setViewer($viewer) - ->withBlogPHIDs($blog_phids) - ->withVisibility(PhameConstants::VISIBILITY_PUBLISHED) - ->executeWithCursorPager($pager); + $posts = id(new PhamePostQuery()) + ->setViewer($viewer) + ->withBlogPHIDs($blog_phids) + ->withVisibility(PhameConstants::VISIBILITY_PUBLISHED) + ->executeWithCursorPager($pager); + + $post_list = id(new PhamePostListView()) + ->setPosts($posts) + ->setViewer($viewer) + ->showBlog(true); + } else { + $create_button = id(new PHUIButtonView()) + ->setTag('a') + ->setText(pht('Create a Blog')) + ->setHref('/phame/blog/new/') + ->setColor(PHUIButtonView::GREEN); + + $post_list = id(new PHUIBigInfoView()) + ->setIcon('fa-star') + ->setTitle('Welcome to Phame') + ->setDescription( + pht('There aren\'t any visible Blog Posts.')) + ->addAction($create_button); + } $actions = $this->renderActions($viewer); $action_button = id(new PHUIButtonView()) @@ -41,12 +62,6 @@ ->setHeader($title) ->addActionLink($action_button); - $post_list = id(new PhamePostListView()) - ->setPosts($posts) - ->setViewer($viewer) - ->showBlog(true) - ->setNodata(pht('No Recent Visible Posts.')); - $crumbs = $this->buildApplicationCrumbs(); $crumbs->setBorder(true); $crumbs->addTextCrumb( diff --git a/src/applications/phame/controller/blog/PhameBlogViewController.php b/src/applications/phame/controller/blog/PhameBlogViewController.php --- a/src/applications/phame/controller/blog/PhameBlogViewController.php +++ b/src/applications/phame/controller/blog/PhameBlogViewController.php @@ -57,12 +57,35 @@ $header->setPolicyObject($blog); } - $post_list = id(new PhamePostListView()) - ->setPosts($posts) - ->setViewer($viewer) - ->setIsExternal($is_external) - ->setIsLive($is_live) - ->setNodata(pht('This blog has no visible posts.')); + if ($posts) { + $post_list = id(new PhamePostListView()) + ->setPosts($posts) + ->setViewer($viewer) + ->setIsExternal($is_external) + ->setIsLive($is_live) + ->setNodata(pht('This blog has no visible posts.')); + } else { + $create_button = id(new PHUIButtonView()) + ->setTag('a') + ->setText(pht('Write a Post')) + ->setHref($this->getApplicationURI('post/edit/?blog='.$blog->getID())) + ->setColor(PHUIButtonView::GREEN); + + $post_list = id(new PHUIBigInfoView()) + ->setIcon('fa-star') + ->setTitle($blog->getName()) + ->setDescription( + pht('No one has written any blog posts yet.')); + + $can_edit = PhabricatorPolicyFilter::hasCapability( + $viewer, + $blog, + PhabricatorPolicyCapability::CAN_EDIT); + + if ($can_edit) { + $post_list->addAction($create_button); + } + } $page = id(new PHUIDocumentViewPro()) ->setHeader($header)