Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/diffusion/controller/DiffusionChangeController.php b/src/applications/diffusion/controller/DiffusionChangeController.php
index 064e5cc750..86b371c38b 100644
--- a/src/applications/diffusion/controller/DiffusionChangeController.php
+++ b/src/applications/diffusion/controller/DiffusionChangeController.php
@@ -1,162 +1,170 @@
<?php
final class DiffusionChangeController extends DiffusionController {
public function shouldAllowPublic() {
return true;
}
- protected function processDiffusionRequest(AphrontRequest $request) {
- $drequest = $this->diffusionRequest;
- $viewer = $request->getUser();
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadDiffusionContext();
+ if ($response) {
+ return $response;
+ }
+
+ $viewer = $this->getViewer();
+ $drequest = $this->getDiffusionRequest();
$content = array();
$data = $this->callConduitWithDiffusionRequest(
'diffusion.diffquery',
array(
'commit' => $drequest->getCommit(),
'path' => $drequest->getPath(),
));
$drequest->updateSymbolicCommit($data['effectiveCommit']);
$raw_changes = ArcanistDiffChange::newFromConduit($data['changes']);
$diff = DifferentialDiff::newEphemeralFromRawChanges(
$raw_changes);
$changesets = $diff->getChangesets();
$changeset = reset($changesets);
if (!$changeset) {
// TODO: Refine this.
return new Aphront404Response();
}
$repository = $drequest->getRepository();
$changesets = array(
0 => $changeset,
);
$changeset_view = new DifferentialChangesetListView();
$changeset_view->setTitle(pht('Change'));
$changeset_view->setChangesets($changesets);
$changeset_view->setVisibleChangesets($changesets);
$changeset_view->setRenderingReferences(
array(
0 => $drequest->generateURI(array('action' => 'rendering-ref')),
));
$raw_params = array(
'action' => 'browse',
'params' => array(
'view' => 'raw',
),
);
$right_uri = $drequest->generateURI($raw_params);
$raw_params['params']['before'] = $drequest->getStableCommit();
$left_uri = $drequest->generateURI($raw_params);
$changeset_view->setRawFileURIs($left_uri, $right_uri);
$changeset_view->setRenderURI($repository->getPathURI('diff/'));
$changeset_view->setWhitespace(
DifferentialChangesetParser::WHITESPACE_SHOW_ALL);
$changeset_view->setUser($viewer);
// TODO: This is pretty awkward, unify the CSS between Diffusion and
// Differential better.
require_celerity_resource('differential-core-view-css');
$content[] = $changeset_view->render();
$crumbs = $this->buildCrumbs(
array(
'branch' => true,
'path' => true,
'view' => 'change',
));
$links = $this->renderPathLinks($drequest, $mode = 'browse');
$header = id(new PHUIHeaderView())
->setHeader($links)
->setUser($viewer)
->setPolicyObject($drequest->getRepository());
$actions = $this->buildActionView($drequest);
$properties = $this->buildPropertyView($drequest, $actions);
$object_box = id(new PHUIObjectBoxView())
->setHeader($header)
->addPropertyList($properties);
- return $this->buildApplicationPage(
- array(
- $crumbs,
- $object_box,
- $content,
- ),
- array(
- 'title' => pht('Change'),
- ));
+ return $this->newPage()
+ ->setTitle(
+ array(
+ basename($drequest->getPath()),
+ $repository->getDisplayName(),
+ ))
+ ->setCrumbs($crumbs)
+ ->appendChild(
+ array(
+ $object_box,
+ $content,
+ ));
}
private 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-clock-o'));
$browse_uri = $drequest->generateURI(
array(
'action' => 'browse',
));
$view->addAction(
id(new PhabricatorActionView())
->setName(pht('Browse Content'))
->setHref($browse_uri)
->setIcon('fa-files-o'));
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();
$view->addProperty(
pht('Commit'),
phutil_tag(
'a',
array(
'href' => $drequest->generateURI(
array(
'action' => 'commit',
'commit' => $stable_commit,
)),
),
$drequest->getRepository()->formatCommitName($stable_commit)));
return $view;
}
}
diff --git a/src/applications/diffusion/controller/DiffusionCommitBranchesController.php b/src/applications/diffusion/controller/DiffusionCommitBranchesController.php
index 4f12e17656..1e5cc0ac31 100644
--- a/src/applications/diffusion/controller/DiffusionCommitBranchesController.php
+++ b/src/applications/diffusion/controller/DiffusionCommitBranchesController.php
@@ -1,44 +1,49 @@
<?php
final class DiffusionCommitBranchesController extends DiffusionController {
public function shouldAllowPublic() {
return true;
}
- protected function processDiffusionRequest(AphrontRequest $request) {
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadDiffusionContext();
+ if ($response) {
+ return $response;
+ }
+
$drequest = $this->getDiffusionRequest();
$repository = $drequest->getRepository();
switch ($repository->getVersionControlSystem()) {
case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN:
$branches = array();
break;
default:
$branches = $this->callConduitWithDiffusionRequest(
'diffusion.branchquery',
array(
'contains' => $drequest->getCommit(),
));
break;
}
$branches = DiffusionRepositoryRef::loadAllFromDictionaries($branches);
$branch_links = array();
foreach ($branches as $branch) {
$branch_links[] = phutil_tag(
'a',
array(
'href' => $drequest->generateURI(
array(
'action' => 'browse',
'branch' => $branch->getShortName(),
)),
),
$branch->getShortName());
}
return id(new AphrontAjaxResponse())
->setContent($branch_links ? implode(', ', $branch_links) : pht('None'));
}
}
diff --git a/src/applications/diffusion/controller/DiffusionCommitEditController.php b/src/applications/diffusion/controller/DiffusionCommitEditController.php
index ffaf892e75..895eda4c6d 100644
--- a/src/applications/diffusion/controller/DiffusionCommitEditController.php
+++ b/src/applications/diffusion/controller/DiffusionCommitEditController.php
@@ -1,119 +1,120 @@
<?php
final class DiffusionCommitEditController extends DiffusionController {
- protected function processDiffusionRequest(AphrontRequest $request) {
- $user = $request->getUser();
- $drequest = $this->getDiffusionRequest();
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadDiffusionContext();
+ if ($response) {
+ return $response;
+ }
+
+ $viewer = $this->getViewer();
+ $drequest = $this->getDiffusionRequest();
$repository = $drequest->getRepository();
- $commit = $drequest->loadCommit();
- $data = $commit->loadCommitData();
- $page_title = pht('Edit Diffusion Commit');
+ $commit = $drequest->loadCommit();
if (!$commit) {
return new Aphront404Response();
}
+ $data = $commit->loadCommitData();
+ $page_title = pht('Edit Diffusion Commit');
+
$commit_phid = $commit->getPHID();
$edge_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST;
$current_proj_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
$commit_phid,
$edge_type);
if ($request->isFormPost()) {
$xactions = array();
$proj_phids = $request->getArr('projects');
$xactions[] = id(new PhabricatorAuditTransaction())
->setTransactionType(PhabricatorTransactions::TYPE_EDGE)
->setMetadataValue('edge:type', $edge_type)
->setNewValue(array('=' => array_fuse($proj_phids)));
+
$editor = id(new PhabricatorAuditEditor())
- ->setActor($user)
+ ->setActor($viewer)
->setContinueOnNoEffect(true)
->setContentSourceFromRequest($request);
- $xactions = $editor->applyTransactions($commit, $xactions);
+
+ $editor->applyTransactions($commit, $xactions);
+
return id(new AphrontRedirectResponse())
->setURI($commit->getURI());
}
$tokenizer_id = celerity_generate_unique_node_id();
$form = id(new AphrontFormView())
- ->setUser($user)
+ ->setUser($viewer)
->setAction($request->getRequestURI()->getPath())
->appendControl(
id(new AphrontFormTokenizerControl())
->setLabel(pht('Projects'))
->setName('projects')
->setValue($current_proj_phids)
->setID($tokenizer_id)
->setDatasource(new PhabricatorProjectDatasource()));
$reason = $data->getCommitDetail('autocloseReason', false);
$reason = PhabricatorRepository::BECAUSE_AUTOCLOSE_FORCED;
if ($reason !== false) {
switch ($reason) {
case PhabricatorRepository::BECAUSE_REPOSITORY_IMPORTING:
$desc = pht('No, Repository Importing');
break;
case PhabricatorRepository::BECAUSE_AUTOCLOSE_DISABLED:
$desc = pht('No, Autoclose Disabled');
break;
case PhabricatorRepository::BECAUSE_NOT_ON_AUTOCLOSE_BRANCH:
$desc = pht('No, Not On Autoclose Branch');
break;
case PhabricatorRepository::BECAUSE_AUTOCLOSE_FORCED:
$desc = pht('Yes, Forced Via bin/repository CLI Tool.');
break;
case null:
$desc = pht('Yes');
break;
default:
$desc = pht('Unknown');
break;
}
$doc_href = PhabricatorEnv::getDoclink('Diffusion User Guide: Autoclose');
$doc_link = phutil_tag(
'a',
array(
'href' => $doc_href,
'target' => '_blank',
),
pht('Learn More'));
$form->appendChild(
id(new AphrontFormMarkupControl())
->setLabel(pht('Autoclose?'))
->setValue(array($desc, " \xC2\xB7 ", $doc_link)));
}
+ $form->appendControl(
+ id(new AphrontFormSubmitControl())
+ ->setValue(pht('Save'))
+ ->addCancelButton($commit->getURI()));
- Javelin::initBehavior('project-create', array(
- 'tokenizerID' => $tokenizer_id,
- ));
-
- $submit = id(new AphrontFormSubmitControl())
- ->setValue(pht('Save'))
- ->addCancelButton($commit->getURI());
- $form->appendChild($submit);
-
- $crumbs = $this->buildCrumbs(array(
- 'commit' => true,
- ));
+ $crumbs = $this->buildCrumbs(
+ array(
+ 'commit' => true,
+ ));
$crumbs->addTextCrumb(pht('Edit'));
$form_box = id(new PHUIObjectBoxView())
->setHeaderText($page_title)
->setForm($form);
- return $this->buildApplicationPage(
- array(
- $crumbs,
- $form_box,
- ),
- array(
- 'title' => $page_title,
- ));
+ return $this->newPage()
+ ->setTitle($page_title)
+ ->setCrumbs($crumbs)
+ ->appendChild($form_box);
}
}
diff --git a/src/applications/diffusion/controller/DiffusionCommitTagsController.php b/src/applications/diffusion/controller/DiffusionCommitTagsController.php
index 3c698f9a70..0f825a9b64 100644
--- a/src/applications/diffusion/controller/DiffusionCommitTagsController.php
+++ b/src/applications/diffusion/controller/DiffusionCommitTagsController.php
@@ -1,60 +1,65 @@
<?php
final class DiffusionCommitTagsController extends DiffusionController {
public function shouldAllowPublic() {
return true;
}
- protected function processDiffusionRequest(AphrontRequest $request) {
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadDiffusionContext();
+ if ($response) {
+ return $response;
+ }
+
$drequest = $this->getDiffusionRequest();
$repository = $drequest->getRepository();
$tag_limit = 10;
switch ($repository->getVersionControlSystem()) {
case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN:
$tags = array();
break;
default:
$tags = DiffusionRepositoryTag::newFromConduit(
$this->callConduitWithDiffusionRequest(
'diffusion.tagsquery',
array(
'commit' => $drequest->getCommit(),
'limit' => $tag_limit + 1,
)));
break;
}
$has_more_tags = (count($tags) > $tag_limit);
$tags = array_slice($tags, 0, $tag_limit);
$tag_links = array();
foreach ($tags as $tag) {
$tag_links[] = phutil_tag(
'a',
array(
'href' => $drequest->generateURI(
array(
'action' => 'browse',
'commit' => $tag->getName(),
)),
),
$tag->getName());
}
if ($has_more_tags) {
$tag_links[] = phutil_tag(
'a',
array(
'href' => $drequest->generateURI(
array(
'action' => 'tags',
)),
),
pht("More Tags\xE2\x80\xA6"));
}
return id(new AphrontAjaxResponse())
->setContent($tag_links ? implode(', ', $tag_links) : pht('None'));
}
}
diff --git a/src/applications/diffusion/controller/DiffusionHistoryController.php b/src/applications/diffusion/controller/DiffusionHistoryController.php
index 6cca484207..edbce636c2 100644
--- a/src/applications/diffusion/controller/DiffusionHistoryController.php
+++ b/src/applications/diffusion/controller/DiffusionHistoryController.php
@@ -1,171 +1,169 @@
<?php
final class DiffusionHistoryController extends DiffusionController {
public function shouldAllowPublic() {
return true;
}
- protected function processDiffusionRequest(AphrontRequest $request) {
- $drequest = $this->diffusionRequest;
- $viewer = $request->getUser();
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadDiffusionContext();
+ if ($response) {
+ return $response;
+ }
+
+ $viewer = $this->getViewer();
+ $drequest = $this->getDiffusionRequest();
$repository = $drequest->getRepository();
- $page_size = $request->getInt('pagesize', 100);
- $offset = $request->getInt('offset', 0);
+ $pager = id(new PHUIPagerView())
+ ->readFromRequest($request);
$params = array(
'commit' => $drequest->getCommit(),
'path' => $drequest->getPath(),
- 'offset' => $offset,
- 'limit' => $page_size + 1,
+ 'offset' => $pager->getOffset(),
+ 'limit' => $pager->getPageSize() + 1,
);
if (!$request->getBool('copies')) {
$params['needDirectChanges'] = true;
$params['needChildChanges'] = true;
}
$history_results = $this->callConduitWithDiffusionRequest(
'diffusion.historyquery',
$params);
$history = DiffusionPathChange::newFromConduit(
$history_results['pathChanges']);
- $pager = new PHUIPagerView();
- $pager->setPageSize($page_size);
- $pager->setOffset($offset);
$history = $pager->sliceResults($history);
- $pager->setURI($request->getRequestURI(), 'offset');
-
$show_graph = !strlen($drequest->getPath());
$content = array();
$history_table = id(new DiffusionHistoryTableView())
->setUser($request->getUser())
->setDiffusionRequest($drequest)
->setHistory($history);
$history_table->loadRevisions();
if ($show_graph) {
$history_table->setParents($history_results['parents']);
- $history_table->setIsHead($offset == 0);
+ $history_table->setIsHead(!$pager->getOffset());
}
$history_panel = new PHUIObjectBoxView();
$history_panel->setHeaderText(pht('History'));
$history_panel->setTable($history_table);
$content[] = $history_panel;
$header = id(new PHUIHeaderView())
->setUser($viewer)
->setPolicyObject($repository)
->setHeader($this->renderPathLinks($drequest, $mode = 'history'));
$actions = $this->buildActionView($drequest);
$properties = $this->buildPropertyView($drequest, $actions);
$object_box = id(new PHUIObjectBoxView())
->setHeader($header)
->addPropertyList($properties);
$crumbs = $this->buildCrumbs(
array(
'branch' => true,
'path' => true,
'view' => 'history',
));
- $pager = id(new PHUIBoxView())
- ->addClass('ml')
- ->appendChild($pager);
+ $pager_box = $this->renderTablePagerBox($pager);
- return $this->buildApplicationPage(
- array(
- $crumbs,
- $object_box,
- $content,
- $pager,
- ),
- array(
- 'title' => array(
+ return $this->newPage()
+ ->setTitle(
+ array(
pht('History'),
- $drequest->getRepository()->getDisplayName(),
- ),
- ));
+ $repository->getDisplayName(),
+ ))
+ ->setCrumbs($crumbs)
+ ->appendChild(
+ array(
+ $object_box,
+ $content,
+ $pager_box,
+ ));
}
private function buildActionView(DiffusionRequest $drequest) {
$viewer = $this->getRequest()->getUser();
$view = id(new PhabricatorActionListView())
->setUser($viewer);
$browse_uri = $drequest->generateURI(
array(
'action' => 'browse',
));
$view->addAction(
id(new PhabricatorActionView())
->setName(pht('Browse Content'))
->setHref($browse_uri)
->setIcon('fa-files-o'));
// TODO: Sometimes we do have a change view, we need to look at the most
// recent history entry to figure it out.
$request = $this->getRequest();
if ($request->getBool('copies')) {
$branch_name = pht('Hide Copies/Branches');
$branch_uri = $request->getRequestURI()
->alter('offset', null)
->alter('copies', null);
} else {
$branch_name = pht('Show Copies/Branches');
$branch_uri = $request->getRequestURI()
->alter('offset', null)
->alter('copies', true);
}
$view->addAction(
id(new PhabricatorActionView())
->setName($branch_name)
->setIcon('fa-code-fork')
->setHref($branch_uri));
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();
$view->addProperty(
pht('Commit'),
phutil_tag(
'a',
array(
'href' => $drequest->generateURI(
array(
'action' => 'commit',
'commit' => $stable_commit,
)),
),
$drequest->getRepository()->formatCommitName($stable_commit)));
return $view;
}
}
diff --git a/src/applications/diffusion/controller/DiffusionMirrorDeleteController.php b/src/applications/diffusion/controller/DiffusionMirrorDeleteController.php
index 3a4300690e..c49cdb7517 100644
--- a/src/applications/diffusion/controller/DiffusionMirrorDeleteController.php
+++ b/src/applications/diffusion/controller/DiffusionMirrorDeleteController.php
@@ -1,44 +1,49 @@
<?php
final class DiffusionMirrorDeleteController
extends DiffusionController {
- protected function processDiffusionRequest(AphrontRequest $request) {
- $viewer = $request->getUser();
- $drequest = $this->diffusionRequest;
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadDiffusionContext();
+ if ($response) {
+ return $response;
+ }
+
+ $viewer = $this->getViewer();
+ $drequest = $this->getDiffusionRequest();
$repository = $drequest->getRepository();
$mirror = id(new PhabricatorRepositoryMirrorQuery())
->setViewer($viewer)
->withIDs(array($request->getURIData('id')))
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
PhabricatorPolicyCapability::CAN_EDIT,
))
->executeOne();
if (!$mirror) {
return new Aphront404Response();
}
$edit_uri = $this->getRepositoryControllerURI($repository, 'edit/#mirrors');
if ($request->isFormPost()) {
$mirror->delete();
return id(new AphrontReloadResponse())->setURI($edit_uri);
}
$dialog = id(new AphrontDialogView())
->setUser($viewer)
->setTitle(pht('Really delete mirror?'))
->appendChild(
pht('Phabricator will stop pushing updates to this mirror.'))
->addSubmitButton(pht('Delete Mirror'))
->addCancelButton($edit_uri);
return id(new AphrontDialogResponse())
->setDialog($dialog);
}
}
diff --git a/src/applications/diffusion/controller/DiffusionMirrorEditController.php b/src/applications/diffusion/controller/DiffusionMirrorEditController.php
index 4d5e9f139f..f5793f2afe 100644
--- a/src/applications/diffusion/controller/DiffusionMirrorEditController.php
+++ b/src/applications/diffusion/controller/DiffusionMirrorEditController.php
@@ -1,129 +1,134 @@
<?php
final class DiffusionMirrorEditController
extends DiffusionController {
- protected function processDiffusionRequest(AphrontRequest $request) {
- $viewer = $request->getUser();
- $drequest = $this->diffusionRequest;
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadDiffusionContext();
+ if ($response) {
+ return $response;
+ }
+
+ $viewer = $this->getViewer();
+ $drequest = $this->getDiffusionRequest();
$repository = $drequest->getRepository();
PhabricatorPolicyFilter::requireCapability(
$viewer,
$repository,
PhabricatorPolicyCapability::CAN_EDIT);
if ($request->getURIData('id')) {
$mirror = id(new PhabricatorRepositoryMirrorQuery())
->setViewer($viewer)
->withIDs(array($request->getURIData('id')))
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
PhabricatorPolicyCapability::CAN_EDIT,
))
->executeOne();
if (!$mirror) {
return new Aphront404Response();
}
$is_new = false;
} else {
$mirror = PhabricatorRepositoryMirror::initializeNewMirror($viewer)
->setRepositoryPHID($repository->getPHID())
->attachRepository($repository);
$is_new = true;
}
$edit_uri = $this->getRepositoryControllerURI($repository, 'edit/#mirrors');
$v_remote = $mirror->getRemoteURI();
$e_remote = true;
$v_credentials = $mirror->getCredentialPHID();
$e_credentials = null;
$credentials = id(new PassphraseCredentialQuery())
->setViewer($viewer)
->withIsDestroyed(false)
->execute();
$errors = array();
if ($request->isFormPost()) {
$v_remote = $request->getStr('remoteURI');
if (strlen($v_remote)) {
try {
PhabricatorRepository::assertValidRemoteURI($v_remote);
$e_remote = null;
} catch (Exception $ex) {
$e_remote = pht('Invalid');
$errors[] = $ex->getMessage();
}
} else {
$e_remote = pht('Required');
$errors[] = pht('You must provide a remote URI.');
}
$v_credentials = $request->getStr('credential');
if ($v_credentials) {
$phids = mpull($credentials, null, 'getPHID');
if (empty($phids[$v_credentials])) {
$e_credentials = pht('Invalid');
$errors[] = pht(
'You do not have permission to use those credentials.');
}
}
if (!$errors) {
$mirror
->setRemoteURI($v_remote)
->setCredentialPHID($v_credentials)
->save();
return id(new AphrontReloadResponse())->setURI($edit_uri);
}
}
$form_errors = null;
if ($errors) {
$form_errors = id(new PHUIInfoView())
->setErrors($errors);
}
if ($is_new) {
$title = pht('Create Mirror');
$submit = pht('Create Mirror');
} else {
$title = pht('Edit Mirror');
$submit = pht('Save Changes');
}
$form = id(new PHUIFormLayoutView())
->appendChild(
id(new AphrontFormTextControl())
->setLabel(pht('Remote URI'))
->setName('remoteURI')
->setValue($v_remote)
->setError($e_remote))
->appendChild(
id(new PassphraseCredentialControl())
->setLabel(pht('Credentials'))
->setName('credential')
->setAllowNull(true)
->setValue($v_credentials)
->setError($e_credentials)
->setOptions($credentials));
$dialog = id(new AphrontDialogView())
->setUser($viewer)
->setTitle($title)
->setWidth(AphrontDialogView::WIDTH_FORM)
->appendChild($form_errors)
->appendChild($form)
->addSubmitButton($submit)
->addCancelButton($edit_uri);
return id(new AphrontDialogResponse())
->setDialog($dialog);
}
}
diff --git a/src/applications/diffusion/controller/DiffusionPushEventViewController.php b/src/applications/diffusion/controller/DiffusionPushEventViewController.php
index 3c5861e512..027cf16bbe 100644
--- a/src/applications/diffusion/controller/DiffusionPushEventViewController.php
+++ b/src/applications/diffusion/controller/DiffusionPushEventViewController.php
@@ -1,179 +1,178 @@
<?php
final class DiffusionPushEventViewController
extends DiffusionPushLogController {
public function shouldAllowPublic() {
return true;
}
- protected function processDiffusionRequest(AphrontRequest $request) {
- $viewer = $request->getUser();
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $this->getViewer();
$event = id(new PhabricatorRepositoryPushEventQuery())
->setViewer($viewer)
->withIDs(array($request->getURIData('id')))
->needLogs(true)
->executeOne();
if (!$event) {
return new Aphront404Response();
}
$repository = $event->getRepository();
$title = pht('Push %d', $event->getID());
$crumbs = $this->buildApplicationCrumbs();
$crumbs->addTextCrumb(
$repository->getName(),
$repository->getURI());
$crumbs->addTextCrumb(
pht('Push Logs'),
$this->getApplicationURI(
'pushlog/?repositories='.$repository->getMonogram()));
$crumbs->addTextCrumb($title);
$event_properties = $this->buildPropertyList($event);
$detail_box = id(new PHUIObjectBoxView())
->setHeaderText($title)
->addPropertyList($event_properties);
$commits = $this->loadCommits($event);
$commits_table = $this->renderCommitsTable($event, $commits);
$commits_box = id(new PHUIObjectBoxView())
->setHeaderText(pht('Pushed Commits'))
->setTable($commits_table);
$logs = $event->getLogs();
$updates_table = id(new DiffusionPushLogListView())
->setUser($viewer)
->setLogs($logs)
->setHandles($this->loadViewerHandles(mpull($logs, 'getPusherPHID')));
$update_box = id(new PHUIObjectBoxView())
->setHeaderText(pht('All Pushed Updates'))
->setTable($updates_table);
- return $this->buildApplicationPage(
- array(
- $crumbs,
- $detail_box,
- $commits_box,
- $update_box,
- ),
- array(
- 'title' => $title,
- ));
+ return $this->newPage()
+ ->setTitle($title)
+ ->setCrumbs($crumbs)
+ ->appendChild(
+ array(
+ $detail_box,
+ $commits_box,
+ $update_box,
+ ));
}
private function buildPropertyList(PhabricatorRepositoryPushEvent $event) {
$viewer = $this->getRequest()->getUser();
$view = new PHUIPropertyListView();
$view->addProperty(
pht('Pushed At'),
phabricator_datetime($event->getEpoch(), $viewer));
$view->addProperty(
pht('Pushed By'),
$viewer->renderHandle($event->getPusherPHID()));
$view->addProperty(
pht('Pushed Via'),
$event->getRemoteProtocol());
return $view;
}
private function loadCommits(PhabricatorRepositoryPushEvent $event) {
$viewer = $this->getRequest()->getUser();
$identifiers = array();
foreach ($event->getLogs() as $log) {
if ($log->getRefType() == PhabricatorRepositoryPushLog::REFTYPE_COMMIT) {
$identifiers[] = $log->getRefNew();
}
}
if (!$identifiers) {
return array();
}
// NOTE: Commits may not have been parsed/discovered yet. We need to return
// the identifiers no matter what. If possible, we'll also return the
// corresponding commits.
$commits = id(new DiffusionCommitQuery())
->setViewer($viewer)
->withRepository($event->getRepository())
->withIdentifiers($identifiers)
->execute();
$commits = mpull($commits, null, 'getCommitIdentifier');
$results = array();
foreach ($identifiers as $identifier) {
$results[$identifier] = idx($commits, $identifier);
}
return $results;
}
private function renderCommitsTable(
PhabricatorRepositoryPushEvent $event,
array $commits) {
$viewer = $this->getRequest()->getUser();
$repository = $event->getRepository();
$rows = array();
foreach ($commits as $identifier => $commit) {
if ($commit) {
$partial_import = PhabricatorRepositoryCommit::IMPORTED_MESSAGE |
PhabricatorRepositoryCommit::IMPORTED_CHANGE;
if ($commit->isPartiallyImported($partial_import)) {
$summary = AphrontTableView::renderSingleDisplayLine(
$commit->getSummary());
} else {
$summary = phutil_tag('em', array(), pht('Importing...'));
}
} else {
$summary = phutil_tag('em', array(), pht('Discovering...'));
}
$commit_name = $repository->formatCommitName($identifier);
if ($commit) {
$commit_name = phutil_tag(
'a',
array(
'href' => '/'.$commit_name,
),
$commit_name);
}
$rows[] = array(
$commit_name,
$summary,
);
}
$table = id(new AphrontTableView($rows))
->setNoDataString(pht("This push didn't push any new commits."))
->setHeaders(
array(
pht('Commit'),
pht('Summary'),
))
->setColumnClasses(
array(
'n',
'wide',
));
return $table;
}
}
diff --git a/src/applications/diffusion/controller/DiffusionPushLogListController.php b/src/applications/diffusion/controller/DiffusionPushLogListController.php
index 4f2460be89..5b58881470 100644
--- a/src/applications/diffusion/controller/DiffusionPushLogListController.php
+++ b/src/applications/diffusion/controller/DiffusionPushLogListController.php
@@ -1,34 +1,15 @@
<?php
final class DiffusionPushLogListController extends DiffusionPushLogController {
public function shouldAllowPublic() {
return true;
}
- protected function processDiffusionRequest(AphrontRequest $request) {
- $request = $this->getRequest();
- $controller = id(new PhabricatorApplicationSearchController())
- ->setQueryKey($request->getURIData('queryKey'))
- ->setSearchEngine(new PhabricatorRepositoryPushLogSearchEngine())
- ->setNavigation($this->buildSideNavView());
-
- return $this->delegateToController($controller);
- }
-
- public function buildSideNavView($for_app = false) {
- $viewer = $this->getRequest()->getUser();
-
- $nav = new AphrontSideNavFilterView();
- $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
-
- id(new PhabricatorRepositoryPushLogSearchEngine())
- ->setViewer($viewer)
- ->addNavigationItems($nav->getMenu());
-
- $nav->selectFilter(null);
-
- return $nav;
+ public function handleRequest(AphrontRequest $request) {
+ return id(new PhabricatorRepositoryPushLogSearchEngine())
+ ->setController($this)
+ ->buildResponse();
}
}
diff --git a/src/applications/diffusion/controller/DiffusionRefTableController.php b/src/applications/diffusion/controller/DiffusionRefTableController.php
index dac0c3a136..8a4e274819 100644
--- a/src/applications/diffusion/controller/DiffusionRefTableController.php
+++ b/src/applications/diffusion/controller/DiffusionRefTableController.php
@@ -1,149 +1,150 @@
<?php
final class DiffusionRefTableController extends DiffusionController {
public function shouldAllowPublic() {
return true;
}
- protected function processDiffusionRequest(AphrontRequest $request) {
- $viewer = $this->getViewer();
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadDiffusionContext();
+ if ($response) {
+ return $response;
+ }
+ $viewer = $this->getViewer();
$drequest = $this->getDiffusionRequest();
$repository = $drequest->getRepository();
if (!$drequest->supportsBranches()) {
return $this->newDialog()
->setTitle(pht('No Ref Support'))
->appendParagraph(
pht(
'The version control system this repository uses does not '.
'support named references, so you can not resolve or list '.
'repository refs in this repository.'))
->addCancelButton($repository->getURI());
}
$ref_name = $drequest->getBranch();
$cache_query = id(new DiffusionCachedResolveRefsQuery())
->setRepository($repository);
if ($ref_name !== null) {
$cache_query->withRefs(array($ref_name));
}
$cache_refs = $cache_query->execute();
$vcs_refs = DiffusionQuery::callConduitWithDiffusionRequest(
$viewer,
$drequest,
'diffusion.resolverefs',
array(
'refs' => array($ref_name),
));
$all = array();
foreach ($cache_refs as $ref => $results) {
foreach ($results as $result) {
$id = $result['type'].'/'.$result['identifier'];
$all[$ref][$id]['cache'] = $result;
}
}
foreach ($vcs_refs as $ref => $results) {
foreach ($results as $result) {
$id = $result['type'].'/'.$result['identifier'];
$all[$ref][$id]['vcs'] = $result;
}
}
$rows = array();
foreach ($all as $ref => $results) {
foreach ($results as $info) {
$cache = idx($info, 'cache', array());
$vcs = idx($info, 'vcs', array());
$type = idx($vcs, 'type');
if (!$type) {
$type = idx($cache, 'type');
}
$hash = idx($vcs, 'identifier');
if ($hash !== null) {
$hash = DiffusionView::linkCommit(
$repository,
$hash);
}
$cached_hash = idx($cache, 'identifier');
if ($cached_hash !== null) {
$cached_hash = DiffusionView::linkCommit(
$repository,
$cached_hash);
}
$closed = idx($vcs, 'closed', false);
if (!$vcs) {
$state = null;
} else {
$state = $closed ? pht('Closed') : pht('Open');
}
$cached_closed = idx($cache, 'closed', false);
if (!$cache) {
$cached_state = null;
} else {
$cached_state = $cached_closed ? pht('Closed') : pht('Open');
}
$alternate = idx($vcs, 'alternate');
if ($alternate !== null) {
$alternate = DiffusionView::linkCommit(
$repository,
$alternate);
}
$rows[] = array(
$ref,
$type,
$hash,
$cached_hash,
$state,
$cached_state,
$alternate,
);
}
}
$table = id(new AphrontTableView($rows))
->setHeaders(
array(
pht('Ref'),
pht('Type'),
pht('Hash'),
pht('Cached Hash'),
pht('State'),
pht('Cached State'),
pht('Alternate'),
));
$content = id(new PHUIObjectBoxView())
->setHeaderText(pht('Ref "%s"', $ref_name))
->setTable($table);
$crumbs = $this->buildCrumbs(array());
$crumbs->addTextCrumb(pht('Refs'));
- return $this->buildApplicationPage(
- array(
- $crumbs,
- $content,
- ),
- array(
- 'title' => array(
- pht('Refs'),
- $repository->getMonogram(),
+ return $this->newPage()
+ ->setTitle(
+ array(
$ref_name,
- ),
- ));
+ pht('Ref'),
+ $repository->getDisplayName(),
+ ))
+ ->setCrumbs($crumbs)
+ ->appendChild($content);
}
}
diff --git a/src/applications/diffusion/controller/DiffusionRepositoryListController.php b/src/applications/diffusion/controller/DiffusionRepositoryListController.php
index ec93edbc41..5897d2f162 100644
--- a/src/applications/diffusion/controller/DiffusionRepositoryListController.php
+++ b/src/applications/diffusion/controller/DiffusionRepositoryListController.php
@@ -1,50 +1,32 @@
<?php
final class DiffusionRepositoryListController extends DiffusionController {
public function shouldAllowPublic() {
return true;
}
- protected function processDiffusionRequest(AphrontRequest $request) {
- $controller = id(new PhabricatorApplicationSearchController())
- ->setQueryKey($request->getURIData('queryKey'))
- ->setSearchEngine(new PhabricatorRepositorySearchEngine())
- ->setNavigation($this->buildSideNavView());
-
- return $this->delegateToController($controller);
- }
-
- public function buildSideNavView($for_app = false) {
- $viewer = $this->getRequest()->getUser();
-
- $nav = new AphrontSideNavFilterView();
- $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
-
- id(new PhabricatorRepositorySearchEngine())
- ->setViewer($viewer)
- ->addNavigationItems($nav->getMenu());
-
- $nav->selectFilter(null);
-
- return $nav;
+ public function handleRequest(AphrontRequest $request) {
+ return id(new PhabricatorRepositorySearchEngine())
+ ->setController($this)
+ ->buildResponse();
}
protected function buildApplicationCrumbs() {
$crumbs = parent::buildApplicationCrumbs();
$can_create = $this->hasApplicationCapability(
DiffusionCreateRepositoriesCapability::CAPABILITY);
$crumbs->addAction(
id(new PHUIListItemView())
->setName(pht('New Repository'))
->setHref($this->getApplicationURI('new/'))
->setDisabled(!$can_create)
->setWorkflow(!$can_create)
->setIcon('fa-plus-square'));
return $crumbs;
}
}
diff --git a/src/applications/diffusion/controller/DiffusionRepositoryTestAutomationController.php b/src/applications/diffusion/controller/DiffusionRepositoryTestAutomationController.php
index 6a9039889e..691564c68e 100644
--- a/src/applications/diffusion/controller/DiffusionRepositoryTestAutomationController.php
+++ b/src/applications/diffusion/controller/DiffusionRepositoryTestAutomationController.php
@@ -1,78 +1,83 @@
<?php
final class DiffusionRepositoryTestAutomationController
extends DiffusionRepositoryEditController {
- protected function processDiffusionRequest(AphrontRequest $request) {
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadDiffusionContext();
+ if ($response) {
+ return $response;
+ }
+
$viewer = $this->getViewer();
- $drequest = $this->diffusionRequest;
+ $drequest = $this->getDiffusionRequest();
$repository = $drequest->getRepository();
$repository = id(new PhabricatorRepositoryQuery())
->setViewer($viewer)
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
PhabricatorPolicyCapability::CAN_EDIT,
))
->withIDs(array($repository->getID()))
->executeOne();
if (!$repository) {
return new Aphront404Response();
}
$edit_uri = $this->getRepositoryControllerURI($repository, 'edit/');
if (!$repository->canPerformAutomation()) {
return $this->newDialog()
->setTitle(pht('Automation Not Configured'))
->appendParagraph(
pht(
'You can not run a configuration test for this repository '.
'because you have not configured repository automation yet. '.
'Configure it first, then test the configuration.'))
->addCancelButton($edit_uri);
}
if ($request->isFormPost()) {
$op = new DrydockTestRepositoryOperation();
$operation = DrydockRepositoryOperation::initializeNewOperation($op)
->setAuthorPHID($viewer->getPHID())
->setObjectPHID($repository->getPHID())
->setRepositoryPHID($repository->getPHID())
->setRepositoryTarget('none:')
->save();
$operation->scheduleUpdate();
$operation_id = $operation->getID();
$operation_uri = "/drydock/operation/{$operation_id}/";
return id(new AphrontRedirectResponse())
->setURI($operation_uri);
}
return $this->newDialog()
->setTitle(pht('Test Automation Configuration'))
->appendParagraph(
pht(
'This configuration test will build a working copy of the '.
'repository and perform some basic validation. If it works, '.
'your configuration is substantially correct.'))
->appendParagraph(
pht(
'The test will not perform any writes against the repository, so '.
'write operations may still fail even if the test passes. This '.
'test covers building and reading working copies, but not writing '.
'to them.'))
->appendParagraph(
pht(
'If you run into write failures despite passing this test, '.
'it suggests that your setup is nearly correct but authentication '.
'is probably not fully configured.'))
->addCancelButton($edit_uri)
->addSubmitButton(pht('Start Test'));
}
}

File Metadata

Mime Type
text/x-diff
Expires
Tue, Jun 10, 8:35 PM (1 d, 3 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
140971
Default Alt Text
(42 KB)

Event Timeline