Fix contacts list update after adding/deleting/moving a contact (#1490028, #1490033)

pull/213/head
Aleksander Machniak 10 years ago
parent e7cd99ca9e
commit e66a77e560

@ -54,6 +54,7 @@ CHANGELOG Roundcube Webmail
- Fix invalid Content-Type header when send_format_flowed=false (#1489992)
- Fix errors when adding/updating contacts in active search (#1490015)
- Fix incorrect thumbnail rotation with GD and exif orientation data (#1490029)
- Fix contacts list update after adding/deleting/moving a contact (#1490028, #1490033)
RELEASE 1.0.2
-------------

@ -1417,7 +1417,8 @@ use_arrow_key: function(keyCode, mod_key)
*/
scrollto: function(id)
{
var row = this.rows[id].obj;
var row = this.rows[id] ? this.rows[id].obj : null;
if (row && this.frame) {
var scroll_to = Number(row.offsetTop),
head_offset = 0;

@ -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)) {

@ -142,10 +142,6 @@ foreach ($cids as $source => $source_cids) {
}
if (!$deleted || $deleted != $all) {
// update saved search after data changed
if ($deleted) {
rcmail_search_update();
}
$OUTPUT->command('list_contacts');
}
else {
@ -157,8 +153,13 @@ else {
$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);
@ -180,10 +181,15 @@ else {
else {
// count contacts for this user
$result = $CONTACTS->count();
// get records from the next page to add to the list
$pages = ceil(($result->count + $deleted) / $PAGE_SIZE);
if ($_GET['_from'] != 'show' && $pages > 1 && $page < $pages) {
// 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
else if ($pages > 1 && $page < $pages) {
$CONTACTS->set_page($page);
$records = $CONTACTS->list_records(null, -$deleted);
}
@ -191,7 +197,7 @@ else {
// update message count display
$OUTPUT->set_env('pagecount', ceil($result->count / $PAGE_SIZE));
$OUTPUT->command('set_rowcount', rcmail_get_rowcount_text($result));
$OUTPUT->command('set_rowcount', $rowcount ? $rowcount : rcmail_get_rowcount_text($result));
// add new rows from next page (if any)
if (!empty($records)) {

@ -235,29 +235,12 @@ else {
$CONTACTS->add_to_group($plugin['group_id'], $plugin['ids']);
}
}
else {
$counts = $CONTACTS->count();
}
// show confirmation
$OUTPUT->show_message('successfullysaved', 'confirmation', null, false);
// add contact row to the list
if (empty($_REQUEST['_search']) && (string)$source === (string)$orig_source) {
$CONTACTS->reset();
$result = $CONTACTS->search($CONTACTS->primary_key, $insert_id);
rcmail_js_contacts_list($result, 'parent.');
$OUTPUT->command('parent.contact_list.select', rcube_utils::html_identifier($insert_id));
// update record count display
$CONTACTS->reset();
$OUTPUT->command('parent.set_rowcount', rcmail_get_rowcount_text($counts));
}
// just refresh the list (#1490015)
else {
$OUTPUT->command('parent.command', 'list');
}
$OUTPUT->command('parent.set_rowcount', $RCMAIL->gettext('loading'));
$OUTPUT->command('parent.list_contacts');
$OUTPUT->send('iframe');
}

@ -45,9 +45,6 @@ foreach ((array)$undo['data'] as $source => $cid) {
}
}
// update saved search after data changed
rcmail_search_update();
$RCMAIL->session->remove('contact_undo');
$OUTPUT->show_message('contactrestored', 'confirmation');

Loading…
Cancel
Save