Fixing PHPCI so that it'll work in a subdirectory.

This commit is contained in:
Dan Cryer 2013-05-17 17:34:31 +01:00
parent b9415316d4
commit f256db237b
14 changed files with 66 additions and 53 deletions

View file

@ -18,6 +18,15 @@ use b8\Registry;
*/ */
class Application extends b8\Application class Application extends b8\Application
{ {
public function __construct()
{
if (isset($_SERVER['REDIRECT_PATH_INFO'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['REDIRECT_PATH_INFO'];
}
return parent::__construct();
}
/** /**
* Handle an incoming web request. * Handle an incoming web request.
*/ */

View file

@ -81,7 +81,7 @@ class BuildController extends b8\Controller
$build = $this->_buildStore->save($build); $build = $this->_buildStore->save($build);
header('Location: /build/view/' . $build->getId()); header('Location: '.PHPCI_URL.'build/view/' . $build->getId());
} }
/** /**
@ -96,7 +96,7 @@ class BuildController extends b8\Controller
$build = $this->_buildStore->getById($buildId); $build = $this->_buildStore->getById($buildId);
$this->_buildStore->delete($build); $this->_buildStore->delete($build);
header('Location: /project/view/' . $build->getProjectId()); header('Location: '.PHPCI_URL.'project/view/' . $build->getProjectId());
} }
/** /**

View file

@ -61,7 +61,7 @@ class ProjectController extends b8\Controller
$build = $this->_buildStore->save($build); $build = $this->_buildStore->save($build);
header('Location: /build/view/' . $build->getId()); header('Location: '.PHPCI_URL.'build/view/' . $build->getId());
} }
/** /**
@ -76,7 +76,7 @@ class ProjectController extends b8\Controller
$project = $this->_projectStore->getById($projectId); $project = $this->_projectStore->getById($projectId);
$this->_projectStore->delete($project); $this->_projectStore->delete($project);
header('Location: /'); header('Location: '.PHPCI_URL);
} }
/** /**
@ -164,7 +164,7 @@ class ProjectController extends b8\Controller
$project = $this->_projectStore->save($project); $project = $this->_projectStore->save($project);
header('Location: /project/view/' . $project->getId()); header('Location: '.PHPCI_URL.'project/view/' . $project->getId());
die; die;
} }
@ -187,7 +187,7 @@ class ProjectController extends b8\Controller
if ($resp['success']) { if ($resp['success']) {
parse_str($resp['body'], $resp); parse_str($resp['body'], $resp);
$_SESSION['github_token'] = $resp['access_token']; $_SESSION['github_token'] = $resp['access_token'];
header('Location: /project/add'); header('Location: '.PHPCI_URL.'project/add');
die; die;
} }
} }
@ -230,7 +230,7 @@ class ProjectController extends b8\Controller
$project->setValues($values); $project->setValues($values);
$project = $this->_projectStore->save($project); $project = $this->_projectStore->save($project);
header('Location: /project/view/' . $project->getId()); header('Location: '.PHPCI_URL.'project/view/' . $project->getId());
die; die;
} }
@ -241,7 +241,7 @@ class ProjectController extends b8\Controller
{ {
$form = new Form(); $form = new Form();
$form->setMethod('POST'); $form->setMethod('POST');
$form->setAction('/project/' . $type); $form->setAction(PHPCI_URL.'project/' . $type);
$form->addField(new Form\Element\Csrf('csrf')); $form->addField(new Form\Element\Csrf('csrf'));
$form->addField(new Form\Element\Hidden('token')); $form->addField(new Form\Element\Hidden('token'));
$form->addField(new Form\Element\Hidden('pubkey')); $form->addField(new Form\Element\Hidden('pubkey'));

View file

@ -34,7 +34,7 @@ class SessionController extends b8\Controller
if ($user && password_verify($this->getParam('password', ''), $user->getHash())) { if ($user && password_verify($this->getParam('password', ''), $user->getHash())) {
$_SESSION['user_id'] = $user->getId(); $_SESSION['user_id'] = $user->getId();
header('Location: /'); header('Location: ' . PHPCI_URL);
die; die;
} }
} }
@ -72,7 +72,7 @@ class SessionController extends b8\Controller
{ {
$_SESSION = array(); $_SESSION = array();
session_destroy(); session_destroy();
header('Location: /'); header('Location: ' . PHPCI_URL);
die; die;
} }
} }

View file

@ -76,7 +76,7 @@ class UserController extends b8\Controller
$user = $this->_userStore->save($user); $user = $this->_userStore->save($user);
header('Location: /user'); header('Location: '.PHPCI_URL.'user');
die; die;
} }
@ -120,7 +120,7 @@ class UserController extends b8\Controller
$user->setValues($values); $user->setValues($values);
$user = $this->_userStore->save($user); $user = $this->_userStore->save($user);
header('Location: /user'); header('Location: '.PHPCI_URL.'user');
die; die;
} }
@ -179,7 +179,7 @@ class UserController extends b8\Controller
$user = $this->_userStore->getById($userId); $user = $this->_userStore->getById($userId);
$this->_userStore->delete($user); $this->_userStore->delete($user);
header('Location: /user'); header('Location: '.PHPCI_URL.'user');
die; die;
} }
} }

View file

@ -7,13 +7,13 @@
<div class="span3"> <div class="span3">
<div class="well" style="padding: 8px 0"> <div class="well" style="padding: 8px 0">
<ul class="nav nav-list"> <ul class="nav nav-list">
<li><a href="/"><i class="icon-home"></i> Dashboard</a></li> <li><a href="<?= PHPCI_URL ?>"><i class="icon-home"></i> Dashboard</a></li>
<li><a href="/project/view/<?php print $build->getProject()->getId(); ?>"><i class="icon-folder-open"></i> <?php print $build->getProject()->getTitle(); ?></a></li> <li><a href="<?= PHPCI_URL ?>project/view/<?php print $build->getProject()->getId(); ?>"><i class="icon-folder-open"></i> <?php print $build->getProject()->getTitle(); ?></a></li>
<li class="divider"></li> <li class="divider"></li>
<li class="nav-header">Options</li> <li class="nav-header">Options</li>
<li><a href="/build/rebuild/<?php print $build->getId(); ?>"><i class="icon-cog"></i> Rebuild</a></li> <li><a href="<?= PHPCI_URL ?>build/rebuild/<?php print $build->getId(); ?>"><i class="icon-cog"></i> Rebuild</a></li>
<?php if($this->User()->getIsAdmin()): ?> <?php if($this->User()->getIsAdmin()): ?>
<li><a href="javascript:confirmDelete('/build/delete/<?php print $build->getId(); ?>')"><i class="icon-trash"></i> Delete Build</a></li> <li><a href="javascript:confirmDelete('<?= PHPCI_URL ?>build/delete/<?php print $build->getId(); ?>')"><i class="icon-trash"></i> Delete Build</a></li>
<?php endif; ?> <?php endif; ?>
</ul> </ul>
</div> </div>
@ -69,7 +69,7 @@
<?php if($build->getStatus() == 0 || $build->getStatus() == 1 || true): ?> <?php if($build->getStatus() == 0 || $build->getStatus() == 1 || true): ?>
setInterval(function() setInterval(function()
{ {
$.getJSON('/build/data/<?php print $build->getId(); ?>', updateBuildView); $.getJSON('<?= PHPCI_URL ?>build/data/<?php print $build->getId(); ?>', updateBuildView);
}, 10000); }, 10000);
<?php endif; ?> <?php endif; ?>

View file

@ -31,20 +31,20 @@ switch($build->getStatus())
} }
?> ?>
<tr class="<?php print $cls; ?>"> <tr class="<?php print $cls; ?>">
<td><a href="/build/view/<?php print $build->getId(); ?>">#<?php print str_pad($build->getId(), 6, '0', STR_PAD_LEFT); ?></a></td> <td><a href="<?= PHPCI_URL ?>build/view/<?php print $build->getId(); ?>">#<?php print str_pad($build->getId(), 6, '0', STR_PAD_LEFT); ?></a></td>
<td><a href="/project/view/<?php print $build->getProjectId(); ?>"><?php print $build->getProject()->getTitle(); ?></a></td> <td><a href="<?= PHPCI_URL ?>project/view/<?php print $build->getProjectId(); ?>"><?php print $build->getProject()->getTitle(); ?></a></td>
<td><a href="<?php print $build->getCommitLink(); ?>"><?php print $build->getCommitId(); ?></a></td> <td><a href="<?php print $build->getCommitLink(); ?>"><?php print $build->getCommitId(); ?></a></td>
<td><a href="<?php print $build->getBranchLink(); ?>"><?php print $build->getBranch(); ?></a></td> <td><a href="<?php print $build->getBranchLink(); ?>"><?php print $build->getBranch(); ?></a></td>
<td><?php print $status; ?></td> <td><?php print $status; ?></td>
<td> <td>
<div class="btn-group"> <div class="btn-group">
<a class="btn" href="/build/view/<?php print $build->getId(); ?>">View</a> <a class="btn" href="<?= PHPCI_URL ?>build/view/<?php print $build->getId(); ?>">View</a>
<?php if($this->User()->getIsAdmin()): ?> <?php if($this->User()->getIsAdmin()): ?>
<button class="btn dropdown-toggle" data-toggle="dropdown"> <button class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span> <span class="caret"></span>
</button> </button>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="javascript:confirmDelete('/build/delete/<?php print $build->getId(); ?>');">Delete Build</a></li> <li><a href="javascript:confirmDelete('<?= PHPCI_URL ?>build/delete/<?php print $build->getId(); ?>');">Delete Build</a></li>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</div> </div>

View file

@ -5,8 +5,8 @@
<div class="span3"> <div class="span3">
<div class="well" style="padding: 8px 0"> <div class="well" style="padding: 8px 0">
<ul class="nav nav-list"> <ul class="nav nav-list">
<li><a href="/"><i class="icon-home"></i> Dashboard</a></li> <li><a href="<?= PHPCI_URL ?>"><i class="icon-home"></i> Dashboard</a></li>
<li><a href="/user"><i class="icon-user"></i> Users</a></li> <li><a href="<?= PHPCI_URL ?>user"><i class="icon-user"></i> Users</a></li>
<li class="divider"></li> <li class="divider"></li>
<li class="nav-header">Projects</li> <li class="nav-header">Projects</li>
@ -34,7 +34,7 @@
} }
} }
?> ?>
<li><a href="/project/view/<?php print $project->getId(); ?>"><i class="<?= $status; ?>"></i> <?php print $project->getTitle(); ?></a></li> <li><a href="<?= PHPCI_URL ?>project/view/<?php print $project->getId(); ?>"><i class="<?= $status; ?>"></i> <?php print $project->getTitle(); ?></a></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
</div> </div>
@ -61,6 +61,6 @@
<script> <script>
setInterval(function() setInterval(function()
{ {
$('#latest-builds').load('/index/latest'); $('#latest-builds').load('<?= PHPCI_URL ?>index/latest');
}, 10000); }, 10000);
</script> </script>

View file

@ -7,24 +7,24 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href='http://fonts.googleapis.com/css?family=Roboto:400,100,300,500,700,900,300italic' rel='stylesheet' type='text/css'> <link href='http://fonts.googleapis.com/css?family=Roboto:400,100,300,500,700,900,300italic' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="/assets/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="<?= PHPCI_URL ?>assets/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="/assets/css/phpci.css"> <link rel="stylesheet" type="text/css" href="<?= PHPCI_URL ?>assets/css/phpci.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="/assets/js/bootstrap.min.js"></script> <script src="<?= PHPCI_URL ?>assets/js/bootstrap.min.js"></script>
<script src="/assets/js/phpci.js"></script> <script src="<?= PHPCI_URL ?>assets/js/phpci.js"></script>
</head> </head>
<body> <body>
<div class="navbar navbar-fixed-top"> <div class="navbar navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="brand" href="/">PHPCI <span class="badge badge-important" style="position: relative; top: -3px; margin-left: 10px">1.0 Alpha</span></a> <a class="brand" href="<?= PHPCI_URL ?>">PHPCI <span class="badge badge-important" style="position: relative; top: -3px; margin-left: 10px">1.0 Alpha</span></a>
<ul class="nav pull-right"> <ul class="nav pull-right">
<li><a href="/session/logout">Log out</a></li> <li><a href="<?= PHPCI_URL ?>session/logout">Log out</a></li>
</ul> </ul>
<?php if($this->User()->getIsAdmin()): ?> <?php if($this->User()->getIsAdmin()): ?>
<a class="pull-right btn" href="/project/add">Add Project</a> <a class="pull-right btn" href="<?= PHPCI_URL ?>project/add">Add Project</a>
<?php endif; ?> <?php endif; ?>
</div> </div>

View file

@ -5,11 +5,9 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="/assets/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="<?= PHPCI_URL ?>assets/css/bootstrap.min.css">
<!-- link rel="stylesheet" type="text/css" href="/assets/css/cms.css" -->
<script src="http://code.jquery.com/jquery-1.8.1.min.js"></script> <script src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
<script src="/assets/js/bootstrap.min.js"></script> <script src="<?= PHPCI_URL ?>assets/js/bootstrap.min.js"></script>
<style type="text/css"> <style type="text/css">

View file

@ -6,15 +6,15 @@
<div class="span3"> <div class="span3">
<div class="well" style="padding: 8px 0"> <div class="well" style="padding: 8px 0">
<ul class="nav nav-list"> <ul class="nav nav-list">
<li><a href="/"><i class="icon-home"></i> Dashboard</a></li> <li><a href="<?= PHPCI_URL ?>"><i class="icon-home"></i> Dashboard</a></li>
<li><a href="/project/view/<?php print $project->getId(); ?>"><i class="icon-folder-open"></i> <?php print $project->getTitle(); ?></a></li> <li><a href="<?= PHPCI_URL ?>project/view/<?php print $project->getId(); ?>"><i class="icon-folder-open"></i> <?php print $project->getTitle(); ?></a></li>
<li class="divider"></li> <li class="divider"></li>
<li class="nav-header">Options</li> <li class="nav-header">Options</li>
<li><a href="/project/build/<?php print $project->getId(); ?>"><i class="icon-cog"></i> Build Now</a></li> <li><a href="<?= PHPCI_URL ?>project/build/<?php print $project->getId(); ?>"><i class="icon-cog"></i> Build Now</a></li>
<?php if($this->User()->getIsAdmin()): ?> <?php if($this->User()->getIsAdmin()): ?>
<li><a href="/project/edit/<?php print $project->getId(); ?>"><i class="icon-edit"></i> Edit Project</a></li> <li><a href="<?= PHPCI_URL ?>project/edit/<?php print $project->getId(); ?>"><i class="icon-edit"></i> Edit Project</a></li>
<li><a href="javascript:confirmDelete('/project/delete/<?php print $project->getId(); ?>')"><i class="icon-trash"></i> Delete Project</a></li> <li><a href="javascript:confirmDelete('<?= PHPCI_URL ?>project/delete/<?php print $project->getId(); ?>')"><i class="icon-trash"></i> Delete Project</a></li>
<?php endif; ?> <?php endif; ?>
</ul> </ul>
</div> </div>
@ -61,14 +61,14 @@
$pages = ceil($total / 10); $pages = ceil($total / 10);
$pages = $pages == 0 ? 1 : $pages; $pages = $pages == 0 ? 1 : $pages;
print '<li class="'.($page == 1 ? 'disabled' : '').'"><a href="/project/view/'.$project->getId().'?p='.($page == 1 ? '1' : $page - 1).'">&laquo;</a></li>'; print '<li class="'.($page == 1 ? 'disabled' : '').'"><a href="<?= PHPCI_URL ?>project/view/'.$project->getId().'?p='.($page == 1 ? '1' : $page - 1).'">&laquo;</a></li>';
for($i = 1; $i <= $pages; $i++) for($i = 1; $i <= $pages; $i++)
{ {
print '<li><a href="/project/view/' . $project->getId() . '?p=' . $i . '">' . $i . '</a></li>'; print '<li><a href="<?= PHPCI_URL ?>project/view/' . $project->getId() . '?p=' . $i . '">' . $i . '</a></li>';
} }
print '<li class="'.($page == $pages ? 'disabled' : '').'"><a href="/project/view/'.$project->getId().'?p='.($page == $pages ? $pages : $page + 1).'">&raquo;</a></li>'; print '<li class="'.($page == $pages ? 'disabled' : '').'"><a href="<?= PHPCI_URL ?>project/view/'.$project->getId().'?p='.($page == $pages ? $pages : $page + 1).'">&raquo;</a></li>';
print '</ul></div>'; print '</ul></div>';
@ -80,7 +80,7 @@
<script> <script>
setInterval(function() setInterval(function()
{ {
$('#latest-builds').load('/project/builds/<?php print $project->getId(); ?>'); $('#latest-builds').load('<?= PHPCI_URL ?>project/builds/<?php print $project->getId(); ?>');
}, 10000); }, 10000);
</script> </script>
<?php endif; ?> <?php endif; ?>

View file

@ -6,10 +6,10 @@
<div class="span3"> <div class="span3">
<div class="well" style="padding: 8px 0"> <div class="well" style="padding: 8px 0">
<ul class="nav nav-list"> <ul class="nav nav-list">
<li><a href="/"><i class="icon-home"></i> Dashboard</a></li> <li><a href="<?= PHPCI_URL ?>"><i class="icon-home"></i> Dashboard</a></li>
<li><a href="/user"><i class="icon-user"></i> Users</a></li> <li><a href="<?= PHPCI_URL ?>user"><i class="icon-user"></i> Users</a></li>
<?php if($this->User()->getIsAdmin()): ?> <?php if($this->User()->getIsAdmin()): ?>
<li><a href="/user/add"><i class="icon-plus-sign"></i> Add User</a></li> <li><a href="<?= PHPCI_URL ?>user/add"><i class="icon-plus-sign"></i> Add User</a></li>
<?php endif; ?> <?php endif; ?>
</ul> </ul>
</div> </div>
@ -41,18 +41,18 @@
} }
?> ?>
<tr class="<?php print $cls; ?>"> <tr class="<?php print $cls; ?>">
<td><a href="/user/edit/<?php print $user->getId(); ?>"><?php print $user->getEmail(); ?></a></td> <td><a href="<?= PHPCI_URL ?>user/edit/<?php print $user->getId(); ?>"><?php print $user->getEmail(); ?></a></td>
<td><?php print $user->getName(); ?></td> <td><?php print $user->getName(); ?></td>
<td><?php print $status; ?></td> <td><?php print $status; ?></td>
<td> <td>
<?php if($this->User()->getIsAdmin()): ?> <?php if($this->User()->getIsAdmin()): ?>
<div class="btn-group"> <div class="btn-group">
<a class="btn" href="/user/edit/<?php print $user->getId(); ?>">Edit</a> <a class="btn" href="<?= PHPCI_URL ?>user/edit/<?php print $user->getId(); ?>">Edit</a>
<button class="btn dropdown-toggle" data-toggle="dropdown"> <button class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span> <span class="caret"></span>
</button> </button>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="javascript:confirmDelete('/user/delete/<?php print $user->getId(); ?>');">Delete User</a></li> <li><a href="javascript:confirmDelete('<?= PHPCI_URL ?>user/delete/<?php print $user->getId(); ?>');">Delete User</a></li>
</ul> </ul>
</div> </div>
<?php endif; ?> <?php endif; ?>

View file

@ -47,9 +47,10 @@ _**Please be aware that this is a brand new project, in an alpha state, so there
**Apache Example**: **Apache Example**:
RewriteEngine On RewriteEngine On
RewriteBase /path-to-phpci
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L] RewriteRule (.*)? index.php [L,E=PATH_INFO:/$1]
**Nginx Example**: **Nginx Example**:

View file

@ -38,6 +38,11 @@ require_once(APPLICATION_PATH . 'vendor/autoload.php');
// Load configuration if present: // Load configuration if present:
if (file_exists(APPLICATION_PATH . 'config.php')) { if (file_exists(APPLICATION_PATH . 'config.php')) {
require(APPLICATION_PATH . 'config.php'); require(APPLICATION_PATH . 'config.php');
// Define our PHPCI_URL, if not already defined:
if (!defined('PHPCI_URL')) {
define('PHPCI_URL', $registry->get('install_url', '') . '/');
}
} }
// Set up the registry: // Set up the registry: