@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 104 lines 3.5 kB view raw
1<?php 2 3final class DiffusionEmptyResultView extends DiffusionView { 4 5 private $browseResultSet; 6 private $view; 7 8 public function setDiffusionBrowseResultSet(DiffusionBrowseResultSet $set) { 9 $this->browseResultSet = $set; 10 return $this; 11 } 12 13 public function setView($view) { 14 $this->view = $view; 15 return $this; 16 } 17 18 public function render() { 19 $drequest = $this->getDiffusionRequest(); 20 $repository = $drequest->getRepository(); 21 22 $commit = $drequest->getCommit(); 23 if ($commit) { 24 $commit = $repository->formatCommitName($commit); 25 } else { 26 $commit = 'HEAD'; 27 } 28 29 $reason = $this->browseResultSet->getReasonForEmptyResultSet(); 30 switch ($reason) { 31 case DiffusionBrowseResultSet::REASON_IS_NONEXISTENT: 32 $title = pht('Path Does Not Exist'); 33 // TODO: Under git, this error message should be more specific. It 34 // may exist on some other branch. 35 $body = pht('This path does not exist anywhere.'); 36 $severity = PHUIInfoView::SEVERITY_ERROR; 37 break; 38 case DiffusionBrowseResultSet::REASON_IS_EMPTY: 39 $title = pht('Empty Directory'); 40 $body = pht('This path was an empty directory at %s.', $commit); 41 $severity = PHUIInfoView::SEVERITY_NOTICE; 42 break; 43 case DiffusionBrowseResultSet::REASON_IS_SUBMODULE: 44 $title = pht('Submodule'); 45 // TODO: We could improve this, but it is normally difficult to 46 // reach this page for a submodule. 47 $body = pht('This path was a submodule at %s.', $commit); 48 $severity = PHUIInfoView::SEVERITY_NOTICE; 49 break; 50 case DiffusionBrowseResultSet::REASON_IS_DELETED: 51 $deleted = $this->browseResultSet->getDeletedAtCommit(); 52 $existed = $this->browseResultSet->getExistedAtCommit(); 53 54 $existed_text = $repository->formatCommitName($existed); 55 $existed_href = $drequest->generateURI( 56 array( 57 'action' => 'browse', 58 'path' => $drequest->getPath(), 59 'commit' => $existed, 60 'params' => array( 61 'view' => $this->view, 62 ), 63 )); 64 65 $existed_link = phutil_tag( 66 'a', 67 array( 68 'href' => $existed_href, 69 ), 70 $existed_text); 71 72 $title = pht('Path Was Deleted'); 73 $body = pht( 74 'This path does not exist at %s. It was deleted in %s and last '. 75 'existed at %s.', 76 $commit, 77 self::linkCommit($drequest->getRepository(), $deleted), 78 $existed_link); 79 $severity = PHUIInfoView::SEVERITY_WARNING; 80 break; 81 case DiffusionBrowseResultSet::REASON_IS_UNTRACKED_PARENT: 82 $subdir = $drequest->getRepository()->getDetail('svn-subpath'); 83 $title = pht('Directory Not Tracked'); 84 $body = 85 pht( 86 "This repository is configured to track only one subdirectory ". 87 "of the entire repository ('%s'), but you aren't looking at ". 88 "something in that subdirectory, so no information is available.", 89 $subdir); 90 $severity = PHUIInfoView::SEVERITY_WARNING; 91 break; 92 default: 93 throw new Exception(pht('Unknown failure reason: %s', $reason)); 94 } 95 96 $error_view = new PHUIInfoView(); 97 $error_view->setSeverity($severity); 98 $error_view->setTitle($title); 99 $error_view->appendChild(phutil_tag('p', array(), $body)); 100 101 return $error_view->render(); 102 } 103 104}