From fa59965b41023095d4da710a72ce71bb230de1eb Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Mon, 18 Jul 2011 13:35:12 -0400
Subject: [PATCH] Asynchronously load contacts after page load
---
program/steps/addressbook/func.inc | 18 ++++++------------
program/js/app.js | 3 +++
2 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/program/js/app.js b/program/js/app.js
index 3143236..5777167 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -338,6 +338,9 @@
this.enable_command('add', 'import', this.env.writable_source);
this.enable_command('list', 'listgroup', 'advanced-search', true);
+
+ // load contacts of selected source
+ this.command('list', this.env.source);
break;
diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index 62c61ec..270f70f 100644
--- a/program/steps/addressbook/func.inc
+++ b/program/steps/addressbook/func.inc
@@ -84,6 +84,9 @@
$OUTPUT->set_pagetitle(rcube_label('addressbook'));
$_SESSION['addressbooks_count'] = count($js_list);
$_SESSION['addressbooks_count_writeable'] = $writeable;
+
+ if (!strlen($source))
+ $source = strval(key($js_list));
$CONTACTS = rcmail_contact_source($source, true);
}
@@ -180,8 +183,6 @@
// currently selected source
$current = get_input_value('_source', RCUBE_INPUT_GPC);
- if (!strlen($current) || !isset($sources[$source]))
- $current = strval(key($sources));
foreach ($sources as $j => $source) {
$id = strval($source['id'] ? $source['id'] : $j);
@@ -247,7 +248,7 @@
}
-// return the message list as HTML table
+// return the contacts list as HTML table
function rcmail_contacts_list($attrib)
{
global $CONTACTS, $OUTPUT;
@@ -255,20 +256,16 @@
// define list of cols to be displayed
$a_show_cols = array('name');
- // count contacts for this user
- $result = $CONTACTS->list_records($a_show_cols);
-
// add id to message list table if not specified
if (!strlen($attrib['id']))
$attrib['id'] = 'rcmAddressList';
// create XHTML table
- $out = rcube_table_output($attrib, $result->records, $a_show_cols, $CONTACTS->primary_key);
+ $out = rcube_table_output($attrib, array(), $a_show_cols, $CONTACTS->primary_key);
// set client env
$OUTPUT->add_gui_object('contactslist', $attrib['id']);
$OUTPUT->set_env('current_page', (int)$CONTACTS->list_page);
- $OUTPUT->set_env('pagecount', ceil($result->count/$CONTACTS->page_size));
$OUTPUT->include_script('list.js');
// add some labels to client
@@ -331,7 +328,7 @@
$OUTPUT->add_gui_object('countdisplay', $attrib['id']);
- return html::span($attrib, rcmail_get_rowcount_text());
+ return html::span($attrib, rcube_label('loading'));
}
@@ -342,9 +339,6 @@
// read nr of contacts
if (!$result) {
$result = $CONTACTS->get_result();
- }
- if (!$result) {
- $result = $CONTACTS->count();
}
if ($result->count == 0)
--
Gitblit v1.9.1