diff options
author | Aleksander Machniak <alec@alec.pl> | 2014-08-17 09:11:56 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2014-08-17 09:11:56 +0200 |
commit | e66a77e5601842a855963a25c3f4e229969c3392 (patch) | |
tree | c52631ea3f580cf36b0d2ce883e0011881155acc /program/steps/addressbook/delete.inc | |
parent | e7cd99ca9e81e4f516576fff5954f68ce005cf7a (diff) |
Fix contacts list update after adding/deleting/moving a contact (#1490028, #1490033)
Diffstat (limited to 'program/steps/addressbook/delete.inc')
-rw-r--r-- | program/steps/addressbook/delete.inc | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/program/steps/addressbook/delete.inc b/program/steps/addressbook/delete.inc index 3d57d7074..f5b8e4eb5 100644 --- a/program/steps/addressbook/delete.inc +++ b/program/steps/addressbook/delete.inc @@ -77,6 +77,17 @@ foreach ($cids as $source => $cid) { } } +if (!empty($_SESSION['contact_undo'])) { + $_SESSION['contact_undo']['ts'] = time(); + $msg = html::span(null, $RCMAIL->gettext('contactdeleted')) + . ' ' . html::a(array('onclick' => rcmail_output::JS_OBJECT_NAME.".command('undo', '', this)"), $RCMAIL->gettext('undo')); + + $OUTPUT->show_message($msg, 'confirmation', null, true, $undo_time); +} +else { + $OUTPUT->show_message('contactdeleted', 'confirmation'); +} + $page = isset($_SESSION['page']) ? $_SESSION['page'] : 1; // update saved search after data changed @@ -87,8 +98,13 @@ if (($records = rcmail_search_update(true)) !== false) { $result = new rcube_result_set($count, $first); $pages = ceil((count($records) + $delcnt) / $PAGE_SIZE); + // last page and it's empty, display previous one + if ($result->count && $result->count <= ($PAGE_SIZE * ($page - 1))) { + $OUTPUT->command('list_page', 'prev'); + $rowcount = $RCMAIL->gettext('loading'); + } // get records from the next page to add to the list - if ($_GET['_from'] != 'show' && $pages > 1 && $page < $pages) { + else if ($pages > 1 && $page < $pages) { // sort the records ksort($records, SORT_LOCALE_STRING); @@ -110,10 +126,15 @@ if (($records = rcmail_search_update(true)) !== false) { else { // count contacts for this user $result = $CONTACTS->count(); + $pages = ceil(($result->count + $delcnt) / $PAGE_SIZE); + // last page and it's empty, display previous one + if ($result->count && $result->count <= ($PAGE_SIZE * ($page - 1))) { + $OUTPUT->command('list_page', 'prev'); + $rowcount = $RCMAIL->gettext('loading'); + } // get records from the next page to add to the list - $pages = ceil(($result->count + $delcnt) / $PAGE_SIZE); - if ($_GET['_from'] != 'show' && $pages > 1 && $page < $pages) { + else if ($pages > 1 && $page < $pages) { $CONTACTS->set_page($page); $records = $CONTACTS->list_records(null, -$delcnt); } @@ -121,18 +142,7 @@ else { // update message count display $OUTPUT->set_env('pagecount', ceil($result->count / $PAGE_SIZE)); -$OUTPUT->command('set_rowcount', rcmail_get_rowcount_text($result)); - -if (!empty($_SESSION['contact_undo'])) { - $_SESSION['contact_undo']['ts'] = time(); - $msg = html::span(null, $RCMAIL->gettext('contactdeleted')) - . ' ' . html::a(array('onclick' => rcmail_output::JS_OBJECT_NAME.".command('undo', '', this)"), $RCMAIL->gettext('undo')); - - $OUTPUT->show_message($msg, 'confirmation', null, true, $undo_time); -} -else { - $OUTPUT->show_message('contactdeleted', 'confirmation'); -} +$OUTPUT->command('set_rowcount', $rowcount ? $rowcount : rcmail_get_rowcount_text($result)); // add new rows from next page (if any) if (!empty($records)) { |