diff --git a/src/applications/diffusion/controller/browse/DiffusionBrowseController.php b/src/applications/diffusion/controller/browse/DiffusionBrowseController.php index 64e18bb43e..3c87012ecd 100644 --- a/src/applications/diffusion/controller/browse/DiffusionBrowseController.php +++ b/src/applications/diffusion/controller/browse/DiffusionBrowseController.php @@ -1,132 +1,133 @@ diffusionRequest; $browse_query = DiffusionBrowseQuery::newFromDiffusionRequest($drequest); $results = $browse_query->loadPaths(); $content = array(); $content[] = $this->buildCrumbs( array( 'branch' => true, 'path' => true, 'view' => 'browse', )); if (!$results) { if ($browse_query->getReasonForEmptyResultSet() == DiffusionBrowseQuery::REASON_IS_FILE) { $controller = new DiffusionBrowseFileController($this->getRequest()); $controller->setDiffusionRequest($drequest); return $this->delegateToController($controller); } $empty_result = new DiffusionEmptyResultView(); $empty_result->setDiffusionRequest($drequest); $empty_result->setBrowseQuery($browse_query); + $empty_result->setView($this->getRequest()->getStr('view')); $content[] = $empty_result; } else { $readme = null; $phids = array(); foreach ($results as $result) { $data = $result->getLastCommitData(); if ($data) { if ($data->getCommitDetail('authorPHID')) { $phids[$data->getCommitDetail('authorPHID')] = true; } } $path = $result->getPath(); if (preg_match('/^readme(|\.txt|\.remarkup)$/i', $path)) { $readme = $result; } } $phids = array_keys($phids); $handles = id(new PhabricatorObjectHandleData($phids))->loadHandles(); if ($readme) { $readme_request = DiffusionRequest::newFromDictionary( array( 'repository' => $drequest->getRepository(), 'commit' => $drequest->getStableCommitName(), 'path' => $readme->getFullPath(), )); $content_query = DiffusionFileContentQuery::newFromDiffusionRequest( $readme_request); $content_query->loadFileContent(); $readme_content = $content_query->getRawData(); if (preg_match('/.txt$/', $readme->getPath())) { $readme_content = phutil_escape_html($readme_content); $readme_content = nl2br($readme_content); } else { // Markup extensionless files as remarkup so we get links and such. $engine = PhabricatorMarkupEngine::newDiffusionMarkupEngine(); $readme_content = $engine->markupText($readme_content); $readme_content = phutil_render_tag( 'div', array( 'class' => 'phabricator-remarkup', ), $readme_content); } $readme_panel = new AphrontPanelView(); $readme_panel->setHeader('README'); $readme_panel->appendChild($readme_content); $content[] = $readme_panel; } $browse_table = new DiffusionBrowseTableView(); $browse_table->setDiffusionRequest($drequest); $browse_table->setHandles($handles); $browse_table->setPaths($results); $browse_panel = new AphrontPanelView(); $browse_panel->appendChild($browse_table); $content[] = $browse_panel; } $content[] = $this->buildOpenRevisions(); $nav = $this->buildSideNav('browse', false); $nav->appendChild($content); return $this->buildStandardPageResponse( $nav, array( 'title' => basename($drequest->getPath()), )); } } diff --git a/src/applications/diffusion/view/emptyresult/DiffusionEmptyResultView.php b/src/applications/diffusion/view/emptyresult/DiffusionEmptyResultView.php index 9bd39a9b6d..ce1023ef0f 100644 --- a/src/applications/diffusion/view/emptyresult/DiffusionEmptyResultView.php +++ b/src/applications/diffusion/view/emptyresult/DiffusionEmptyResultView.php @@ -1,94 +1,100 @@ browseQuery = $browse_query; } + public function setView($view) { + $this->view = $view; + } + public function render() { $drequest = $this->getDiffusionRequest(); $commit = $drequest->getCommit(); $callsign = $drequest->getRepository()->getCallsign(); if ($commit) { $commit = "r{$callsign}{$commit}"; } else { $commit = 'HEAD'; } switch ($this->browseQuery->getReasonForEmptyResultSet()) { case DiffusionBrowseQuery::REASON_IS_NONEXISTENT: $title = 'Path Does Not Exist'; // TODO: Under git, this error message should be more specific. It // may exist on some other branch. $body = "This path does not exist anywhere."; $severity = AphrontErrorView::SEVERITY_ERROR; break; case DiffusionBrowseQuery::REASON_IS_EMPTY: $title = 'Empty Directory'; $body = "This path was an empty directory at {$commit}.\n"; $severity = AphrontErrorView::SEVERITY_NOTICE; break; case DiffusionBrowseQuery::REASON_IS_DELETED: $deleted = $this->browseQuery->getDeletedAtCommit(); $existed = $this->browseQuery->getExistedAtCommit(); $deleted = self::linkCommit($drequest->getRepository(), $deleted); $browse = $this->linkBrowse( $drequest->getPath(), array( 'text' => 'existed', 'commit' => $existed, + 'params' => array('view' => $this->view), ) ); $existed = "r{$callsign}{$existed}"; $title = 'Path Was Deleted'; $body = "This path does not exist at {$commit}. It was deleted in ". "{$deleted} and last {$browse} at {$existed}."; $severity = AphrontErrorView::SEVERITY_WARNING; break; case DiffusionBrowseQuery::REASON_IS_UNTRACKED_PARENT: $subdir = $drequest->getRepository()->getDetail('svn-subpath'); $title = 'Directory Not Tracked'; $body = "This repository is configured to track only one subdirectory ". "of the entire repository ('".phutil_escape_html($subdir)."'), ". "but you aren't looking at something in that subdirectory, so no ". "information is available."; $severity = AphrontErrorView::SEVERITY_WARNING; break; default: throw new Exception("Unknown failure reason!"); } $error_view = new AphrontErrorView(); $error_view->setSeverity($severity); $error_view->setTitle($title); $error_view->appendChild('

'.$body.'

'); return $error_view->render(); } }