thomascube
2011-07-18 fa59965b41023095d4da710a72ce71bb230de1eb
Asynchronously load contacts after page load

2 files modified
21 ■■■■■ changed files
program/js/app.js 3 ●●●●● patch | view | raw | blame | history
program/steps/addressbook/func.inc 18 ●●●●● patch | view | raw | blame | history
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;
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)