public function getPager() { $this->paginate(); $edges = new Partial('<li class="%s">%s</li>', null, false); $pages = new Partial('<li class="%s"><a href="%s">%s</a></li>'); $pager = new RenderGroup(); $pager->add(<<<HTML <div class="pagination pagination-centered"> <ul> HTML ); if (1 === $this->getPage()) { $edges->addElement("disabled", '<span>' . $this->_prevLabel . '</span>'); } else { $url = $this->_getUrl($this->getPage() - 1); $edges->addElement("", '<a href="' . $url . '">' . $this->_prevLabel . '</a>'); } $pager->add($edges->render()); $edges->clearElements(); for ($page = 1; $page <= $this->_pages; $page++) { if ($page < $this->getPage() - $this->_numPagesBefore) { if ($page == 1) { $pages->addElement("", $this->_getUrl(1), "First"); } continue; } else { if ($page > $this->getPage() + $this->_numPagesAfter) { $pages->addElement("", $this->_getUrl($this->_pages), "Last"); break; } else { $class = $page == $this->getPage() ? "active" : ""; $pages->addElement($class, $this->_getUrl($page), $page); } } } $pager->add($pages); if ($this->_pages == $this->getPage() || $this->_pages <= 1) { $edges->addElement("disabled", '<span>' . $this->_nextLabel . '</span>'); } else { $url = $this->_getUrl($this->getPage() + 1); $edges->addElement("", '<a href="' . $url . '">' . $this->_nextLabel . '</a>'); } $pager->add($edges->render()); $edges->clearElements(); $pager->add(<<<HTML </ul> </div> HTML ); if ($this->_pages > 1) { return $pager; } return ''; }