[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/repository/controller/ -> PhabricatorRepositoryArcanistProjectEditController.php (source)

   1  <?php
   2  
   3  final class PhabricatorRepositoryArcanistProjectEditController
   4    extends PhabricatorRepositoryController {
   5  
   6    private $id;
   7  
   8    public function willProcessRequest(array $data) {
   9      $this->id = $data['id'];
  10    }
  11  
  12    public function processRequest() {
  13  
  14      $request = $this->getRequest();
  15      $user = $request->getUser();
  16  
  17      $project = id(new PhabricatorRepositoryArcanistProject())->load($this->id);
  18      if (!$project) {
  19        return new Aphront404Response();
  20      }
  21  
  22      $repositories = id(new PhabricatorRepositoryQuery())
  23        ->setViewer($user)
  24        ->execute();
  25      $repos = array(
  26        0 => 'None',
  27      );
  28      foreach ($repositories as $repository) {
  29        $callsign = $repository->getCallsign();
  30        $name = $repository->getname();
  31        $repos[$repository->getID()] = "r{$callsign} ({$name})";
  32      }
  33      // note "None" will still be first thanks to 'r' prefix
  34      asort($repos);
  35  
  36      if ($request->isFormPost()) {
  37  
  38        $indexed = $request->getStrList('symbolIndexLanguages');
  39        $indexed = array_map('strtolower', $indexed);
  40        $project->setSymbolIndexLanguages($indexed);
  41  
  42        $project->setSymbolIndexProjects($request->getArr('symbolIndexProjects'));
  43  
  44        $repo_id = $request->getInt('repository', 0);
  45        if (isset($repos[$repo_id])) {
  46          $project->setRepositoryID($repo_id);
  47          $project->save();
  48  
  49          return id(new AphrontRedirectResponse())
  50            ->setURI('/repository/');
  51        }
  52      }
  53  
  54      $langs = $project->getSymbolIndexLanguages();
  55      if ($langs) {
  56        $langs = implode(', ', $langs);
  57      } else {
  58        $langs = null;
  59      }
  60  
  61      if ($project->getSymbolIndexProjects()) {
  62        $uses = id(new PhabricatorHandleQuery())
  63          ->setViewer($user)
  64          ->withPHIDs($project->getSymbolIndexProjects())
  65          ->execute();
  66      } else {
  67        $uses = array();
  68      }
  69  
  70      $form = id(new AphrontFormView())
  71        ->setUser($user)
  72        ->appendChild(
  73          id(new AphrontFormStaticControl())
  74            ->setLabel('Name')
  75            ->setValue($project->getName()))
  76        ->appendChild(
  77          id(new AphrontFormStaticControl())
  78            ->setLabel('PHID')
  79            ->setValue($project->getPHID()))
  80        ->appendChild(
  81          id(new AphrontFormSelectControl())
  82            ->setLabel('Repository')
  83            ->setOptions($repos)
  84            ->setName('repository')
  85            ->setValue($project->getRepositoryID()))
  86        ->appendChild(
  87          id(new AphrontFormTextControl())
  88            ->setLabel('Indexed Languages')
  89            ->setName('symbolIndexLanguages')
  90            ->setCaption(pht(
  91              'Separate with commas, for example: %s',
  92              phutil_tag('tt', array(), 'php, py')))
  93            ->setValue($langs))
  94        ->appendChild(
  95          id(new AphrontFormTokenizerControl())
  96            ->setLabel('Uses Symbols From')
  97            ->setName('symbolIndexProjects')
  98            ->setDatasource(new DiffusionArcanistProjectDatasource())
  99            ->setValue($uses))
 100        ->appendChild(
 101          id(new AphrontFormSubmitControl())
 102            ->addCancelButton('/repository/')
 103            ->setValue('Save'));
 104  
 105      $panel = new AphrontPanelView();
 106      $panel->setWidth(AphrontPanelView::WIDTH_WIDE);
 107      $panel->setHeader('Edit Arcanist Project');
 108      $panel->appendChild($form);
 109  
 110      return $this->buildStandardPageResponse(
 111        $panel,
 112        array(
 113          'title' => 'Edit Project',
 114        ));
 115    }
 116  
 117  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1