alecpl
2011-08-16 5c9d1ffe8eb4d53c378720e745e54f2a4bdecb28
- Add option to hide selected LDAP addressbook on the list


4 files modified
34 ■■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
config/main.inc.php.dist 3 ●●●●● patch | view | raw | blame | history
program/include/rcmail.php 16 ●●●●● patch | view | raw | blame | history
program/steps/addressbook/func.inc 14 ●●●● patch | view | raw | blame | history
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)
config/main.inc.php.dist
@@ -513,6 +513,9 @@
  '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
program/include/rcmail.php
@@ -439,6 +439,7 @@
   * 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 @@
      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 @@
      $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)
        );
    }
program/steps/addressbook/func.inc
@@ -68,11 +68,17 @@
    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]);
        }
    }
@@ -82,9 +88,9 @@
    $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));