Changeset 1535

Show
Ignore:
Timestamp:
12/14/2007 03:27:07 PM (10 months ago)
Author:
Geert
Message:

Pagination library update:

  • Fixed bug that made it impossible to change uri_segment via initialize() without explicitely passing base_url again. (Also see: http://forum.kohanaphp.com/index.php/topic,389.0.html)
  • The generic url (used in the pagination style views) is now stored in $url. Shorter, keeps your views a bit cleaner and $base_url is reserved to be set by user.
  • Made $base_url, $directory, $style and $uri_segment private. They should not be available in pagination views.
Location:
trunk/system
Files:
1 removed
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/system/libraries/Pagination.php

    r1522 r1535  
    1111 
    1212        // Config values 
    13         protected $base_url       = ''; 
    14         protected $directory      = 'pagination'; 
    15         protected $style          = 'classic'; 
    16         protected $uri_segment    = 3; 
     13        private  $base_url       = ''; 
     14        private  $directory      = 'pagination'; 
     15        private  $style          = 'classic'; 
     16        private  $uri_segment    = 3; 
    1717        protected $items_per_page = 10; 
     18        protected $total_items    = 0; 
    1819 
    19         // Automatically calculated values 
     20        // Automatically generated values 
     21        protected $url; 
    2022        protected $current_page; 
    2123        protected $total_pages; 
    22         protected $total_items; 
    2324        protected $current_first_item; 
    2425        protected $current_last_item; 
     
    6667                $this->directory = trim($this->directory, '/').'/'; 
    6768 
    68                 // Don't bother about full base_urls 
    69                 if (strpos($this->base_url, '://') === FALSE) 
     69                // Start building a generic URL 
     70                $this->url = ($this->base_url == '') ? Router::$segments : $this->url = explode('/', trim($this->base_url, '/')); 
     71 
     72                // Convert uri 'label' to corresponding integer if needed 
     73                if (is_string($this->uri_segment)) 
    7074                { 
    71                         // Default base_url 
    72                         if ($this->base_url == '') 
     75                        if (($key = array_search($this->uri_segment, $this->url)) === FALSE) 
    7376                        { 
    74                                 $this->base_url = url::current(); 
     77                                // If uri 'label' is not found, auto add it to base_url 
     78                                $this->url[] = $this->uri_segment; 
     79                                $this->uri_segment = count($this->url) + 1; 
    7580                        } 
    76  
    77                         // Explode base_url into segments 
    78                         $this->base_url = explode('/', trim($this->base_url, '/')); 
    79  
    80                         // Convert uri 'label' to corresponding integer if needed 
    81                         if (is_string($this->uri_segment)) 
     81                        else 
    8282                        { 
    83                                 if (($key = array_search($this->uri_segment, $this->base_url)) === FALSE) 
    84                                 { 
    85                                         // If uri 'label' is not found, auto add it to base_url 
    86                                         $this->base_url[] = $this->uri_segment; 
    87                                         $this->uri_segment = count($this->base_url) + 1; 
    88                                 } 
    89                                 else 
    90                                 { 
    91                                         $this->uri_segment = $key + 2; 
    92                                 } 
     83                                $this->uri_segment = $key + 2; 
    9384                        } 
    94  
    95                         // Create a generic base_url including query string and a {page} placeholder 
    96                         $this->base_url[$this->uri_segment - 1] = '{page}'; 
    97                         $this->base_url = url::site(implode('/', $this->base_url)).Router::$query_string; 
    9885                } 
     86         
     87                // Create a generic URL with query string and {page} number placeholder 
     88                $this->url[$this->uri_segment - 1] = '{page}'; 
     89                $this->url = url::site(implode('/', $this->url)).Router::$query_string; 
    9990 
    10091                // Core pagination values 
  • trunk/system/views/pagination/classic.php

    r1522 r1535  
    1010         
    1111        <?php if ($first_page): ?> 
    12                 <a href="<?php echo str_replace('{page}', 1, $base_url) ?>">&lsaquo;&nbsp;<?php echo Kohana::lang('pagination.first') ?></a> 
     12                <a href="<?php echo str_replace('{page}', 1, $url) ?>">&lsaquo;&nbsp;<?php echo Kohana::lang('pagination.first') ?></a> 
    1313        <?php endif; ?> 
    1414 
    1515        <?php if ($previous_page): ?> 
    16                 <a href="<?php echo str_replace('{page}', $previous_page, $base_url) ?>">&lt;</a> 
     16                <a href="<?php echo str_replace('{page}', $previous_page, $url) ?>">&lt;</a> 
    1717        <?php endif; ?> 
    1818         
     
    2323                        <strong><?php echo $i ?></strong> 
    2424                <?php else: ?> 
    25                         <a href="<?php echo str_replace('{page}', $i, $base_url) ?>"><?php echo $i ?></a> 
     25                        <a href="<?php echo str_replace('{page}', $i, $url) ?>"><?php echo $i ?></a> 
    2626                <?php endif; ?> 
    2727                 
     
    3030 
    3131        <?php if ($next_page): ?> 
    32                 <a href="<?php echo str_replace('{page}', $next_page, $base_url) ?>">&gt;</a> 
     32                <a href="<?php echo str_replace('{page}', $next_page, $url) ?>">&gt;</a> 
    3333        <?php endif; ?> 
    3434 
    3535        <?php if ($last_page): ?> 
    36                 <a href="<?php echo str_replace('{page}', $last_page, $base_url) ?>"><?php echo Kohana::lang('pagination.last') ?>&nbsp;&rsaquo;</a> 
     36                <a href="<?php echo str_replace('{page}', $last_page, $url) ?>"><?php echo Kohana::lang('pagination.last') ?>&nbsp;&rsaquo;</a> 
    3737        <?php endif; ?> 
    3838 
  • trunk/system/views/pagination/digg.php

    r1522 r1535  
    1010         
    1111        <?php if ($previous_page): ?> 
    12                 <a href="<?php echo str_replace('{page}', $previous_page, $base_url) ?>">&laquo;&nbsp;<?php echo Kohana::lang('pagination.previous') ?></a> 
     12                <a href="<?php echo str_replace('{page}', $previous_page, $url) ?>">&laquo;&nbsp;<?php echo Kohana::lang('pagination.previous') ?></a> 
    1313        <?php else: ?> 
    1414                &laquo;&nbsp;<?php echo Kohana::lang('pagination.previous') ?> 
     
    2222                                <strong><?php echo $i ?></strong> 
    2323                        <?php else: ?> 
    24                                 <a href="<?php echo str_replace('{page}', $i, $base_url) ?>"><?php echo $i ?></a> 
     24                                <a href="<?php echo str_replace('{page}', $i, $url) ?>"><?php echo $i ?></a> 
    2525                        <?php endif; ?> 
    2626                <?php endfor; ?> 
     
    3232                                <strong><?php echo $i ?></strong> 
    3333                        <?php else: ?> 
    34                                 <a href="<?php echo str_replace('{page}', $i, $base_url) ?>"><?php echo $i ?></a> 
     34                                <a href="<?php echo str_replace('{page}', $i, $url) ?>"><?php echo $i ?></a> 
    3535                        <?php endif; ?> 
    3636                <?php endfor; ?> 
    3737         
    3838                &hellip; 
    39                 <a href="<?php echo str_replace('{page}', $total_pages - 1, $base_url) ?>"><?php echo $total_pages - 1 ?></a> 
    40                 <a href="<?php echo str_replace('{page}', $total_pages, $base_url) ?>"><?php echo $total_pages ?></a> 
     39                <a href="<?php echo str_replace('{page}', $total_pages - 1, $url) ?>"><?php echo $total_pages - 1 ?></a> 
     40                <a href="<?php echo str_replace('{page}', $total_pages, $url) ?>"><?php echo $total_pages ?></a> 
    4141         
    4242        <?php elseif ($current_page > $total_pages - 8): /* « Previous  1 2 … 17 18 19 20 21 22 23 24 25 26  Next » */ ?> 
    4343         
    44                 <a href="<?php echo str_replace('{page}', 1, $base_url) ?>">1</a> 
    45                 <a href="<?php echo str_replace('{page}', 2, $base_url) ?>">2</a> 
     44                <a href="<?php echo str_replace('{page}', 1, $url) ?>">1</a> 
     45                <a href="<?php echo str_replace('{page}', 2, $url) ?>">2</a> 
    4646                &hellip; 
    4747         
     
    5050                                <strong><?php echo $i ?></strong> 
    5151                        <?php else: ?> 
    52                                 <a href="<?php echo str_replace('{page}', $i, $base_url) ?>"><?php echo $i ?></a> 
     52                                <a href="<?php echo str_replace('{page}', $i, $url) ?>"><?php echo $i ?></a> 
    5353                        <?php endif; ?> 
    5454                <?php endfor; ?> 
     
    5656        <?php else: /* « Previous  1 2 … 5 6 7 8 9 10 11 12 13 14 … 25 26  Next » */ ?> 
    5757         
    58                 <a href="<?php echo str_replace('{page}', 1, $base_url) ?>">1</a> 
    59                 <a href="<?php echo str_replace('{page}', 2, $base_url) ?>">2</a> 
     58                <a href="<?php echo str_replace('{page}', 1, $url) ?>">1</a> 
     59                <a href="<?php echo str_replace('{page}', 2, $url) ?>">2</a> 
    6060                &hellip; 
    6161         
     
    6464                                <strong><?php echo $i ?></strong> 
    6565                        <?php else: ?> 
    66                                 <a href="<?php echo str_replace('{page}', $i, $base_url) ?>"><?php echo $i ?></a> 
     66                                <a href="<?php echo str_replace('{page}', $i, $url) ?>"><?php echo $i ?></a> 
    6767                        <?php endif; ?> 
    6868                <?php endfor; ?> 
    6969         
    7070                &hellip; 
    71                 <a href="<?php echo str_replace('{page}', $total_pages - 1, $base_url) ?>"><?php echo $total_pages - 1 ?></a> 
    72                 <a href="<?php echo str_replace('{page}', $total_pages, $base_url) ?>"><?php echo $total_pages ?></a> 
     71                <a href="<?php echo str_replace('{page}', $total_pages - 1, $url) ?>"><?php echo $total_pages - 1 ?></a> 
     72                <a href="<?php echo str_replace('{page}', $total_pages, $url) ?>"><?php echo $total_pages ?></a> 
    7373 
    7474        <?php endif; ?> 
     
    7676         
    7777        <?php if ($next_page): ?> 
    78                 <a href="<?php echo str_replace('{page}', $next_page, $base_url) ?>"><?php echo Kohana::lang('pagination.next') ?>&nbsp;&raquo;</a> 
     78                <a href="<?php echo str_replace('{page}', $next_page, $url) ?>"><?php echo Kohana::lang('pagination.next') ?>&nbsp;&raquo;</a> 
    7979        <?php else: ?> 
    8080                <?php echo Kohana::lang('pagination.next') ?>&nbsp;&raquo; 
  • trunk/system/views/pagination/extended.php

    r1522 r1535  
    1010         
    1111        <?php if ($previous_page): ?> 
    12                 <a href="<?php echo str_replace('{page}', $previous_page, $base_url) ?>">&laquo;&nbsp;<?php echo Kohana::lang('pagination.previous') ?></a> 
     12                <a href="<?php echo str_replace('{page}', $previous_page, $url) ?>">&laquo;&nbsp;<?php echo Kohana::lang('pagination.previous') ?></a> 
    1313        <?php else: ?> 
    1414                &laquo;&nbsp;<?php echo Kohana::lang('pagination.previous') ?> 
     
    2020         
    2121        | <?php if ($next_page): ?> 
    22                 <a href="<?php echo str_replace('{page}', $next_page, $base_url) ?>"><?php echo Kohana::lang('pagination.next') ?>&nbsp;&raquo;</a> 
     22                <a href="<?php echo str_replace('{page}', $next_page, $url) ?>"><?php echo Kohana::lang('pagination.next') ?>&nbsp;&raquo;</a> 
    2323        <?php else: ?> 
    2424                <?php echo Kohana::lang('pagination.next') ?>&nbsp;&raquo; 
  • trunk/system/views/pagination/punbb.php

    r1522 r1535  
    1212 
    1313        <?php if ($current_page > 3): ?> 
    14                 <a href="<?php echo str_replace('{page}', 1, $base_url) ?>">1</a> 
     14                <a href="<?php echo str_replace('{page}', 1, $url) ?>">1</a> 
    1515                <?php if ($current_page != 4) echo '&hellip;' ?> 
    1616        <?php endif; ?> 
     
    2424                        <strong><?php echo $i ?></strong> 
    2525                <?php else: ?> 
    26                         <a href="<?php echo str_replace('{page}', $i, $base_url) ?>"><?php echo $i ?></a> 
     26                        <a href="<?php echo str_replace('{page}', $i, $url) ?>"><?php echo $i ?></a> 
    2727                <?php endif; ?> 
    2828                 
     
    3232        <?php if ($current_page <= $total_pages - 3): ?> 
    3333                <?php if ($current_page != $total_pages - 3) echo '&hellip;' ?> 
    34                 <a href="<?php echo str_replace('{page}', $total_pages, $base_url) ?>"><?php echo $total_pages ?></a> 
     34                <a href="<?php echo str_replace('{page}', $total_pages, $url) ?>"><?php echo $total_pages ?></a> 
    3535        <?php endif; ?> 
    3636