summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2014-07-08 10:10:16 +0200
committerAleksander Machniak <alec@alec.pl>2014-07-08 10:10:16 +0200
commit43b225d18333530abf17f5ca39140d417cc69490 (patch)
treede7e7fd17f9046f856b93599641ecb6254b48265
parentb231c8f6accb7c04461ab8364016d0abbe81f82e (diff)
Support contact_search_name option in ACL plugin autocompletion
-rw-r--r--plugins/acl/acl.js6
-rw-r--r--plugins/acl/acl.php27
-rw-r--r--plugins/acl/package.xml4
3 files changed, 22 insertions, 15 deletions
diff --git a/plugins/acl/acl.js b/plugins/acl/acl.js
index d82725c8b..e59ac72a2 100644
--- a/plugins/acl/acl.js
+++ b/plugins/acl/acl.js
@@ -24,11 +24,7 @@ if (window.rcmail) {
if (e.field.id != 'acluser')
return;
- var value = e.insert;
- // get UID from the entry value
- if (value.match(/\s*\(([^)]+)\)[, ]*$/))
- value = RegExp.$1;
- e.field.value = value;
+ e.field.value = e.insert.replace(/[ ,;]+$/, '');
});
}
}
diff --git a/plugins/acl/acl.php b/plugins/acl/acl.php
index 95d4eda62..3e3bca9e1 100644
--- a/plugins/acl/acl.php
+++ b/plugins/acl/acl.php
@@ -88,6 +88,7 @@ class acl extends rcube_plugin
$search = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC, true);
$reqid = rcube_utils::get_input_value('_reqid', rcube_utils::INPUT_GPC);
$users = array();
+ $keys = array();
if ($this->init_ldap()) {
$max = (int) $this->rc->config->get('autocomplete_max', 15);
@@ -105,15 +106,23 @@ class acl extends rcube_plugin
}
if ($user) {
- if ($record['name'])
- $user = $record['name'] . ' (' . $user . ')';
-
+ $display = rcube_addressbook::compose_search_name($record);
+ $user = array('name' => $user, 'display' => $display);
$users[] = $user;
+ $keys[] = $display ?: $user['name'];
}
}
}
- sort($users, SORT_LOCALE_STRING);
+ if (count($users)) {
+ // sort users index
+ asort($keys, SORT_LOCALE_STRING);
+ // re-sort users according to index
+ foreach ($keys as $idx => $val) {
+ $keys[$idx] = $users[$idx];
+ }
+ $users = array_values($keys);
+ }
$this->rc->output->command('ksearch_query_results', $users, $search, $reqid);
$this->rc->output->send();
@@ -653,8 +662,9 @@ class acl extends rcube_plugin
*/
private function init_ldap()
{
- if ($this->ldap)
+ if ($this->ldap) {
return $this->ldap->ready;
+ }
// get LDAP config
$config = $this->rc->config->get('acl_users_source');
@@ -666,7 +676,7 @@ class acl extends rcube_plugin
// not an array, use configured ldap_public source
if (!is_array($config)) {
$ldap_config = (array) $this->rc->config->get('ldap_public');
- $config = $ldap_config[$config];
+ $config = $ldap_config[$config];
}
$uid_field = $this->rc->config->get('acl_users_field', 'mail');
@@ -692,12 +702,13 @@ class acl extends rcube_plugin
);
// search in UID and name fields
- $config['search_fields'] = array_values($config['fieldmap']);
+ $config['search_fields'] = array_values($config['fieldmap']);
$config['required_fields'] = array($uid_field);
// set search filter
- if ($filter)
+ if ($filter) {
$config['filter'] = $filter;
+ }
// disable vlv
$config['vlv'] = false;
diff --git a/plugins/acl/package.xml b/plugins/acl/package.xml
index a99ad4ffa..87e8b1ca2 100644
--- a/plugins/acl/package.xml
+++ b/plugins/acl/package.xml
@@ -13,9 +13,9 @@
<email>alec@alec.pl</email>
<active>yes</active>
</lead>
- <date>2014-02-04</date>
+ <date>2014-07-08</date>
<version>
- <release>1.3</release>
+ <release>1.4</release>
<api>1.0</api>
</version>
<stability>