public function render()
 {
     require_celerity_resource('phabricator-remarkup-css');
     $user = $this->getUser();
     $blogger = $this->getBlogger();
     $post = $this->getPost();
     $engine = PhabricatorMarkupEngine::newPhameMarkupEngine();
     $body = $engine->markupText($post->getBody());
     if ($post->isDraft()) {
         $uri = '/phame/draft/';
         $label = 'Back to Your Drafts';
     } else {
         $uri = '/phame/posts/' . $blogger->getUsername() . '/';
         $label = 'More Posts by ' . phutil_escape_html($blogger->getUsername());
     }
     $button = phutil_render_tag('a', array('href' => $uri, 'class' => 'grey button'), $label);
     $publish_date = $post->getDatePublished();
     if ($publish_date) {
         $caption = 'Published ' . phabricator_datetime($publish_date, $user);
     } else {
         $caption = 'Last edited ' . phabricator_datetime($post->getDateModified(), $user);
     }
     $caption .= ' by ' . phutil_render_tag('a', array('href' => new PhutilURI('/p/' . $blogger->getUsername() . '/')), phutil_escape_html($blogger->getUsername())) . '.';
     if ($this->isPreview()) {
         $width = AphrontPanelView::WIDTH_FULL;
     } else {
         $width = AphrontPanelView::WIDTH_WIDE;
     }
     $panel = id(new AphrontPanelView())->setHeader(phutil_escape_html($post->getTitle()))->appendChild('<div class="phabricator-remarkup">' . $body . '</div>')->setWidth($width)->addButton($button)->setCaption($caption);
     if ($user->getPHID() == $post->getBloggerPHID()) {
         if ($post->isDraft()) {
             $label = 'Edit Draft';
         } else {
             $label = 'Edit Post';
         }
         $button = phutil_render_tag('a', array('href' => $post->getEditURI(), 'class' => 'grey button'), $label);
         $panel->addButton($button);
     }
     switch ($post->getCommentsWidget()) {
         case 'facebook':
             $comments = $this->renderFacebookComments();
             break;
         case 'disqus':
             $comments = $this->renderDisqusComments();
             break;
         case 'none':
         default:
             $comments = null;
             break;
     }
     $panel->appendChild($comments);
     return $panel->render();
 }
示例#2
0
 public function newMarkupEngine($field)
 {
     return PhabricatorMarkupEngine::newPhameMarkupEngine();
 }
 public function render()
 {
     $user = $this->getUser();
     $posts = $this->getPosts();
     $bloggers = $this->getBloggers();
     $noun = $this->getPostNoun();
     if (empty($posts)) {
         $panel = id(new AphrontPanelView())->setHeader(sprintf('No %ss... Yet!', $noun))->setCaption('Will you answer the call to phame?')->setCreateButton(sprintf('New %s', $noun), sprintf('/phame/%s/new', strtolower($noun)));
         return $panel->render();
     }
     require_celerity_resource('phabricator-remarkup-css');
     $engine = PhabricatorMarkupEngine::newPhameMarkupEngine();
     $html = array();
     $actions = $this->getActions();
     foreach ($posts as $post) {
         $blogger_phid = $post->getBloggerPHID();
         $blogger = $bloggers[$blogger_phid];
         $updated = phabricator_datetime($post->getDateModified(), $user);
         $body = $engine->markupText($post->getBody());
         $panel = id(new AphrontPanelView())->setHeader(phutil_escape_html($post->getTitle()))->setCaption('Last updated ' . $updated)->appendChild('<div class="phabricator-remarkup">' . $body . '</div>');
         foreach ($actions as $action) {
             switch ($action) {
                 case 'view':
                     $uri = $post->getViewURI($blogger->getUsername());
                     $label = 'View ' . $noun;
                     break;
                 case 'edit':
                     $uri = $post->getEditURI();
                     $label = 'Edit ' . $noun;
                     break;
                 default:
                     break;
             }
             $button = phutil_render_tag('a', array('href' => $uri, 'class' => 'grey button'), $label);
             $panel->addButton($button);
         }
         $html[] = $panel->render();
     }
     return implode('', $html);
 }