From 7731c21c2dcb3e97970b8c52599a59b49230f610 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Mon, 21 Dec 2009 22:50:11 -0700 Subject: [PATCH] Fix rownum determination on server --- imp/ajax.php | 3 +-- imp/js/DimpBase.js | 2 +- imp/lib/Views/ListMessages.php | 30 ++++++++++++++---------------- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/imp/ajax.php b/imp/ajax.php index bf443e518..78a05a2b9 100644 --- a/imp/ajax.php +++ b/imp/ajax.php @@ -100,8 +100,7 @@ function _getListMessages($mbox, $change) $search = Horde_Serialize::unserialize($search, Horde_Serialize::JSON); $args += array( 'search_uid' => isset($search->imapuid) ? $search->imapuid : null, - 'search_unseen' => isset($search->unseen) ? $search->unseen : null, - 'search_view' => isset($search->view) ? $search->view : null + 'search_unseen' => isset($search->unseen) ? $search->unseen : null ); } diff --git a/imp/js/DimpBase.js b/imp/js/DimpBase.js index 12301bf20..e30bb297d 100644 --- a/imp/js/DimpBase.js +++ b/imp/js/DimpBase.js @@ -337,7 +337,7 @@ var DimpBase = { } } - this.viewport.loadView(f, { search: (this.uid ? { imapuid: Number(this.uid), view: f } : null), background: opts.background}); + this.viewport.loadView(f, { search: (this.uid ? { imapuid: Number(this.uid) } : null), background: opts.background}); }, _createViewPort: function() diff --git a/imp/lib/Views/ListMessages.php b/imp/lib/Views/ListMessages.php index a9a19b8f6..be1120ee3 100644 --- a/imp/lib/Views/ListMessages.php +++ b/imp/lib/Views/ListMessages.php @@ -173,7 +173,7 @@ class IMP_Views_ListMessages $cached = array_flip($cached); } - if (isset($args['search_unseen'])) { + if (!empty($args['search_unseen'])) { /* Do an unseen search. We know what messages the browser * doesn't have based on $cached. Thus, search for the first * unseen message not located in $cached. */ @@ -182,6 +182,15 @@ class IMP_Views_ListMessages return $result; } $rownum = array_search(reset($uid_search), $sorted_list['s']); + } elseif (!empty($args['search_uid'])) { + $rownum = 1; + foreach (array_keys($sorted_list['s'], $args['search_uid']) as $val) { + if (empty($sorted_list['m'][$val]) || + ($sorted_list['m'][$val] == $args['search_mbox'])) { + $rownum = $val; + break; + } + } } else { /* If this is the initial request for a mailbox, figure out the * starting location based on user's preferences. */ @@ -191,18 +200,10 @@ class IMP_Views_ListMessages } /* Determine the row slice to process. */ - if (isset($args['search_uid']) || !is_null($rownum)) { - if (is_null($rownum)) { - $rownum = 1; - foreach (array_keys($sorted_list['s'], $args['search_uid']) as $val) { - if (empty($sorted_list['m'][$val]) || - ($sorted_list['m'][$val] == $args['search_mbox'])) { - $rownum = $val; - break; - } - } - } - + if (is_null($rownum)) { + $slice_start = $args['slice_start']; + $slice_end = $args['slice_end']; + } else { $slice_start = $rownum - $args['before']; $slice_end = $rownum + $args['after']; if ($slice_start < 1) { @@ -212,9 +213,6 @@ class IMP_Views_ListMessages } $result->rownum = $rownum; - } else { - $slice_start = $args['slice_start']; - $slice_end = $args['slice_end']; } $slice_start = max(1, $slice_start); -- 2.11.0