Hab da code rumliegen, der genau sowas macht.
Ist eine aufgebohrte Version von dem aus der pibase - allerdings einer ziemlich Alten - 3.6 oder 3.7 glaub' ich - daher noch die hardcoded Table drin.
PHP-Code:
function pi_xt_list_browseresults($showResultCount=0,$tableParams='') {
// Initializing variables:
$this->pi_alwaysPrev = 1;
$pointer=$this->piVars['pointer'];
$count=$this->internal['res_count'];
$results_at_a_time = $this->internal['results_at_a_time'];
$maxPages = $this->internal['maxPages'];
$nr_pages = ceil($count/$results_at_a_time);
$pointer=intval($pointer);
if ($nr_pages <= $maxPages) {
$startPage = 0;
$endPage = $nr_pages;
} else {
if ($pointer < intval($maxPages/2)) {
$startPage = 0;
$endPage = $startPage + $maxPages;
} elseif ($pointer >= $nr_pages-intval($maxPages/2) ) {
$endPage = $nr_pages;
$startPage = $endPage - $maxPages;
} else {
$startPage = $pointer - intval($maxPages/2);
$endPage = $startPage + $maxPages;
}
}
$links=array();
# nada if only one page
if ($count <= $results_at_a_time) {
return '';
}
// Make browse-table/links:
# First
if ($this->pi_alwaysPrev>=0) {
if ($pointer>0) {
$links[]='
<td nowrap="nowrap"><p>'.$this->pi_linkTP_keepPIvars( $this->pi_getLL( 'pi_list_browseresults_first','<< First',TRUE ), array( 'pointer'=>'0'), $this->typolink_conf["useCacheHash"]).'</p></td>';
} elseif ($this->pi_alwaysPrev) {
$links[]='
<td nowrap="nowrap"><p>'.$this->pi_getLL('pi_list_browseresults_first','<< First',TRUE).'</p></td>';
}
}
# Prev
if ($this->pi_alwaysPrev>=0) {
if ($pointer>0) {
$links[]='
<td nowrap="nowrap"><p>'.$this->pi_linkTP_keepPIvars($this->pi_getLL('pi_list_browseresults_prev','< Previous',TRUE),array('pointer'=>$pointer-1 ),$this->typolink_conf["useCacheHash"]).'</p></td>';
} elseif ($this->pi_alwaysPrev) {
$links[]='
<td nowrap="nowrap"><p>'.$this->pi_getLL('pi_list_browseresults_prev','< Previous',TRUE).'</p></td>';
}
}
if ($startPage != 0) {
$links[] = '<td>...</td>';
}
# Pages
for($a=$startPage; $a<$endPage; $a++) {
if ($a == $pointer) {
$links[]='
<td'.($pointer==$a?$this->pi_classParam('browsebox-SCell':sad:'').' nowrap="nowrap"><p>'.
$this->pi_getLL('pi_list_browseresults_page','Page',TRUE). ' <span class="tx_feuseradmin_currentpage">'.($a+1) . '</span>'.
'</p></td>';
}
else {
$links[]='
<td'.($pointer==$a?$this->pi_classParam('browsebox-SCell':sad:'').' nowrap="nowrap"><p>'.
$this->pi_linkTP_keepPIvars( trim( $this->pi_getLL('pi_list_browseresults_page','Page',TRUE).' '.($a+1)), array('pointer'=>$a), $this->typolink_conf["useCacheHash"]).
'</p></td>';
}
}
if ($endPage != $nr_pages) {
$links[] = '<td>...</td>';
}
# Next
if ($pointer<ceil($count/$results_at_a_time)-1) {
$links[]='
<td nowrap="nowrap"><p>'.
$this->pi_linkTP_keepPIvars( $this->pi_getLL('pi_list_browseresults_next','Next >',TRUE), array('pointer'=>$pointer+1), $this->typolink_conf["useCacheHash"] ).
'</p></td>';
} else {
$links[]='
<td nowrap="nowrap"><p>'.$this->pi_getLL('pi_list_browseresults_next','Next >',TRUE).'</p></td>';
}
# Last
if ($pointer<ceil($count/$results_at_a_time)-1) {
$links[]='
<td nowrap="nowrap"><p>'.
$this->pi_linkTP_keepPIvars( $this->pi_getLL( 'pi_list_browseresults_last','Last >>',TRUE ) ,array( 'pointer'=>ceil( $count/$results_at_a_time)-1) , $this->typolink_conf["useCacheHash"]).
'</p></td>';
} else {
$links[]='
<td nowrap="nowrap"><p>'.$this->pi_getLL('pi_list_browseresults_last','Last >>',TRUE).'</p></td>';
}
$pR1 = $pointer*$results_at_a_time+1;
$pR2 = $pointer*$results_at_a_time+$results_at_a_time;
$sTables = '
<!--
List browsing box:
-->
<div'.$this->pi_classParam('browsebox').'>'.
($showResultCount ? '
<p>'.
($this->internal['res_count'] ?
sprintf(
str_replace('###SPAN_BEGIN###','<span'.$this->pi_classParam('browsebox-strong').'>',$this->pi_getLL('pi_list_browseresults_displays','Displaying results ###SPAN_BEGIN###%s to %s</span> out of ###SPAN_BEGIN###%s</span>')),
$this->internal['res_count'] > 0 ? $pR1 : 0,
min(array($this->internal['res_count'],$pR2)),
$this->internal['res_count']
) :
$this->pi_getLL('pi_list_browseresults_noResults','Sorry, no items were found.')).'</p>':''
).
'
<'.trim('table align="center" '.$tableParams).'>
<tr>
'.implode('',$links).'
</tr>
</table>
</div>';
return $sTables;
}