We now paginate log.php so we dont' flood the browser with log information
authorRobert Sesek <rsesek@bluestatic.org>
Sat, 21 Apr 2007 21:21:57 +0000 (21:21 +0000)
committerRobert Sesek <rsesek@bluestatic.org>
Sat, 21 Apr 2007 21:21:57 +0000 (21:21 +0000)
log.php
templates/default/log.tpl
templates/default/pagenav.tpl [new file with mode: 0644]
templates/default/pagenav_bit.tpl [new file with mode: 0644]

diff --git a/log.php b/log.php
index 8514335aa0321c31151b6d56657318284d15cca6..a660513f0a956b5f503ec1f22e096420362ae841 100644 (file)
--- a/log.php
+++ b/log.php
@@ -21,7 +21,9 @@
 
 $fetchtemplates = array(
        'log_node',
-       'log'
+       'log',
+       'pagenav_bit',
+       'pagenav'
 );
 
 define('SVN', '$Id$');
@@ -30,6 +32,28 @@ require_once('./global.php');
 
 $navbar = ConstructNavbar();
 
+$paginate = BSRegister::LoadModule('Pagination');
+
+function _PageBitCallback($baselink, $nolink, $number, $paginator)
+{
+       eval('$data = "' . BSRegister::Get('template')->fetch('pagenav_bit') . '";');
+       return $data;
+}
+
+function _PageNavCallback($baselink, $nextpage, $prevpage, $show, $pagebits, $paginator)
+{
+       eval('$data = "' . BSRegister::Get('template')->fetch('pagenav') . '";');
+       return $data;
+}
+
+$paginate->setPageLinks(2);
+$paginate->setPageVar('rev');
+$paginate->setMaxPerPage(20);
+$paginate->setDefaultPerPage(20);
+$paginate->setBitProcessor('_PageBitCallback');
+$paginate->setNavigatorProcessor('_PageNavCallback');
+$paginate->processIncomingData();
+
 // ###################################################################
 
 $logs = BSXml::Parse($lib->run('log --xml ' . $lib->arg($repos->fetchPath($input->in['repos']) . '/' . $input->in['path']), true));
@@ -38,8 +62,13 @@ $nodes = '';
 
 BSXml::UnifyNode($logs['log']['logentry']);
 
-foreach ($logs['log']['logentry'] AS $index => $log)
+$paginate->setTotal(sizeof($logs['log']['logentry']));
+$paginate->splitPages();
+
+for ($i = $paginate->fetchLimit() - $paginate->getPerPage(); $i < $paginate->fetchLimit($paginate->getPage()); $i++)
 {
+       $log = $logs['log']['logentry'][$i];
+       
        $log['author'] = $log['author']['value'];
        $log['date'] = FormatSvnDate($log['date']['value']);
        $log['message_clean'] = FormatLogMessage($log['msg']['value']);
@@ -51,6 +80,8 @@ foreach ($logs['log']['logentry'] AS $index => $log)
        eval('$nodes .= "' . $template->fetch('log_node') . '";');
 }
 
+$pagenav = $paginate->constructPageNav(ConstructLink('log', $input->in['repos'], $input->in['path'], 0), false);
+
 // ###################################################################
 
 eval('$template->flush("' . $template->fetch('log') . '");');
index ad9c521cf5ebe14d2dada19a8d0603295b50efe8..d61c98247bfce9b12bb50d2eff7a059ea1913067 100644 (file)
@@ -10,4 +10,6 @@ $header
 <div class="head" style="border-width: 1px">$navbar</div>
 $nodes
 
+$pagenav
+
 $footer
\ No newline at end of file
diff --git a/templates/default/pagenav.tpl b/templates/default/pagenav.tpl
new file mode 100644 (file)
index 0000000..60f6611
--- /dev/null
@@ -0,0 +1,7 @@
+<div>
+       <if condition="$show['first']"><a href="{$baselink}@1">{@"First"}</a> ...</if>
+       <if condition="$show['prev']"><a href="{$baselink}@$prevpage">{@"Prev"}</a> ...</if>
+$pagebits
+       <if condition="$show['next']">... <a href="{$baselink}@$nextpage">{@"Next"}</a></if>
+       <if condition="$show['last']">... <a href="{$baselink}@{$paginator->getPageCount()}">{@"Last"}</a></if>
+</div>
\ No newline at end of file
diff --git a/templates/default/pagenav_bit.tpl b/templates/default/pagenav_bit.tpl
new file mode 100644 (file)
index 0000000..0a7a220
--- /dev/null
@@ -0,0 +1 @@
+       <if condition="$nolink"><strong>$number</strong><else /><a href="{$baselink}@$number">$number</a></if>
\ No newline at end of file