mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-09-02 17:42:41 +00:00
updating PaginatorHelper::numbers(), fixes #3788
git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@6369 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
parent
e989625316
commit
5649f17f7b
2 changed files with 58 additions and 8 deletions
|
@ -464,12 +464,6 @@ class PaginatorHelper extends AppHelper {
|
|||
$half = intval($modulus / 2);
|
||||
$end = $params['page'] + $half;
|
||||
|
||||
if($first && $end > (int)$first) {
|
||||
$out .= $this->first($first);
|
||||
}
|
||||
|
||||
$out .= $before;
|
||||
|
||||
if ($end > $params['pageCount']) {
|
||||
$end = $params['pageCount'];
|
||||
}
|
||||
|
@ -478,11 +472,21 @@ class PaginatorHelper extends AppHelper {
|
|||
$start = 1;
|
||||
$end = $params['page'] + ($modulus - $params['page']) + 1;
|
||||
}
|
||||
|
||||
if($first && $start > (int)$first) {
|
||||
$out .= $this->first($first);
|
||||
}
|
||||
|
||||
$out .= $before;
|
||||
|
||||
for ($i = $start; $i < $params['page']; $i++) {
|
||||
$out .= '<span>' . $this->link($i, array('page' => $i), $options) . '</span>' . $separator;
|
||||
}
|
||||
|
||||
$out .= '<span class="current">' . $params['page'] . '</span>' . $separator;
|
||||
$out .= '<span class="current">' . $params['page'] . '</span>';
|
||||
if($i != $params['pageCount']) {
|
||||
$out .= $separator;
|
||||
}
|
||||
|
||||
$start = $params['page'] + 1;
|
||||
for ($i = $start; $i < $end; $i++) {
|
||||
|
@ -495,11 +499,13 @@ class PaginatorHelper extends AppHelper {
|
|||
|
||||
$out .= $after;
|
||||
|
||||
if($last && $end < $params['pageCount'] - (int)$last) {
|
||||
if($last && $end <= $params['pageCount'] - (int)$last) {
|
||||
$out .= $this->last($last);
|
||||
}
|
||||
|
||||
} else {
|
||||
$out .= $before;
|
||||
|
||||
for ($i = 1; $i <= $params['pageCount']; $i++) {
|
||||
if ($i == $params['page']) {
|
||||
$out .= '<span class="current">' . $i . '</span>';
|
||||
|
@ -510,6 +516,8 @@ class PaginatorHelper extends AppHelper {
|
|||
$out .= $separator;
|
||||
}
|
||||
}
|
||||
|
||||
$out .= $after;
|
||||
}
|
||||
|
||||
return $this->output($out);
|
||||
|
|
|
@ -214,6 +214,46 @@ class PaginatorTest extends UnitTestCase {
|
|||
$expected = '<span><a href="/index/page:7">7</a></span> | <span><a href="/index/page:8">8</a></span> | <span><a href="/index/page:9">9</a></span> | <span><a href="/index/page:10">10</a></span> | <span><a href="/index/page:11">11</a></span> | <span><a href="/index/page:12">12</a></span> | <span><a href="/index/page:13">13</a></span> | <span class="current">14</span> | <span><a href="/index/page:15">15</a></span>';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$this->Paginator->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()))
|
||||
);
|
||||
|
||||
$result = $this->Paginator->numbers(array('first' => 1));
|
||||
$expected = '<span><a href="/index/page:1">1</a></span> | <span class="current">2</span> | <span><a href="/index/page:3">3</a></span> | <span><a href="/index/page:4">4</a></span> | <span><a href="/index/page:5">5</a></span> | <span><a href="/index/page:6">6</a></span> | <span><a href="/index/page:7">7</a></span> | <span><a href="/index/page:8">8</a></span> | <span><a href="/index/page:9">9</a></span>';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Paginator->numbers(array('last' => 1));
|
||||
$expected = '<span><a href="/index/page:1">1</a></span> | <span class="current">2</span> | <span><a href="/index/page:3">3</a></span> | <span><a href="/index/page:4">4</a></span> | <span><a href="/index/page:5">5</a></span> | <span><a href="/index/page:6">6</a></span> | <span><a href="/index/page:7">7</a></span> | <span><a href="/index/page:8">8</a></span> | <span><a href="/index/page:9">9</a></span>';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
|
||||
$this->Paginator->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()))
|
||||
);
|
||||
|
||||
$result = $this->Paginator->numbers(array('first' => 1));
|
||||
$expected = '<span><a href="/index/page:1">1</a></span>...<span><a href="/index/page:7">7</a></span> | <span><a href="/index/page:8">8</a></span> | <span><a href="/index/page:9">9</a></span> | <span><a href="/index/page:10">10</a></span> | <span><a href="/index/page:11">11</a></span> | <span><a href="/index/page:12">12</a></span> | <span><a href="/index/page:13">13</a></span> | <span><a href="/index/page:14">14</a></span> | <span class="current">15</span>';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
|
||||
|
||||
$this->Paginator->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()))
|
||||
);
|
||||
|
||||
$result = $this->Paginator->numbers(array('first' => 1, 'last' => 1));
|
||||
$expected = '<span><a href="/index/page:1">1</a></span>...<span><a href="/index/page:6">6</a></span> | <span><a href="/index/page:7">7</a></span> | <span><a href="/index/page:8">8</a></span> | <span><a href="/index/page:9">9</a></span> | <span class="current">10</span> | <span><a href="/index/page:11">11</a></span> | <span><a href="/index/page:12">12</a></span> | <span><a href="/index/page:13">13</a></span> | <span><a href="/index/page:14">14</a></span>...<span><a href="/index/page:15">15</a></span>';
|
||||
$this->assertEqual($result, $expected);
|
||||
}
|
||||
|
||||
function testFirstAndLast() {
|
||||
|
||||
$this->Paginator->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()),
|
||||
|
@ -256,10 +296,12 @@ class PaginatorTest extends UnitTestCase {
|
|||
$result = $this->Paginator->last();
|
||||
$expected = '';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
unset($this->Paginator);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
Loading…
Add table
Add a link
Reference in a new issue