Вход Регистрация
Файл: onlinepoisk.wm-scripts.ru/vendor/Pagerfanta/View/DefaultView.php
Строк: 128
<?php

/*
 * This file is part of the Pagerfanta package.
 *
 * (c) Pablo Díez <pablodip@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace PagerfantaView;

use 
PagerfantaPagerfantaInterface;

/**
 * DefaultInterface.
 *
 * @author Pablo Díez <pablodip@gmail.com>
 *
 * @api
 */
class DefaultView implements ViewInterface
{
    
/**
     * {@inheritdoc}
     */
    
public function render(PagerfantaInterface $pagerfanta$routeGenerator, array $options = array())
    {
        
$options array_merge(array(
            
'proximity'          => 2,
            
'previous_message'   => 'Previous',
            
'next_message'       => 'Next',
            
'css_disabled_class' => 'disabled',
            
'css_dots_class'     => 'dots',
            
'css_current_class'  => 'current',
        ), 
$options);

        
$currentPage $pagerfanta->getCurrentPage();

        
$startPage $currentPage $options['proximity'];
        
$endPage $currentPage $options['proximity'];

        if (
$startPage 1) {
            
$endPage min($endPage + ($startPage), $pagerfanta->getNbPages());
            
$startPage 1;
        }
        if (
$endPage $pagerfanta->getNbPages()) {
            
$startPage max($startPage - ($endPage $pagerfanta->getNbPages()), 1);
            
$endPage $pagerfanta->getNbPages();
        }

        
$pages = array();

        
// previous
        
if ($pagerfanta->hasPreviousPage()) {
            
$pages[] = array($pagerfanta->getPreviousPage(), $options['previous_message']);
        } else {
            
$pages[] = sprintf('<span class="%s">%s</span>'$options['css_disabled_class'], $options['previous_message']);
        }

        
// first
        
if ($startPage 1) {
            
$pages[] = array(11);
            if (
== $startPage) {
                
$pages[] = array(22);
            } elseif (
!= $startPage) {
                
$pages[] = sprintf('<span class="%s">...</span>'$options['css_dots_class']);
            }
        }

        
// pages
        
for ($page $startPage$page <= $endPage$page++) {
            if (
$page == $currentPage) {
                
$pages[] = sprintf('<span class="%s">%s</span>'$options['css_current_class'], $page);
            } else {
                
$pages[] = array($page$page);
            }
        }

        
// last
        
if ($pagerfanta->getNbPages() > $endPage) {
            if (
$pagerfanta->getNbPages() > ($endPage 1)) {
                if (
$pagerfanta->getNbPages() > ($endPage 2)) {
                    
$pages[] = sprintf('<span class="%s">...</span>'$options['css_dots_class']);
                } else {
                    
$pages[] = array($endPage 1$endPage 1);
                }
            }

            
$pages[] = array($pagerfanta->getNbPages(), $pagerfanta->getNbPages());
        }

        
// next
        
if ($pagerfanta->hasNextPage()) {
            
$pages[] = array($pagerfanta->getNextPage(), $options['next_message']);
        } else {
            
$pages[] = sprintf('<span class="%s">%s</span>'$options['css_disabled_class'], $options['next_message']);
        }

        
// process
        
$pagesHtml '';
        foreach (
$pages as $page) {
            if (
is_string($page)) {
                
$pagesHtml .= $page;
            } else {
                
$pagesHtml .= '<a href="'.$routeGenerator($page[0]).'">'.$page[1].'</a>';
            }
        }

        return 
'<nav>'.$pagesHtml.'</nav>';
    }

    
/**
     * {@inheritdoc}
     */
    
public function getName()
    {
        return 
'default';
    }
}

/*

CSS:

.pagerfanta {
}

.pagerfanta a,
.pagerfanta span {
    display: inline-block;
    border: 1px solid blue;
    color: blue;
    margin-right: .2em;
    padding: .25em .35em;
}

.pagerfanta a {
    text-decoration: none;
}

.pagerfanta a:hover {
    background: #ccf;
}

.pagerfanta .dots {
    border-width: 0;
}

.pagerfanta .current {
    background: #ccf;
    font-weight: bold;
}

.pagerfanta .disabled {
    border-color: #ccf;
    color: #ccf;
}

COLORS:

.pagerfanta a,
.pagerfanta span {
    border-color: blue;
    color: blue;
}

.pagerfanta a:hover {
    background: #ccf;
}

.pagerfanta .current {
    background: #ccf;
}

.pagerfanta .disabled {
    border-color: #ccf;
    color: #cf;
}

*/
Онлайн: 1
Реклама