Fix pagination and links for "stable archives".

* Fix core pagination for "stable archives".

  The current page will always be the current page,
  regardless of archive sorting order. Page 76 of
  86 pages will remain page 76, even if the archive
  sorting is changed; it won't become page 10.

* Fix pagination for "stable archives" in themes.

  Timeline and Bulletproof have pagination.
  Both need to swap the prev/next links for
  stable archives, as the sorting order has
  been reversed.

* Fix prev/next page links for stable archives.

  We shouldn't swap prev/next links for archive
  pages. With stable archives, the title page is
  the last page of the archive, not the first, so
  all other pages are "previos", and we should
  display it like that.

Cherry-picked from master.

Signed-off-by: Thomas Hochstein <thh@inter.net>
This commit is contained in:
Thomas Hochstein 2019-08-16 21:37:45 +02:00
parent cd3464be70
commit 4e662bf17c
5 changed files with 45 additions and 23 deletions

View File

@ -1,6 +1,13 @@
Version 2.3.1-beta1
------------------------------------------------------------------------
* Change footer_info and prev/next links for archive pages for
"stable archives" sort order.
* Fix pagination in core for "stable archives" sort order and fix
prev/next links for pagination in timeline and bulletproof themes
when "stable archives" are active.
* Add Spartacus links ("more info") to plugin lists.
* Fix/Change: Wording of plugin display ("version") and PHP/smarty

View File

@ -973,13 +973,9 @@ function serendipity_printEntryFooter($suffix = '.html', $totalEntries = null) {
$uriArguments[] = 'P%s';
$serendipity['smarty']->assign('footer_totalEntries', $totalEntries);
$serendipity['smarty']->assign('footer_totalPages', $totalPages);
if (serendipity_db_bool($serendipity['archiveSortStable']) && $serendipity['GET']['action'] != 'search') {
$serendipity['smarty']->assign('footer_currentPage', $totalPages - $serendipity['GET']['page']);
} else {
$serendipity['smarty']->assign('footer_currentPage', $serendipity['GET']['page']);
}
$serendipity['smarty']->assign('footer_currentPage', $serendipity['GET']['page']);
$serendipity['smarty']->assign('footer_pageLink', str_replace('%2A', '*', serendipity_rewriteURL(implode('/', $uriArguments) . $suffix)));
$serendipity['smarty']->assign('footer_info', sprintf(PAGE_BROWSE_ENTRIES, serendipity_db_bool($serendipity['archiveSortStable']) && $serendipity['GET']['action'] != 'search' ? $totalPages - (int)$serendipity['GET']['page'] +1 : (int)$serendipity['GET']['page'], $totalPages, $totalEntries));
$serendipity['smarty']->assign('footer_info', sprintf(PAGE_BROWSE_ENTRIES, (int)$serendipity['GET']['page'], $totalPages, $totalEntries));
if ($serendipity['GET']['page'] < $totalPages) {
$uriArguments = $serendipity['uriArguments'];
@ -987,11 +983,6 @@ function serendipity_printEntryFooter($suffix = '.html', $totalEntries = null) {
$serendipity['smarty']->assign('footer_next_page', serendipity_rewriteURL(str_replace('//', '/', implode('/', $uriArguments)) . $suffix));
}
if (serendipity_db_bool($serendipity['archiveSortStable']) && $serendipity['GET']['action'] != 'search') {
$temp = $serendipity['smarty']->getTemplateVars('footer_prev_page');
$serendipity['smarty']->assign('footer_prev_page', $serendipity['smarty']->getTemplateVars('footer_next_page'));
$serendipity['smarty']->assign('footer_next_page', $temp);
}
}
/**

View File

@ -418,6 +418,14 @@
{if $template_option.show_pagination == 'true' && $footer_totalPages > 1}
<div class="pagination">
{assign var="archiveSortStable" value="`serendipity_getConfigVar key='archiveSortStable'`"}
{if $archiveSortStable}
{assign var="linkPrevPage" value="`$footer_next_page`"}
{assign var="linkNextPage" value="`$footer_prev_page`"}
{else}
{assign var="linkPrevPage" value="`$footer_prev_page`"}
{assign var="linkNextPage" value="`$footer_next_page`"}
{/if}
{assign var="paginationStartPage" value="`$footer_currentPage-3`"}
{if $footer_currentPage+3 > $footer_totalPages}
{assign var="paginationStartPage" value="`$footer_totalPages-6`"}
@ -425,8 +433,8 @@
{if $paginationStartPage <= 0}
{assign var="paginationStartPage" value="1"}
{/if}
{if $footer_prev_page}
<a title="{$CONST.PREVIOUS_PAGE}" href="{$footer_prev_page}"><span class="pagearrow">&#9668;</span></a>
{if $linkPrevPage}
<a title="{$CONST.PREVIOUS_PAGE}" href="{$linkPrevPage}"><span class="pagearrow">&#9668;</span></a>
{/if}
{if $paginationStartPage > 1}
<a href="{$footer_pageLink|replace:'%s':'1'}">1</a>
@ -447,8 +455,8 @@
{if $smarty.section.i.index <= $footer_totalPages}
<a href="{$footer_pageLink|replace:'%s':$footer_totalPages}">{$footer_totalPages}</a>
{/if}
{if $footer_next_page}
<a title="{$CONST.NEXT_PAGE}" href="{$footer_next_page}"><span class="pagearrow">&#9658;</span></a>
{if $linkNextPage}
<a title="{$CONST.NEXT_PAGE}" href="{$linkNextPage}"><span class="pagearrow">&#9658;</span></a>
{/if}
</div>
{/if}

View File

@ -285,6 +285,14 @@
{if $footer_totalPages >1 }
<nav class="pagination">
{assign var="archiveSortStable" value="`serendipity_getConfigVar key='archiveSortStable'`"}
{if $archiveSortStable}
{assign var="linkPrevPage" value="`$footer_next_page`"}
{assign var="linkNextPage" value="`$footer_prev_page`"}
{else}
{assign var="linkPrevPage" value="`$footer_prev_page`"}
{assign var="linkNextPage" value="`$footer_next_page`"}
{/if}
{assign var="paginationStartPage" value="`$footer_currentPage-3`"}
{if $footer_currentPage+3 > $footer_totalPages}
{assign var="paginationStartPage" value="`$footer_totalPages-4`"}
@ -292,8 +300,8 @@
{if $paginationStartPage <= 0}
{assign var="paginationStartPage" value="1"}
{/if}
{if $footer_prev_page}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.PREVIOUS_PAGE}" href="{$footer_prev_page}"><i class="fas fa-arrow-left" aria-hidden="true"></i><span class="sr-only">{$CONST.PREVIOUS_PAGE}</span></a>
{if $linkPrevPage}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.PREVIOUS_PAGE}" href="{$linkPrevPage}"><i class="fas fa-arrow-left" aria-hidden="true"></i><span class="sr-only">{$CONST.PREVIOUS_PAGE}</span></a>
{/if}
{if $paginationStartPage > 1}
<a class="btn btn-md btn-default btn-theme" href="{'1'|string_format:$footer_pageLink}">1</a>
@ -314,8 +322,8 @@
{if $smarty.section.i.index <= $footer_totalPages}
<a class="btn btn-md btn-default btn-theme" href="{$footer_totalPages|string_format:$footer_pageLink}">{$footer_totalPages}</a>
{/if}
{if $footer_next_page}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.NEXT_PAGE}" href="{$footer_next_page}"><i class="fas fa-arrow-right" aria-hidden="true"></i><span class="sr-only">{$CONST.NEXT_PAGE}</span></a>
{if $linkNextPage}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.NEXT_PAGE}" href="{$linkNextPage}"><i class="fas fa-arrow-right" aria-hidden="true"></i><span class="sr-only">{$CONST.NEXT_PAGE}</span></a>
{/if}
</nav>
{/if}

View File

@ -114,6 +114,14 @@
{if $footer_totalPages >1 && !isset($staticpage_pagetitle)}
<nav class="pagination pull-right">
{assign var="archiveSortStable" value="`serendipity_getConfigVar key='archiveSortStable'`"}
{if $archiveSortStable}
{assign var="linkPrevPage" value="`$footer_next_page`"}
{assign var="linkNextPage" value="`$footer_prev_page`"}
{else}
{assign var="linkPrevPage" value="`$footer_prev_page`"}
{assign var="linkNextPage" value="`$footer_next_page`"}
{/if}
{assign var="paginationStartPage" value="`$footer_currentPage-3`"}
{if $footer_currentPage+3 > $footer_totalPages}
{assign var="paginationStartPage" value="`$footer_totalPages-4`"}
@ -121,8 +129,8 @@
{if $paginationStartPage <= 0}
{assign var="paginationStartPage" value="1"}
{/if}
{if $footer_prev_page}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.PREVIOUS_PAGE}" href="{$footer_prev_page}"><i class="fa fa-arrow-left" aria-hidden="true"></i><span class="sr-only">{$CONST.PREVIOUS_PAGE}</span></a>
{if $linkPrevPage}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.PREVIOUS_PAGE}" href="{$linkPrevPage}"><i class="fa fa-arrow-left" aria-hidden="true"></i><span class="sr-only">{$CONST.PREVIOUS_PAGE}</span></a>
{/if}
{if $paginationStartPage > 1}
<a class="btn btn-md btn-default btn-theme" href="{'1'|string_format:$footer_pageLink}">1</a>
@ -143,8 +151,8 @@
{if $smarty.section.i.index <= $footer_totalPages}
<a class="btn btn-md btn-default btn-theme" href="{$footer_totalPages|string_format:$footer_pageLink}">{$footer_totalPages}</a>
{/if}
{if $footer_next_page}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.NEXT_PAGE}" href="{$footer_next_page}"><i class="fa fa-arrow-right" aria-hidden="true"></i><span class="sr-only">{$CONST.NEXT_PAGE}</span></a>
{if $linkNextPage}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.NEXT_PAGE}" href="{$linkNextPage}"><i class="fa fa-arrow-right" aria-hidden="true"></i><span class="sr-only">{$CONST.NEXT_PAGE}</span></a>
{/if}
</nav>
{/if}