I changed the things you mentioned and also removed the CSS adjustments.

Regards, PyroPeter
>From 7db813bee6c92714400e63ecc21b22c61eaccf9d Mon Sep 17 00:00:00 2001
From: PyroPeter <abi1...@googlemail.com>
Date: Wed, 16 Feb 2011 18:48:09 +0100
Subject: [PATCH] pkg_search_results: rewrite of pagination

* Most of the PHP-code was moved to pkgfuncs.php to keep the template simple.

Signed-off-by: PyroPeter <abi1...@googlemail.com>
---
 web/html/css/arch.css               |   12 +++---
 web/lib/pkgfuncs.inc                |   26 ++++++++++++
 web/template/pkg_search_results.php |   77 ++++++----------------------------
 3 files changed, 46 insertions(+), 69 deletions(-)

diff --git a/web/html/css/arch.css b/web/html/css/arch.css
index c3ed3aa..09b2240 100644
--- a/web/html/css/arch.css
+++ b/web/html/css/arch.css
@@ -328,19 +328,19 @@ blockquote.code {
        text-decoration: none;
 }
 
-#pages { margin: 5px; }
-#pages .page_num {
+.page_nav {
+  margin: 5px 0;
+}
+.page_nav .page_num {
        border: 1px solid #ddd;
        padding: 2px;
        color: #0771a6;
 }
-
-#pages .page_num:hover {
+.page_nav .page_num:hover {
        border: 1px solid #8faecd;
        color: #333;
 }
-
-#pages #page_sel {
+.page_nav .page_sel {
        border: 1px solid #8faecd;
        padding: 2px;
        color: #333;
diff --git a/web/lib/pkgfuncs.inc b/web/lib/pkgfuncs.inc
index 2f69321..f5591f3 100644
--- a/web/lib/pkgfuncs.inc
+++ b/web/lib/pkgfuncs.inc
@@ -559,6 +559,32 @@ function pkg_search_page($SID="") {
 
 
        if ($total > 1 || $total == 0) {
+               # calculation of pagination links
+               $per_page = ($_GET['PP'] > 0) ? $_GET['PP'] : 25;
+               $current = ceil($first / $per_page);
+               $pages = ceil($total / $per_page);
+               $templ_pages = array();
+
+               if ($current > 1) {
+                       $templ_pages[__('First')] = 0;
+                       $templ_pages[__('Previous')] = ($current - 2) * 
$per_page;
+               }
+
+               if ($current - 5 > 1)
+                       $templ_pages["..."] = false;
+
+               for ($i = max($current - 5, 1); $i <= min($pages, $current + 
5); $i++) {
+                       $templ_pages[$i] = ($i - 1) * $per_page;
+               }
+
+               if ($current + 5 < $pages)
+                       $templ_pages["... "] = false;
+
+               if ($current < $pages) {
+                       $templ_pages[__('Next')] = $current * $per_page;
+                       $templ_pages[__('Last')] = ($pages - 1) * $per_page;
+               }
+
                include('pkg_search_form.php');
                include('pkg_search_results.php');
        }
diff --git a/web/template/pkg_search_results.php 
b/web/template/pkg_search_results.php
index 4830ca8..68ba89a 100644
--- a/web/template/pkg_search_results.php
+++ b/web/template/pkg_search_results.php
@@ -113,73 +113,24 @@ for ($i = 0; $row = mysql_fetch_assoc($result); $i++) {
                </td>
 
                <td align='right'>
-               <span class='f4'><span class='blue'>
-               <?php print __("Showing results %s - %s of %s", $first, $last, 
$total) ?>
-               </span></span>
-               <br />
-
-               <div id="pages">
-               <?php
-                       if ($_GET['O'] > 0):
-                               $O = $_GET['O'] - $_GET['PP'];
-
-                               if ($_GET['O'] < $_GET['PP']) {
-                                       $O = 0;
-                               }
-               ?>
-                       <a class="page_num" href="packages.php?<?php print 
mkurl("O=0") ?>"><?php echo __('First') ?></a>
-                       <a class="page_num" href="packages.php?<?php print 
mkurl("O=$O") ?>"><?php echo __('Previous') ?></a>
-               <?php   endif; ?>
-
-                       <?php
-                       if ($_GET['PP'] > 0) {
-                               $pages = ceil($total / $_GET['PP']);
-                       }
-
-                       if ($pages > 1) {
-                               if ($_GET['O'] > 0) {
-                                       $currentpage = ceil(($_GET['O'] + 1) / 
$_GET['PP']);
-                               }
-                               else {
-                                       $currentpage = 1;
-                               }
-
-                               $morepages = $currentpage + 5;
-
-                               print (($currentpage-5) > 1) ? '...' : '';
-
-                               # Display links for more search results.
-                               for ($i = ($currentpage - 5); $i <= $morepages 
&& $i <= $pages; $i++) {
-                                       if ($i < 1) {
-                                               $i = 1;
-                                       }
-
-                                       $pagestart = ($i - 1) * $_GET['PP'];
-
-                                       if ($i <> $currentpage) :
-                                       ?>
-                               <a class="page_num" href="packages.php?<?php 
print mkurl('O=' . ($pagestart)) ?>"><?php echo $i ?></a>
-                                       <?php else : echo "<span 
id=\"page_sel\">$i</span>";
-                                       endif;
-                               }
-
-                               print ($pages > $morepages) ? '...' : '';
-                               ?>
-
-                       <?php if ($total - $_GET['PP'] - $_GET['O'] > 0): ?>
-                               <a class="page_num" href='packages.php?<?php 
print mkurl('O=' . ($_GET['O'] + $_GET['PP'])) ?>'><?php echo __('Next') ?></a>
-                               <a class="page_num" href='packages.php?<?php 
print mkurl('O=' . ($total - $_GET['PP'])) ?>'><?php echo __('Last') ?></a>
-                       <?php endif; ?>
-
+                       <div class="f4 blue">
+                               <?php print __("Showing results %s - %s of %s", 
$first, $last, $total) ?>
+                       </div>
+                       <div class="page_nav">
+                               <?php foreach($templ_pages as $pagenr => 
$pagestart) { ?>
+                                       <?php if ($pagestart === false) { ?>
+                                               <?php echo $pagenr ?>
+                                       <?php } else if ($pagestart + 1 == 
$first) { ?>
+                                               <span class="page_sel"><?php 
echo $pagenr ?></span>
+                                       <?php } else { ?>
+                                               <a class="page_num" 
href="packages.php?<?php print mkurl('O=' . (       $pagestart)) ?>"><?php echo 
$pagenr ?></a>
+                                       <?php } ?>
+                               <?php } ?>
                        </div>
-
                </td>
        </tr>
 
-<?php
-                       }
-}
-?>
+<?php } ?>
        </table>
 </div>
 </form>
-- 
1.7.4.1

Reply via email to