[pLog-svn] r3969 - plog/branches/lifetype-1.1.1/class/template/smarty/plugins

oscar at devel.lifetype.net oscar at devel.lifetype.net
Thu Sep 14 13:10:03 GMT 2006


Author: oscar
Date: 2006-09-14 13:10:02 +0000 (Thu, 14 Sep 2006)
New Revision: 3969

Modified:
   plog/branches/lifetype-1.1.1/class/template/smarty/plugins/function.pager.php
Log:
Some improvements to the pager code, that now offers 3 more parameters: "beginning", "middle" and "end". These 
parameters control how many pages to show in the beginning of the pager, how many pages to show in the middle block and how many pages to show on the right block. Default values are 3, 5 and 3.


Modified: plog/branches/lifetype-1.1.1/class/template/smarty/plugins/function.pager.php
===================================================================
--- plog/branches/lifetype-1.1.1/class/template/smarty/plugins/function.pager.php	2006-09-14 07:04:16 UTC (rev 3968)
+++ plog/branches/lifetype-1.1.1/class/template/smarty/plugins/function.pager.php	2006-09-14 13:10:02 UTC (rev 3969)
@@ -67,13 +67,20 @@
 		$prevText = "«".$locale->tr( "previous_post" );
 	}	
 	
+    // number of pages shown in the beginning
+	isset( $params["beginning"] ) ? $beginning = $params["beginning"] : $beginning = 3;
+	// number of pages shown in the middle
+	isset( $params["middle"] ) ? $middle = $params["middle"] : $middle = 5;
+	// Number of pages shown in the end
+	isset( $params["end"] ) ? $end = $params["end"] : $end = 3;
+	
 		
 	$base_url = $pager->getBaseUrl();
 	$total_pages = $pager->getTotalPages();
 	$per_page = $pager->getRegsForPage();
 	$start_item = 1;
 	$add_prevnext_text = true;
-	$on_page = $pager->getCurrentPage();	
+	$on_page = $pager->getCurrentPage();
 
 	$page_string = '';
 	
@@ -81,9 +88,9 @@
 		if ( $total_pages == 1 )
 			return '';
 
-		if ( $total_pages > 10 )
+		if ( $total_pages > ($beginning + 1 + $middle + 1 + $middle + 1 + $end ))
 		{
-			$init_page_max = ( $total_pages > 3 ) ? 3 : $total_pages;
+			$init_page_max = ( $total_pages > $beginning ) ? $beginning : $total_pages;
 
 			for($i = 1; $i < $init_page_max + 1; $i++) {
 				$page_string .= ( $i == $on_page ) ? "<span class=\"pagerCurrent\">$i</span>" : "<a class=\"pagerLink\" href=\"{$base_url}{$i}\">$i</a>";
@@ -92,33 +99,32 @@
 				}
 			}
 
-			if ( $total_pages > 3 ) {
-				if ( $on_page > 1  && $on_page < $total_pages ) {
-					$page_string .= ( $on_page > 5 ) ? ' ... ' : $separator;
+			if ( $on_page > 1  && $on_page < $total_pages ) {
+				$page_string .= ( $on_page > ($beginning + $middle + 1) ) ? ' ... ' : $separator;
 
-					$init_page_min = ( $on_page > 4 ) ? $on_page : 5;
-					$init_page_max = ( $on_page < $total_pages - 4 ) ? $on_page : $total_pages - 4;
+				$init_page_min = ( $on_page > ($beginning + $middle) ) ? $on_page : ($beginning + $middle + 1 );
+				$init_page_max = ( $on_page < $total_pages - ($end + 1) ) ? $on_page : $total_pages - ($end + $middle);
 
-					for($i = $init_page_min - 1; $i < $init_page_max + 2; $i++) {
-						$page_string .= ( $i == $on_page ) ? "<span class=\"pagerCurrent\">$i</span>" : "<a class=\"pagerLink\" href=\"{$base_url}{$i}\">$i</a>";
-						if ( $i <  $init_page_max + 1 ) {
-							$page_string .= $separator;
-						}
-					}
 
-					$page_string .= ( $on_page < $total_pages - 4 ) ? ' ... ' : $separator;
-				}
-				else {
-					$page_string .= ' ... ';
-				}
-
-				for($i = $total_pages - 2; $i < $total_pages + 1; $i++) {
+				for($i = $init_page_min - $middle; $i < $init_page_max + ($middle + 1); $i++) {
 					$page_string .= ( $i == $on_page ) ? "<span class=\"pagerCurrent\">$i</span>" : "<a class=\"pagerLink\" href=\"{$base_url}{$i}\">$i</a>";
-					if( $i <  $total_pages ) {
+					if ( $i <  $init_page_max + 1 ) {
 						$page_string .= $separator;
 					}
 				}
+
+				$page_string .= ( $on_page < $total_pages - ($end + $middle) ) ? ' ... ' : $separator;
 			}
+			else {
+				$page_string .= ' ... ';
+			}
+			
+			for($i = $total_pages - ($end - 1); $i < $total_pages + 1; $i++) {
+				$page_string .= ( $i == $on_page ) ? "<span class=\"pagerCurrent\">$i</span>" : "<a class=\"pagerLink\" href=\"{$base_url}{$i}\">$i</a>";
+				if( $i <  $total_pages ) {
+					$page_string .= $separator;
+				}
+			}
 		}
 		else {
 			for($i = 1; $i < $total_pages + 1; $i++) {



More information about the pLog-svn mailing list