In Diffusion browse views, show a README file if one exists
Summary: COMPLETELY ORIGINAL IDEA Test Plan: Browsed around Phabricator, got helpful readmes in some cases. Reviewers: davidreuss, btrahan Reviewed By: btrahan CC: aran, epriestley Differential Revision: https://secure.phabricator.com/D2022
This commit is contained in:
@@ -49,6 +49,8 @@ final class DiffusionBrowseController extends DiffusionController {
|
||||
|
||||
} else {
|
||||
|
||||
$readme = null;
|
||||
|
||||
$phids = array();
|
||||
foreach ($results as $result) {
|
||||
$data = $result->getLastCommitData();
|
||||
@@ -57,11 +59,53 @@ final class DiffusionBrowseController extends DiffusionController {
|
||||
$phids[$data->getCommitDetail('authorPHID')] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
$phids = array_keys($phids);
|
||||
|
||||
$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);
|
||||
|
||||
@@ -9,11 +9,15 @@
|
||||
phutil_require_module('phabricator', 'applications/diffusion/controller/base');
|
||||
phutil_require_module('phabricator', 'applications/diffusion/controller/file');
|
||||
phutil_require_module('phabricator', 'applications/diffusion/query/browse/base');
|
||||
phutil_require_module('phabricator', 'applications/diffusion/query/filecontent/base');
|
||||
phutil_require_module('phabricator', 'applications/diffusion/request/base');
|
||||
phutil_require_module('phabricator', 'applications/diffusion/view/browsetable');
|
||||
phutil_require_module('phabricator', 'applications/diffusion/view/emptyresult');
|
||||
phutil_require_module('phabricator', 'applications/markup/engine');
|
||||
phutil_require_module('phabricator', 'applications/phid/handle/data');
|
||||
phutil_require_module('phabricator', 'view/layout/panel');
|
||||
|
||||
phutil_require_module('phutil', 'markup');
|
||||
phutil_require_module('phutil', 'utils');
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user