diff --git a/public/assets/js/app.js b/public/assets/js/app.js
index 03fe6799..04293ff3 100644
--- a/public/assets/js/app.js
+++ b/public/assets/js/app.js
@@ -482,91 +482,6 @@ var PHPCensorConfirmDialog = Class.extend({
}
});
-/**
- * Used to initialise the project form:
- */
-function setupProjectForm() {
- $('.github-container').hide();
-
- $('#element-reference').change(function () {
- var el = $(this);
- var val = el.val();
- var type = $('#element-type').val();
- var acceptable = {
- 'github': {
- 'ssh': /git\@github\.com\:([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/,
- 'git': /git\:\/\/github.com\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/,
- 'http': /https\:\/\/github\.com\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)(\.git)?/
- },
- 'bitbucket': {
- 'ssh': /git\@bitbucket\.org\:([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/,
- 'http': /https\:\/\/[a-zA-Z0-9_\-]+\@bitbucket.org\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)\.git/,
- 'anon': /https\:\/\/bitbucket.org\/([a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+)(\.git)?/
- }
-
- };
-
- if (acceptable[type] !== undefined) {
- for (var i in acceptable[type]) {
- if (val.match(acceptable[type][i])) {
- el.val(val.replace(acceptable[type][i], '$1'));
- }
- }
- }
- });
-
- $('#element-type').change(function () {
- if ($(this).val() == 'github') {
- $('#loading').show();
-
- $.ajax({
- dataType: "json",
- url: window.APP_URL + 'project/ajax-github-repositories',
- success: function (data) {
- $('#loading').hide();
-
- if (data && data.repos) {
- $('#element-github').empty();
-
- for (var i in data.repos) {
- var name = data.repos[i];
- $('#element-github').append($('').text(name).val(name));
- }
-
- $('.github-container').slideDown();
- }
- },
- error: handleFailedAjax
- });
- } else {
- $('.github-container').slideUp();
- }
- $('#element-reference').trigger('change');
- });
-
- $('#element-github').change(function () {
- var val = $('#element-github').val();
-
- if (val != 'choose') {
- $('#element-type').val('github');
- $('#element-reference').val(val);
-
- $('label[for=element-reference]').hide();
- $('label[for=element-type]').hide();
- $('#element-reference').hide();
- $('#element-token').val(window.github_token);
- $('#element-title').val(val);
- } else {
- $('label[for=element-reference]').show();
- $('label[for=element-type]').show();
- $('#element-reference').show();
- $('#element-type').show();
- $('#element-reference').val('');
- $('#element-token').val('');
- }
- });
-}
-
var Lang = {
get: function () {
var args = Array.prototype.slice.call(arguments);
diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php
index 3d9a7d9b..3077658f 100644
--- a/src/Controller/ProjectController.php
+++ b/src/Controller/ProjectController.php
@@ -7,7 +7,6 @@ use PHPCensor\Form;
use JasonGrimes\Paginator;
use PHPCensor;
use PHPCensor\BuildFactory;
-use PHPCensor\Helper\Github;
use PHPCensor\Helper\Lang;
use PHPCensor\Helper\SshKey;
use PHPCensor\Service\BuildService;
@@ -375,7 +374,7 @@ class ProjectController extends WebController
$values['pubkey'] = $values['ssh_public_key'];
$values['environments'] = $project->getEnvironments();
- if ($values['type'] == 'gitlab') {
+ if (Project::TYPE_GITLAB === $values['type']) {
$accessInfo = $project->getAccessInformation();
$reference = $accessInfo["user"] . '@' . $accessInfo["domain"] . ':' . $accessInfo["port"] . '/' . ltrim($project->getReference(), '/') . ".git";
$values['reference'] = $reference;
@@ -453,14 +452,6 @@ class ProjectController extends WebController
$field->setClass('form-control')->setContainerClass('form-group');
$form->addField($field);
- $container = new Form\ControlGroup('github-container');
- $container->setClass('github-container');
-
- $field = Form\Element\Select::create('github', Lang::get('choose_github'), false);
- $field->setClass('form-control')->setContainerClass('form-group');
- $container->addField($field);
- $form->addField($container);
-
$field = Form\Element\Text::create('reference', Lang::get('repo_name'), true);
$field->setValidator($this->getReferenceValidator($values));
$field->setClass('form-control')->setContainerClass('form-group');
@@ -547,27 +538,27 @@ class ProjectController extends WebController
$type = $values['type'];
$validators = [
- 'hg' => [
+ Project::TYPE_HG => [
'regex' => '/^(ssh|https?):\/\//',
'message' => Lang::get('error_hg')
],
- 'git' => [
+ Project::TYPE_GIT => [
'regex' => '/^(git|https?):\/\//',
'message' => Lang::get('error_git')
],
- 'gitlab' => [
- 'regex' => '`^(.*)@(.*):(.*)/(.*)\.git`',
+ Project::TYPE_GITLAB => [
+ 'regex' => '/^(git|https?):\/\//',
'message' => Lang::get('error_gitlab')
],
- 'github' => [
- 'regex' => '/^[a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-\.]+$/',
+ Project::TYPE_GITHUB => [
+ 'regex' => '/^(git|https?):\/\//',
'message' => Lang::get('error_github')
],
- 'bitbucket' => [
+ Project::TYPE_BITBUCKET => [
'regex' => '/^[a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-\.]+$/',
'message' => Lang::get('error_bitbucket')
],
- 'bitbucket-hg' => [
+ Project::TYPE_BITBUCKET_HG => [
'regex' => '/^[a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-\.]+$/',
'message' => Lang::get('error_bitbucket')
],
@@ -582,17 +573,4 @@ class ProjectController extends WebController
return true;
};
}
-
- /**
- * Get an array of repositories from Github's API.
- */
- public function ajaxGithubRepositories()
- {
- $github = new Github();
-
- $response = new PHPCensor\Http\Response\JsonResponse();
- $response->setContent($github->getRepositories());
-
- return $response;
- }
}
diff --git a/src/Model/Build/GithubBuild.php b/src/Model/Build/GithubBuild.php
index 778d11d9..0041845b 100644
--- a/src/Model/Build/GithubBuild.php
+++ b/src/Model/Build/GithubBuild.php
@@ -17,6 +17,19 @@ use PHPCensor\Model\BuildError;
*/
class GithubBuild extends GitBuild
{
+ /**
+ * @return string
+ */
+ protected function getDomain()
+ {
+ $domain = $this->getProject()->getAccessInformation('domain');
+ if (!$domain) {
+ $domain = 'github.com';
+ }
+
+ return $domain;
+ }
+
/**
* Get link to commit from another source (i.e. Github)
*
@@ -24,7 +37,7 @@ class GithubBuild extends GitBuild
*/
public function getCommitLink()
{
- return 'https://github.com/' . $this->getProject()->getReference() . '/commit/' . $this->getCommitId();
+ return '//' . $this->getDomain() . '/' . $this->getProject()->getReference() . '/commit/' . $this->getCommitId();
}
/**
@@ -34,7 +47,7 @@ class GithubBuild extends GitBuild
*/
public function getBranchLink()
{
- return 'https://github.com/' . $this->getProject()->getReference() . '/tree/' . $this->getBranch();
+ return '//' . $this->getDomain() . '/' . $this->getProject()->getReference() . '/tree/' . $this->getBranch();
}
/**
@@ -45,7 +58,7 @@ class GithubBuild extends GitBuild
$remoteBranch = $this->getExtra('remote_branch');
$remoteReference = $this->getExtra('remote_reference');
- return 'https://github.com/' . $remoteReference . '/tree/' . $remoteBranch;
+ return '//' . $this->getDomain() . '/' . $remoteReference . '/tree/' . $remoteBranch;
}
/**
@@ -55,7 +68,7 @@ class GithubBuild extends GitBuild
*/
public function getTagLink()
{
- return 'https://github.com/' . $this->getProject()->getReference() . '/tree/' . $this->getTag();
+ return '//' . $this->getDomain() . '/' . $this->getProject()->getReference() . '/tree/' . $this->getTag();
}
/**
@@ -112,7 +125,7 @@ class GithubBuild extends GitBuild
$url = '/repos/' . $project->getReference() . '/statuses/' . $this->getCommitId();
$client = new Client([
- 'base_uri' => 'https://api.github.com',
+ 'base_uri' => 'https://api.' . $this->getDomain(),
'http_errors' => false,
]);
$response = $client->post($url, [
@@ -143,9 +156,15 @@ class GithubBuild extends GitBuild
$key = trim($this->getProject()->getSshPrivateKey());
if (!empty($key)) {
- return 'git@github.com:' . $this->getProject()->getReference() . '.git';
+ $port = $this->getProject()->getAccessInformation('port');
+ $url = 'git@' . $this->getDomain() . ':';
+ if (!empty($port)) {
+ $url .= $port . '/';
+ }
+
+ return $url . $this->getProject()->getReference() . '.git';
} else {
- return 'https://github.com/' . $this->getProject()->getReference() . '.git';
+ return 'https://' . $this->getDomain() . '/' . $this->getProject()->getReference() . '.git';
}
}
@@ -156,18 +175,21 @@ class GithubBuild extends GitBuild
*/
public function getCommitMessage()
{
- $rtn = parent::getCommitMessage();
-
+ $message = parent::getCommitMessage();
$project = $this->getProject();
if (!is_null($project)) {
$reference = $project->getReference();
- $commitLink = '#$1';
- $rtn = preg_replace('/\#([0-9]+)/', $commitLink, $rtn);
- $rtn = preg_replace('/\@([a-zA-Z0-9_]+)/', '@$1', $rtn);
+ $commitLink = '#$1';
+ $message = preg_replace('/\#([0-9]+)/', $commitLink, $message);
+ $message = preg_replace(
+ '/\@([a-zA-Z0-9_]+)/',
+ '@$1',
+ $message
+ );
}
- return $rtn;
+ return $message;
}
/**
@@ -178,12 +200,11 @@ class GithubBuild extends GitBuild
public function getFileLinkTemplate()
{
$reference = $this->getProject()->getReference();
-
if (Build::SOURCE_WEBHOOK_PULL_REQUEST === $this->getSource()) {
$reference = $this->getExtra('remote_reference');
}
- $link = 'https://github.com/' . $reference . '/';
+ $link = '//' . $this->getDomain() . '/' . $reference . '/';
$link .= 'blob/' . $this->getCommitId() . '/';
$link .= '{FILE}';
$link .= '#L{LINE}-L{LINE_END}';
diff --git a/src/Model/Build/GitlabBuild.php b/src/Model/Build/GitlabBuild.php
index 56252e75..f147102e 100644
--- a/src/Model/Build/GitlabBuild.php
+++ b/src/Model/Build/GitlabBuild.php
@@ -16,7 +16,7 @@ class GitlabBuild extends GitBuild
public function getCommitLink()
{
$domain = $this->getProject()->getAccessInformation("domain");
- return 'http://' . $domain . '/' . $this->getProject()->getReference() . '/commit/' . $this->getCommitId();
+ return '//' . $domain . '/' . $this->getProject()->getReference() . '/commit/' . $this->getCommitId();
}
/**
@@ -25,7 +25,7 @@ class GitlabBuild extends GitBuild
public function getBranchLink()
{
$domain = $this->getProject()->getAccessInformation("domain");
- return 'http://' . $domain . '/' . $this->getProject()->getReference() . '/tree/' . $this->getBranch();
+ return '//' . $domain . '/' . $this->getProject()->getReference() . '/tree/' . $this->getBranch();
}
/**
@@ -34,7 +34,7 @@ class GitlabBuild extends GitBuild
public function getFileLinkTemplate()
{
return sprintf(
- 'http://%s/%s/blob/%s/{FILE}#L{LINE}',
+ '//%s/%s/blob/%s/{FILE}#L{LINE}',
$this->getProject()->getAccessInformation("domain"),
$this->getProject()->getReference(),
$this->getCommitId()
diff --git a/src/Model/Project.php b/src/Model/Project.php
index e81d29fa..f2cf2477 100644
--- a/src/Model/Project.php
+++ b/src/Model/Project.php
@@ -102,18 +102,20 @@ class Project extends BaseProject
public function getIcon()
{
switch ($this->getType()) {
- case 'github':
+ case Project::TYPE_GITHUB:
$icon = 'github';
break;
- case 'bitbucket':
- case 'bitbucket-hg':
+ case Project::TYPE_BITBUCKET:
+ case Project::TYPE_BITBUCKET_HG:
$icon = 'bitbucket';
break;
- case 'git':
- case 'gitlab':
- case 'gogs':
+ case Project::TYPE_GIT:
+ case Project::TYPE_GITLAB:
+ case Project::TYPE_GOGS:
+ case Project::TYPE_HG:
+ case Project::TYPE_SVN:
default:
$icon = 'code-fork';
break;
diff --git a/src/Service/ProjectService.php b/src/Service/ProjectService.php
index 29cee64a..37274d11 100644
--- a/src/Service/ProjectService.php
+++ b/src/Service/ProjectService.php
@@ -99,8 +99,7 @@ class ProjectService
$project->setGroupId($options['group']);
}
- // Allow certain project types to set access information:
- $this->processAccessInformation($project);
+ $project = $this->processAccessInformation($project);
// Save and return the project:
/** @var Project $project */
@@ -138,27 +137,32 @@ class ProjectService
/**
* In circumstances where it is necessary, populate access information based on other project properties.
*
- * @see ProjectService::createProject()
- *
* @param Project $project
+ *
+ * @return Project
*/
- protected function processAccessInformation(Project &$project)
+ protected function processAccessInformation(Project $project)
{
$matches = [];
$reference = $project->getReference();
- if ($project->getType() == 'gitlab') {
+ if (in_array($project->getType(), [
+ Project::TYPE_GITHUB,
+ Project::TYPE_GITLAB
+ ], true)) {
$info = [];
if (preg_match('`^(.+)@(.+):([0-9]*)\/?(.+)\.git`', $reference, $matches)) {
- $info['user'] = $matches[1];
+ $info['user'] = $matches[1];
$info['domain'] = $matches[2];
- $info['port'] = $matches[3];
+ $info['port'] = $matches[3];
$project->setReference($matches[4]);
}
$project->setAccessInformation($info);
}
+
+ return $project;
}
}
diff --git a/src/View/Project/view.phtml b/src/View/Project/view.phtml
index dd7b4f34..e82d3bb1 100644
--- a/src/View/Project/view.phtml
+++ b/src/View/Project/view.phtml
@@ -5,6 +5,7 @@
*/
use PHPCensor\Helper\Lang;
+use PHPCensor\Model\Project;
?>