Summary: This commit doesn't change license of any file. It just makes the license implicit (inherited from LICENSE file in the root directory). We are removing the headers for these reasons: - It wastes space in editors, less code is visible in editor upon opening a file. - It brings noise to diff of the first change of any file every year. - It confuses Git file copy detection when creating small files. - We don't have an explicit license header in other files (JS, CSS, images, documentation). - Using license header in every file is not obligatory: http://www.apache.org/dev/apply-license.html#new. This change is approved by Alma Chao (Lead Open Source and IP Counsel at Facebook). Test Plan: Verified that the license survived only in LICENSE file and that it didn't modify externals. Reviewers: epriestley, davidrecordon Reviewed By: epriestley CC: aran, Korvin Maniphest Tasks: T2035 Differential Revision: https://secure.phabricator.com/D3886
121 lines
3.5 KiB
PHP
121 lines
3.5 KiB
PHP
<?php
|
|
|
|
final class PhabricatorRepositoryCreateController
|
|
extends PhabricatorRepositoryController {
|
|
|
|
public function processRequest() {
|
|
|
|
|
|
$request = $this->getRequest();
|
|
$user = $request->getUser();
|
|
|
|
$e_name = true;
|
|
$e_callsign = true;
|
|
|
|
$repository = new PhabricatorRepository();
|
|
|
|
$type_map = PhabricatorRepositoryType::getAllRepositoryTypes();
|
|
$errors = array();
|
|
|
|
if ($request->isFormPost()) {
|
|
|
|
$repository->setName($request->getStr('name'));
|
|
$repository->setCallsign($request->getStr('callsign'));
|
|
$repository->setVersionControlSystem($request->getStr('type'));
|
|
|
|
if (!strlen($repository->getName())) {
|
|
$e_name = 'Required';
|
|
$errors[] = 'Repository name is required.';
|
|
} else {
|
|
$e_name = null;
|
|
}
|
|
|
|
if (!strlen($repository->getCallsign())) {
|
|
$e_callsign = 'Required';
|
|
$errors[] = 'Callsign is required.';
|
|
} else if (!preg_match('/^[A-Z]+$/', $repository->getCallsign())) {
|
|
$e_callsign = 'Invalid';
|
|
$errors[] = 'Callsign must be ALL UPPERCASE LETTERS.';
|
|
} else {
|
|
$e_callsign = null;
|
|
}
|
|
|
|
if (empty($type_map[$repository->getVersionControlSystem()])) {
|
|
$errors[] = 'Invalid version control system.';
|
|
}
|
|
|
|
if (!$errors) {
|
|
try {
|
|
$repository->save();
|
|
|
|
return id(new AphrontRedirectResponse())
|
|
->setURI('/repository/edit/'.$repository->getID().'/');
|
|
|
|
} catch (AphrontQueryDuplicateKeyException $ex) {
|
|
$e_callsign = 'Duplicate';
|
|
$errors[] = 'Callsign must be unique. Another repository already '.
|
|
'uses that callsign.';
|
|
}
|
|
}
|
|
}
|
|
|
|
$error_view = null;
|
|
if ($errors) {
|
|
$error_view = new AphrontErrorView();
|
|
$error_view->setErrors($errors);
|
|
$error_view->setTitle('Form Errors');
|
|
}
|
|
|
|
|
|
$form = new AphrontFormView();
|
|
$form
|
|
->setUser($user)
|
|
->setAction('/repository/create/')
|
|
->appendChild(
|
|
id(new AphrontFormTextControl())
|
|
->setLabel('Name')
|
|
->setName('name')
|
|
->setValue($repository->getName())
|
|
->setError($e_name)
|
|
->setCaption('Human-readable repository name.'))
|
|
->appendChild(
|
|
'<p class="aphront-form-instructions">Select a "Callsign" — a '.
|
|
'short, uppercase string to identify revisions in this repository. If '.
|
|
'you choose "EX", revisions in this repository will be identified '.
|
|
'with the prefix "rEX".</p>')
|
|
->appendChild(
|
|
id(new AphrontFormTextControl())
|
|
->setLabel('Callsign')
|
|
->setName('callsign')
|
|
->setValue($repository->getCallsign())
|
|
->setError($e_callsign)
|
|
->setCaption(
|
|
'Short, UPPERCASE identifier. Once set, it can not be changed.'))
|
|
->appendChild(
|
|
id(new AphrontFormSelectControl())
|
|
->setLabel('Type')
|
|
->setName('type')
|
|
->setOptions($type_map)
|
|
->setValue($repository->getVersionControlSystem()))
|
|
->appendChild(
|
|
id(new AphrontFormSubmitControl())
|
|
->setValue('Create Repository')
|
|
->addCancelButton('/repository/'));
|
|
|
|
$panel = new AphrontPanelView();
|
|
$panel->setHeader('Create Repository');
|
|
$panel->appendChild($form);
|
|
$panel->setWidth(AphrontPanelView::WIDTH_FORM);
|
|
|
|
return $this->buildStandardPageResponse(
|
|
array(
|
|
$error_view,
|
|
$panel,
|
|
),
|
|
array(
|
|
'title' => 'Create Repository',
|
|
));
|
|
}
|
|
|
|
}
|