From b5ba7959d79a7b140f96e718f752e4bbc0157c42 Mon Sep 17 00:00:00 2001 From: Klaus Silveira Date: Wed, 23 May 2012 04:06:31 -0300 Subject: [PATCH] Commit pagination now with proper last page. Thanks @kulbirsaini! --- controllers/commitController.php | 18 +++++++++++------- lib/Git/Repository.php | 12 ++++++++++++ views/commits.twig | 2 ++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/controllers/commitController.php b/controllers/commitController.php index 896b41b..fd483fe 100644 --- a/controllers/commitController.php +++ b/controllers/commitController.php @@ -2,9 +2,10 @@ $app->get('{repo}/commits/{branch}', function($repo, $branch) use($app) { $repository = $app['git']->getRepository($app['git.repos'] . $repo); - $pagenumber = $app['request']->get('page'); - $pagenumber = (empty($pagenumber)) ? 0 : $pagenumber; - $commits = $repository->getCommits(null, $pagenumber); + $pageNumber = $app['request']->get('page'); + $pageNumber = (empty($pageNumber)) ? 0 : $pageNumber; + $lastPage = round($repository->getTotalCommits() / 15, 0, PHP_ROUND_HALF_UP); + $commits = $repository->getCommits(null, $pageNumber); foreach ($commits as $commit) { $date = $commit->getDate(); @@ -15,7 +16,8 @@ $app->get('{repo}/commits/{branch}', function($repo, $branch) use($app) { return $app['twig']->render('commits.twig', array( 'baseurl' => $app['baseurl'], 'page' => 'commits', - 'pagenumber' => $pagenumber, + 'pagenumber' => $pageNumber, + 'lastpage' => $lastPage, 'repo' => $repo, 'branch' => $branch, 'branches' => $repository->getBranches(), @@ -28,8 +30,9 @@ $app->get('{repo}/commits/{branch}', function($repo, $branch) use($app) { $app->get('{repo}/commits/{branch}/{file}/', function($repo, $branch, $file) use($app) { $repository = $app['git']->getRepository($app['git.repos'] . $repo); - $pagenumber = $app['request']->get('page'); - $pagenumber = (empty($pagenumber)) ? 0 : $pagenumber; + $pageNumber = $app['request']->get('page'); + $pageNumber = (empty($pageNumber)) ? 0 : $pageNumber; + $lastPage = round($repository->getTotalCommits() / 15, 0, PHP_ROUND_HALF_UP); $commits = $repository->getCommits($file, $pagenumber); foreach ($commits as $commit) { @@ -41,7 +44,8 @@ $app->get('{repo}/commits/{branch}/{file}/', function($repo, $branch, $file) use return $app['twig']->render('commits.twig', array( 'baseurl' => $app['baseurl'], 'page' => 'commits', - 'pagenumber' => $pagenumber, + 'pagenumber' => $pageNumber, + 'lastpage' => $lastPage, 'repo' => $repo, 'branch' => $branch, 'branches' => $repository->getBranches(), diff --git a/lib/Git/Repository.php b/lib/Git/Repository.php index ad09674..ee18331 100644 --- a/lib/Git/Repository.php +++ b/lib/Git/Repository.php @@ -215,6 +215,18 @@ class Repository return $tags; } + + /** + * Show the amount of commits on the repository + * + * @access public + * @return integer Total number of commits + */ + public function getTotalCommits() + { + $commits = $this->getClient()->run($this, "rev-list --all --count"); + return $commits; + } /** * Show the repository commit log diff --git a/views/commits.twig b/views/commits.twig index e1daff0..c92ec12 100644 --- a/views/commits.twig +++ b/views/commits.twig @@ -45,9 +45,11 @@ ← Older {% endif %} + {% if pagenumber != lastpage %} + {% endif %}