/** * Prepeare paginator data for view */ public function show() { $iTotalRows = $this->_oComponentGrid->getTotalRows(); $iTotalPages = $this->_oComponentGrid->getTotalPages(); $iCurrentPage = $this->_oComponentGrid->getPage(); $iStart = $iCurrentPage - round($iTotalRows / 2) + 1; $iEnd = $iCurrentPage + round($iTotalRows / 2) - 1; if ($iStart < 1) { $iStart = 1; $iEnd = $iTotalRows; if ($iEnd > $iTotalPages) { $iEnd = $iTotalPages; } } else { if ($iEnd > $iTotalPages) { $iEnd = $iTotalPages; $iStart = $iTotalPages - $iTotalRows; if ($iStart < 1) { $iStart = 1; } } } if ($iCurrentPage > 1) { $iPrevPage = $iCurrentPage - 1; } else { $iPrevPage = $iCurrentPage; } if ($iCurrentPage < $iTotalPages) { $iNextPage = $iCurrentPage + 1; } else { $iNextPage = $iCurrentPage; } $aNearestPages = array(); for ($i = $iStart; $i <= $iEnd; $i++) { if ($i >= 1) { if ($i == $iCurrentPage) { $aNearestPages[] = array('page' => $i, 'isCurrentPage' => true); } else { $aNearestPages[] = array('page' => $i, 'isCurrentPage' => false); } } } $aData["gridName"] = $this->_oComponentGrid->getName(); $aData['pagerURI'] = $this->_oComponentGrid->getPagerURI(); $aData['pageSizeURI'] = $this->_oComponentGrid->getPageSizeURI(); $aData['perPage'] = $this->_oComponentGrid->getPageSize(); $aData['nearestPages'] = $aNearestPages; $aData['prevPage'] = $iPrevPage; $aData['currentPage'] = $iCurrentPage; $aData['nextPage'] = $iNextPage; $aData['totalPages'] = $iTotalPages; $this->view->{$this->getName()} = $aData; }