mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-23 21:18:19 +01:00
d403700e1f
Summary: Ref T7689. Ref T4100. This advances the goals of removing `loadViewerHandles()` (only 67 callsites remain!) and letting tokenizers some day take token functions like `viewer()` and `members(differential)`. Test Plan: - Sent a new message; used "To". - I simplified the cancel URI construction slightly because it's moot in all normal cases. - Edited a thread; used "Add Participants". - Searched rooms; used "Participants". - Searched countdowns; used "Authors". - Created a diff; used "Repository". - Edited a revision; edited "Projects"; edited "Reveiwers"; edited "Subscribers". - Searched for revisions; edited "responsible users"; "authors"; "reviwers"; "subscribers"; "repositories". - Added revision comments; edited "Add Reveiwers"; "Add Subscribers". - Commented on a commit; edited "Add Auditors"; "Add subscribers". - Edited a commit; edited "Projects". - Edited a repository; edited "Projects". - Searched feed, used "include Users"; "include Proejcts". - Searched files, used "authors". - Edited initiative; edited "Projects". - Searched backers; used "Backers". - Searched initiatives; used "Owners". - Edited build plans; edited "Run Command". - Searched Herald; used "Authors". - Added signature exemption in Legalpad. - Searhced legalpad; used "creators"; used "contributors". - Searched signatures; used "documents"; used "signers". - Created meme. - Searched macros; used "Authors". - Used "Projects" in Maniphest reports. - Used Maniphest comment actions. - Edited Maniphest tasks; edited "Assigned To"; edited "CC"; edited "projects". - Used "parent" in Maniphest task creation workflow. - Searched for projects; used "assigned to"; "in any projec"; "in all projects"; "not in projects"; "in users' projects"; "authors"; "subscribers". - Edited Maniphest bug filing domains, used "Default Author". - Searched for OAuth applications, used "Creators". - Edited Owners pacakge; edited "Primary Owner"; edited "Owners". - Searched for Owners packages; used "Owner". - OMG this UI is OLD - Edited a paste; edited "Projects". - Searched for paste; used "Authors". - Searched user activity log; used "Actors"; used "Users". - Edited a mock; edited "Projects"; edited "CC". - Searched for mocks; used "Authors". - Edited Phortune account; edited "Members". - Edited Phortune merchant account; edited "Members". - Searched Phrequent; used "Users". - Edited Ponder question; sued "projects". - Searched Ponder; used "Authors"; used "Answered By". - Added project members. - Searched for projects; used "Members". - Edited a Releeph product; edited "Pushers". - Searched pull requests; searched "Requestors". - Edited an arcanist project; used "Uses Symbols From". - Searhced push logs; used "Repositories"; used "Pushers". - Searched repositories; used "In nay project". - Used global search; used Authors/owners/Subscribers/In Any Project. - Edited a slowvote; used "Projects". - Searched slovotes; used "Authors". - Created a custom "Users" field; edited and searched for it. - Made a whole lot of typos in this list. ^^^^^^ Did not test: - Lint is nontrivial to test locally, I'll test it in production. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T4100, T7689 Differential Revision: https://secure.phabricator.com/D12224
129 lines
4 KiB
PHP
129 lines
4 KiB
PHP
<?php
|
|
|
|
final class DiffusionCommitEditController extends DiffusionController {
|
|
|
|
protected function processDiffusionRequest(AphrontRequest $request) {
|
|
$user = $request->getUser();
|
|
$drequest = $this->getDiffusionRequest();
|
|
$callsign = $drequest->getRepository()->getCallsign();
|
|
$repository = $drequest->getRepository();
|
|
$commit = $drequest->loadCommit();
|
|
$data = $commit->loadCommitData();
|
|
$page_title = pht('Edit Diffusion Commit');
|
|
|
|
if (!$commit) {
|
|
return new Aphront404Response();
|
|
}
|
|
|
|
$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)
|
|
->setContinueOnNoEffect(true)
|
|
->setContentSourceFromRequest($request);
|
|
$xactions = $editor->applyTransactions($commit, $xactions);
|
|
return id(new AphrontRedirectResponse())
|
|
->setURI('/r'.$callsign.$commit->getCommitIdentifier());
|
|
}
|
|
|
|
$tokenizer_id = celerity_generate_unique_node_id();
|
|
$form = id(new AphrontFormView())
|
|
->setUser($user)
|
|
->setAction($request->getRequestURI()->getPath())
|
|
->appendControl(
|
|
id(new AphrontFormTokenizerControl())
|
|
->setLabel(pht('Projects'))
|
|
->setName('projects')
|
|
->setValue($current_proj_phids)
|
|
->setID($tokenizer_id)
|
|
->setCaption(
|
|
javelin_tag(
|
|
'a',
|
|
array(
|
|
'href' => '/project/create/',
|
|
'mustcapture' => true,
|
|
'sigil' => 'project-create',
|
|
),
|
|
pht('Create New Project')))
|
|
->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)));
|
|
}
|
|
|
|
|
|
Javelin::initBehavior('project-create', array(
|
|
'tokenizerID' => $tokenizer_id,
|
|
));
|
|
|
|
$submit = id(new AphrontFormSubmitControl())
|
|
->setValue(pht('Save'))
|
|
->addCancelButton('/r'.$callsign.$commit->getCommitIdentifier());
|
|
$form->appendChild($submit);
|
|
|
|
$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,
|
|
));
|
|
}
|
|
|
|
}
|