mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-15 11:22:40 +01:00
ce3f9211e4
Summary: Ref T2683. This should probably just be `diffusion.filecontentquery` but keep things as they are for now. This method uses a commit, so accept one. Soon, this will save a bit of work. Test Plan: Viewed readmes in main and browse views. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T2683 Differential Revision: https://secure.phabricator.com/D9093
108 lines
3 KiB
PHP
108 lines
3 KiB
PHP
<?php
|
|
|
|
final class DiffusionBrowseDirectoryController
|
|
extends DiffusionBrowseController {
|
|
|
|
private $browseQueryResults;
|
|
|
|
public function setBrowseQueryResults(DiffusionBrowseResultSet $results) {
|
|
$this->browseQueryResults = $results;
|
|
return $this;
|
|
}
|
|
|
|
public function getBrowseQueryResults() {
|
|
return $this->browseQueryResults;
|
|
}
|
|
|
|
public function processRequest() {
|
|
$drequest = $this->diffusionRequest;
|
|
|
|
$results = $this->getBrowseQueryResults();
|
|
$reason = $results->getReasonForEmptyResultSet();
|
|
|
|
$content = array();
|
|
$actions = $this->buildActionView($drequest);
|
|
$properties = $this->buildPropertyView($drequest, $actions);
|
|
|
|
$object_box = id(new PHUIObjectBoxView())
|
|
->setHeader($this->buildHeaderView($drequest))
|
|
->addPropertyList($properties);
|
|
|
|
$content[] = $object_box;
|
|
$content[] = $this->renderSearchForm($collapsed = true);
|
|
|
|
if (!$results->isValidResults()) {
|
|
$empty_result = new DiffusionEmptyResultView();
|
|
$empty_result->setDiffusionRequest($drequest);
|
|
$empty_result->setDiffusionBrowseResultSet($results);
|
|
$empty_result->setView($this->getRequest()->getStr('view'));
|
|
$content[] = $empty_result;
|
|
} else {
|
|
$phids = array();
|
|
foreach ($results->getPaths() as $result) {
|
|
$data = $result->getLastCommitData();
|
|
if ($data) {
|
|
if ($data->getCommitDetail('authorPHID')) {
|
|
$phids[$data->getCommitDetail('authorPHID')] = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
$phids = array_keys($phids);
|
|
$handles = $this->loadViewerHandles($phids);
|
|
|
|
$browse_table = new DiffusionBrowseTableView();
|
|
$browse_table->setDiffusionRequest($drequest);
|
|
$browse_table->setHandles($handles);
|
|
$browse_table->setPaths($results->getPaths());
|
|
$browse_table->setUser($this->getRequest()->getUser());
|
|
|
|
$browse_panel = new AphrontPanelView();
|
|
$browse_panel->appendChild($browse_table);
|
|
$browse_panel->setNoBackground();
|
|
|
|
$content[] = $browse_panel;
|
|
}
|
|
|
|
$content[] = $this->buildOpenRevisions();
|
|
|
|
$readme = $this->callConduitWithDiffusionRequest(
|
|
'diffusion.readmequery',
|
|
array(
|
|
'paths' => $results->getPathDicts(),
|
|
'commit' => $drequest->getStableCommit(),
|
|
));
|
|
if ($readme) {
|
|
$box = new PHUIBoxView();
|
|
$box->appendChild($readme);
|
|
$box->addPadding(PHUI::PADDING_LARGE);
|
|
|
|
$object_box = id(new PHUIObjectBoxView())
|
|
->setHeaderText(pht('README'))
|
|
->appendChild($box);
|
|
|
|
$content[] = $object_box;
|
|
}
|
|
|
|
$crumbs = $this->buildCrumbs(
|
|
array(
|
|
'branch' => true,
|
|
'path' => true,
|
|
'view' => 'browse',
|
|
));
|
|
|
|
return $this->buildApplicationPage(
|
|
array(
|
|
$crumbs,
|
|
$content,
|
|
),
|
|
array(
|
|
'device' => true,
|
|
'title' => array(
|
|
nonempty(basename($drequest->getPath()), '/'),
|
|
$drequest->getRepository()->getCallsign().' Repository',
|
|
),
|
|
));
|
|
}
|
|
|
|
}
|