1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-30 21:40:43 +02:00

[ticket/12090] Fix pagination for routes

No clickable "jump to" at the moment, as we can not get the route url
by the route name in js yet. Need to find another solution later.

PHPBB3-12090
This commit is contained in:
Joas Schilling
2014-03-08 15:59:40 +01:00
parent 6491477809
commit 275910d8b0
7 changed files with 93 additions and 45 deletions

View File

@@ -263,6 +263,7 @@ services:
arguments:
- @template
- @user
- @controller.helper
path_helper:
class: phpbb\path_helper

View File

@@ -22,11 +22,13 @@ class pagination
*
* @param \phpbb\template\template $template
* @param \phpbb\user $user
* @param \phpbb\controller\helper $helper
*/
public function __construct(\phpbb\template\template $template, \phpbb\user $user)
public function __construct(\phpbb\template\template $template, \phpbb\user $user, \phpbb\controller\helper $helper)
{
$this->template = $template;
$this->user = $user;
$this->helper = $helper;
}
/**
@@ -44,9 +46,26 @@ class pagination
*/
protected function generate_page_link($base_url, $on_page, $start_name, $per_page)
{
if (strpos($start_name, '%d') !== false)
if (!is_string($base_url))
{
return ($on_page > 1) ? sprintf($base_url, (int) $on_page) : str_replace($start_name, '', $base_url);
if (is_array($base_url['routes']))
{
$route = ($on_page > 1) ? $base_url['routes'][1] : $base_url['routes'][0];
}
else
{
$route = $base_url['routes'];
}
$params = (isset($base_url['params'])) ? $base_url['params'] : array();
$is_amp = (isset($base_url['is_amp'])) ? $base_url['is_amp'] : true;
$session_id = (isset($base_url['session_id'])) ? $base_url['session_id'] : false;
if ($on_page > 1 || !is_array($base_url['routes']))
{
$params[$start_name] = (int) $on_page;
}
return $this->helper->route($route, $params, $is_amp, $session_id);
}
else
{
@@ -194,7 +213,8 @@ class pagination
$tpl_prefix = ($tpl_prefix == 'PAGINATION') ? '' : $tpl_prefix . '_';
$template_array = array(
$tpl_prefix . 'BASE_URL' => $base_url,
$tpl_prefix . 'BASE_URL' => is_string($base_url) ? $base_url : '',//@todo: Fix this for routes
$tpl_prefix . 'START_NAME' => $start_name,
$tpl_prefix . 'PER_PAGE' => $per_page,
'U_' . $tpl_prefix . 'PREVIOUS_PAGE' => ($on_page != 1) ? $u_previous_page : '',
'U_' . $tpl_prefix . 'NEXT_PAGE' => ($on_page != $total_pages) ? $u_next_page : '',

View File

@@ -37,17 +37,14 @@ function jumpto(item) {
on_page = item.attr('data-on-page'),
per_page = item.attr('data-per-page'),
base_url = item.attr('data-base-url'),
start_name = item.attr('data-start-name'),
page = prompt(jump_page, on_page);
if (page !== null && !isNaN(page) && page == Math.floor(page) && page > 0) {
if (base_url.indexOf('%d') === -1) {
if (base_url.indexOf('?') === -1) {
document.location.href = base_url + '?start=' + ((page - 1) * per_page);
} else {
document.location.href = base_url.replace(/&/g, '&') + '&start=' + ((page - 1) * per_page);
}
if (base_url.indexOf('?') === -1) {
document.location.href = base_url + '?' + start_name + '=' + ((page - 1) * per_page);
} else {
document.location.href = base_url.replace('%d', page);
document.location.href = base_url.replace(/&/g, '&') + '&' + start_name + '=' + ((page - 1) * per_page);
}
}
}

View File

@@ -1,4 +1,8 @@
<a href="#" class="pagination-trigger" title="{L_JUMP_TO_PAGE}" data-lang-jump-page="{L_JUMP_PAGE|e('html_attr')}{L_COLON}" data-on-page="{CURRENT_PAGE}" data-per-page="{PER_PAGE}" data-base-url="{BASE_URL|e('html_attr')}">{PAGE_NUMBER}</a> &bull;
<!-- IF BASE_URL -->
<a href="#" class="pagination-trigger" title="{L_JUMP_TO_PAGE}" data-lang-jump-page="{L_JUMP_PAGE|e('html_attr')}{L_COLON}" data-on-page="{CURRENT_PAGE}" data-per-page="{PER_PAGE}" data-base-url="{BASE_URL|e('html_attr')}" data-base-is-route="{BASE_IS_ROUTE}" data-start-name="{START_NAME}">{PAGE_NUMBER}</a> &bull;
<!-- ELSE -->
{PAGE_NUMBER} &bull;
<!-- ENDIF -->
<ul>
<!-- BEGIN pagination -->
<!-- IF pagination.S_IS_PREV -->

View File

@@ -1,5 +1,5 @@
<!-- IF .pagination -->
<b><a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{L_GOTO_PAGE}</a>
<!-- IF BASE_URL --><b><a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{L_GOTO_PAGE}</a></b><!-- ENDIF -->
<!-- BEGIN pagination -->
<!-- IF pagination.S_IS_PREV --><a href="{pagination.PAGE_URL}">{L_PREVIOUS}</a>
<!-- ELSEIF pagination.S_IS_CURRENT --><strong>{pagination.PAGE_NUMBER}</strong>