1: <?php
2: 3: 4: 5: 6: 7: 8: 9:
10:
11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26: function smarty_function_xoops_pagenavi($params, &$smarty)
27: {
28: $ret = "";
29:
30: if (isset($params['pagenavi']) && is_object($params['pagenavi'])) {
31:
32: $navi =& $params['pagenavi'];
33:
34: $perPage = $navi->getPerpage();
35:
36: $total = $navi->getTotalItems();
37: $totalPages = $navi->getTotalPages();
38:
39: if ($totalPages == 0) {
40: return;
41: }
42:
43: $url = $navi->renderURLForPage();
44: $current = $navi->getStart();
45:
46: $offset = isset($params['offset']) ? intval($params['offset']) : 4;
47:
48:
49:
50:
51: if($navi->hasPrivPage()) {
52: $ret .= @sprintf("<a href='%s'>«</a> ", $navi->renderURLForPage($navi->getPrivStart()));
53: }
54:
55:
56:
57:
58: $counter=1;
59: $currentPage = $navi->getCurrentPage();
60: while($counter<=$totalPages) {
61: if($counter==$currentPage) {
62: $ret.=@sprintf("<strong>(%d)</strong> ",$counter);
63: }
64: elseif(($counter>$currentPage-$offset && $counter<$currentPage+$offset) || $counter==1 || $counter==$totalPages) {
65: if($counter==$totalPages && $currentPage<$totalPages-$offset) {
66: $ret.="... ";
67: }
68: $ret .= @sprintf("<a href='%s'>%d</a> ",$navi->renderURLForPage(($counter-1)*$perPage),$counter);
69: if($counter==1 && $currentPage>1 + $offset) {
70: $ret.="... ";
71: }
72: }
73: $counter++;
74: }
75:
76:
77:
78:
79: $next=$current + $perPage;
80: if($navi->hasNextPage()) {
81: $ret.=@sprintf("<a href='%s'>»</a>",$navi->renderURLForPage($navi->getNextStart()));
82: }
83: }
84:
85: print $ret;
86: }
87:
88: ?>
89: