diff --git a/cake/libs/view/helpers/paginator.php b/cake/libs/view/helpers/paginator.php
index 6fde140e6..5708b9afe 100644
--- a/cake/libs/view/helpers/paginator.php
+++ b/cake/libs/view/helpers/paginator.php
@@ -367,9 +367,7 @@ class PaginatorHelper extends AppHelper {
*/
public function url($options = array(), $asArray = false, $model = null) {
$paging = $this->params($model);
- $url = array_merge(array_filter(Set::diff(array_merge(
- $paging['defaults'], $paging['options']), $paging['defaults'])), $options
- );
+ $url = array_merge(array_filter($paging['options']), $options);
if (isset($url['order'])) {
$sort = $direction = null;
diff --git a/cake/tests/cases/libs/view/helpers/paginator.test.php b/cake/tests/cases/libs/view/helpers/paginator.test.php
index 2e60552c5..fa6718d55 100644
--- a/cake/tests/cases/libs/view/helpers/paginator.test.php
+++ b/cake/tests/cases/libs/view/helpers/paginator.test.php
@@ -52,11 +52,6 @@ class PaginatorHelperTest extends CakeTestCase {
'prevPage' => false,
'nextPage' => true,
'pageCount' => 7,
- 'defaults' => array(
- 'order' => array('Article.date' => 'asc'),
- 'limit' => 9,
- 'conditions' => array()
- ),
'options' => array(
'order' => array('Article.date' => 'asc'),
'limit' => 9,
@@ -649,9 +644,6 @@ class PaginatorHelperTest extends CakeTestCase {
'Article' => array(
'page' => 1, 'current' => 3, 'count' => 13,
'prevPage' => false, 'nextPage' => true, 'pageCount' => 8,
- 'defaults' => array(
- 'limit' => 3, 'step' => 1, 'order' => array(), 'conditions' => array()
- ),
'options' => array(
'page' => 1, 'limit' => 3, 'order' => array(), 'conditions' => array()
)
@@ -706,10 +698,21 @@ class PaginatorHelperTest extends CakeTestCase {
* @return void
*/
function testPagingLinks() {
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 1, 'current' => 3, 'count' => 13, 'prevPage' => false, 'nextPage' => true, 'pageCount' => 5,
- 'defaults' => array('limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 1,
+ 'current' => 3,
+ 'count' => 13,
+ 'prevPage' => false,
+ 'nextPage' => true,
+ 'pageCount' => 5,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->prev('<< Previous', null, null, array('class' => 'disabled'));
$expected = array(
@@ -779,10 +782,21 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 1, 'current' => 1, 'count' => 13, 'prevPage' => false, 'nextPage' => true, 'pageCount' => 5,
- 'defaults' => array(),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 1,
+ 'current' => 1,
+ 'count' => 13,
+ 'prevPage' => false,
+ 'nextPage' => true,
+ 'pageCount' => 5,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->prev('<< Previous', null, 'Disabled');
@@ -809,10 +823,21 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 1, 'current' => 3, 'count' => 13, 'prevPage' => false, 'nextPage' => true, 'pageCount' => 5,
- 'defaults' => array(),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 1,
+ 'current' => 3,
+ 'count' => 13,
+ 'prevPage' => false,
+ 'nextPage' => true,
+ 'pageCount' => 5,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$this->Paginator->request->params['paging']['Client']['page'] = 2;
@@ -837,11 +862,22 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 2, 'current' => 1, 'count' => 13, 'prevPage' => true, 'nextPage' => false, 'pageCount' => 2,
- 'defaults' => array(),
- 'options' => array('page' => 2, 'limit' => 10, 'order' => array(), 'conditions' => array())
- ));
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 2,
+ 'current' => 1,
+ 'count' => 13,
+ 'prevPage' => true,
+ 'nextPage' => false,
+ 'pageCount' => 2,
+ 'options' => array(
+ 'page' => 2,
+ 'limit' => 10,
+ 'order' => array(),
+ 'conditions' => array()
+ )
+ )
+ );
$result = $this->Paginator->prev('Prev');
$expected = array(
'Paginator->request->params['paging'] = array(
'Client' => array(
- 'page' => 1, 'current' => 3, 'count' => 13, 'prevPage' => false,
- 'nextPage' => true, 'pageCount' => 5,
- 'defaults' => array(
- 'limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()
- ),
+ 'page' => 1,
+ 'current' => 3,
+ 'count' => 13,
+ 'prevPage' => false,
+ 'nextPage' => true,
+ 'pageCount' => 5,
'options' => array(
'page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()
)
@@ -924,14 +961,32 @@ class PaginatorHelperTest extends CakeTestCase {
// Multiple Model Paginate
$this->Paginator->request->params['paging'] = array(
'Client' => array(
- 'page' => 1, 'current' => 3, 'count' => 13, 'prevPage' => false, 'nextPage' => true, 'pageCount' => 5,
- 'defaults' => array( 'limit'=>3, 'order' => array('Client.name' => 'DESC')),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array())
+ 'page' => 1,
+ 'current' => 3,
+ 'count' => 13,
+ 'prevPage' => false,
+ 'nextPage' => true,
+ 'pageCount' => 5,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
),
'Server' => array(
- 'page' => 1, 'current' => 1, 'count' => 5, 'prevPage' => false, 'nextPage' => false, 'pageCount' => 5,
- 'defaults' => array(),
- 'options' => array('page' => 1, 'limit' => 5, 'order' => array('Server.name' => 'ASC'), 'conditions' => array())
+ 'page' => 1,
+ 'current' => 1,
+ 'count' => 5,
+ 'prevPage' => false,
+ 'nextPage' => false,
+ 'pageCount' => 5,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 5,
+ 'order' => array('Server.name' => 'ASC'),
+ 'conditions' => array()
+ )
)
);
$result = $this->Paginator->next('Next', array('model' => 'Client'));
@@ -1030,10 +1085,21 @@ class PaginatorHelperTest extends CakeTestCase {
* @return void
*/
function testNumbers() {
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 8, 'current' => 3, 'count' => 30, 'prevPage' => false, 'nextPage' => 2, 'pageCount' => 15,
- 'defaults' => array('limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 8,
+ 'current' => 3,
+ 'count' => 30,
+ 'prevPage' => false,
+ 'nextPage' => 2,
+ 'pageCount' => 15,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->numbers();
$expected = array(
@@ -1119,10 +1185,21 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 1, 'current' => 3, 'count' => 30, 'prevPage' => false, 'nextPage' => 2, 'pageCount' => 15,
- 'defaults' => array('limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 1,
+ 'current' => 3,
+ 'count' => 30,
+ 'prevPage' => false,
+ 'nextPage' => 2,
+ 'pageCount' => 15,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->numbers();
$expected = array(
@@ -1147,10 +1224,21 @@ class PaginatorHelperTest extends CakeTestCase {
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 14, 'current' => 3, 'count' => 30, 'prevPage' => false, 'nextPage' => 2, 'pageCount' => 15,
- 'defaults' => array('limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 14,
+ 'current' => 3,
+ 'count' => 30,
+ 'prevPage' => false,
+ 'nextPage' => 2,
+ 'pageCount' => 15,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->numbers();
$expected = array(
@@ -1174,10 +1262,21 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 2, 'current' => 3, 'count' => 27, 'prevPage' => false, 'nextPage' => 2, 'pageCount' => 9,
- 'defaults' => array('limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 2,
+ 'current' => 3,
+ 'count' => 27,
+ 'prevPage' => false,
+ 'nextPage' => 2,
+ 'pageCount' => 9,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->numbers(array('first' => 1));
@@ -1224,10 +1323,21 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 15, 'current' => 3, 'count' => 30, 'prevPage' => false, 'nextPage' => 2, 'pageCount' => 15,
- 'defaults' => array('limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 15,
+ 'current' => 3,
+ 'count' => 30,
+ 'prevPage' => false,
+ 'nextPage' => 2,
+ 'pageCount' => 15,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->numbers(array('first' => 1));
@@ -1255,10 +1365,21 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 10, 'current' => 3, 'count' => 30, 'prevPage' => false, 'nextPage' => 2, 'pageCount' => 15,
- 'defaults' => array('limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 10,
+ 'current' => 3,
+ 'count' => 30,
+ 'prevPage' => false,
+ 'nextPage' => 2,
+ 'pageCount' => 15,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->numbers(array('first' => 1, 'last' => 1));
@@ -1287,10 +1408,21 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 6, 'current' => 15, 'count' => 623, 'prevPage' => 1, 'nextPage' => 1, 'pageCount' => 42,
- 'defaults' => array('limit' => 15, 'step' => 1, 'page' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 6, 'limit' => 15, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 6,
+ 'current' => 15,
+ 'count' => 623,
+ 'prevPage' => 1,
+ 'nextPage' => 1,
+ 'pageCount' => 42,
+ 'options' => array(
+ 'page' => 6,
+ 'limit' => 15,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->numbers(array('first' => 1, 'last' => 1));
@@ -1319,10 +1451,21 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 37, 'current' => 15, 'count' => 623, 'prevPage' => 1, 'nextPage' => 1, 'pageCount' => 42,
- 'defaults' => array('limit' => 15, 'step' => 1, 'page' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 37, 'limit' => 15, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 37,
+ 'current' => 15,
+ 'count' => 623,
+ 'prevPage' => 1,
+ 'nextPage' => 1,
+ 'pageCount' => 42,
+ 'options' => array(
+ 'page' => 37,
+ 'limit' => 15,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->numbers(array('first' => 1, 'last' => 1));
@@ -1384,10 +1527,20 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 2, 'current' => 10, 'count' => 31, 'prevPage' => true, 'nextPage' => true, 'pageCount' => 4,
- 'defaults' => array('limit' => 10),
- 'options' => array('page' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 2,
+ 'current' => 10,
+ 'count' => 31,
+ 'prevPage' => true,
+ 'nextPage' => true,
+ 'pageCount' => 4,
+ 'options' => array(
+ 'page' => 1,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->numbers();
$expected = array(
@@ -1402,10 +1555,21 @@ class PaginatorHelperTest extends CakeTestCase {
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 4895, 'current' => 10, 'count' => 48962, 'prevPage' => 1, 'nextPage' => 1, 'pageCount' => 4897,
- 'defaults' => array('limit' => 10),
- 'options' => array('page' => 4894, 'limit' => 10, 'order' => 'Client.name DESC', 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 4895,
+ 'current' => 10,
+ 'count' => 48962,
+ 'prevPage' => 1,
+ 'nextPage' => 1,
+ 'pageCount' => 4897,
+ 'options' => array(
+ 'page' => 4894,
+ 'limit' => 10,
+ 'order' => 'Client.name DESC',
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->numbers(array('first' => 2, 'modulus' => 2, 'last' => 2));
@@ -1619,20 +1783,42 @@ class PaginatorHelperTest extends CakeTestCase {
* @return void
*/
function testFirstAndLast() {
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 1, 'current' => 3, 'count' => 30, 'prevPage' => false, 'nextPage' => 2, 'pageCount' => 15,
- 'defaults' => array('limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 1,
+ 'current' => 3,
+ 'count' => 30,
+ 'prevPage' => false,
+ 'nextPage' => 2,
+ 'pageCount' => 15,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->first();
$expected = '';
$this->assertEqual($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 4, 'current' => 3, 'count' => 30, 'prevPage' => false, 'nextPage' => 2, 'pageCount' => 15,
- 'defaults' => array('limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 4,
+ 'current' => 3,
+ 'count' => 30,
+ 'prevPage' => false,
+ 'nextPage' => 2,
+ 'pageCount' => 15,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->first();
@@ -1702,19 +1888,41 @@ class PaginatorHelperTest extends CakeTestCase {
);
$this->assertTags($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 15, 'current' => 3, 'count' => 30, 'prevPage' => false, 'nextPage' => 2, 'pageCount' => 15,
- 'defaults' => array('limit' => 3, 'step' => 1, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 15,
+ 'current' => 3,
+ 'count' => 30,
+ 'prevPage' => false,
+ 'nextPage' => 2,
+ 'pageCount' => 15,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->last();
$expected = '';
$this->assertEqual($result, $expected);
- $this->Paginator->request->params['paging'] = array('Client' => array(
- 'page' => 4, 'current' => 3, 'count' => 30, 'prevPage' => false, 'nextPage' => 2, 'pageCount' => 15,
- 'defaults' => array('limit' => 3),
- 'options' => array('page' => 1, 'limit' => 3, 'order' => array('Client.name' => 'DESC'), 'conditions' => array()))
+ $this->Paginator->request->params['paging'] = array(
+ 'Client' => array(
+ 'page' => 4,
+ 'current' => 3,
+ 'count' => 30,
+ 'prevPage' => false,
+ 'nextPage' => 2,
+ 'pageCount' => 15,
+ 'options' => array(
+ 'page' => 1,
+ 'limit' => 3,
+ 'order' => array('Client.name' => 'DESC'),
+ 'conditions' => array()
+ )
+ )
);
$result = $this->Paginator->first();