Added Paginator for build errors. Issue #85.

This commit is contained in:
Dmitry Khomutov 2017-10-29 14:06:41 +07:00
commit 6b102f214e
No known key found for this signature in database
GPG key ID: EC19426474B37AAC
8 changed files with 190 additions and 117 deletions

View file

@ -94,30 +94,18 @@ class ProjectController extends PHPCensor\Controller
throw new NotFoundException(Lang::get('project_x_not_found', $projectId));
}
$perPage = $_SESSION['php-censor-user']->getFinalPerPage();
/** @var PHPCensor\Model\User $user */
$user = $_SESSION['php-censor-user'];
$perPage = $user->getFinalPerPage();
$builds = $this->getLatestBuildsHtml($projectId, $environment, $branch, (($page - 1) * $perPage), $perPage);
$pages = $builds[1] == 0 ? 1 : (integer)ceil($builds[1] / $perPage);
$pages = ($builds[1] === 0)
? 1
: (integer)ceil($builds[1] / $perPage);
if ($page > $pages) {
$response = new RedirectResponse();
$response->setHeader('Location', APP_URL . 'project/view/' . $projectId);
return $response;
$page = $pages;
}
$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;
@ -127,7 +115,7 @@ class ProjectController extends PHPCensor\Controller
$this->view->environments = $project->getEnvironmentsNames();
$this->view->page = $page;
$this->view->perPage = $perPage;
$this->view->paginator = $paginator;
$this->view->paginator = $this->getPaginatorHtml($projectId, $branch, $environment, $builds[1], $perPage, $page);
$this->layout->title = $project->getTitle();
$this->layout->subtitle = '';
@ -141,6 +129,38 @@ class ProjectController extends PHPCensor\Controller
return $this->view->render();
}
/**
* @param integer $projectId
* @param string $branch
* @param string $environment
* @param integer $total
* @param integer $perPage
* @param integer $page
*
* @return string
*/
protected function getPaginatorHtml($projectId, $branch, $environment, $total, $perPage, $page)
{
$view = new b8\View('pagination');
$urlPattern = APP_URL . 'project/view/' . $projectId;
$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($total, $perPage, $page, $urlPattern);
$view->paginator = $paginator;
return $view->render();
}
/**
* Create a new pending build for a project.
*
@ -259,9 +279,12 @@ class ProjectController extends PHPCensor\Controller
$build = BuildFactory::getBuild($build);
}
$view->builds = $builds['items'];
$view->builds = $builds['items'];
return [$view->render(), $builds['count']];
return [
$view->render(),
(integer)$builds['count']
];
}
/**