mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-15 11:22:40 +01:00
9a2c68fd88
Summary: Ref T2683. This is closely related to "symbolicCommit", but has an inconsistent "name" on the end. Also, `diffusion.searchquery` uses this parameter inconsistently. Test Plan: - `grep`ed for callsites. - Ran searches in Git and Mercurial repositories. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T2683 Differential Revision: https://secure.phabricator.com/D9091
226 lines
6.2 KiB
PHP
226 lines
6.2 KiB
PHP
<?php
|
|
|
|
abstract class DiffusionBrowseController extends DiffusionController {
|
|
|
|
public function shouldAllowPublic() {
|
|
return true;
|
|
}
|
|
|
|
protected function renderSearchForm($collapsed) {
|
|
$drequest = $this->getDiffusionRequest();
|
|
|
|
$forms = array();
|
|
$form = id(new AphrontFormView())
|
|
->setUser($this->getRequest()->getUser())
|
|
->setMethod('GET');
|
|
|
|
switch ($drequest->getRepository()->getVersionControlSystem()) {
|
|
case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN:
|
|
$forms[] = id(clone $form)
|
|
->appendChild(pht('Search is not available in Subversion.'));
|
|
break;
|
|
default:
|
|
$forms[] = id(clone $form)
|
|
->appendChild(
|
|
id(new AphrontFormTextWithSubmitControl())
|
|
->setLabel(pht('File Name'))
|
|
->setSubmitLabel(pht('Search File Names'))
|
|
->setName('find')
|
|
->setValue($this->getRequest()->getStr('find')));
|
|
$forms[] = id(clone $form)
|
|
->appendChild(
|
|
id(new AphrontFormTextWithSubmitControl())
|
|
->setLabel(pht('Pattern'))
|
|
->setSubmitLabel(pht('Grep File Content'))
|
|
->setName('grep')
|
|
->setValue($this->getRequest()->getStr('grep')));
|
|
break;
|
|
}
|
|
|
|
|
|
$filter = new AphrontListFilterView();
|
|
$filter->appendChild($forms);
|
|
|
|
|
|
if ($collapsed) {
|
|
$filter->setCollapsed(
|
|
pht('Show Search'),
|
|
pht('Hide Search'),
|
|
pht('Search for file names or content in this directory.'),
|
|
'#');
|
|
}
|
|
|
|
return $filter;
|
|
}
|
|
|
|
protected function markupText($text) {
|
|
$engine = PhabricatorMarkupEngine::newDiffusionMarkupEngine();
|
|
$engine->setConfig('viewer', $this->getRequest()->getUser());
|
|
$text = $engine->markupText($text);
|
|
|
|
$text = phutil_tag(
|
|
'div',
|
|
array(
|
|
'class' => 'phabricator-remarkup',
|
|
),
|
|
$text);
|
|
|
|
return $text;
|
|
}
|
|
|
|
protected function buildHeaderView(DiffusionRequest $drequest) {
|
|
$viewer = $this->getRequest()->getUser();
|
|
|
|
$header = id(new PHUIHeaderView())
|
|
->setUser($viewer)
|
|
->setHeader($this->renderPathLinks($drequest, $mode = 'browse'))
|
|
->setPolicyObject($drequest->getRepository());
|
|
|
|
return $header;
|
|
}
|
|
|
|
protected function buildActionView(DiffusionRequest $drequest) {
|
|
$viewer = $this->getRequest()->getUser();
|
|
|
|
$view = id(new PhabricatorActionListView())
|
|
->setUser($viewer);
|
|
|
|
$history_uri = $drequest->generateURI(
|
|
array(
|
|
'action' => 'history',
|
|
));
|
|
|
|
$view->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName(pht('View History'))
|
|
->setHref($history_uri)
|
|
->setIcon('fa-list'));
|
|
|
|
$behind_head = $drequest->getRawCommit();
|
|
$head_uri = $drequest->generateURI(
|
|
array(
|
|
'commit' => '',
|
|
'action' => 'browse',
|
|
));
|
|
$view->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName(pht('Jump to HEAD'))
|
|
->setHref($head_uri)
|
|
->setIcon('fa-home')
|
|
->setDisabled(!$behind_head));
|
|
|
|
// TODO: Ideally, this should live in Owners and be event-triggered, but
|
|
// there's no reasonable object for it to react to right now.
|
|
|
|
$owners = 'PhabricatorApplicationOwners';
|
|
if (PhabricatorApplication::isClassInstalled($owners)) {
|
|
$owners_uri = id(new PhutilURI('/owners/view/search/'))
|
|
->setQueryParams(
|
|
array(
|
|
'repository' => $drequest->getCallsign(),
|
|
'path' => '/'.$drequest->getPath(),
|
|
));
|
|
|
|
$view->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName(pht('Find Owners'))
|
|
->setHref((string)$owners_uri)
|
|
->setIcon('fa-users'));
|
|
}
|
|
|
|
return $view;
|
|
}
|
|
|
|
protected function buildPropertyView(
|
|
DiffusionRequest $drequest,
|
|
PhabricatorActionListView $actions) {
|
|
|
|
$viewer = $this->getRequest()->getUser();
|
|
|
|
$view = id(new PHUIPropertyListView())
|
|
->setUser($viewer)
|
|
->setActionList($actions);
|
|
|
|
$stable_commit = $drequest->getStableCommit();
|
|
$callsign = $drequest->getRepository()->getCallsign();
|
|
|
|
$view->addProperty(
|
|
pht('Commit'),
|
|
phutil_tag(
|
|
'a',
|
|
array(
|
|
'href' => $drequest->generateURI(
|
|
array(
|
|
'action' => 'commit',
|
|
'commit' => $stable_commit,
|
|
)),
|
|
),
|
|
$drequest->getRepository()->formatCommitName($stable_commit)));
|
|
|
|
if ($drequest->getCommitType() == 'tag') {
|
|
$symbolic = $drequest->getSymbolicCommit();
|
|
$view->addProperty(pht('Tag'), $symbolic);
|
|
|
|
$tags = $this->callConduitWithDiffusionRequest(
|
|
'diffusion.tagsquery',
|
|
array(
|
|
'names' => array($symbolic),
|
|
'needMessages' => true,
|
|
));
|
|
$tags = DiffusionRepositoryTag::newFromConduit($tags);
|
|
|
|
$tags = mpull($tags, null, 'getName');
|
|
$tag = idx($tags, $symbolic);
|
|
|
|
if ($tag && strlen($tag->getMessage())) {
|
|
$view->addSectionHeader(pht('Tag Content'));
|
|
$view->addTextContent($this->markupText($tag->getMessage()));
|
|
}
|
|
}
|
|
|
|
return $view;
|
|
}
|
|
|
|
protected function buildOpenRevisions() {
|
|
$user = $this->getRequest()->getUser();
|
|
|
|
$drequest = $this->getDiffusionRequest();
|
|
$repository = $drequest->getRepository();
|
|
$path = $drequest->getPath();
|
|
|
|
$path_map = id(new DiffusionPathIDQuery(array($path)))->loadPathIDs();
|
|
$path_id = idx($path_map, $path);
|
|
if (!$path_id) {
|
|
return null;
|
|
}
|
|
|
|
$revisions = id(new DifferentialRevisionQuery())
|
|
->setViewer($user)
|
|
->withPath($repository->getID(), $path_id)
|
|
->withStatus(DifferentialRevisionQuery::STATUS_OPEN)
|
|
->setOrder(DifferentialRevisionQuery::ORDER_PATH_MODIFIED)
|
|
->setLimit(10)
|
|
->needRelationships(true)
|
|
->needFlags(true)
|
|
->needDrafts(true)
|
|
->execute();
|
|
|
|
if (!$revisions) {
|
|
return null;
|
|
}
|
|
|
|
$view = id(new DifferentialRevisionListView())
|
|
->setRevisions($revisions)
|
|
->setUser($user);
|
|
|
|
$phids = $view->getRequiredHandlePHIDs();
|
|
$handles = $this->loadViewerHandles($phids);
|
|
$view->setHandles($handles);
|
|
|
|
return id(new PHUIObjectBoxView())
|
|
->setHeaderText(pht('Pending Differential Revisions'))
|
|
->appendChild($view);
|
|
|
|
}
|
|
|
|
}
|