From 84ffd59c0c3ff78bca5fbcd2c8893b741f36c9ba Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <bruederli@kolabsys.com>
Date: Thu, 19 Sep 2013 12:00:28 -0400
Subject: [PATCH] Allow sysadmins to define static responses which are immutable for the user

---
 config/main.inc.php.dist |   69 +++++++++++++++++++++++++---------
 1 files changed, 51 insertions(+), 18 deletions(-)

diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index 64f3643..2bd9491 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -253,6 +253,9 @@
 // Session name. Default: 'roundcube_sessid'
 $rcmail_config['session_name'] = null;
 
+// Session authentication cookie name. Default: 'roundcube_sessauth'
+$rcmail_config['session_auth_name'] = null;
+
 // Session path. Defaults to PHP session.cookie_path setting.
 $rcmail_config['session_path'] = null;
 
@@ -403,6 +406,12 @@
 // Note: useful when SMTP server stores sent mail in user mailbox
 $rcmail_config['no_save_sent_messages'] = false;
 
+// A static list of canned responses which are immutable for the user
+$rcmail_config['compose_responses_static'] = array(
+//  array('name' => 'Canned Response 1', 'text' => 'Static Response One'),
+//  array('name' => 'Canned Response 2', 'text' => 'Static Response Two'),
+);
+
 // ----------------------------------
 // PLUGINS
 // ----------------------------------
@@ -433,7 +442,8 @@
 $rcmail_config['date_format'] = 'Y-m-d';
 
 // give this choice of date formats to the user to select from
-$rcmail_config['date_formats'] = array('Y-m-d', 'd-m-Y', 'Y/m/d', 'm/d/Y', 'd/m/Y', 'd.m.Y', 'j.n.Y');
+// Note: do not use ambiguous formats like m/d/Y
+$rcmail_config['date_formats'] = array('Y-m-d', 'Y/m/d', 'Y.m.d', 'd-m-Y', 'd/m/Y', 'd.m.Y', 'j.n.Y');
 
 // use this format for time display (date or strftime format)
 $rcmail_config['time_format'] = 'H:i';
@@ -638,6 +648,7 @@
     'phone:work'  => 'telephoneNumber',
     'phone:mobile' => 'mobile',
     'phone:pager' => 'pager',
+    'phone:workfax' => 'facsimileTelephoneNumber',
     'street'      => 'street',
     'zipcode'     => 'postalCode',
     'region'      => 'st',
@@ -648,9 +659,8 @@
     'department'   => 'ou',
     'jobtitle'     => 'title',
     'notes'        => 'description',
+    'photo'        => 'jpegPhoto',
     // these currently don't work:
-    // 'phone:workfax' => 'facsimileTelephoneNumber',
-    // 'photo'         => 'jpegPhoto',
     // 'manager'       => 'manager',
     // 'assistant'     => 'secretary',
   ),
@@ -661,27 +671,50 @@
   // 'uid'  => 'md5(microtime())',               // You may specify PHP code snippets which are then eval'ed 
   // 'mail' => '{givenname}.{sn}@mydomain.com',  // or composite strings with placeholders for existing attributes
   ),
-  'sort'          => 'cn',    // The field to sort the listing by.
-  'scope'         => 'sub',   // search mode: sub|base|list
-  'filter'        => '(objectClass=inetOrgPerson)',      // used for basic listing (if not empty) and will be &'d with search queries. example: status=act
-  'fuzzy_search'  => true,    // server allows wildcard search
-  'vlv'           => false,   // Enable Virtual List View to more efficiently fetch paginated data (if server supports it)
-  'numsub_filter' => '(objectClass=organizationalUnit)',   // with VLV, we also use numSubOrdinates to query the total number of records. Set this filter to get all numSubOrdinates attributes for counting
-  'sizelimit'     => '0',     // Enables you to limit the count of entries fetched. Setting this to 0 means no limit.
-  'timelimit'     => '0',     // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.
-  'referrals'     => true|false,  // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups
+  'sort'           => 'cn',         // The field to sort the listing by.
+  'scope'          => 'sub',        // search mode: sub|base|list
+  'filter'         => '(objectClass=inetOrgPerson)',      // used for basic listing (if not empty) and will be &'d with search queries. example: status=act
+  'fuzzy_search'   => true,         // server allows wildcard search
+  'vlv'            => false,        // Enable Virtual List View to more efficiently fetch paginated data (if server supports it)
+  'vlv_search'     => false,        // Use Virtual List View functions for autocompletion searches (if server supports it)
+  'numsub_filter'  => '(objectClass=organizationalUnit)',   // with VLV, we also use numSubOrdinates to query the total number of records. Set this filter to get all numSubOrdinates attributes for counting
+  'config_root_dn' => 'cn=config',  // Root DN to search config entries (e.g. vlv indexes)
+  'sizelimit'      => '0',          // Enables you to limit the count of entries fetched. Setting this to 0 means no limit.
+  'timelimit'      => '0',          // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.
+  'referrals'      => false,        // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups
 
   // definition for contact groups (uncomment if no groups are supported)
   // for the groups base_dn, the user replacements %fu, %u, $d and %dc work as for base_dn (see above)
   // if the groups base_dn is empty, the contact base_dn is used for the groups as well
   // -> in this case, assure that groups and contacts are separated due to the concernig filters! 
-  'groups'        => array(
-    'base_dn'     => '',
-    'scope'       => 'sub',   // search mode: sub|base|list
-    'filter'      => '(objectClass=groupOfNames)',
+  'groups'  => array(
+    'base_dn'        => '',
+    'scope'          => 'sub',       // Search mode: sub|base|list
+    'filter'         => '(objectClass=groupOfNames)',
     'object_classes' => array("top", "groupOfNames"),
-    'member_attr'  => 'member',   // name of the member attribute, e.g. uniqueMember
-    'name_attr'    => 'cn',       // attribute to be used as group name
+    'member_attr'    => 'member',   // Name of the member attribute, e.g. uniqueMember
+    'name_attr'      => 'cn',       // Attribute to be used as group name
+    'member_filter'  => '(objectclass=*)',  // Optional filter to use when querying for group members
+    'vlv'            => false,      // Use VLV controls to list groups
+  ),
+  // this configuration replaces the regular groups listing in the directory tree with
+  // a hard-coded list of groups, each listing entries with the configured base DN and filter.
+  // if the 'groups' option from above is set, it'll be shown as the first entry with the name 'Groups'
+  'group_filters' => array(
+    'departments' => array(
+      'name'    => 'Company Departments',
+      'scope'   => 'list',
+      'base_dn' => 'ou=Groups,dc=mydomain,dc=com',
+      'filter'  => '(|(objectclass=groupofuniquenames)(objectclass=groupofurls))',
+      'name_attr' => 'cn',
+    ),
+    'customers' => array(
+      'name'    => 'Customers',
+      'scope'   => 'sub',
+      'base_dn' => 'ou=Customers,dc=mydomain,dc=com',
+      'filter'  => '(objectClass=inetOrgPerson)',
+      'name_attr' => 'sn',
+    ),
   ),
 );
 */

--
Gitblit v1.9.1