Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
3.1 kB · 98 lines
PHP
at commit dcd7a316
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899<?php
final class DiffusionCommitEditController extends DiffusionController {
public function willProcessRequest(array $data) { $data['user'] = $this->getRequest()->getUser(); $this->diffusionRequest = DiffusionRequest::newFromDictionary($data); }
public function processRequest() {
$request = $this->getRequest(); $user = $request->getUser(); $drequest = $this->getDiffusionRequest(); $callsign = $drequest->getRepository()->getCallsign(); $repository = $drequest->getRepository(); $commit = $drequest->loadCommit(); $page_title = pht('Edit Diffusion Commit');
if (!$commit) { return new Aphront404Response(); }
$commit_phid = $commit->getPHID(); $edge_type = PhabricatorEdgeConfig::TYPE_COMMIT_HAS_PROJECT; $current_proj_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( $commit_phid, $edge_type); $handles = $this->loadViewerHandles($current_proj_phids); $proj_t_values = $handles;
if ($request->isFormPost()) { $proj_phids = $request->getArr('projects'); $new_proj_phids = array_values($proj_phids); $rem_proj_phids = array_diff($current_proj_phids, $new_proj_phids); $editor = id(new PhabricatorEdgeEditor()); $editor->setActor($user); foreach ($rem_proj_phids as $phid) { $editor->removeEdge($commit_phid, $edge_type, $phid); } foreach ($new_proj_phids as $phid) { $editor->addEdge($commit_phid, $edge_type, $phid); } $editor->save();
id(new PhabricatorSearchIndexer()) ->queueDocumentForIndexing($commit->getPHID());
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()) ->appendChild( id(new AphrontFormTokenizerControl()) ->setLabel(pht('Projects')) ->setName('projects') ->setValue($proj_t_values) ->setID($tokenizer_id) ->setCaption( javelin_tag( 'a', array( 'href' => '/project/create/', 'mustcapture' => true, 'sigil' => 'project-create', ), pht('Create New Project'))) ->setDatasource('/typeahead/common/projects/'));;
Javelin::initBehavior('project-create', array( 'tokenizerID' => $tokenizer_id, ));
$submit = id(new AphrontFormSubmitControl()) ->setValue(pht('Save')) ->addCancelButton('/r'.$callsign.$commit->getCommitIdentifier()); $form->appendChild($submit);
$form_box = id(new PHUIObjectBoxView()) ->setHeaderText($page_title) ->setForm($form);
return $this->buildApplicationPage( array( $form_box, ), array( 'title' => $page_title, 'device' => true, )); }
}