From 5c9d1ffe8eb4d53c378720e745e54f2a4bdecb28 Mon Sep 17 00:00:00 2001 From: alecpl Date: Tue, 16 Aug 2011 13:41:52 +0000 Subject: - Add option to hide selected LDAP addressbook on the list --- CHANGELOG | 1 + config/main.inc.php.dist | 3 +++ program/include/rcmail.php | 16 +++++++++------- program/steps/addressbook/func.inc | 14 ++++++++++---- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1164bad48..3f7535382 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Add option to hide selected LDAP addressbook on the list - Add client-side checking of uploaded files size - Add newlines between organization, department, jobtitle (#1488028) - Recalculate date when replying to a message and localize the cite header (#1487675) diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist index 750fa2576..85afa8c7f 100644 --- a/config/main.inc.php.dist +++ b/config/main.inc.php.dist @@ -513,6 +513,9 @@ $rcmail_config['ldap_public']['Verisign'] = array( 'auth_cid' => '', // SASL authentication method (for proxy auth), e.g. DIGEST-MD5 'auth_method' => '', + // Indicates if the addressbook shall be displayed on the list. + // With this option enabled you can still search/view contacts. + 'hidden' => false, // Indicates if we can write to the LDAP directory or not. // If writable is true then these fields need to be populated: // LDAP_Object_Classes, required_fields, LDAP_rdn diff --git a/program/include/rcmail.php b/program/include/rcmail.php index ced5934a6..e013c759c 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -439,6 +439,7 @@ class rcmail * Return address books list * * @param boolean True if the address book needs to be writeable + * * @return array Address books array */ public function get_address_sources($writeable = false) @@ -453,9 +454,9 @@ class rcmail if (!isset($this->address_books['0'])) $this->address_books['0'] = new rcube_contacts($this->db, $this->user->ID); $list['0'] = array( - 'id' => '0', - 'name' => rcube_label('personaladrbook'), - 'groups' => $this->address_books['0']->groups, + 'id' => '0', + 'name' => rcube_label('personaladrbook'), + 'groups' => $this->address_books['0']->groups, 'readonly' => $this->address_books['0']->readonly, 'autocomplete' => in_array('sql', $autocomplete) ); @@ -465,11 +466,12 @@ class rcmail $ldap_config = (array) $ldap_config; foreach ($ldap_config as $id => $prop) $list[$id] = array( - 'id' => $id, - 'name' => $prop['name'], - 'groups' => is_array($prop['groups']), + 'id' => $id, + 'name' => $prop['name'], + 'groups' => is_array($prop['groups']), 'readonly' => !$prop['writable'], - 'autocomplete' => in_array('sql', $autocomplete) + 'hidden' => $prop['hidden'], + 'autocomplete' => in_array($id, $autocomplete) ); } diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc index d210a3d36..1ef55fd78 100644 --- a/program/steps/addressbook/func.inc +++ b/program/steps/addressbook/func.inc @@ -68,12 +68,18 @@ if (!$RCMAIL->action && !$OUTPUT->ajax_call) { if (!strlen($source) || !isset($js_list[$source])) $source = $js_list[key($js_list)]['id']; - // count writeable sources + // count all/writeable sources $writeable = 0; - foreach ($js_list as $s) { + $count = 0; + foreach ($js_list as $sid => $s) { + $count++; if (!$s['readonly']) { $writeable++; } + // unset hidden sources + if ($s['hidden']) { + unset($js_list[$sid]); + } } $search_mods = $RCMAIL->config->get('addressbook_search_mods', $SEARCH_MODS_DEFAULT); @@ -82,9 +88,9 @@ if (!$RCMAIL->action && !$OUTPUT->ajax_call) { $OUTPUT->set_env('writable_source', $writeable); $OUTPUT->set_pagetitle(rcube_label('addressbook')); - $_SESSION['addressbooks_count'] = count($js_list); + $_SESSION['addressbooks_count'] = $count; $_SESSION['addressbooks_count_writeable'] = $writeable; - + if (!strlen($source)) $source = strval(key($js_list)); -- cgit v1.2.3