[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class DiffusionRepositoryEditSubversionController 4 extends DiffusionRepositoryEditController { 5 6 public function processRequest() { 7 $request = $this->getRequest(); 8 $viewer = $request->getUser(); 9 $drequest = $this->diffusionRequest; 10 $repository = $drequest->getRepository(); 11 12 $repository = id(new PhabricatorRepositoryQuery()) 13 ->setViewer($viewer) 14 ->requireCapabilities( 15 array( 16 PhabricatorPolicyCapability::CAN_VIEW, 17 PhabricatorPolicyCapability::CAN_EDIT, 18 )) 19 ->withIDs(array($repository->getID())) 20 ->executeOne(); 21 22 if (!$repository) { 23 return new Aphront404Response(); 24 } 25 26 switch ($repository->getVersionControlSystem()) { 27 case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT: 28 case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL: 29 throw new Exception( 30 pht('Git and Mercurial do not support editing SVN properties!')); 31 case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: 32 break; 33 default: 34 throw new Exception( 35 pht('Repository has unknown version control system!')); 36 } 37 38 $edit_uri = $this->getRepositoryControllerURI($repository, 'edit/'); 39 40 $v_subpath = $repository->getHumanReadableDetail('svn-subpath'); 41 $v_uuid = $repository->getUUID(); 42 43 if ($request->isFormPost()) { 44 $v_subpath = $request->getStr('subpath'); 45 $v_uuid = $request->getStr('uuid'); 46 47 $xactions = array(); 48 $template = id(new PhabricatorRepositoryTransaction()); 49 50 $type_subpath = PhabricatorRepositoryTransaction::TYPE_SVN_SUBPATH; 51 $type_uuid = PhabricatorRepositoryTransaction::TYPE_UUID; 52 53 $xactions[] = id(clone $template) 54 ->setTransactionType($type_subpath) 55 ->setNewValue($v_subpath); 56 57 $xactions[] = id(clone $template) 58 ->setTransactionType($type_uuid) 59 ->setNewValue($v_uuid); 60 61 id(new PhabricatorRepositoryEditor()) 62 ->setContinueOnNoEffect(true) 63 ->setContentSourceFromRequest($request) 64 ->setActor($viewer) 65 ->applyTransactions($repository, $xactions); 66 67 return id(new AphrontRedirectResponse())->setURI($edit_uri); 68 } 69 70 $content = array(); 71 72 $crumbs = $this->buildApplicationCrumbs(); 73 $crumbs->addTextCrumb(pht('Edit Subversion Info')); 74 75 $title = pht('Edit Subversion Info (%s)', $repository->getName()); 76 77 $policies = id(new PhabricatorPolicyQuery()) 78 ->setViewer($viewer) 79 ->setObject($repository) 80 ->execute(); 81 82 $form = id(new AphrontFormView()) 83 ->setUser($viewer) 84 ->appendRemarkupInstructions( 85 pht( 86 "You can set the **Repository UUID**, which will help Phabriactor ". 87 "provide better context in some cases. You can find the UUID of a ". 88 "repository by running `svn info`.". 89 "\n\n". 90 "If you want to import only part of a repository, like `trunk/`, ". 91 "you can set a path in **Import Only**. Phabricator will ignore ". 92 "commits which do not affect this path.")) 93 ->appendChild( 94 id(new AphrontFormTextControl()) 95 ->setName('uuid') 96 ->setLabel(pht('Repository UUID')) 97 ->setValue($v_uuid)) 98 ->appendChild( 99 id(new AphrontFormTextControl()) 100 ->setName('subpath') 101 ->setLabel(pht('Import Only')) 102 ->setValue($v_subpath)) 103 ->appendChild( 104 id(new AphrontFormSubmitControl()) 105 ->setValue(pht('Save Subversion Info')) 106 ->addCancelButton($edit_uri)); 107 108 $form_box = id(new PHUIObjectBoxView()) 109 ->setHeaderText($title) 110 ->setForm($form); 111 112 return $this->buildApplicationPage( 113 array( 114 $crumbs, 115 $form_box, 116 ), 117 array( 118 'title' => $title, 119 )); 120 } 121 122 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |