From 306fa31e9e120f86a656e82530c30d13207a141b Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Wed, 28 Dec 2016 21:26:22 +0700 Subject: [PATCH] Added item per page parameter (default value in main config) --- app/config.example.yml | 4 ++- public/assets/js/app.js | 2 +- .../Controller/ProjectController.php | 36 ++++++++++++------- src/PHPCensor/View/Project/view.phtml | 1 + 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/app/config.example.yml b/app/config.example.yml index fba80e9d..8542ba01 100644 --- a/app/config.example.yml +++ b/app/config.example.yml @@ -8,7 +8,9 @@ b8: username: php-censor-user password: php-censor-password php-censor: - url: 'http://php-censor.local' + language: en + per_page: 10 + url: 'http://php-censor.local' worker: host: localhost queue: php-censor-queue diff --git a/public/assets/js/app.js b/public/assets/js/app.js index df0fa789..d5dad8ad 100644 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -45,7 +45,7 @@ var PHPCensor = { getProjectBuilds: function () { $.ajax({ - url: APP_URL + 'project/builds/' + PROJECT_ID + '?branch=' + PROJECT_BRANCH, + url: APP_URL + 'project/builds/' + PROJECT_ID + '?branch=' + PROJECT_BRANCH + '&per_page=' + PER_PAGE, success: function (data) { $('#latest-builds').html(data); diff --git a/src/PHPCensor/Controller/ProjectController.php b/src/PHPCensor/Controller/ProjectController.php index c2aaa520..dbc24e58 100644 --- a/src/PHPCensor/Controller/ProjectController.php +++ b/src/PHPCensor/Controller/ProjectController.php @@ -72,10 +72,12 @@ class ProjectController extends PHPCensor\Controller throw new NotFoundException(Lang::get('project_x_not_found', $projectId)); } - $per_page = 10; + $perPage = is_numeric(b8\Config::getInstance()->get('php-censor.per_page')) + ? (integer)b8\Config::getInstance()->get('php-censor.per_page') + : 10; $page = $this->getParam('p', 1); - $builds = $this->getLatestBuildsHtml($projectId, urldecode($branch), (($page - 1) * $per_page)); - $pages = $builds[1] == 0 ? 1 : ceil($builds[1] / $per_page); + $builds = $this->getLatestBuildsHtml($projectId, urldecode($branch), (($page - 1) * $perPage), $perPage); + $pages = $builds[1] == 0 ? 1 : ceil($builds[1] / $perPage); if ($page > $pages) { $response = new b8\Http\Response\RedirectResponse(); @@ -90,8 +92,9 @@ class ProjectController extends PHPCensor\Controller $this->view->branches = $this->projectStore->getKnownBranches($projectId); $this->view->page = $page; $this->view->pages = $pages; + $this->view->perPage = $perPage; - $this->layout->title = $project->getTitle(); + $this->layout->title = $project->getTitle(); $this->layout->subtitle = $this->view->branch; return $this->view->render(); @@ -141,12 +144,17 @@ class ProjectController extends PHPCensor\Controller } /** - * AJAX get latest builds. - */ + * AJAX get latest builds. + * + * @param int $projectId + * + * @return b8\Http\Response + */ public function builds($projectId) { - $branch = $this->getParam('branch', ''); - $builds = $this->getLatestBuildsHtml($projectId, urldecode($branch)); + $branch = $this->getParam('branch', ''); + $perPage = (integer)$this->getParam('per_page', 10); + $builds = $this->getLatestBuildsHtml($projectId, urldecode($branch), 0, $perPage); $this->response->disableLayout(); $this->response->setContent($builds[0]); @@ -156,12 +164,14 @@ class ProjectController extends PHPCensor\Controller /** * Render latest builds for project as HTML table. * - * @param $projectId - * @param string $branch A urldecoded branch name. - * @param int $start + * @param int $projectId + * @param string $branch A urldecoded branch name. + * @param int $start + * @param int $perPage + * * @return array */ - protected function getLatestBuildsHtml($projectId, $branch = '', $start = 0) + protected function getLatestBuildsHtml($projectId, $branch = '', $start = 0, $perPage = 10) { $criteria = ['project_id' => $projectId]; if (!empty($branch)) { @@ -169,7 +179,7 @@ class ProjectController extends PHPCensor\Controller } $order = ['id' => 'DESC']; - $builds = $this->buildStore->getWhere($criteria, 10, $start, [], $order); + $builds = $this->buildStore->getWhere($criteria, $perPage, $start, [], $order); $view = new b8\View('BuildsTable'); foreach ($builds['items'] as &$build) { diff --git a/src/PHPCensor/View/Project/view.phtml b/src/PHPCensor/View/Project/view.phtml index 58071311..3483eb6d 100644 --- a/src/PHPCensor/View/Project/view.phtml +++ b/src/PHPCensor/View/Project/view.phtml @@ -2,6 +2,7 @@