Пример #1
0
    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 '';
    }