From fa59965b41023095d4da710a72ce71bb230de1eb Mon Sep 17 00:00:00 2001 From: thomascube Date: Mon, 18 Jul 2011 17:35:12 +0000 Subject: [PATCH] Asynchronously load contacts after page load --- program/js/app.js | 3 +++ program/steps/addressbook/func.inc | 18 ++++++------------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index 3143236d2..5777167a1 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -338,6 +338,9 @@ function rcube_webmail() 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 62c61ecd0..270f70f9f 100644 --- a/program/steps/addressbook/func.inc +++ b/program/steps/addressbook/func.inc @@ -84,6 +84,9 @@ if (!$RCMAIL->action && !$OUTPUT->ajax_call) { $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 @@ function rcmail_directory_list($attrib) // 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 @@ function rcmail_contact_groups($args) } -// 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 @@ function rcmail_contacts_list($attrib) // 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 @@ function rcmail_rowcount_display($attrib) $OUTPUT->add_gui_object('countdisplay', $attrib['id']); - return html::span($attrib, rcmail_get_rowcount_text()); + return html::span($attrib, rcube_label('loading')); } @@ -343,9 +340,6 @@ function rcmail_get_rowcount_text($result=null) if (!$result) { $result = $CONTACTS->get_result(); } - if (!$result) { - $result = $CONTACTS->count(); - } if ($result->count == 0) $out = rcube_label('nocontactsfound');