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.
5.2 kB · 176 lines
PHP
at commit e0faa667
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177<?php
final class DiffusionRepositoryEditBasicController extends DiffusionRepositoryEditController {
protected function processDiffusionRequest(AphrontRequest $request) { $user = $request->getUser(); $drequest = $this->diffusionRequest; $repository = $drequest->getRepository();
$repository = id(new PhabricatorRepositoryQuery()) ->setViewer($user) ->requireCapabilities( array( PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT, )) ->needProjectPHIDs(true) ->withIDs(array($repository->getID())) ->executeOne();
if (!$repository) { return new Aphront404Response(); }
$edit_uri = $this->getRepositoryControllerURI($repository, 'edit/');
$v_name = $repository->getName(); $v_desc = $repository->getDetail('description'); $v_clone_name = $repository->getDetail('clone-name'); $e_name = true; $errors = array();
if ($request->isFormPost()) { $v_name = $request->getStr('name'); $v_desc = $request->getStr('description'); $v_projects = $request->getArr('projectPHIDs');
if ($repository->isHosted()) { $v_clone_name = $request->getStr('cloneName'); }
if (!strlen($v_name)) { $e_name = pht('Required'); $errors[] = pht('Repository name is required.'); } else { $e_name = null; }
if (!$errors) { $xactions = array(); $template = id(new PhabricatorRepositoryTransaction());
$type_name = PhabricatorRepositoryTransaction::TYPE_NAME; $type_desc = PhabricatorRepositoryTransaction::TYPE_DESCRIPTION; $type_edge = PhabricatorTransactions::TYPE_EDGE; $type_clone_name = PhabricatorRepositoryTransaction::TYPE_CLONE_NAME;
$xactions[] = id(clone $template) ->setTransactionType($type_name) ->setNewValue($v_name);
$xactions[] = id(clone $template) ->setTransactionType($type_desc) ->setNewValue($v_desc);
$xactions[] = id(clone $template) ->setTransactionType($type_clone_name) ->setNewValue($v_clone_name);
$xactions[] = id(clone $template) ->setTransactionType($type_edge) ->setMetadataValue( 'edge:type', PhabricatorProjectObjectHasProjectEdgeType::EDGECONST) ->setNewValue( array( '=' => array_fuse($v_projects), ));
id(new PhabricatorRepositoryEditor()) ->setContinueOnNoEffect(true) ->setContentSourceFromRequest($request) ->setActor($user) ->applyTransactions($repository, $xactions);
return id(new AphrontRedirectResponse())->setURI($edit_uri); } }
$crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Edit Basics'));
$title = pht('Edit %s', $repository->getName());
$form = id(new AphrontFormView()) ->setUser($user) ->appendChild( id(new AphrontFormTextControl()) ->setName('name') ->setLabel(pht('Name')) ->setValue($v_name) ->setError($e_name));
if ($repository->isHosted()) { $form ->appendChild( id(new AphrontFormTextControl()) ->setName('cloneName') ->setLabel(pht('Clone/Checkout As')) ->setValue($v_clone_name) ->setCaption( pht( 'Optional directory name to use when cloning or checking out '. 'this repository.'))); }
$form ->appendChild( id(new PhabricatorRemarkupControl()) ->setUser($user) ->setName('description') ->setLabel(pht('Description')) ->setValue($v_desc)) ->appendControl( id(new AphrontFormTokenizerControl()) ->setDatasource(new PhabricatorProjectDatasource()) ->setName('projectPHIDs') ->setLabel(pht('Projects')) ->setValue($repository->getProjectPHIDs())) ->appendChild( id(new AphrontFormSubmitControl()) ->setValue(pht('Save')) ->addCancelButton($edit_uri)) ->appendChild(id(new PHUIFormDividerControl())) ->appendRemarkupInstructions($this->getReadmeInstructions());
$object_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) ->setForm($form) ->setFormErrors($errors);
return $this->buildApplicationPage( array( $crumbs, $object_box, ), array( 'title' => $title, )); }
private function getReadmeInstructions() { return pht(<<<EOTEXTYou can also create a `%s` file at the repository root (or in anysubdirectory) to provide information about the repository. These formats aresupported:
| File Name | Rendered As... ||-----------|-----------------|| `%s` | Plain Text || `%s` | Plain Text || `%s` | Remarkup || `%s` | Remarkup || `%s` | \xC2\xA1Fiesta! |EOTEXT , 'README', 'README', 'README.txt', 'README.remarkup', 'README.md', 'README.rainbow'); }
}