diff --git a/composer.json b/composer.json index 02c68de2..0017f062 100644 --- a/composer.json +++ b/composer.json @@ -54,6 +54,7 @@ "sensiolabs/ansi-to-html": "1.1.*", "pda/pheanstalk": "3.1.*", "guzzlehttp/guzzle": "6.2.*", + "jasongrimes/paginator": "~1.0", "phpunit/phpunit": "5.7.*", "codeception/codeception": "2.3.*", diff --git a/composer.lock b/composer.lock index bfdc8a1c..ed89403c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "211a9ef8c70d709f19b3ac593d3370fe", + "content-hash": "a1c5840a2a1901f312df1fe761e236d0", "packages": [ { "name": "behat/gherkin", @@ -685,6 +685,51 @@ "homepage": "https://github.com/JakubOnderka/PHP-Parallel-Lint", "time": "2015-12-15T10:42:16+00:00" }, + { + "name": "jasongrimes/paginator", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/jasongrimes/php-paginator.git", + "reference": "8b18245b8a9dbdf69918ebd1e1f4a229a06030cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jasongrimes/php-paginator/zipball/8b18245b8a9dbdf69918ebd1e1f4a229a06030cd", + "reference": "8b18245b8a9dbdf69918ebd1e1f4a229a06030cd", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "autoload": { + "psr-0": { + "JasonGrimes": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jason Grimes", + "email": "jason@grimesit.com" + } + ], + "description": "A lightweight PHP paginator, for generating pagination controls in the style of Stack Overflow and Flickr. The 'first' and 'last' page links are shown inline as page numbers, and excess page numbers are replaced by ellipses.", + "homepage": "http://github.com/jasongrimes/php-paginator", + "keywords": [ + "pager", + "pagination", + "paginator" + ], + "time": "2015-10-15T09:42:44+00:00" + }, { "name": "mnsami/composer-custom-directory-installer", "version": "1.1.1", diff --git a/src/PHPCensor/Controller/ProjectController.php b/src/PHPCensor/Controller/ProjectController.php index 8276a12b..836f0461 100644 --- a/src/PHPCensor/Controller/ProjectController.php +++ b/src/PHPCensor/Controller/ProjectController.php @@ -6,6 +6,7 @@ use b8; use b8\Exception\HttpException\NotFoundException; use b8\Form; use b8\Store; +use JasonGrimes\Paginator; use PHPCensor; use PHPCensor\BuildFactory; use PHPCensor\Helper\Github; @@ -95,7 +96,7 @@ class ProjectController extends PHPCensor\Controller $perPage = $_SESSION['php-censor-user']->getFinalPerPage(); $builds = $this->getLatestBuildsHtml($projectId, $environment, $branch, (($page - 1) * $perPage), $perPage); - $pages = $builds[1] == 0 ? 1 : ceil($builds[1] / $perPage); + $pages = $builds[1] == 0 ? 1 : (integer)ceil($builds[1] / $perPage); if ($page > $pages) { $response = new RedirectResponse(); @@ -104,6 +105,19 @@ class ProjectController extends PHPCensor\Controller return $response; } + $urlPattern = APP_URL . 'project/view/' . $project->getId(); + $params = []; + if (!empty($branch)) { + $params['branch'] = $branch; + } + + if (!empty($environment)) { + $params['environment'] = $environment; + } + + $urlPattern = $urlPattern . '?' . str_replace('%28%3Anum%29', '(:num)', http_build_query(array_merge($params, ['page' => '(:num)']))); + $paginator = new Paginator($builds[1], $perPage, $page, $urlPattern); + $this->view->builds = $builds[0]; $this->view->total = $builds[1]; $this->view->project = $project; @@ -112,8 +126,8 @@ class ProjectController extends PHPCensor\Controller $this->view->environment = urldecode($environment); $this->view->environments = $project->getEnvironmentsNames(); $this->view->page = $page; - $this->view->pages = $pages; $this->view->perPage = $perPage; + $this->view->paginator = $paginator; $this->layout->title = $project->getTitle(); $this->layout->subtitle = ''; diff --git a/src/PHPCensor/View/Project/view.phtml b/src/PHPCensor/View/Project/view.phtml index 805b6631..77cba529 100644 --- a/src/PHPCensor/View/Project/view.phtml +++ b/src/PHPCensor/View/Project/view.phtml @@ -1,4 +1,12 @@ - +