Exemplo n.º 1
0
 public function getAtomSummary(DivinerAtom $atom)
 {
     if ($atom->getDocblockMetaValue('summary')) {
         return $atom->getDocblockMetaValue('summary');
     }
     $text = $this->getAtomDescription($atom);
     return PhabricatorMarkupEngine::summarize($text);
 }
Exemplo n.º 2
0
 protected function getTagContent()
 {
     $viewer = $this->viewer;
     $posts = $this->posts;
     $nodata = $this->nodata;
     $handle_phids = array();
     foreach ($posts as $post) {
         $handle_phids[] = $post->getBloggerPHID();
         if ($post->getBlog()) {
             $handle_phids[] = $post->getBlog()->getPHID();
         }
     }
     $handles = $viewer->loadHandles($handle_phids);
     $list = array();
     foreach ($posts as $post) {
         $blogger = $handles[$post->getBloggerPHID()]->renderLink();
         $blogger_uri = $handles[$post->getBloggerPHID()]->getURI();
         $blogger_image = $handles[$post->getBloggerPHID()]->getImageURI();
         $phame_post = null;
         if ($post->getBody()) {
             $phame_post = PhabricatorMarkupEngine::summarize($post->getBody());
             $phame_post = new PHUIRemarkupView($viewer, $phame_post);
         } else {
             $phame_post = phutil_tag('em', array(), pht('(Empty Post)'));
         }
         $blogger = phutil_tag('strong', array(), $blogger);
         $date = phabricator_datetime($post->getDatePublished(), $viewer);
         $blog = null;
         if ($post->getBlog()) {
             $blog = phutil_tag('a', array('href' => '/phame/blog/view/' . $post->getBlog()->getID() . '/'), $post->getBlog()->getName());
         }
         if ($this->showBlog && $blog) {
             if ($post->isDraft()) {
                 $subtitle = pht('Unpublished draft by %s in %s.', $blogger, $blog);
             } else {
                 $subtitle = pht('By %s on %s in %s.', $blogger, $date, $blog);
             }
         } else {
             if ($post->isDraft()) {
                 $subtitle = pht('Unpublished draft by %s.', $blogger);
             } else {
                 $subtitle = pht('Written by %s on %s.', $blogger, $date);
             }
         }
         $item = id(new PHUIDocumentSummaryView())->setTitle($post->getTitle())->setHref($post->getViewURI())->setSubtitle($subtitle)->setImage($blogger_image)->setImageHref($blogger_uri)->setSummary($phame_post)->setDraft($post->isDraft());
         $list[] = $item;
     }
     if (empty($list)) {
         $list = id(new PHUIInfoView())->setSeverity(PHUIInfoView::SEVERITY_NODATA)->appendChild($nodata);
     }
     return $list;
 }
Exemplo n.º 3
0
 protected function renderPostList(array $posts, PhabricatorUser $viewer, $nodata)
 {
     assert_instances_of($posts, 'PhamePost');
     $handle_phids = array();
     foreach ($posts as $post) {
         $handle_phids[] = $post->getBloggerPHID();
         if ($post->getBlog()) {
             $handle_phids[] = $post->getBlog()->getPHID();
         }
     }
     $handles = $viewer->loadHandles($handle_phids);
     $stories = array();
     foreach ($posts as $post) {
         $blogger = $handles[$post->getBloggerPHID()]->renderLink();
         $blogger_uri = $handles[$post->getBloggerPHID()]->getURI();
         $blogger_image = $handles[$post->getBloggerPHID()]->getImageURI();
         $blog = null;
         if ($post->getBlog()) {
             $blog = $handles[$post->getBlog()->getPHID()]->renderLink();
         }
         $phame_post = '';
         if ($post->getBody()) {
             $phame_post = PhabricatorMarkupEngine::summarize($post->getBody());
         }
         $blog_view = $post->getViewURI();
         $phame_title = phutil_tag('a', array('href' => $blog_view), $post->getTitle());
         $blogger = phutil_tag('strong', array(), $blogger);
         if ($post->isDraft()) {
             $title = pht('%s drafted a blog post on %s.', $blogger, $blog);
             $title = phutil_tag('em', array(), $title);
         } else {
             $title = pht('%s wrote a blog post on %s.', $blogger, $blog);
         }
         $item = id(new PHUIObjectItemView())->setObject($post)->setHeader($post->getTitle())->setHref($this->getApplicationURI('post/view/' . $post->getID() . '/'));
         $story = id(new PHUIFeedStoryView())->setTitle($title)->setImage($blogger_image)->setImageHref($blogger_uri)->setAppIcon('fa-star')->setUser($viewer)->setPontification($phame_post, $phame_title);
         if (PhabricatorPolicyFilter::hasCapability($viewer, $post, PhabricatorPolicyCapability::CAN_EDIT)) {
             $story->addAction(id(new PHUIIconView())->setHref($this->getApplicationURI('post/edit/' . $post->getID() . '/'))->setIconFont('fa-pencil'));
         }
         if ($post->getDatePublished()) {
             $story->setEpoch($post->getDatePublished());
         }
         $stories[] = $story;
     }
     if (empty($stories)) {
         return id(new PHUIBoxView())->appendChild($nodata)->addClass('mlt mlb msr msl');
     }
     return $stories;
 }
 public function getBodyForFeed(PhabricatorFeedStory $story)
 {
     $remarkup = $this->getRemarkupBodyForFeed($story);
     if ($remarkup !== null) {
         $remarkup = PhabricatorMarkupEngine::summarize($remarkup);
         return new PHUIRemarkupView($this->viewer, $remarkup);
     }
     $old = $this->getOldValue();
     $new = $this->getNewValue();
     $body = null;
     switch ($this->getTransactionType()) {
         case PhabricatorTransactions::TYPE_COMMENT:
             $text = $this->getComment()->getContent();
             if (strlen($text)) {
                 $body = $story->getMarkupFieldOutput('comment/' . $this->getID());
             }
             break;
     }
     return $body;
 }
 public function getMarkupTextForFeed(PhabricatorFeedStory $story, $field)
 {
     switch ($this->getTransactionType()) {
         case PhabricatorTransactions::TYPE_COMMENT:
             $text = $this->getComment()->getContent();
             return PhabricatorMarkupEngine::summarize($text);
     }
     return null;
 }
Exemplo n.º 6
0
 public function getMarkupText($field)
 {
     switch ($field) {
         case self::MARKUP_FIELD_BODY:
             return $this->getBody();
         case self::MARKUP_FIELD_SUMMARY:
             return PhabricatorMarkupEngine::summarize($this->getBody());
     }
 }
 public function loadResults()
 {
     $viewer = $this->getViewer();
     $raw_query = $this->getRawQuery();
     // Allow users to type "#qa" or "qa" to find "Quality Assurance".
     $raw_query = ltrim($raw_query, '#');
     $tokens = self::tokenizeString($raw_query);
     $query = id(new PhabricatorProjectQuery())->needImages(true)->needSlugs(true);
     if ($tokens) {
         $query->withNameTokens($tokens);
     }
     // If this is for policy selection, prevent users from using milestones.
     $for_policy = $this->getParameter('policy');
     if ($for_policy) {
         $query->withIsMilestone(false);
     }
     $for_autocomplete = $this->getParameter('autocomplete');
     $projs = $this->executeQuery($query);
     $projs = mpull($projs, null, 'getPHID');
     $must_have_cols = $this->getParameter('mustHaveColumns', false);
     if ($must_have_cols) {
         $columns = id(new PhabricatorProjectColumnQuery())->setViewer($viewer)->withProjectPHIDs(array_keys($projs))->execute();
         $has_cols = mgroup($columns, 'getProjectPHID');
     } else {
         $has_cols = array_fill_keys(array_keys($projs), true);
     }
     $is_browse = $this->getIsBrowse();
     if ($is_browse && $projs) {
         // TODO: This is a little ad-hoc, but we don't currently have
         // infrastructure for bulk querying custom fields efficiently.
         $table = new PhabricatorProjectCustomFieldStorage();
         $descriptions = $table->loadAllWhere('objectPHID IN (%Ls) AND fieldIndex = %s', array_keys($projs), PhabricatorHash::digestForIndex('std:project:internal:description'));
         $descriptions = mpull($descriptions, 'getFieldValue', 'getObjectPHID');
     } else {
         $descriptions = array();
     }
     $results = array();
     foreach ($projs as $proj) {
         $phid = $proj->getPHID();
         if (!isset($has_cols[$phid])) {
             continue;
         }
         $slug = $proj->getPrimarySlug();
         if (!strlen($slug)) {
             foreach ($proj->getSlugs() as $slug_object) {
                 $slug = $slug_object->getSlug();
                 if (strlen($slug)) {
                     break;
                 }
             }
         }
         // If we're building results for the autocompleter and this project
         // doesn't have any usable slugs, don't return it as a result.
         if ($for_autocomplete && !strlen($slug)) {
             continue;
         }
         $closed = null;
         if ($proj->isArchived()) {
             $closed = pht('Archived');
         }
         $all_strings = array();
         $all_strings[] = $proj->getDisplayName();
         // Add an extra space after the name so that the original project
         // sorts ahead of milestones. This is kind of a hack but ehh?
         $all_strings[] = null;
         foreach ($proj->getSlugs() as $project_slug) {
             $all_strings[] = $project_slug->getSlug();
         }
         $all_strings = implode(' ', $all_strings);
         $proj_result = id(new PhabricatorTypeaheadResult())->setName($all_strings)->setDisplayName($proj->getDisplayName())->setDisplayType($proj->getDisplayIconName())->setURI($proj->getURI())->setPHID($phid)->setIcon($proj->getDisplayIconIcon())->setColor($proj->getColor())->setPriorityType('proj')->setClosed($closed);
         if (strlen($slug)) {
             $proj_result->setAutocomplete('#' . $slug);
         }
         $proj_result->setImageURI($proj->getProfileImageURI());
         if ($is_browse) {
             $proj_result->addAttribute($proj->getDisplayIconName());
             $description = idx($descriptions, $phid);
             if (strlen($description)) {
                 $summary = PhabricatorMarkupEngine::summarize($description);
                 $proj_result->addAttribute($summary);
             }
         }
         $results[] = $proj_result;
     }
     return $results;
 }
Exemplo n.º 8
0
 protected function getTagContent()
 {
     $viewer = $this->getViewer();
     $posts = $this->posts;
     $nodata = $this->nodata;
     $handle_phids = array();
     foreach ($posts as $post) {
         $handle_phids[] = $post->getBloggerPHID();
         if ($post->getBlog()) {
             $handle_phids[] = $post->getBlog()->getPHID();
         }
     }
     $handles = $viewer->loadHandles($handle_phids);
     $list = array();
     foreach ($posts as $post) {
         $blogger_name = $handles[$post->getBloggerPHID()]->getName();
         $blogger_uri = $handles[$post->getBloggerPHID()]->getURI();
         $blogger_uri = PhabricatorEnv::getURI($blogger_uri);
         // Render a link manually to make sure we point at the correct domain.
         $blogger = phutil_tag('a', array('href' => $blogger_uri), $blogger_name);
         $blogger = phutil_tag('strong', array(), $blogger);
         $blogger_image = $handles[$post->getBloggerPHID()]->getImageURI();
         $phame_post = null;
         if ($post->getBody()) {
             $phame_post = PhabricatorMarkupEngine::summarize($post->getBody());
             $phame_post = new PHUIRemarkupView($viewer, $phame_post);
         } else {
             $phame_post = phutil_tag('em', array(), pht('(Empty Post)'));
         }
         $date = phabricator_datetime($post->getDatePublished(), $viewer);
         $blog = $post->getBlog();
         if ($this->getIsLive()) {
             if ($this->getIsExternal()) {
                 $blog_uri = $blog->getExternalLiveURI();
                 $post_uri = $post->getExternalLiveURI();
             } else {
                 $blog_uri = $blog->getInternalLiveURI();
                 $post_uri = $post->getInternalLiveURI();
             }
         } else {
             $blog_uri = $blog->getViewURI();
             $post_uri = $post->getViewURI();
         }
         $blog_link = phutil_tag('a', array('href' => $blog_uri), $blog->getName());
         if ($this->showBlog) {
             if ($post->isDraft()) {
                 $subtitle = pht('Unpublished draft by %s in %s.', $blogger, $blog_link);
             } else {
                 $subtitle = pht('Written by %s on %s in %s.', $blogger, $date, $blog_link);
             }
         } else {
             if ($post->isDraft()) {
                 $subtitle = pht('Unpublished draft by %s.', $blogger);
             } else {
                 $subtitle = pht('Written by %s on %s.', $blogger, $date);
             }
         }
         $item = id(new PHUIDocumentSummaryView())->setTitle($post->getTitle())->setHref($post_uri)->setSubtitle($subtitle)->setImage($blogger_image)->setImageHref($blogger_uri)->setSummary($phame_post)->setDraft($post->isDraft());
         $list[] = $item;
     }
     if (empty($list)) {
         $list = id(new PHUIInfoView())->setSeverity(PHUIInfoView::SEVERITY_NODATA)->appendChild($nodata);
     }
     return $list;
 }