refactoring pagination.
This commit is contained in:
parent
f492c81aa8
commit
1535eca1c9
|
@ -17,9 +17,9 @@
|
|||
*/
|
||||
|
||||
'first' => 'First',
|
||||
'previous' => '← Previous',
|
||||
'previous' => '« Previous',
|
||||
'status' => 'Page :current of :last',
|
||||
'next' => 'Next →',
|
||||
'next' => 'Next »',
|
||||
'last' => 'Last',
|
||||
|
||||
);
|
|
@ -131,9 +131,28 @@ public function links()
|
|||
// Each pagination element is created by an element method. This allows
|
||||
// us to keep this class clean and simple, because pagination code can
|
||||
// become a mess. We would rather keep it simple and beautiful.
|
||||
foreach ($this->elements as $element)
|
||||
//
|
||||
// If the page is greater the one, we will render the first and previous
|
||||
// links, otherwise we skip them since we are already on the first page.
|
||||
if ($this->page > 1)
|
||||
{
|
||||
$elements[] = $this->$element(Lang::line("pagination.{$element}")->get());
|
||||
$elements[] = $this->first();
|
||||
|
||||
$elements[] = $this->previous();
|
||||
}
|
||||
|
||||
// The status is always rendered regardless of the current page. So we
|
||||
// can simply add it to the array of pagination elements.
|
||||
$elements[] = $this->status();
|
||||
|
||||
// If the current page is not the last page, we will render the next
|
||||
// and last links. Otherwise we will skip them since we are already
|
||||
// on the last page and can't go any further.
|
||||
if ($this->page < $this->last)
|
||||
{
|
||||
$elements[] = $this->next();
|
||||
|
||||
$elements[] = $this->last();
|
||||
}
|
||||
|
||||
return '<div class="pagination">'.implode(' ', $elements).'</div>'.PHP_EOL;
|
||||
|
@ -145,8 +164,10 @@ public function links()
|
|||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
public function status($text)
|
||||
public function status($text = null)
|
||||
{
|
||||
if (is_null($text)) $text = Lang::line('pagination.status')->get();
|
||||
|
||||
return str_replace(array(':current', ':last'), array($this->page, $this->last), $text);
|
||||
}
|
||||
|
||||
|
@ -156,7 +177,7 @@ public function status($text)
|
|||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
public function first($text)
|
||||
public function first($text = null)
|
||||
{
|
||||
return $this->backwards(__FUNCTION__, $text, 1);
|
||||
}
|
||||
|
@ -167,7 +188,7 @@ public function first($text)
|
|||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
public function previous($text)
|
||||
public function previous($text = null)
|
||||
{
|
||||
return $this->backwards(__FUNCTION__, $text, $this->page - 1);
|
||||
}
|
||||
|
@ -178,7 +199,7 @@ public function previous($text)
|
|||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
public function next($text)
|
||||
public function next($text = null)
|
||||
{
|
||||
return $this->forwards(__FUNCTION__, $text, $this->page + 1);
|
||||
}
|
||||
|
@ -189,7 +210,7 @@ public function next($text)
|
|||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
public function last($text)
|
||||
public function last($text = null)
|
||||
{
|
||||
return $this->forwards(__FUNCTION__, $text, $this->last);
|
||||
}
|
||||
|
@ -241,6 +262,8 @@ protected function element($element, $text, $page, $disabler)
|
|||
{
|
||||
$class = "{$element}_page";
|
||||
|
||||
if (is_null($text)) $text = Lang::line("pagination.{$element}")->get();
|
||||
|
||||
if ($disabler($this->page, $this->last))
|
||||
{
|
||||
return HTML::span($text, array('class' => "disabled {$class}"));
|
||||
|
@ -252,7 +275,7 @@ protected function element($element, $text, $page, $disabler)
|
|||
// the current URI, this makes pretty good sense.
|
||||
list($uri, $secure) = array(Request::uri(), Request::secure());
|
||||
|
||||
$appendage = $this->appendage($element, $page);
|
||||
$appendage = '?page='.$page.$this->appendage($element, $page);
|
||||
|
||||
return HTML::link($uri.$appendage, $text, array('class' => $class), $secure);
|
||||
}
|
||||
|
@ -267,21 +290,23 @@ protected function element($element, $text, $page, $disabler)
|
|||
*/
|
||||
protected function appendage($element, $page)
|
||||
{
|
||||
$this->appendage = '?page=%s';
|
||||
if ( ! is_null($this->appendage)) return $this->appendage;
|
||||
|
||||
$appendage = '';
|
||||
|
||||
if (count($this->appends) > 0)
|
||||
{
|
||||
$this->appendage .= '&'.http_build_query($this->appends);
|
||||
$appendage .= '&'.http_build_query($this->appends);
|
||||
}
|
||||
|
||||
return sprintf($this->appendage, $page);
|
||||
return $this->appendage = $appendage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the items that should be appended to the link query strings.
|
||||
*
|
||||
* This provides a convenient method of maintaining sort or passing other information
|
||||
* to the route handling pagination.
|
||||
* This provides a convenient method of maintaining sort or passing other
|
||||
* information to the route handling pagination.
|
||||
*
|
||||
* @param array $values
|
||||
* @return Paginator
|
||||
|
|
Loading…
Reference in New Issue