Browse Source

[ZF-9174] Zend_Paginator
- Allow assigned page range default | Patch by James Stuart.

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@22865 44c647ce-9c0f-0410-b52a-842ac1e357ba

ramon 15 years ago
parent
commit
378cddb8ea
2 changed files with 53 additions and 1 deletions
  1. 34 1
      library/Zend/Paginator.php
  2. 19 0
      tests/Zend/PaginatorTest.php

+ 34 - 1
library/Zend/Paginator.php

@@ -79,6 +79,15 @@ class Zend_Paginator implements Countable, IteratorAggregate
     protected static $_defaultItemCountPerPage = 10;
 
     /**
+     * Default number of local pages (i.e., the number of discretes
+     * page numbers that will be displayed, including the current
+     * page number)
+     *
+     * @var int
+     */
+    protected static $_defaultPageRange = 10;
+
+    /**
      * Scrolling style plugin loader
      *
      * @var Zend_Loader_PluginLoader
@@ -154,7 +163,7 @@ class Zend_Paginator implements Countable, IteratorAggregate
      *
      * @var integer
      */
-    protected $_pageRange = 10;
+    protected $_pageRange = null;
 
     /**
      * Pages
@@ -376,6 +385,26 @@ class Zend_Paginator implements Countable, IteratorAggregate
     }
 
     /**
+     * Get the default page range
+     *
+     * @return int
+     */
+    public static function getDefaultPageRange()
+    {
+        return self::$_defaultPageRange;
+    }
+
+    /**
+     * Set the default page range
+     *
+     * @param int $count
+     */
+    public static function setDefaultPageRange($count)
+    {
+        self::$_defaultPageRange = (int) $count;
+    }
+
+    /**
      * Sets a cache object
      *
      * @param Zend_Cache_Core $cache
@@ -788,6 +817,10 @@ class Zend_Paginator implements Countable, IteratorAggregate
      */
     public function getPageRange()
     {
+        if (null === $this->_pageRange) {
+            $this->_pageRange = self::getDefaultPageRange();
+        }
+
         return $this->_pageRange;
     }
 

+ 19 - 0
tests/Zend/PaginatorTest.php

@@ -1018,6 +1018,25 @@ class Zend_PaginatorTest extends PHPUnit_Framework_TestCase
         $this->assertFalse(isset($items[3]));
         $this->assertEquals(0, $items->key());
     }
+
+    /**
+     * @group ZF-9174
+     */
+    public function testSetDefaultPageRange()
+    {
+        Zend_Paginator::setConfig(new Zend_Config(array()));
+
+        $paginator = Zend_Paginator::factory(range(1, 10));
+        $this->assertEquals(10, $paginator->getPageRange());
+
+        Zend_Paginator::setDefaultPageRange(20);
+        $this->assertEquals(20, Zend_Paginator::getDefaultPageRange());
+
+        $paginator = Zend_Paginator::factory(range(1, 10));
+        $this->assertEquals(20, $paginator->getPageRange());
+
+        $this->_restorePaginatorDefaults();
+    }
 }
 
 class Zend_Paginator_TestArrayAggregate implements Zend_Paginator_AdapterAggregate