@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
at recaptime-dev/main 97 lines 2.8 kB view raw
1<?php 2 3final class DiffusionRepositoryEditController 4 extends DiffusionRepositoryManageController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $engine = id(new DiffusionRepositoryEditEngine()) 8 ->setController($this); 9 10 $id = $request->getURIData('id'); 11 if (!$id) { 12 $this->requireApplicationCapability( 13 DiffusionCreateRepositoriesCapability::CAPABILITY); 14 15 $vcs = $request->getStr('vcs'); 16 $vcs_types = PhabricatorRepositoryType::getRepositoryTypeMap(); 17 if (!$vcs || empty($vcs_types[$vcs])) { 18 return $this->buildVCSTypeResponse(); 19 } 20 21 $engine 22 ->addContextParameter('vcs', $vcs) 23 ->setVersionControlSystem($vcs); 24 } 25 26 return $engine->buildResponse(); 27 } 28 29 private function buildVCSTypeResponse() { 30 $vcs_types = PhabricatorRepositoryType::getRepositoryTypeMap(); 31 32 $request = $this->getRequest(); 33 $viewer = $this->getViewer(); 34 35 $crumbs = $this->buildApplicationCrumbs(); 36 $crumbs->addTextCrumb(pht('Create Repository')); 37 $crumbs->setBorder(true); 38 39 $title = pht('Choose Repository Type'); 40 41 $layout = id(new AphrontMultiColumnView()) 42 ->setFluidLayout(true); 43 44 $create_uri = $request->getRequestURI(); 45 46 foreach ($vcs_types as $vcs_key => $vcs_type) { 47 $image = idx($vcs_type, 'image'); 48 $image = PhabricatorFile::loadBuiltin($viewer, $image); 49 $action = id(new PHUIActionPanelView()) 50 ->setImage($image->getBestURI()) 51 ->setHeader(idx($vcs_type, 'create.header')) 52 ->setHref($create_uri->alter('vcs', $vcs_key)) 53 ->setSubheader(idx($vcs_type, 'create.subheader')); 54 55 $layout->addColumn($action); 56 } 57 58 $hints = id(new AphrontMultiColumnView()) 59 ->setFluidLayout(true); 60 61 $observe_href = PhabricatorEnv::getDoclink( 62 'Diffusion User Guide: Existing Repositories'); 63 64 require_celerity_resource('diffusion-css'); 65 66 $image = PhabricatorFile::loadBuiltin($viewer, 'repo/repo.png'); 67 $hints->addColumn( 68 id(new PHUIActionPanelView()) 69 ->setImage($image->getBestURI()) 70 ->setHeader(pht('Import or Observe an Existing Repository')) 71 ->setHref($observe_href) 72 ->setSubheader( 73 pht( 74 'Review the documentation describing how to import or observe an '. 75 'existing repository.'))); 76 77 $layout = id(new PHUIBoxView()) 78 ->addClass('diffusion-create-repo') 79 ->appendChild($layout); 80 81 $launcher_view = id(new PHUILauncherView()) 82 ->appendChild( 83 array( 84 $layout, 85 $hints, 86 )); 87 88 $view = id(new PHUITwoColumnView()) 89 ->setFooter($launcher_view); 90 91 return $this->newPage() 92 ->setTitle($title) 93 ->setCrumbs($crumbs) 94 ->appendChild($view); 95 } 96 97}