Differential D14944 Diff 36120 src/applications/diffusion/controller/DiffusionCommitEditController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/diffusion/controller/DiffusionCommitEditController.php
<?php | <?php | ||||
final class DiffusionCommitEditController extends DiffusionController { | final class DiffusionCommitEditController extends DiffusionController { | ||||
protected function processDiffusionRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
$user = $request->getUser(); | $response = $this->loadDiffusionContext(); | ||||
if ($response) { | |||||
return $response; | |||||
} | |||||
$viewer = $this->getViewer(); | |||||
$drequest = $this->getDiffusionRequest(); | $drequest = $this->getDiffusionRequest(); | ||||
$repository = $drequest->getRepository(); | $repository = $drequest->getRepository(); | ||||
$commit = $drequest->loadCommit(); | $commit = $drequest->loadCommit(); | ||||
$data = $commit->loadCommitData(); | |||||
$page_title = pht('Edit Diffusion Commit'); | |||||
if (!$commit) { | if (!$commit) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
$data = $commit->loadCommitData(); | |||||
$page_title = pht('Edit Diffusion Commit'); | |||||
$commit_phid = $commit->getPHID(); | $commit_phid = $commit->getPHID(); | ||||
$edge_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; | $edge_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; | ||||
$current_proj_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( | $current_proj_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( | ||||
$commit_phid, | $commit_phid, | ||||
$edge_type); | $edge_type); | ||||
if ($request->isFormPost()) { | if ($request->isFormPost()) { | ||||
$xactions = array(); | $xactions = array(); | ||||
$proj_phids = $request->getArr('projects'); | $proj_phids = $request->getArr('projects'); | ||||
$xactions[] = id(new PhabricatorAuditTransaction()) | $xactions[] = id(new PhabricatorAuditTransaction()) | ||||
->setTransactionType(PhabricatorTransactions::TYPE_EDGE) | ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) | ||||
->setMetadataValue('edge:type', $edge_type) | ->setMetadataValue('edge:type', $edge_type) | ||||
->setNewValue(array('=' => array_fuse($proj_phids))); | ->setNewValue(array('=' => array_fuse($proj_phids))); | ||||
$editor = id(new PhabricatorAuditEditor()) | $editor = id(new PhabricatorAuditEditor()) | ||||
->setActor($user) | ->setActor($viewer) | ||||
->setContinueOnNoEffect(true) | ->setContinueOnNoEffect(true) | ||||
->setContentSourceFromRequest($request); | ->setContentSourceFromRequest($request); | ||||
$xactions = $editor->applyTransactions($commit, $xactions); | |||||
$editor->applyTransactions($commit, $xactions); | |||||
return id(new AphrontRedirectResponse()) | return id(new AphrontRedirectResponse()) | ||||
->setURI($commit->getURI()); | ->setURI($commit->getURI()); | ||||
} | } | ||||
$tokenizer_id = celerity_generate_unique_node_id(); | $tokenizer_id = celerity_generate_unique_node_id(); | ||||
$form = id(new AphrontFormView()) | $form = id(new AphrontFormView()) | ||||
->setUser($user) | ->setUser($viewer) | ||||
->setAction($request->getRequestURI()->getPath()) | ->setAction($request->getRequestURI()->getPath()) | ||||
->appendControl( | ->appendControl( | ||||
id(new AphrontFormTokenizerControl()) | id(new AphrontFormTokenizerControl()) | ||||
->setLabel(pht('Projects')) | ->setLabel(pht('Projects')) | ||||
->setName('projects') | ->setName('projects') | ||||
->setValue($current_proj_phids) | ->setValue($current_proj_phids) | ||||
->setID($tokenizer_id) | ->setID($tokenizer_id) | ||||
->setDatasource(new PhabricatorProjectDatasource())); | ->setDatasource(new PhabricatorProjectDatasource())); | ||||
Show All 32 Lines | if ($reason !== false) { | ||||
pht('Learn More')); | pht('Learn More')); | ||||
$form->appendChild( | $form->appendChild( | ||||
id(new AphrontFormMarkupControl()) | id(new AphrontFormMarkupControl()) | ||||
->setLabel(pht('Autoclose?')) | ->setLabel(pht('Autoclose?')) | ||||
->setValue(array($desc, " \xC2\xB7 ", $doc_link))); | ->setValue(array($desc, " \xC2\xB7 ", $doc_link))); | ||||
} | } | ||||
$form->appendControl( | |||||
Javelin::initBehavior('project-create', array( | id(new AphrontFormSubmitControl()) | ||||
'tokenizerID' => $tokenizer_id, | |||||
)); | |||||
$submit = id(new AphrontFormSubmitControl()) | |||||
->setValue(pht('Save')) | ->setValue(pht('Save')) | ||||
->addCancelButton($commit->getURI()); | ->addCancelButton($commit->getURI())); | ||||
$form->appendChild($submit); | |||||
$crumbs = $this->buildCrumbs(array( | $crumbs = $this->buildCrumbs( | ||||
array( | |||||
'commit' => true, | 'commit' => true, | ||||
)); | )); | ||||
$crumbs->addTextCrumb(pht('Edit')); | $crumbs->addTextCrumb(pht('Edit')); | ||||
$form_box = id(new PHUIObjectBoxView()) | $form_box = id(new PHUIObjectBoxView()) | ||||
->setHeaderText($page_title) | ->setHeaderText($page_title) | ||||
->setForm($form); | ->setForm($form); | ||||
return $this->buildApplicationPage( | return $this->newPage() | ||||
array( | ->setTitle($page_title) | ||||
$crumbs, | ->setCrumbs($crumbs) | ||||
$form_box, | ->appendChild($form_box); | ||||
), | |||||
array( | |||||
'title' => $page_title, | |||||
)); | |||||
} | } | ||||
} | } |