From 5f71297bc972a5998dc5235e92762c27923f5489 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 21 Sep 2011 12:51:41 -0400
Subject: [PATCH] - Add notice on autocompletion that not all records were displayed

---
 CHANGELOG                               |    1 +
 program/include/main.inc                |    2 +-
 program/localization/en_US/messages.inc |    1 +
 program/js/app.js                       |   36 ++++++++++++++++++++++--------------
 4 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index f4100da..61d5f9a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Add notice on autocompletion that not all records were displayed
 - Add option 'searchonly' for LDAP address books
 - Add Priority filter to the messages list
 - Cache synchronization using QRESYNC/CONDSTORE
diff --git a/program/include/main.inc b/program/include/main.inc
index 452505f..28556df 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -2384,5 +2384,5 @@
 
     $RCMAIL->output->set_env('autocomplete_max', (int)$RCMAIL->config->get('autocomplete_max', 15));
     $RCMAIL->output->set_env('autocomplete_min_length', $RCMAIL->config->get('autocomplete_min_length'));
-    $RCMAIL->output->add_label('autocompletechars');
+    $RCMAIL->output->add_label('autocompletechars', 'autocompletemore');
 }
diff --git a/program/js/app.js b/program/js/app.js
index f9233eb..4b88958 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -3620,19 +3620,15 @@
       return;
 
     if (q.length && q.length < min) {
-      if (!this.env.acinfo) {
-        this.env.acinfo = this.display_message(
+      if (!this.ksearch_info) {
+        this.ksearch_info = this.display_message(
           this.get_label('autocompletechars').replace('$min', min));
       }
       return;
     }
-    else if (this.env.acinfo) {
-      this.hide_message(this.env.acinfo);
-    }
 
     var old_value = this.ksearch_value;
     this.ksearch_value = q;
-
     this.ksearch_destroy();
 
     // ...string is empty
@@ -3730,16 +3726,20 @@
       this.env.contacts = this.env.contacts.concat(results);
 
     // run next parallel search
-    if (maxlen > 0 && this.ksearch_data.id == reqid && this.ksearch_data.sources.length) {
-      var lock, xhr, props = this.ksearch_data, source = props.sources.shift();
-      if (source) {
-        lock = this.display_message(this.get_label('searching'), 'loading');
-        xhr = this.http_post(props.action, '_search='+urlencode(s_val)+'&_id='+reqid
-          +'&_source='+urlencode(source), lock);
+    if (this.ksearch_data.id == reqid) {
+      if (maxlen > 0 && this.ksearch_data.sources.length) {
+        var lock, xhr, props = this.ksearch_data, source = props.sources.shift();
+        if (source) {
+          lock = this.display_message(this.get_label('searching'), 'loading');
+          xhr = this.http_post(props.action, '_search='+urlencode(s_val)+'&_id='+reqid
+            +'&_source='+urlencode(source), lock);
 
-        this.ksearch_data.locks.push(lock);
-        this.ksearch_data.requests.push(xhr);
+          this.ksearch_data.locks.push(lock);
+          this.ksearch_data.requests.push(xhr);
+        }
       }
+      else if (!maxlen && !this.ksearch_msg)
+        this.ksearch_msg = this.display_message(this.get_label('autocompletemore'));
     }
   };
 
@@ -3783,7 +3783,15 @@
     for (i=0, len=ac.locks.length; i<len; i++)
       this.abort_request({request: ac.requests[i], lock: ac.locks[i]});
 
+    if (this.ksearch_info)
+      this.hide_message(this.ksearch_info);
+
+    if (this.ksearch_msg)
+      this.hide_message(this.ksearch_msg);
+
     this.ksearch_data = null;
+    this.ksearch_info = null;
+    this.ksearch_msg = null;
   }
 
   /*********************************************************/
diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc
index 8ca06a6..5572a76 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -149,6 +149,7 @@
 $messages['messagecopied'] = 'Message(s) copied successfully.';
 $messages['messagemarked'] = 'Message(s) marked successfully.';
 $messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
+$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
 $messages['namecannotbeempty'] = 'Name cannot be empty.';
 $messages['nametoolong'] = 'Name is too long.';
 $messages['folderupdated'] = 'Folder updated successfully.';

--
Gitblit v1.9.1