📄 pagination.php
字号:
<?php/** * @version $Id: pagination.php 10707 2008-08-21 09:52:47Z eddieajau $ * @package Joomla.Framework * @subpackage HTML * @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */// Check to ensure this file is within the rest of the frameworkdefined('JPATH_BASE') or die();/** * Pagination Class. Provides a common interface for content pagination for the * Joomla! Framework * * @package Joomla.Framework * @subpackage HTML * @since 1.5 */class JPagination extends JObject{ /** * The record number to start dislpaying from * * @access public * @var int */ var $limitstart = null; /** * Number of rows to display per page * * @access public * @var int */ var $limit = null; /** * Total number of rows * * @access public * @var int */ var $total = null; /** * View all flag * * @access protected * @var boolean */ var $_viewall = false; /** * Constructor * * @param int The total number of items * @param int The offset of the item to start at * @param int The number of items to display per page */ function __construct($total, $limitstart, $limit) { // Value/Type checking $this->total = (int) $total; $this->limitstart = (int) max($limitstart, 0); $this->limit = (int) max($limit, 0); if ($this->limit > $this->total) { $this->limitstart = 0; } if (!$this->limit) { $this->limit = $total; $this->limitstart = 0; } if ($this->limitstart > $this->total) { $this->limitstart -= $this->limitstart % $this->limit; } // Set the total pages and current page values if($this->limit > 0) { $this->set( 'pages.total', ceil($this->total / $this->limit)); $this->set( 'pages.current', ceil(($this->limitstart + 1) / $this->limit)); } // Set the pagination iteration loop values $displayedPages = 10; $this->set( 'pages.start', (floor(($this->get('pages.current') -1) / $displayedPages)) * $displayedPages +1); if ($this->get('pages.start') + $displayedPages -1 < $this->get('pages.total')) { $this->set( 'pages.stop', $this->get('pages.start') + $displayedPages -1); } else { $this->set( 'pages.stop', $this->get('pages.total')); } // If we are viewing all records set the view all flag to true if ($this->limit == $total) { $this->_viewall = true; } } /** * Return the rationalised offset for a row with a given index. * * @access public * @param int $index The row index * @return int Rationalised offset for a row with a given index * @since 1.5 */ function getRowOffset($index) { return $index +1 + $this->limitstart; } /** * Return the pagination data object, only creating it if it doesn't already exist * * @access public * @return object Pagination data object * @since 1.5 */ function getData() { static $data; if (!is_object($data)) { $data = $this->_buildDataObject(); } return $data; } /** * Create and return the pagination pages counter string, ie. Page 2 of 4 * * @access public * @return string Pagination pages counter string * @since 1.5 */ function getPagesCounter() { // Initialize variables $html = null; if ($this->get('pages.total') > 1) { $html .= JText::_('Page')." ".$this->get('pages.current')." ".JText::_('of')." ".$this->get('pages.total'); } return $html; } /** * Create and return the pagination result set counter string, ie. Results 1-10 of 42 * * @access public * @return string Pagination result set counter string * @since 1.5 */ function getResultsCounter() { // Initialize variables $html = null; $fromResult = $this->limitstart + 1; // If the limit is reached before the end of the list if ($this->limitstart + $this->limit < $this->total) { $toResult = $this->limitstart + $this->limit; } else { $toResult = $this->total; } // If there are results found if ($this->total > 0) { $msg = JText::sprintf('Results of', $fromResult, $toResult, $this->total); $html .= "\n".$msg; } else { $html .= "\n".JText::_('No records found'); } return $html; } /** * Create and return the pagination page list string, ie. Previous, Next, 1 2 3 ... x * * @access public * @return string Pagination page list string * @since 1.0 */ function getPagesLinks() { global $mainframe; $lang =& JFactory::getLanguage(); // Build the page navigation list $data = $this->_buildDataObject(); $list = array(); $itemOverride = false; $listOverride = false; $chromePath = JPATH_THEMES.DS.$mainframe->getTemplate().DS.'html'.DS.'pagination.php'; if (file_exists($chromePath)) { require_once ($chromePath); if (function_exists('pagination_item_active') && function_exists('pagination_item_inactive')) { $itemOverride = true; } if (function_exists('pagination_list_render')) { $listOverride = true; } } // Build the select list if ($data->all->base !== null) { $list['all']['active'] = true; $list['all']['data'] = ($itemOverride) ? pagination_item_active($data->all) : $this->_item_active($data->all); } else { $list['all']['active'] = false; $list['all']['data'] = ($itemOverride) ? pagination_item_inactive($data->all) : $this->_item_inactive($data->all); } if ($data->start->base !== null) { $list['start']['active'] = true; $list['start']['data'] = ($itemOverride) ? pagination_item_active($data->start) : $this->_item_active($data->start); } else { $list['start']['active'] = false; $list['start']['data'] = ($itemOverride) ? pagination_item_inactive($data->start) : $this->_item_inactive($data->start); } if ($data->previous->base !== null) { $list['previous']['active'] = true; $list['previous']['data'] = ($itemOverride) ? pagination_item_active($data->previous) : $this->_item_active($data->previous); } else { $list['previous']['active'] = false; $list['previous']['data'] = ($itemOverride) ? pagination_item_inactive($data->previous) : $this->_item_inactive($data->previous); } $list['pages'] = array(); //make sure it exists foreach ($data->pages as $i => $page) { if ($page->base !== null) { $list['pages'][$i]['active'] = true; $list['pages'][$i]['data'] = ($itemOverride) ? pagination_item_active($page) : $this->_item_active($page); } else { $list['pages'][$i]['active'] = false; $list['pages'][$i]['data'] = ($itemOverride) ? pagination_item_inactive($page) : $this->_item_inactive($page); } } if ($data->next->base !== null) { $list['next']['active'] = true; $list['next']['data'] = ($itemOverride) ? pagination_item_active($data->next) : $this->_item_active($data->next); } else { $list['next']['active'] = false; $list['next']['data'] = ($itemOverride) ? pagination_item_inactive($data->next) : $this->_item_inactive($data->next); } if ($data->end->base !== null) { $list['end']['active'] = true; $list['end']['data'] = ($itemOverride) ? pagination_item_active($data->end) : $this->_item_active($data->end); } else { $list['end']['active'] = false; $list['end']['data'] = ($itemOverride) ? pagination_item_inactive($data->end) : $this->_item_inactive($data->end); } if($this->total > $this->limit){ return ($listOverride) ? pagination_list_render($list) : $this->_list_render($list); } else{ return '';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -