zoukankan      html  css  js  c++  java
  • TP5分页样式之bootstrap

      1 <?php
      2 // +----------------------------------------------------------------------
      3 // | ThinkPHP [ WE CAN DO IT JUST THINK ]
      4 // +----------------------------------------------------------------------
      5 // | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
      6 // +----------------------------------------------------------------------
      7 // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
      8 // +----------------------------------------------------------------------
      9 // | Author: zhangyajun <448901948@qq.com>
     10 // +----------------------------------------------------------------------
     11 
     12 namespace thinkpaginatordriver;
     13 
     14 use thinkPaginator;
     15 use thinkConfig;
     16 class Bootstrap extends Paginator
     17 {
     18 
     19     /**
     20      * 上一页按钮
     21      * @param string $text
     22      * @return string
     23      */
     24     protected function getPreviousButton($text = "&laquo;",$style=false)
     25     {
     26 
     27         if ($this->currentPage() <= 1) {
     28             return $this->getDisabledTextWrapper($text,$style);
     29         }
     30 
     31         $url = $this->url(
     32             $this->currentPage() - 1
     33         );
     34 
     35         return $this->getPageLinkWrapper($url, $text,$style);
     36     }
     37 
     38     /**
     39      * 下一页按钮
     40      * @param string $text
     41      * @return string
     42      */
     43     protected function getNextButton($text = '&raquo;',$style=false)
     44     {
     45         if (!$this->hasMore) {
     46             return $this->getDisabledTextWrapper($text,$style);
     47         }
     48 
     49         $url = $this->url($this->currentPage() + 1);
     50 
     51         return $this->getPageLinkWrapper($url, $text,$style);
     52     }
     53 
     54     /**
     55      * 页码按钮
     56      * @return string
     57      */
     58     protected function getLinks($style=false)
     59     {
     60         if ($this->simple)
     61             return '';
     62 
     63         $block = [
     64             'first'  => null,
     65             'slider' => null,
     66             'last'   => null
     67         ];
     68 
     69         $side   = 3;
     70         $window = $side * 2;
     71 
     72         if ($this->lastPage < $window + 6) {
     73             $block['first'] = $this->getUrlRange(1, $this->lastPage);
     74         } elseif ($this->currentPage <= $window) {
     75             $block['first'] = $this->getUrlRange(1, $window + 2);
     76             $block['last']  = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
     77         } elseif ($this->currentPage > ($this->lastPage - $window)) {
     78             $block['first'] = $this->getUrlRange(1, 2);
     79             $block['last']  = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage);
     80         } else {
     81             $block['first']  = $this->getUrlRange(1, 2);
     82             $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side);
     83             $block['last']   = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
     84         }
     85 
     86         $html = '';
     87 
     88         if (is_array($block['first'])) {
     89             $html .= $this->getUrlLinks($block['first'],$style);
     90         }
     91 
     92         if (is_array($block['slider'])) {
     93             $html .= $this->getDots();
     94             $html .= $this->getUrlLinks($block['slider'],$style);
     95         }
     96 
     97         if (is_array($block['last'])) {
     98             $html .= $this->getDots();
     99             $html .= $this->getUrlLinks($block['last'],$style);
    100         }
    101 
    102         return $html;
    103     }
    104 
    105 
    106     /**
    107      * 渲染分页html
    108      * @return mixed
    109      */
    110     public function render()
    111     {
    112         if ($this->hasPages()) {
    113             if ($this->simple) {
    114                 return sprintf(
    115                     '<ul class="pager">%s %s</ul>',
    116                     $this->getPreviousButton(),
    117                     $this->getNextButton()
    118                 );
    119             } else {
    120                 if(empty(Config::get('paginate.newstyle')))
    121                 {
    122                     return sprintf(
    123                         '<ul class="pagination">%s %s %s</ul>',
    124                         $this->getPreviousButton(),
    125                         $this->getLinks(),
    126                         $this->getNextButton()
    127                      );
    128                 }
    129                 else
    130                 {
    131                     return sprintf(
    132                         '%s %s %s',
    133                         $this->getPreviousButton("&laquo;",true),
    134                         $this->getLinks(true),
    135                         $this->getNextButton("&raquo;",true)
    136                     );
    137                 }
    138             }
    139         }
    140     }
    141 
    142 
    143     /**
    144      * 生成一个可点击的按钮
    145      *
    146      * @param  string $url
    147      * @param  int    $page
    148      * @return string
    149      */
    150     protected function getAvailablePageWrapper($url, $page,$style)
    151     {
    152         if($style)
    153             return '<a href="' . htmlentities($url) . '">' . $page . '</a>';
    154         else
    155             return '<li><a href="' . htmlentities($url) . '">' . $page . '</a></li>';
    156     }
    157 
    158     /**
    159      * 生成一个禁用的按钮
    160      *
    161      * @param  string $text
    162      * @return string
    163      */
    164     protected function getDisabledTextWrapper($text,$style)
    165     {  
    166        if($style)
    167             return '<a>' . $text . '</a>';
    168        else
    169             return '<li class="disabled"><span>' . $text . '</span></li>';
    170     }
    171 
    172     /**
    173      * 生成一个激活的按钮
    174      *
    175      * @param  string $text
    176      * @return string
    177      */
    178     protected function getActivePageWrapper($text,$style)
    179     {
    180         if($style)
    181             return '<span class="current">' . $text . '</span>';
    182         else
    183             return '<li class="active"><span>' . $text . '</span></li>';
    184     }
    185 
    186     /**
    187      * 生成省略号按钮
    188      *
    189      * @return string
    190      */
    191     protected function getDots()
    192     {
    193         return $this->getDisabledTextWrapper('...',$style);
    194     }
    195 
    196     /**
    197      * 批量生成页码按钮.
    198      *
    199      * @param  array $urls
    200      * @return string
    201      */
    202     protected function getUrlLinks(array $urls,$style)
    203     {
    204         $html = '';
    205 
    206         foreach ($urls as $page => $url) {
    207             $html .= $this->getPageLinkWrapper($url, $page,$style);
    208         }
    209 
    210         return $html;
    211     }
    212 
    213     /**
    214      * 生成普通页码按钮
    215      *
    216      * @param  string $url
    217      * @param  int    $page
    218      * @return string
    219      */
    220     protected function getPageLinkWrapper($url, $page,$style)
    221     {
    222         if ($page == $this->currentPage()) {
    223             return $this->getActivePageWrapper($page,$style);
    224         }
    225 
    226         return $this->getAvailablePageWrapper($url, $page,$style);
    227     }
    228 }
  • 相关阅读:
    student
    super
    java 浮点数
    视图
    日期转换函数
    左外连接,右外连接,全外连接,自然连接,自连接区别
    Python中sys.argv[ ]的用法
    0 Scala
    统计字符串字符个数
    3个链表排序整合到一起
  • 原文地址:https://www.cnblogs.com/cuculus/p/7098820.html
Copyright © 2011-2022 走看看