diff options
| -rw-r--r-- | CHANGELOG | 1 | ||||
| -rw-r--r-- | config/main.inc.php.dist | 5 | ||||
| -rw-r--r-- | program/js/app.js | 34 | ||||
| -rw-r--r-- | program/localization/en_US/messages.inc | 1 | ||||
| -rw-r--r-- | program/localization/pl_PL/messages.inc | 1 | ||||
| -rw-r--r-- | program/steps/mail/compose.inc | 4 | 
6 files changed, 35 insertions, 11 deletions
| @@ -63,6 +63,7 @@ CHANGELOG Roundcube Webmail  - Add missing confirmation/error messages on contact/group/message actions (#1486845)  - Add 'loading' message on message move/copy/delete/mark actions  - Improve responsiveness of messages displaying (#1486986) +- Add option for minimum length of autocomplete's string (#1486428)  RELEASE 0.4.2  ------------- diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist index eed34cadb..0d71c44eb 100644 --- a/config/main.inc.php.dist +++ b/config/main.inc.php.dist @@ -462,6 +462,11 @@ $rcmail_config['ldap_public']['Verisign'] = array(  // when populating address autocomplete fields server-side. ex: array('sql','Verisign');  $rcmail_config['autocomplete_addressbooks'] = array('sql'); +// The minimum number of characters required to be typed in an autocomplete field +// before address books will be searched. Most useful for LDAP directories that +// may need to do lengthy results building given overly-broad searches +$rcmail_config['autocomplete_min_length'] = 1; +  // ----------------------------------  // USER PREFERENCES  // ---------------------------------- diff --git a/program/js/app.js b/program/js/app.js index 620126cde..ff7411c13 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -3426,14 +3426,14 @@ function rcube_webmail()        return;      // get cursor pos -    var inp_value = this.ksearch_input.value; -    var cpos = this.get_caret_pos(this.ksearch_input); -    var p = inp_value.lastIndexOf(this.ksearch_value, cpos); +    var inp_value = this.ksearch_input.value, +      cpos = this.get_caret_pos(this.ksearch_input), +      p = inp_value.lastIndexOf(this.ksearch_value, cpos), +      insert = '', -    // replace search string with full address -    var pre = this.ksearch_input.value.substring(0, p); -    var end = this.ksearch_input.value.substring(p+this.ksearch_value.length, this.ksearch_input.value.length); -    var insert = ''; +      // replace search string with full address +      pre = inp_value.substring(0, p), +      end = inp_value.substring(p+this.ksearch_value.length, inp_value.length);      // insert all members of a group      if (typeof this.env.contacts[id] == 'object' && this.env.contacts[id].id) { @@ -3465,6 +3465,7 @@ function rcube_webmail()    this.ksearch_get_results = function()    {      var inp_value = this.ksearch_input ? this.ksearch_input.value : null; +      if (inp_value === null)        return; @@ -3472,9 +3473,10 @@ function rcube_webmail()        this.ksearch_pane.hide();      // get string from current cursor pos to last comma -    var cpos = this.get_caret_pos(this.ksearch_input); -    var p = inp_value.lastIndexOf(',', cpos-1); -    var q = inp_value.substring(p+1, cpos); +    var cpos = this.get_caret_pos(this.ksearch_input), +      p = inp_value.lastIndexOf(',', cpos-1), +      q = inp_value.substring(p+1, cpos), +      min = this.env.autocomplete_min_length;      // trim query string      q = q.replace(/(^\s+|\s+$)/g, ''); @@ -3483,6 +3485,18 @@ function rcube_webmail()      if (q == this.ksearch_value)        return; +    if (q.length < min) { +      if (!this.env.acinfo) { +        var label = this.get_label('autocompletechars'); +        label = label.replace('$min', min); +        this.env.acinfo = this.display_message(label); +      } +      return; +    } +    else if (this.env.acinfo && q.length == min) { +      this.hide_message(this.env.acinfo); +    } +      var old_value = this.ksearch_value;      this.ksearch_value = q; diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc index a5ac4315a..0f87c0505 100644 --- a/program/localization/en_US/messages.inc +++ b/program/localization/en_US/messages.inc @@ -127,5 +127,6 @@ $messages['messagedeleted'] = 'Message(s) deleted successfully';  $messages['messagemoved'] = 'Message(s) moved successfully';  $messages['messagecopied'] = 'Message(s) copied successfully';  $messages['messagemarked'] = 'Message(s) marked successfully'; +$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion';  ?> diff --git a/program/localization/pl_PL/messages.inc b/program/localization/pl_PL/messages.inc index db9eaca30..29749caae 100644 --- a/program/localization/pl_PL/messages.inc +++ b/program/localization/pl_PL/messages.inc @@ -132,5 +132,6 @@ $messages['messagedeleted'] = 'Wiadomości zostały usunięte';  $messages['messagemoved'] = 'Wiadomości zostały przeniesione';  $messages['messagecopied'] = 'Wiadomości zostały skopiowane';  $messages['messagemarked'] = 'Wiadomości zostały oznaczone'; +$messages['autocompletechars'] = 'Wprowadź co najmniej $min znak(ów) aby skorzystać z autouzupełniania';  ?> diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 2c29fc708..471649c04 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -112,7 +112,8 @@ if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != $MESSAGE_ID  // add some labels to client  $OUTPUT->add_label('nosubject', 'nosenderwarning', 'norecipientwarning', 'nosubjectwarning', 'cancel',      'nobodywarning', 'notsentwarning', 'notuploadedwarning', 'savingmessage', 'sendingmessage',  -    'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'fileuploaderror'); +    'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'fileuploaderror', +    'autocompletechars');  // add config parameters to client script  if (!empty($CONFIG['drafts_mbox'])) { @@ -123,6 +124,7 @@ if (!empty($CONFIG['drafts_mbox'])) {  $OUTPUT->set_env('mailbox', $IMAP->get_mailbox_name());  $OUTPUT->set_env('sig_above', $CONFIG['sig_above']);  $OUTPUT->set_env('top_posting', $CONFIG['top_posting']); +$OUTPUT->set_env('autocomplete_min_length', $CONFIG['autocomplete_min_length']);  // get reference message and set compose mode  if ($msg_uid = $_SESSION['compose']['param']['reply_uid']) | 
