diff --git a/lib/Cake/Test/Case/View/Helper/PaginatorHelperTest.php b/lib/Cake/Test/Case/View/Helper/PaginatorHelperTest.php index 83b2ddcd1..77e576161 100644 --- a/lib/Cake/Test/Case/View/Helper/PaginatorHelperTest.php +++ b/lib/Cake/Test/Case/View/Helper/PaginatorHelperTest.php @@ -384,6 +384,15 @@ class PaginatorHelperTest extends CakeTestCase { $result = $this->Paginator->sortKey('Article'); $this->assertEquals('Article.body', $result); + + $this->Paginator->request->params['paging']['Article']['order'] = array( + 'Article.body' => 'DESC' + ); + $result = $this->Paginator->sortKey(); + $this->assertEquals('Article.body', $result); + + $result = $this->Paginator->sortKey('Article'); + $this->assertEquals('Article.body', $result); } /** @@ -455,6 +464,32 @@ class PaginatorHelperTest extends CakeTestCase { $this->assertEquals($expected, $result); } +/** + * Test that sortDir falls back to the default sorting options set + * in the $params which are the default pagination options. + * + * @return void + */ + public function testSortDirFallbackToParams() { + $this->Paginator->request->params['paging']['Article']['order'] = array( + 'Article.body' => 'ASC' + ); + $result = $this->Paginator->sortDir(); + $this->assertEquals('asc', $result); + + $result = $this->Paginator->sortDir('Article'); + $this->assertEquals('asc', $result); + + $this->Paginator->request->params['paging']['Article']['order'] = array( + 'Article.body' => 'DESC' + ); + $result = $this->Paginator->sortDir(); + $this->assertEquals('desc', $result); + + $result = $this->Paginator->sortDir('Article'); + $this->assertEquals('desc', $result); + } + /** * testSortAdminLinks method * diff --git a/lib/Cake/View/Helper/PaginatorHelper.php b/lib/Cake/View/Helper/PaginatorHelper.php index 4128c77df..2aa1eaf8c 100644 --- a/lib/Cake/View/Helper/PaginatorHelper.php +++ b/lib/Cake/View/Helper/PaginatorHelper.php @@ -232,6 +232,8 @@ class PaginatorHelper extends AppHelper { $dir = strtolower($options['direction']); } elseif (isset($options['order']) && is_array($options['order'])) { $dir = strtolower(current($options['order'])); + } elseif (isset($params['order']) && is_array($params['order'])) { + $dir = strtolower(current($params['order'])); } if ($dir == 'desc') {