diff --git a/lib/Alchemy/Phrasea/Controller/Prod/QueryController.php b/lib/Alchemy/Phrasea/Controller/Prod/QueryController.php
index 86b121ef46..839fa0f2dc 100644
--- a/lib/Alchemy/Phrasea/Controller/Prod/QueryController.php
+++ b/lib/Alchemy/Phrasea/Controller/Prod/QueryController.php
@@ -156,7 +156,11 @@ class QueryController extends Controller
. $this->app->trans('%total% reponses', ['%total%' => ''.$result->getTotal().'']) . '';
$json['infos'] = $infoResult;
- $json['navigation'] = $string;
+ $json['navigationTpl'] = $string;
+ $json['navigation'] = [
+ 'page' => $page,
+ 'perPage' => $perPage
+ ];
$prop = null;
diff --git a/resources/www/prod/js/jquery.main-prod.js b/resources/www/prod/js/jquery.main-prod.js
index a32a0d33c3..31a458077d 100644
--- a/resources/www/prod/js/jquery.main-prod.js
+++ b/resources/www/prod/js/jquery.main-prod.js
@@ -566,7 +566,7 @@ function initAnswerForm() {
$('#answers').append('
');
$('#tool_results').empty().append(datas.infos);
- $('#tool_navigate').empty().append(datas.navigation);
+ $('#tool_navigate').empty().append(datas.navigationTpl);
$.each(p4.Results.Selection.get(), function (i, el) {
$('#IMGT_' + el).addClass('selected');
@@ -575,6 +575,7 @@ function initAnswerForm() {
p4.tot = datas.total_answers;
p4.tot_options = datas.form;
p4.tot_query = datas.query;
+ p4.navigation = datas.navigation;
if (datas.next_page) {
$("#NEXT_PAGE, #answersNext").bind('click', function () {
diff --git a/resources/www/prod/js/jquery.p4.preview.js b/resources/www/prod/js/jquery.p4.preview.js
index badd5549a0..053eaac7ed 100644
--- a/resources/www/prod/js/jquery.p4.preview.js
+++ b/resources/www/prod/js/jquery.p4.preview.js
@@ -73,6 +73,12 @@ function openPreview(env, pos, contId, reload) {
var options_serial = p4.tot_options;
var query = p4.tot_query;
+ var navigation = p4.navigation;
+
+ // keep relative position for answer train:
+ var relativePos = pos;
+ // update real absolute position with pagination:
+ var absolutePos = parseInt(navigation.perPage,10) * (parseInt(navigation.page, 10) - 1) + parseInt(pos,10);
prevAjax = $.ajax({
type: "POST",
@@ -80,7 +86,7 @@ function openPreview(env, pos, contId, reload) {
dataType: 'json',
data: {
env: env,
- pos: pos,
+ pos: absolutePos,
cont: contId,
roll: roll,
options_serial: options_serial,
@@ -141,7 +147,7 @@ function openPreview(env, pos, contId, reload) {
p4.preview.current.width = parseInt($('#PREVIEWIMGCONT input[name=width]').val());
p4.preview.current.height = parseInt($('#PREVIEWIMGCONT input[name=height]').val());
p4.preview.current.tot = data.tot;
- p4.preview.current.pos = data.pos;
+ p4.preview.current.pos = relativePos;
if ($('#PREVIEWBOX img.record.zoomable').length > 0) {
$('#PREVIEWBOX img.record.zoomable').draggable();
@@ -334,7 +340,7 @@ function getNext() {
else {
if (p4.preview.mode == 'RESULT') {
posAsk = parseInt(p4.preview.current.pos) + 1;
- posAsk = (posAsk > parseInt(p4.tot) || isNaN(posAsk)) ? 0 : posAsk;
+ posAsk = (posAsk >= parseInt(p4.tot) || isNaN(posAsk)) ? 0 : posAsk;
openPreview('RESULT', posAsk, '', false);
}
else {