issue6, improved page selector
authorAndreas Unterkircher <unki@netshadow.at>
Sun, 8 Jul 2007 12:09:02 +0000 (12:09 +0000)
committerAndreas Unterkircher <unki@netshadow.at>
Sun, 8 Jul 2007 12:09:02 +0000 (12:09 +0000)
git-svn-id: file:///var/lib/svn/phpfspot/trunk@179 fa6a889d-dae6-447d-9e79-4ba9a3039384

phpfspot.class.php

index 15d130222bcca7454294c1ffe817b150c7426c4d..d9e8bbee15b45af37a6749bbf9d35ca3e10a2987 100644 (file)
@@ -501,6 +501,7 @@ class PHPFSPOT {
       if(isset($_SESSION['searchfor']) && $_SESSION['searchfor'] != '')
          $this->tmpl->assign('searchfor', $_SESSION['searchfor']);
 
       if(isset($_SESSION['searchfor']) && $_SESSION['searchfor'] != '')
          $this->tmpl->assign('searchfor', $_SESSION['searchfor']);
 
+      /* do we have to display the page selector ? */
       if($this->cfg->rows_per_page != 0) {
       
          /* calculate the page switchers */
       if($this->cfg->rows_per_page != 0) {
       
          /* calculate the page switchers */
@@ -512,19 +513,13 @@ class PHPFSPOT {
          if($end_with < $count)
             $this->tmpl->assign("next_url", "javascript:showPhotoIndex(". $next_start .");"); 
 
          if($end_with < $count)
             $this->tmpl->assign("next_url", "javascript:showPhotoIndex(". $next_start .");"); 
 
-         /* page selector */
          $photo_per_page  = $this->cfg->rows_per_page * $this->cfg->thumbs_per_row;
          $photo_per_page  = $this->cfg->rows_per_page * $this->cfg->thumbs_per_row;
-
-         /* until 6 pages we show the selector from 1-6
-            everything large will be
-            1 ... 2 3 4 (5) 6 7 ... 9
-         */ 
          $last_page = ceil($count / $photo_per_page);
 
          $last_page = ceil($count / $photo_per_page);
 
+         /* get the current selected page */
          if($begin_with == 0) {
             $current_page = 1;
          if($begin_with == 0) {
             $current_page = 1;
-         } 
-         else {
+         } else {
             $current_page = 0;
             for($i = $begin_with; $i >= 0; $i-=$photo_per_page) {
                $current_page++;
             $current_page = 0;
             for($i = $begin_with; $i >= 0; $i-=$photo_per_page) {
                $current_page++;
@@ -543,11 +538,34 @@ class PHPFSPOT {
             else
                $style = "";
 
             else
                $style = "";
 
-            $page_select.= "<a href=\"javascript:showPhotoIndex(". (($i*$photo_per_page)-$photo_per_page) .");\"";
-            if($style != "")
-               $page_select.= $style;
-            $page_select.= ">". $i ."</a>&nbsp;";
+            $select = "<a href=\"javascript:showPhotoIndex(". (($i*$photo_per_page)-$photo_per_page) .");\"";
+               if($style != "")
+                  $select.= $style;
+            $select.= ">". $i ."</a>&nbsp;";
+
+            // until 9 pages we show the selector from 1-9
+            if($last_page <= 9) {
+               $page_select.= $select;
+               continue;
+            } else {
+               if($i == 1 /* first page */ || 
+                  $i == $last_page /* last page */ ||
+                  $i == $current_page /* current page */ ||
+                  $i == ceil($last_page * 0.25) /* first quater */ ||
+                  $i == ceil($last_page * 0.5) /* half */ ||
+                  $i == ceil($last_page * 0.75) /* third quater */ ||
+                  (in_array($i, array(1,2,3,4,5,6)) && $current_page <= 4) /* the first 6 */ ||
+                  (in_array($i, array($last_page, $last_page-1, $last_page-2, $last_page-3, $last_page-4, $last_page-5)) && $current_page >= $last_page-4) /* the last 6 */ ||
+                  $i == $current_page-3 || $i == $current_page-2 || $i == $current_page-1 /* three before */ ||
+                  $i == $current_page+3 || $i == $current_page+2 || $i == $current_page+1 /* three after */) {
+
+                  $page_select.= $select;
+                  continue;
+
+               }
+            }
 
 
+            $page_select.= ".";
          }
 
          /* only show the page selector if we have more then one page */
          }
 
          /* only show the page selector if we have more then one page */