Вход Регистрация
Файл: onlinepoisk.wm-scripts.ru/vendor/Pagerfanta/View/TwitterBootstrapView.php
Строк: 115
<?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;

/**
 * TwitterBootstrapView.
 *
 * View that can be used with the pagination module 
 * from the Twitter Bootstrap CSS Toolkit
 * http://twitter.github.com/bootstrap/
 *
 * @author Pablo Díez <pablodip@gmail.com>
 * @author Jan Sorgalla <jsorgalla@gmail.com>
 *
 * @api
 */
class TwitterBootstrapView implements ViewInterface
{
    
/**
     * {@inheritdoc}
     */
    
public function render(PagerfantaInterface $pagerfanta$routeGenerator, array $options = array())
    {
        
$options array_merge(array(
            
'proximity'           => 3,
            
'prev_message'        => '&larr; Previous',
            
'prev_disabled_href'  => '',
            
'next_message'        => 'Next &rarr;',
            
'next_disabled_href'  => '',
            
'dots_message'        => '&hellip;',
            
'dots_href'           => '',
            
'css_container_class' => 'pagination',
            
'css_prev_class'      => 'prev',
            
'css_next_class'      => 'next',
            
'css_disabled_class'  => 'disabled',
            
'css_dots_class'      => 'disabled',
            
'css_active_class'    => 'active',
        ), 
$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
        
$class $options['css_prev_class'];
        
$url   $options['prev_disabled_href'];
        if (!
$pagerfanta->hasPreviousPage()) {
            
$class .= ' '.$options['css_disabled_class'];
        } else {
            
$url $routeGenerator($pagerfanta->getPreviousPage());
        }

        
$pages[] = sprintf('<li class="%s"><a href="%s">%s</a></li>'$class$url$options['prev_message']);


        
// first
        
if ($startPage 1) {
            
$pages[] = sprintf('<li><a href="%s">%s</a></li>'$routeGenerator(1), 1);
            if (
== $startPage) {
                
$pages[] = sprintf('<li><a href="%s">%s</a></li>'$routeGenerator(2), 2);
            } elseif (
!= $startPage) {
                
$pages[] = sprintf('<li class="%s"><a href="%s">%s</a></li>'$options['css_dots_class'], $options['dots_href'], $options['dots_message']);
            }
        }

        
// pages
        
for ($page $startPage$page <= $endPage$page++) {
            
$class '';
            if (
$page == $currentPage) {
                
$class sprintf(' class="%s"'$options['css_active_class']);
            }

            
$pages[] = sprintf('<li%s><a href="%s">%s</a></li>'$class$routeGenerator($page), $page);
        }

        
// last
        
if ($pagerfanta->getNbPages() > $endPage) {
            if (
$pagerfanta->getNbPages() > ($endPage 1)) {
                if (
$pagerfanta->getNbPages() > ($endPage 2)) {
                    
$pages[] = sprintf('<li class="%s"><a href="%s">%s</a></li>'$options['css_dots_class'], $options['dots_href'], $options['dots_message']);
                } else {
                    
$pages[] = sprintf('<li><a href="%s">%s</a></li>'$routeGenerator($endPage 1), $endPage 1);
                }
            }

            
$pages[] = sprintf('<li><a href="%s">%s</a></li>'$routeGenerator($pagerfanta->getNbPages()), $pagerfanta->getNbPages());
        }

        
// next
        
$class $options['css_next_class'];
        
$url   $options['next_disabled_href'];
        if (!
$pagerfanta->hasNextPage()) {
            
$class .= ' '.$options['css_disabled_class'];
        } else {
            
$url $routeGenerator($pagerfanta->getNextPage());
        }

        
$pages[] = sprintf('<li class="%s"><a href="%s">%s</a></li>'$class$url$options['next_message']);

        return 
sprintf('<div class="%s"><ul>%s</ul></div>'$options['css_container_class'], implode(''$pages));
    }

    
/**
     * {@inheritdoc}
     */
    
public function getName()
    {
        return 
'twitter_bootstrap';
    }
}
Онлайн: 1
Реклама