85 lines
2.9 KiB
PHP
85 lines
2.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package Joomla.Site
|
|
* @subpackage Layout
|
|
*
|
|
* @copyright (C) 2014 Open Source Matters, Inc. <https://www.joomla.org>
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*/
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\CMS\Layout\LayoutHelper;
|
|
use Joomla\Registry\Registry;
|
|
|
|
$list = $displayData['list'];
|
|
$pages = $list['pages'];
|
|
|
|
$options = new Registry($displayData['options']);
|
|
|
|
$showLimitBox = $options->get('showLimitBox', false);
|
|
$showPagesLinks = $options->get('showPagesLinks', true);
|
|
$showLimitStart = $options->get('showLimitStart', true);
|
|
|
|
// Calculate to display range of pages
|
|
$currentPage = 1;
|
|
$range = 1;
|
|
$step = 5;
|
|
|
|
if (!empty($pages['pages'])) {
|
|
foreach ($pages['pages'] as $k => $page) {
|
|
if (!$page['active']) {
|
|
$currentPage = $k;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($currentPage >= $step) {
|
|
if ($currentPage % $step === 0) {
|
|
$range = ceil($currentPage / $step) + 1;
|
|
} else {
|
|
$range = ceil($currentPage / $step);
|
|
}
|
|
}
|
|
?>
|
|
|
|
|
|
<?php if (!empty($pages)) : ?>
|
|
<nav class="pagination__wrapper" aria-label="<?php echo Text::_('JLIB_HTML_PAGINATION'); ?>">
|
|
<div class="pagination pagination-toolbar text-center">
|
|
|
|
<?php if ($showLimitBox) : ?>
|
|
<div class="limit float-end">
|
|
<?php echo Text::_('JGLOBAL_DISPLAY_NUM') . $list['limitfield']; ?>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php if ($showPagesLinks) : ?>
|
|
<ul class="pagination ms-auto mb-4 me-0">
|
|
<?php echo LayoutHelper::render('joomla.pagination.link', $pages['start']); ?>
|
|
<?php echo LayoutHelper::render('joomla.pagination.link', $pages['previous']); ?>
|
|
<?php foreach ($pages['pages'] as $k => $page) : ?>
|
|
<?php $output = LayoutHelper::render('joomla.pagination.link', $page); ?>
|
|
<?php if (in_array($k, range($range * $step - ($step + 1), $range * $step), true)) : ?>
|
|
<?php if (($k % $step === 0 || $k === $range * $step - ($step + 1)) && $k !== $currentPage && $k !== $range * $step - $step) : ?>
|
|
<?php $output = preg_replace('#(<a.*?>).*?(</a>)#', '$1...$2', $output); ?>
|
|
<?php endif; ?>
|
|
<?php endif; ?>
|
|
|
|
<?php echo $output; ?>
|
|
<?php endforeach; ?>
|
|
<?php echo LayoutHelper::render('joomla.pagination.link', $pages['next']); ?>
|
|
<?php echo LayoutHelper::render('joomla.pagination.link', $pages['end']); ?>
|
|
</ul>
|
|
<?php endif; ?>
|
|
|
|
<?php if ($showLimitStart) : ?>
|
|
<input type="hidden" name="<?php echo $list['prefix']; ?>limitstart" value="<?php echo $list['limitstart']; ?>">
|
|
<?php endif; ?>
|
|
|
|
</div>
|
|
</nav>
|
|
<?php endif; ?>
|