From 799e1201459b1ee6422d2725b502376b34950f23 Mon Sep 17 00:00:00 2001 From: thomascube Date: Wed, 26 Oct 2011 11:48:27 +0000 Subject: Backporting changes trom trunk (r5357-r5365) --- program/steps/mail/func.inc | 22 +++++++++++----------- program/steps/settings/func.inc | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) (limited to 'program/steps') diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 6ece17511..f9352a3df 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -559,7 +559,7 @@ function rcmail_wash_html($html, $p = array(), $cid_replaces) // special replacements (not properly handled by washtml class) $html_search = array( '/(<\/nobr>)(\s+)()/i', // space(s) between - '/]*>.*<\/title>/i', // PHP bug #32547 workaround: remove title tag + '/]*>[^<]*<\/title>/i', // PHP bug #32547 workaround: remove title tag '/^(\0\0\xFE\xFF|\xFF\xFE\0\0|\xFE\xFF|\xFF\xFE|\xEF\xBB\xBF)/', // byte-order mark (only outlook?) '/]+>/i', // washtml/DOMDocument cannot handle xml namespaces ); @@ -590,16 +590,16 @@ function rcmail_wash_html($html, $p = array(), $cid_replaces) $html = preg_replace_callback('/(<[\/]*)([^\s>]+)/', 'rcmail_html_tag_callback', $html); // charset was converted to UTF-8 in rcube_imap::get_message_part(), - // -> change charset specification in HTML accordingly - $charset_pattern = '(]*content=)[\'"]?(\w+\/\w+;\s*charset=)([a-z0-9-_]+[\'"]?)'; - if (preg_match("/$charset_pattern/Ui", $html)) { - $html = preg_replace("/$charset_pattern/i", '\\1"\\2'.RCMAIL_CHARSET.'"', $html); - } - else { - // add meta content-type to malformed messages, washtml cannot work without that - if (!preg_match('/]*>(.*)<\/head>/Uims', $html)) - $html = ''. $html; - $html = substr_replace($html, '', intval(stripos($html, '')+6), 0); + // change/add charset specification in HTML accordingly, + // washtml cannot work without that + $meta = ''; + + // remove old meta tag and add the new one, making sure + // that it is placed in the head (#1488093) + $html = preg_replace('/]+charset=[a-z0-9-_]+[^>]*>/Ui', '', $html); + $html = preg_replace('/(]*>)/Ui', '\\1'.$meta, $html, -1, $rcount); + if (!$rcount) { + $html = '' . $meta . '' . $html; } // turn relative into absolute urls diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc index cb8b91881..bb144d4cb 100644 --- a/program/steps/settings/func.inc +++ b/program/steps/settings/func.inc @@ -178,7 +178,7 @@ function rcmail_user_prefs($current=null) // show page size selection if (!isset($no_override['timezone'])) { $field_id = 'rcmfd_timezone'; - $select_timezone = new html_select(array('name' => '_timezone', 'id' => $field_id, 'onchange' => "document.getElementById('rcmfd_dst').disabled=this.selectedIndex==0")); + $select_timezone = new html_select(array('name' => '_timezone', 'id' => $field_id, 'onchange' => "$('#rcmfd_dst').attr('disabled', this.selectedIndex==0)")); $select_timezone->add(rcube_label('autodetect'), 'auto'); $select_timezone->add('(GMT -11:00) Midway Island, Samoa', '-11'); $select_timezone->add('(GMT -10:00) Hawaii', '-10'); -- cgit v1.2.3