From 519e380f637cbc8d2b5c3d7a0d34508ac17d57d8 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 14 Aug 2012 12:55:38 -0400
Subject: [PATCH] Merge branch 'master' of github.com:roundcube/roundcubemail

---
 CHANGELOG                                       |    3 +
 program/include/html.php                        |    2 
 program/include/rcube_ldap.php                  |    4 +-
 program/steps/settings/save_identity.inc        |   15 +------
 plugins/managesieve/Changelog                   |    2 +
 plugins/new_user_identity/package.xml           |    4 +-
 plugins/new_user_identity/new_user_identity.php |   14 ++++--
 plugins/managesieve/lib/Net/Sieve.php           |    4 +
 program/steps/settings/edit_identity.inc        |    4 -
 program/include/rcube_output_html.php           |    3 +
 program/steps/mail/func.inc                     |    2 
 skins/larry/styles.css                          |    8 ++++
 program/js/app.js                               |    3 -
 skins/larry/mail.css                            |    4 ++
 program/steps/addressbook/search.inc            |    7 ++-
 15 files changed, 48 insertions(+), 31 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 3441f1e..c2d7c40 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,9 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix inactive Save search option after advanced search (#1488607)
+- Fix Remove from group option is active for contact search result (#1488608)
+- Disable autocapitalization in login form on iPad/iPhone (#1488609)
 - Fix focus on the list when list row is clicked (#1488600)
 - Added separate From and To columns apart from smart From/To column (#1486891)
 - Fix fallback to Larry skin when configured skin isn't available (#1488591)
diff --git a/plugins/managesieve/Changelog b/plugins/managesieve/Changelog
index c015ee4..482cff0 100644
--- a/plugins/managesieve/Changelog
+++ b/plugins/managesieve/Changelog
@@ -1,3 +1,5 @@
+- Fixed issue with DBMail bug [http://pear.php.net/bugs/bug.php?id=19077] (#1488594)
+
 * version 5.2 [2012-07-24]
 -----------------------------------------------------------
 - Added GUI for variables setting - RFC5229 (patch from Paweł Słowik)
diff --git a/plugins/managesieve/lib/Net/Sieve.php b/plugins/managesieve/lib/Net/Sieve.php
index a8e36d8..8a0a9b0 100644
--- a/plugins/managesieve/lib/Net/Sieve.php
+++ b/plugins/managesieve/lib/Net/Sieve.php
@@ -1098,7 +1098,9 @@
                     return PEAR::raiseError(trim($response . $line), 6);
                 }
 
-                if (preg_match('/^{([0-9]+)}/i', $line, $matches)) {
+                // "\+?" is added in the regexp to workaround DBMail bug
+                // http://dbmail.org/mantis/view.php?id=963
+                if (preg_match('/^{([0-9]+)\+?}/i', $line, $matches)) {
                     // Matches literal string responses.
                     $line = $this->_recvBytes($matches[1] + 2);
 
diff --git a/plugins/new_user_identity/new_user_identity.php b/plugins/new_user_identity/new_user_identity.php
index f3dae20..200d9ac 100644
--- a/plugins/new_user_identity/new_user_identity.php
+++ b/plugins/new_user_identity/new_user_identity.php
@@ -36,11 +36,14 @@
         $rcmail = rcmail::get_instance();
 
         if ($this->init_ldap($args['host'])) {
-            $results = $this->ldap->search('*', $args['user'], TRUE);
+            $results = $this->ldap->search('*', $args['user'], true);
             if (count($results->records) == 1) {
-                $args['user_name'] = $results->records[0]['name'];
-                if (!$args['user_email'] && strpos($results->records[0]['email'], '@')) {
-                    $args['user_email'] = rcube_idn_to_ascii($results->records[0]['email']);
+                $user_name  = is_array($results->records[0]['name']) ? $results->records[0]['name'][0] : $results->records[0]['name'];
+                $user_email = is_array($results->records[0]['email']) ? $results->records[0]['email'][0] : $results->records[0]['email'];
+
+                $args['user_name'] = $user_name;
+                if (!$args['user_email'] && strpos($user_email, '@')) {
+                    $args['user_email'] = rcube_idn_to_ascii($user_email);
                 }
             }
         }
@@ -49,8 +52,9 @@
 
     private function init_ldap($host)
     {
-        if ($this->ldap)
+        if ($this->ldap) {
             return $this->ldap->ready;
+        }
 
         $rcmail = rcmail::get_instance();
 
diff --git a/plugins/new_user_identity/package.xml b/plugins/new_user_identity/package.xml
index 7d9d20d..e50cd92 100644
--- a/plugins/new_user_identity/package.xml
+++ b/plugins/new_user_identity/package.xml
@@ -15,9 +15,9 @@
 		<email>alec@alec.pl</email>
 		<active>yes</active>
 	</lead>
-	<date>2012-08-07</date>
+	<date>2012-08-13</date>
 	<version>
-		<release>1.0.6</release>
+		<release>1.0.7</release>
 		<api>1.1</api>
 	</version>
 	<stability>
diff --git a/program/include/html.php b/program/include/html.php
index 880c904..d15d508 100644
--- a/program/include/html.php
+++ b/program/include/html.php
@@ -358,7 +358,7 @@
     protected $tagname = 'input';
     protected $type = 'text';
     protected $allowed = array(
-        'type','name','value','size','tabindex',
+        'type','name','value','size','tabindex','autocapitalize',
         'autocomplete','checked','onchange','onclick','disabled','readonly',
         'spellcheck','results','maxlength','src','multiple','placeholder',
     );
diff --git a/program/include/rcube_ldap.php b/program/include/rcube_ldap.php
index 7f51b8f..dbab0fd 100644
--- a/program/include/rcube_ldap.php
+++ b/program/include/rcube_ldap.php
@@ -767,9 +767,9 @@
         }
 
         // use VLV pseudo-search for autocompletion
-        $rcmail = rcmail::get_instance();
+        $rcube = rcube::get_instance();
 
-        if ($this->prop['vlv_search'] && $this->conn && join(',', (array)$fields) == join(',', $rcmail->config->get('contactlist_fields')))
+        if ($this->prop['vlv_search'] && $this->conn && join(',', (array)$fields) == join(',', $rcube->config->get('contactlist_fields')))
         {
             // add general filter to query
             if (!empty($this->prop['filter']) && empty($this->filter))
diff --git a/program/include/rcube_output_html.php b/program/include/rcube_output_html.php
index 30512d2..0a8f0e3 100644
--- a/program/include/rcube_output_html.php
+++ b/program/include/rcube_output_html.php
@@ -1378,6 +1378,9 @@
         if (empty($url) && !preg_match('/_(task|action)=logout/', $_SERVER['QUERY_STRING']))
             $url = $_SERVER['QUERY_STRING'];
 
+        // Disable autocapitalization on iPad/iPhone (#1488609)
+        $attrib['autocapitalize'] = 'off';
+
         // set atocomplete attribute
         $user_attrib = $autocomplete > 0 ? array() : array('autocomplete' => 'off');
         $host_attrib = $autocomplete > 0 ? array() : array('autocomplete' => 'off');
diff --git a/program/js/app.js b/program/js/app.js
index 214a5cb..de61b21 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -4031,8 +4031,7 @@
 
     // if a group is currently selected, and there is at least one contact selected
     // thend we can enable the group-remove-selected command
-    this.enable_command('group-remove-selected', typeof this.env.group != 'undefined' && list.selection.length > 0);
-
+    this.enable_command('group-remove-selected', this.env.group && list.selection.length > 0);
     this.enable_command('compose', this.env.group || list.selection.length > 0);
     this.enable_command('edit', id && writable);
     this.enable_command('delete', list.selection.length && writable);
diff --git a/program/steps/addressbook/search.inc b/program/steps/addressbook/search.inc
index d31e54b..8513250 100644
--- a/program/steps/addressbook/search.inc
+++ b/program/steps/addressbook/search.inc
@@ -237,9 +237,12 @@
     $OUTPUT->command('set_env', 'source', '');
     $OUTPUT->command('set_env', 'group', '');
 
-    // unselect currently selected directory/group
-    if (!$sid)
+    if (!$sid) {
+        // unselect currently selected directory/group
         $OUTPUT->command('unselect_directory');
+        // enable "Save search" command
+        $OUTPUT->command('enable_command', 'search-create', true);
+    }
     $OUTPUT->command('update_group_commands');
 
     // send response
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index b2f81d7..3d65eac 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -1488,7 +1488,7 @@
 function rcmail_wrap_and_quote($text, $length = 72)
 {
   // Rebuild the message body with a maximum of $max chars, while keeping quoted message.
-  $max = min(77, $length + 8);
+  $max = max(75, $length + 8);
   $lines = preg_split('/\r?\n/', trim($text));
   $out = '';
 
diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc
index ebc2c1b..aa1aeea 100644
--- a/program/steps/settings/edit_identity.inc
+++ b/program/steps/settings/edit_identity.inc
@@ -97,9 +97,7 @@
     $form['addressing']['content']['email']['class'] = 'disabled';
   }
 
-  $IDENTITY_RECORD['email']    = rcube_idn_to_utf8($IDENTITY_RECORD['email']);
-  $IDENTITY_RECORD['reply-to'] = rcube_idn_to_utf8($IDENTITY_RECORD['reply-to']);
-  $IDENTITY_RECORD['bcc']      = rcube_idn_to_utf8($IDENTITY_RECORD['bcc']);
+  $IDENTITY_RECORD['email'] = rcube_idn_to_utf8($IDENTITY_RECORD['email']);
 
   // Allow plugins to modify identity form content
   $plugin = $RCMAIL->plugins->exec_hook('identity_form', array(
diff --git a/program/steps/settings/save_identity.inc b/program/steps/settings/save_identity.inc
index dba143d..8515c44 100644
--- a/program/steps/settings/save_identity.inc
+++ b/program/steps/settings/save_identity.inc
@@ -58,8 +58,8 @@
 // Validate e-mail addresses
 $email_checks = array(rcube_idn_to_ascii($save_data['email']));
 foreach (array('reply-to', 'bcc') as $item) {
-  foreach (rcube_mime::decode_address_list(rcube_idn_to_ascii($save_data[$item]), null, false) as $rcpt)
-    $email_checks[] = $rcpt['mailto'];
+  foreach (rcube_mime::decode_address_list($save_data[$item], null, false) as $rcpt)
+    $email_checks[] = rcube_idn_to_ascii($rcpt['mailto']);
 }
 
 foreach ($email_checks as $email) {
@@ -80,11 +80,6 @@
 
   if ($save_data['email'])
     $save_data['email'] = rcube_idn_to_ascii($save_data['email']);
-  if ($save_data['bcc'])
-    $save_data['bcc'] = rcube_idn_to_ascii($save_data['bcc']);
-  if ($save_data['reply-to'])
-    $save_data['reply-to'] = rcube_idn_to_ascii($save_data['reply-to']);
-
   if (!$plugin['abort'])
     $updated = $RCMAIL->user->update_identity($iid, $save_data);
   else
@@ -119,11 +114,7 @@
   $save_data = $plugin['record'];
 
   if ($save_data['email'])
-    $save_data['email']    = rcube_idn_to_ascii($save_data['email']);
-  if ($save_data['bcc'])
-    $save_data['bcc']      = rcube_idn_to_ascii($save_data['bcc']);
-  if ($save_data['reply-to'])
-    $save_data['reply-to'] = rcube_idn_to_ascii($save_data['reply-to']);
+    $save_data['email'] = rcube_idn_to_ascii($save_data['email']);
 
   if (!$plugin['abort'])
     $insert_id = $save_data['email'] ? $RCMAIL->user->insert_identity($save_data) : null;
diff --git a/skins/larry/mail.css b/skins/larry/mail.css
index 6e4e0cd..4fff243 100644
--- a/skins/larry/mail.css
+++ b/skins/larry/mail.css
@@ -137,6 +137,10 @@
 	background-position: 6px 2px;
 }
 
+#mailboxlist li:first-child {
+	border-radius: 4px 4px 0 0;
+}
+
 #mailboxlist li.mailbox a {
 	padding-left: 36px;
 	white-space: nowrap;
diff --git a/skins/larry/styles.css b/skins/larry/styles.css
index 1bdd303..0a72c50 100644
--- a/skins/larry/styles.css
+++ b/skins/larry/styles.css
@@ -824,6 +824,10 @@
 	overflow: hidden;
 }
 
+.uibox .boxfooter {
+	border-radius: 0 0 4px 4px;
+}
+
 .boxfooter .listbutton {
 	display: inline-block;
 	text-decoration: none;
@@ -834,6 +838,10 @@
 	margin-top: 1px;
 }
 
+.uibox .boxfooter .listbutton:first-child {
+	border-radius: 0 0 0 4px;
+}
+
 .boxfooter .listbutton .inner {
 	display: inline-block;
 	width: 48px;

--
Gitblit v1.9.1