Changeset View
Changeset View
Standalone View
Standalone View
src/applications/paste/controller/PhabricatorPasteViewController.php
| Show First 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | public function handleRequest(AphrontRequest $request) { | ||||
| $comment_view = id(new PhabricatorPasteEditEngine()) | $comment_view = id(new PhabricatorPasteEditEngine()) | ||||
| ->setViewer($viewer) | ->setViewer($viewer) | ||||
| ->buildEditEngineCommentView($paste); | ->buildEditEngineCommentView($paste); | ||||
| $timeline->setQuoteRef($monogram); | $timeline->setQuoteRef($monogram); | ||||
| $comment_view->setTransactionTimeline($timeline); | $comment_view->setTransactionTimeline($timeline); | ||||
| $recommendation_view = $this->newDocumentRecommendationView($paste); | |||||
| $paste_view = id(new PHUITwoColumnView()) | $paste_view = id(new PHUITwoColumnView()) | ||||
| ->setHeader($header) | ->setHeader($header) | ||||
| ->setSubheader($subheader) | ->setSubheader($subheader) | ||||
| ->setMainColumn(array( | ->setMainColumn( | ||||
| array( | |||||
| $recommendation_view, | |||||
| $source_code, | $source_code, | ||||
| $timeline, | $timeline, | ||||
| $comment_view, | $comment_view, | ||||
| )) | )) | ||||
| ->setCurtain($curtain) | ->setCurtain($curtain); | ||||
| ->addClass('ponder-question-view'); | |||||
| return $this->newPage() | return $this->newPage() | ||||
| ->setTitle($paste->getFullName()) | ->setTitle($paste->getFullName()) | ||||
| ->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
| ->setPageObjectPHIDs( | ->setPageObjectPHIDs( | ||||
| array( | array( | ||||
| $paste->getPHID(), | $paste->getPHID(), | ||||
| )) | )) | ||||
| ▲ Show 20 Lines • Show All 93 Lines • ▼ Show 20 Lines | private function buildSubheaderView( | ||||
| $content = pht('Authored by %s on %s.', $author, $date); | $content = pht('Authored by %s on %s.', $author, $date); | ||||
| return id(new PHUIHeadThingView()) | return id(new PHUIHeadThingView()) | ||||
| ->setImage($image_uri) | ->setImage($image_uri) | ||||
| ->setImageHref($image_href) | ->setImageHref($image_href) | ||||
| ->setContent($content); | ->setContent($content); | ||||
| } | } | ||||
| private function newDocumentRecommendationView(PhabricatorPaste $paste) { | |||||
| $viewer = $this->getViewer(); | |||||
| // See PHI1703. If a viewer is looking at a document in Paste which has | |||||
| // a good rendering via a DocumentEngine, suggest they view the content | |||||
| // in Files instead so they can see it rendered. | |||||
| $ref = id(new PhabricatorDocumentRef()) | |||||
| ->setName($paste->getTitle()) | |||||
| ->setData($paste->getRawContent()); | |||||
| $engines = PhabricatorDocumentEngine::getEnginesForRef($viewer, $ref); | |||||
| if (!$engines) { | |||||
| return null; | |||||
| } | |||||
| $engine = head($engines); | |||||
| if (!$engine->shouldSuggestEngine($ref)) { | |||||
| return null; | |||||
| } | |||||
| $file = id(new PhabricatorFileQuery()) | |||||
| ->setViewer($viewer) | |||||
| ->withPHIDs(array($paste->getFilePHID())) | |||||
| ->executeOne(); | |||||
| if (!$file) { | |||||
| return null; | |||||
| } | |||||
| $file_ref = id(new PhabricatorDocumentRef()) | |||||
| ->setFile($file); | |||||
| $view_uri = id(new PhabricatorFileDocumentRenderingEngine()) | |||||
| ->getRefViewURI($file_ref, $engine); | |||||
| $view_as_label = $engine->getViewAsLabel($file_ref); | |||||
| $view_as_hint = pht( | |||||
| 'This content can be rendered as a document in Files.'); | |||||
| return id(new PHUIInfoView()) | |||||
| ->setSeverity(PHUIInfoView::SEVERITY_NOTICE) | |||||
| ->addButton( | |||||
| id(new PHUIButtonView()) | |||||
| ->setTag('a') | |||||
| ->setText($view_as_label) | |||||
| ->setHref($view_uri) | |||||
| ->setColor('grey')) | |||||
| ->setErrors( | |||||
| array( | |||||
| $view_as_hint, | |||||
| )); | |||||
| } | |||||
| } | } | ||||