Links generated by PaginatorHelper::prev and PaginatorHelper::next are now wrapped in 'span' or the tag specified in options. Fixes #311

This commit is contained in:
ADmad 2010-02-07 23:56:50 +05:30
parent e6404f2d06
commit 6f08d86c8e
2 changed files with 64 additions and 22 deletions

View file

@ -427,7 +427,7 @@ class PaginatorHelper extends AppHelper {
$url = array_merge(array('page' => $paging['page'] + ($which == 'Prev' ? $step * -1 : $step)), $url);
if ($this->{$check}($model)) {
return $this->link($title, $url, array_merge($options, compact('escape', 'class')));
return $this->Html->tag($tag, $this->link($title, $url, array_merge($options, compact('escape', 'class'))));
} else {
return $this->Html->tag($tag, $title, array_merge($options, compact('escape', 'class')));
}

View file

@ -396,9 +396,11 @@ class PaginatorHelperTest extends CakeTestCase {
$this->Paginator->params['paging']['Article']['page'] = 1;
$result = $this->Paginator->next('Next');
$expected = array(
'<span',
'a' => array('href' => '/admin/users/index/page:2', 'class' => 'next'),
'Next',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected);
@ -497,17 +499,21 @@ class PaginatorHelperTest extends CakeTestCase {
$result = $this->Paginator->next('next', array('url' => $options));
$expected = array(
'<span',
'a' => array('href' => '/members/posts/index/page:3', 'class' => 'next'),
'next',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected);
$result = $this->Paginator->prev('prev', array('url' => $options));
$expected = array(
'<span',
'a' => array('href' => '/members/posts/index/page:1', 'class' => 'prev'),
'prev',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected);
@ -630,9 +636,11 @@ class PaginatorHelperTest extends CakeTestCase {
$result = $this->Paginator->next('Next');
$expected = array(
'<span',
'a' => array('href' => '/articles/index/2/page:2/foo:bar', 'class' => 'next'),
'Next',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected);
}
@ -669,33 +677,51 @@ class PaginatorHelperTest extends CakeTestCase {
$this->Paginator->params['paging']['Client']['prevPage'] = true;
$result = $this->Paginator->prev('<< Previous', null, null, array('class' => 'disabled'));
$expected = array(
'<span',
'a' => array('href' => '/index/page:1', 'class' => 'prev'),
'&lt;&lt; Previous',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected);
$result = $this->Paginator->next('Next');
$expected = array(
'<span',
'a' => array('href' => '/index/page:3', 'class' => 'next'),
'Next',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected);
$result = $this->Paginator->next('Next', array('tag' => 'li'));
$expected = array(
'<li',
'a' => array('href' => '/index/page:3', 'class' => 'next'),
'Next',
'/a',
'/li'
);
$this->assertTags($result, $expected);
$result = $this->Paginator->prev('<< Previous', array('escape' => true));
$expected = array(
'<span',
'a' => array('href' => '/index/page:1', 'class' => 'prev'),
'&lt;&lt; Previous',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected);
$result = $this->Paginator->prev('<< Previous', array('escape' => false));
$expected = array(
'<span',
'a' => array('href' => '/index/page:1', 'class' => 'prev'),
'preg:/<< Previous/',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected);
@ -739,17 +765,21 @@ class PaginatorHelperTest extends CakeTestCase {
$this->Paginator->params['paging']['Client']['prevPage'] = true;
$result = $this->Paginator->prev('<< Previous', null, null, array('class' => 'disabled'));
$expected = array(
'<span',
'a' => array('href' => '/index/page:1/limit:3/sort:Client.name/direction:DESC', 'class' => 'prev'),
'&lt;&lt; Previous',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected, true);
$result = $this->Paginator->next('Next');
$expected = array(
'<span',
'a' => array('href' => '/index/page:3/limit:3/sort:Client.name/direction:DESC', 'class' => 'next'),
'Next',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected);
@ -760,9 +790,11 @@ class PaginatorHelperTest extends CakeTestCase {
));
$result = $this->Paginator->prev('Prev');
$expected = array(
'<span',
'a' => array('href' => '/index/page:1/limit:10', 'class' => 'prev'),
'Prev',
'/a',
'/span'
);
$this->assertTags($result, $expected);
@ -779,9 +811,11 @@ class PaginatorHelperTest extends CakeTestCase {
$this->Paginator->options(array('url' => array(12, 'page' => 3)));
$result = $this->Paginator->prev('Prev', array('url' => array('foo' => 'bar')));
$expected = array(
'<span',
'a' => array('href' => '/index/12/page:1/limit:10/foo:bar', 'class' => 'prev'),
'Prev',
'/a',
'/span'
);
$this->assertTags($result, $expected);
}
@ -815,9 +849,11 @@ class PaginatorHelperTest extends CakeTestCase {
$result = $this->Paginator->next('Next >>', array('escape' => false));
$expected = array(
'<span',
'a' => array('href' => '/index/page:2', 'class' => 'next'),
'preg:/Next >>/',
'/a'
'/a',
'/span'
);
$this->assertTags($result, $expected);
}
@ -846,7 +882,11 @@ class PaginatorHelperTest extends CakeTestCase {
);
$result = $this->Paginator->next('Next', array('model' => 'Client'));
$expected = array(
'a' => array('href' => '/index/page:2', 'class' => 'next'), 'Next', '/a'
'<span',
'a' => array('href' => '/index/page:2', 'class' => 'next'),
'Next',
'/a',
'/span'
);
$this->assertTags($result, $expected);
@ -1784,9 +1824,11 @@ class PaginatorHelperTest extends CakeTestCase {
$result = $this->Paginator->next('Next');
$expected = array(
'<span',
'a' => array('href' => '/officespace/accounts/index/page:2/sort:Article.title/direction:asc', 'class' => 'next'),
'Next',
'/a'
'/a',
'/span',
);
$this->assertTags($result, $expected);
}