4 function smarty_function_pages($tagArgs, $tplObj) {
5 // needed params: controller, pageNo, pages
6 if (!isset($tagArgs['controller'])) throw new Exception("missing 'controller' argument in pages tag");
7 if (!isset($tagArgs['pageNo'])) {
8 if (($tagArgs['pageNo'] = $tplObj->smarty
->getTemplateVars('pageNo')) === null) {
9 throw new Exception("missing 'pageNo' argument in pages tag");
12 if (!isset($tagArgs['pages'])) {
13 if (($tagArgs['pages'] = $tplObj->smarty
->getTemplateVars('pages')) === null) {
14 throw new Exception("missing 'pages' argument in pages tag");
20 if ($tagArgs['pages'] > 1) {
21 $link = "index.php?".$tagArgs['controller'].(isset($tagArgs['id']) ?
"/".$tagArgs['id'] : "");
23 if (!isset($tagArgs['pageNo'])) {
24 if (($tagArgs['pageNo'] = $tplObj->smarty
->getTemplateVars('pageNo')) === null) {
25 $tagArgs['pageNo'] = 0;
30 $html .= "<nav>\n<ul class='pagination'>\n";
33 $html .= makePreviousLink($link, $tagArgs['pageNo']);
36 $html .= makeLink($link, 1, $tagArgs['pageNo'], $tagArgs['pages']);
38 // calculate page links
40 $linksBeforePage = $tagArgs['pageNo'] - 2;
41 if ($linksBeforePage < 0) $linksBeforePage = 0;
42 $linksAfterPage = $tagArgs['pages'] - ($tagArgs['pageNo'] +
1);
43 if ($linksAfterPage < 0) $linksAfterPage = 0;
44 if ($tagArgs['pageNo'] > 1 && $tagArgs['pageNo'] < $tagArgs['pages']) {
48 $half = $maxLinks / 2;
49 $left = $right = $tagArgs['pageNo'];
50 if ($left < 1) $left = 1;
51 if ($right < 1) $right = 1;
52 if ($right > $tagArgs['pages'] - 1) $right = $tagArgs['pages'] - 1;
54 if ($linksBeforePage >= $half) {
58 $left -= $linksBeforePage;
59 $right +
= $half - $linksBeforePage;
62 if ($linksAfterPage >= $half) {
66 $right +
= $linksAfterPage;
67 $left -= $half - $linksAfterPage;
70 $right = intval(ceil($right));
71 $left = intval(ceil($left));
72 if ($left < 1) $left = 1;
73 if ($right > $tagArgs['pages']) $right = $tagArgs['pages'];
78 $html .= makeLink($link, 2, $tagArgs['pageNo'], $tagArgs['pages']);
81 $html .= '<li class="button jumpTo"><a>…</a></li>'."\n";
86 for ($i = $left +
1; $i < $right; $i++
) {
87 $html .= makeLink($link, $i, $tagArgs['pageNo'], $tagArgs['pages']);
91 if ($right < $tagArgs['pages']) {
92 if ($tagArgs['pages'] - $right < 2) {
93 $html .= makeLink($link, $tagArgs['pages'] - 1, $tagArgs['pageNo'], $tagArgs['pages']);
96 $html .= '<li class="button jumpTo"><a>…</a></li>'."\n";
101 $html .= makeLink($link, $tagArgs['pages'], $tagArgs['pageNo'], $tagArgs['pages']);
104 $html .= makeNextLink($link, $tagArgs['pageNo'], $tagArgs['pages']);
107 $html .= "</ul></nav>\n";
110 // assign html output to template var
111 if (isset($tagArgs['assign'])) {
112 $tplObj->assign($tagArgs['assign'], $html);
118 function insertPageNumber($link, $pageNo) {
119 $link = $link ."&pageNo=".$pageNo;
123 function makeLink($link, $pageNo, $activePage, $pages) {
125 if ($activePage != $pageNo) {
126 return '<li><a href="'.insertPageNumber($link, $pageNo).'" class="ttips" title="'.DNS
::getLanguageVariable('pagination.page', array('page' => $pageNo)).'">'.intval($pageNo).'</a></li>'."\n";
129 return '<li class="active"><a>'.intval($pageNo).'</a></li>'."\n";
133 function makePreviousLink($link, $pageNo) {
135 return '<li class="skip"><a href="'.insertPageNumber($link, $pageNo - 1).'" title="'.DNS
::getLanguageVariable('pagination.previous').'" class="ttips"><span class="fa fa-angle-double-left"></span></a></li>'."\n";
138 return '<li class="skip disabled"><span class="fa fa-angle-double-left disabled"></span></li>'."\n";
143 function makeNextLink($link, $pageNo, $pages) {
144 if ($pageNo && $pageNo < $pages) {
145 return '<li class="skip"><a href="'.insertPageNumber($link, $pageNo +
1).'" title="'.DNS
::getLanguageVariable('pagination.next').'" class="ttips"><span class="fa fa-angle-double-right"></span></a></li>'."\n";
148 return '<li class="skip disabled"><span class="fa fa-angle-double-right disabled"></span></li>'."\n";