mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-07-05 17:32:25 +02:00
- refresh paginated navigation bar : displays First and Last, displays
Previous and Next even if non applicable (but no link), displays only page umbers around the current page (if a category contains hundreds of elements, no more long list of pages) git-svn-id: http://piwigo.org/svn/trunk@643 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -189,4 +189,8 @@ $conf['newcat_default_status'] = 'public';
|
||||
// level_separator : character string used for separating a category level
|
||||
// to the sub level
|
||||
$conf['level_separator'] = ' / ';
|
||||
|
||||
// paginate_pages_around : on paginate navigation bar, on many pages display
|
||||
// before and after the current page ?
|
||||
$conf['paginate_pages_around'] = 2;
|
||||
?>
|
||||
|
||||
@@ -54,22 +54,44 @@ function get_icon( $date )
|
||||
return $output;
|
||||
}
|
||||
|
||||
function create_navigation_bar( $url, $nb_element, $start,
|
||||
$nb_element_page, $link_class )
|
||||
function create_navigation_bar($url, $nb_element, $start,
|
||||
$nb_element_page, $link_class)
|
||||
{
|
||||
global $lang;
|
||||
$navigation_bar = "";
|
||||
// 0. détection de la page en cours
|
||||
if( !isset( $start )
|
||||
|| !is_numeric( $start )
|
||||
|| ( is_numeric( $start ) && $start < 0 ) )
|
||||
global $lang, $conf;
|
||||
|
||||
$pages_around = $conf['paginate_pages_around'];
|
||||
|
||||
$navigation_bar = '';
|
||||
|
||||
// current page detection
|
||||
if (!isset($start)
|
||||
or !is_numeric($start)
|
||||
or (is_numeric($start) and $start < 0))
|
||||
{
|
||||
$start = 0;
|
||||
}
|
||||
// on n'affiche la bare de navigation que si on plus de 1 page
|
||||
if ( $nb_element > $nb_element_page )
|
||||
|
||||
// navigation bar useful only if more than one page to display !
|
||||
if ($nb_element > $nb_element_page)
|
||||
{
|
||||
// 1.une page précédente ?
|
||||
// searching the current page
|
||||
$cur_page = ceil($start / $nb_element_page) + 1;
|
||||
$maximum = ceil($nb_element / $nb_element_page);
|
||||
|
||||
// link to first page ?
|
||||
if ($cur_page != 1)
|
||||
{
|
||||
$navigation_bar.= '<a href="';
|
||||
$navigation_bar.= add_session_id($url.'&start=0');
|
||||
$navigation_bar.= '" class="'.$link_class.'">'.$lang['first_page'];
|
||||
$navigation_bar.= '</a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$navigation_bar.= $lang['first_page'];
|
||||
}
|
||||
$navigation_bar.= ' | ';
|
||||
// link on previous page ?
|
||||
if ( $start != 0 )
|
||||
{
|
||||
$previous = $start - $nb_element_page;
|
||||
@@ -77,33 +99,79 @@ function create_navigation_bar( $url, $nb_element, $start,
|
||||
$navigation_bar.= add_session_id( $url.'&start='.$previous );
|
||||
$navigation_bar.= '" class="'.$link_class.'">'.$lang['previous_page'];
|
||||
$navigation_bar.= '</a>';
|
||||
$navigation_bar.= ' | ';
|
||||
}
|
||||
// 2.liste des numéros de page
|
||||
$maximum = ceil ( $nb_element / $nb_element_page );
|
||||
for ( $i = 1; $i <= $maximum; $i++ )
|
||||
else
|
||||
{
|
||||
$temp_start = ( $i - 1 ) * $nb_element_page;
|
||||
if ( $temp_start == $start )
|
||||
$navigation_bar.= $lang['previous_page'];
|
||||
}
|
||||
$navigation_bar.= ' | ';
|
||||
|
||||
if ($cur_page > $pages_around + 1)
|
||||
{
|
||||
$navigation_bar.= ' <a href="';
|
||||
$navigation_bar.= add_session_id($url.'&start=0');
|
||||
$navigation_bar.= '" class="'.$link_class.'">1</a> ...';
|
||||
}
|
||||
|
||||
// inspired from punbb source code
|
||||
for ($i = $cur_page - $pages_around, $stop = $cur_page + $pages_around + 1;
|
||||
$i < $stop;
|
||||
$i++)
|
||||
{
|
||||
if ($i < 1 or $i > $maximum)
|
||||
{
|
||||
$navigation_bar.= ' <span class="pageNumberSelected">'.$i.'</span> ';
|
||||
continue;
|
||||
}
|
||||
else if ($i != $cur_page)
|
||||
{
|
||||
$temp_start = ($i - 1) * $nb_element_page;
|
||||
$navigation_bar.= ' <a href="';
|
||||
$navigation_bar.= add_session_id($url.'&start='.$temp_start);
|
||||
$navigation_bar.= '" class="'.$link_class.'">'.$i.'</a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$navigation_bar.= ' <a href="';
|
||||
$navigation_bar.= add_session_id( $url.'&start='.$temp_start );
|
||||
$navigation_bar.= '" class="'.$link_class.'">'.$i.'</a> ';
|
||||
$navigation_bar.= ' <span class="pageNumberSelected">';
|
||||
$navigation_bar.= $i.'</span>';
|
||||
}
|
||||
}
|
||||
// 3.une page suivante ?
|
||||
|
||||
if ($cur_page < ($maximum - $pages_around))
|
||||
{
|
||||
$temp_start = ($maximum - 1) * $nb_element_page;
|
||||
$navigation_bar.= ' ... <a href="';
|
||||
$navigation_bar.= add_session_id($url.'&start='.$temp_start);
|
||||
$navigation_bar.= '" class="'.$link_class.'">'.$maximum.'</a>';
|
||||
}
|
||||
|
||||
$navigation_bar.= ' | ';
|
||||
// link on next page ?
|
||||
if ( $nb_element > $nb_element_page
|
||||
&& $start + $nb_element_page < $nb_element )
|
||||
{
|
||||
$next = $start + $nb_element_page;
|
||||
$navigation_bar.= ' | <a href="';
|
||||
$navigation_bar.= '<a href="';
|
||||
$navigation_bar.= add_session_id( $url.'&start='.$next );
|
||||
$navigation_bar.= '" class="'.$link_class.'">'.$lang['next_page'].'</a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$navigation_bar.= $lang['next_page'];
|
||||
}
|
||||
// link to last page ?
|
||||
if ($cur_page != $maximum)
|
||||
{
|
||||
$temp_start = ($maximum - 1) * $nb_element_page;
|
||||
$navigation_bar.= ' | ';
|
||||
$navigation_bar.= '<a href="';
|
||||
$navigation_bar.= add_session_id($url.'&start='.$temp_start);
|
||||
$navigation_bar.= '" class="'.$link_class.'">'.$lang['last_page'];
|
||||
$navigation_bar.= '</a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$navigation_bar.= $lang['last_page'];
|
||||
}
|
||||
}
|
||||
return $navigation_bar;
|
||||
}
|
||||
|
||||
@@ -204,6 +204,8 @@ $lang['no_category'] = 'Home';
|
||||
$lang['page_number'] = 'page number';
|
||||
$lang['previous_page'] = 'Previous';
|
||||
$lang['next_page'] = 'Next';
|
||||
$lang['first_page'] = 'First';
|
||||
$lang['last_page'] = 'Last';
|
||||
$lang['recent_image'] = 'Image within the';
|
||||
$lang['days'] = 'days';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user