diffusionRequest; $browse_query = DiffusionBrowseQuery::newFromDiffusionRequest($drequest); $results = $browse_query->loadPaths(); $content = array(); $content[] = $this->buildCrumbs( array( 'branch' => true, 'path' => true, 'view' => 'browse', )); if (!$results) { switch ($browse_query->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_DELETED: // TODO: Format all these commits into nice VCS-agnostic links. $commit = $drequest->getCommit(); $deleted = $browse_query->getDeletedAtCommit(); $existed = $browse_query->getExistedAtCommit(); $title = 'Path Was Deleted'; $body = "This path does not exist at {$commit}. It was deleted in ". "{$deleted} and last existed at {$existed}."; $severity = AphrontErrorView::SEVERITY_WARNING; break; case DiffusionBrowseQuery::REASON_IS_FILE: $controller = new DiffusionBrowseFileController($this->getRequest()); $controller->setDiffusionRequest($drequest); return $this->delegateToController($controller); break; default: throw new Exception("Unknown failure reason!"); } $error_view = new AphrontErrorView(); $error_view->setSeverity($severity); $error_view->setTitle($title); $error_view->appendChild('

'.$body.'

'); $content[] = $error_view; } else { $browse_table = new DiffusionBrowseTableView(); $browse_table->setDiffusionRequest($drequest); $browse_table->setPaths($results); $browse_panel = new AphrontPanelView(); $browse_panel->appendChild($browse_table); $content[] = $browse_panel; } $nav = $this->buildSideNav('browse', false); $nav->appendChild($content); return $this->buildStandardPageResponse( $nav, array( 'title' => basename($drequest->getPath()), )); } }