|
|
@ -938,7 +938,7 @@ function rcmail_message_body($attrib)
|
|
|
|
$body = rcmail_print_body($part, array('safe' => $safe_mode, 'plain' => !$CONFIG['prefer_html']));
|
|
|
|
$body = rcmail_print_body($part, array('safe' => $safe_mode, 'plain' => !$CONFIG['prefer_html']));
|
|
|
|
|
|
|
|
|
|
|
|
if ($part->ctype_secondary == 'html')
|
|
|
|
if ($part->ctype_secondary == 'html')
|
|
|
|
$out .= html::div('message-htmlpart', rcmail_html4inline($body, $attrib['id'] . ' div.rcmBody'));
|
|
|
|
$out .= html::div('message-htmlpart', rcmail_html4inline($body, $attrib['id'], 'div.rcmBody'));
|
|
|
|
else
|
|
|
|
else
|
|
|
|
$out .= html::div('message-part', $body);
|
|
|
|
$out .= html::div('message-part', $body);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -997,7 +997,7 @@ function rcmail_resolve_base($body)
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* modify a HTML message that it can be displayed inside a HTML page
|
|
|
|
* modify a HTML message that it can be displayed inside a HTML page
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function rcmail_html4inline($body, $container_id)
|
|
|
|
function rcmail_html4inline($body, $container_id, $body_id='')
|
|
|
|
{
|
|
|
|
{
|
|
|
|
$last_style_pos = 0;
|
|
|
|
$last_style_pos = 0;
|
|
|
|
$body_lc = strtolower($body);
|
|
|
|
$body_lc = strtolower($body);
|
|
|
@ -1008,7 +1008,7 @@ function rcmail_html4inline($body, $container_id)
|
|
|
|
$pos = strpos($body_lc, '>', $pos)+1;
|
|
|
|
$pos = strpos($body_lc, '>', $pos)+1;
|
|
|
|
|
|
|
|
|
|
|
|
// replace all css definitions with #container [def]
|
|
|
|
// replace all css definitions with #container [def]
|
|
|
|
$styles = rcmail_mod_css_styles(substr($body, $pos, $pos2-$pos), $container_id);
|
|
|
|
$styles = rcmail_mod_css_styles(substr($body, $pos, $pos2-$pos), $container_id.($body_id ? ' '.$body_id : ''));
|
|
|
|
|
|
|
|
|
|
|
|
$body = substr($body, 0, $pos) . $styles . substr($body, $pos2);
|
|
|
|
$body = substr($body, 0, $pos) . $styles . substr($body, $pos2);
|
|
|
|
$body_lc = strtolower($body);
|
|
|
|
$body_lc = strtolower($body);
|
|
|
@ -1020,28 +1020,40 @@ function rcmail_html4inline($body, $container_id)
|
|
|
|
$body = preg_replace_callback('/<(a|link)\s+([^>]+)>/Ui', 'rcmail_alter_html_link', $body);
|
|
|
|
$body = preg_replace_callback('/<(a|link)\s+([^>]+)>/Ui', 'rcmail_alter_html_link', $body);
|
|
|
|
unset($GLOBALS['rcmail_html_container_id']);
|
|
|
|
unset($GLOBALS['rcmail_html_container_id']);
|
|
|
|
|
|
|
|
|
|
|
|
// add comments arround html and other tags
|
|
|
|
|
|
|
|
$out = preg_replace(array(
|
|
|
|
$out = preg_replace(array(
|
|
|
|
|
|
|
|
// add comments arround html and other tags
|
|
|
|
'/(<!DOCTYPE[^>]*>)/i',
|
|
|
|
'/(<!DOCTYPE[^>]*>)/i',
|
|
|
|
'/(<\?xml[^>]*>)/i',
|
|
|
|
'/(<\?xml[^>]*>)/i',
|
|
|
|
'/(<\/?html[^>]*>)/i',
|
|
|
|
'/(<\/?html[^>]*>)/i',
|
|
|
|
'/(<\/?head[^>]*>)/i',
|
|
|
|
'/(<\/?head[^>]*>)/i',
|
|
|
|
'/(<title[^>]*>.*<\/title>)/Ui',
|
|
|
|
'/(<title[^>]*>.*<\/title>)/Ui',
|
|
|
|
'/(<\/?meta[^>]*>)/i'),
|
|
|
|
'/(<\/?meta[^>]*>)/i',
|
|
|
|
'<!--\\1-->',
|
|
|
|
// quote <? of php and xml files that are specified as text/html
|
|
|
|
|
|
|
|
'/<\?/',
|
|
|
|
|
|
|
|
'/\?>/',
|
|
|
|
|
|
|
|
// replace <body> with <div>
|
|
|
|
|
|
|
|
'/<body([^>]*)>/i',
|
|
|
|
|
|
|
|
'/<\/body>/i',
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
array(
|
|
|
|
|
|
|
|
'<!--\\1-->',
|
|
|
|
|
|
|
|
'<!--\\1-->',
|
|
|
|
|
|
|
|
'<!--\\1-->',
|
|
|
|
|
|
|
|
'<!--\\1-->',
|
|
|
|
|
|
|
|
'<!--\\1-->',
|
|
|
|
|
|
|
|
'<!--\\1-->',
|
|
|
|
|
|
|
|
'<?',
|
|
|
|
|
|
|
|
'?>',
|
|
|
|
|
|
|
|
'<div class="rcmBody"\\1>',
|
|
|
|
|
|
|
|
'</div>',
|
|
|
|
|
|
|
|
),
|
|
|
|
$body);
|
|
|
|
$body);
|
|
|
|
|
|
|
|
|
|
|
|
$out = preg_replace(
|
|
|
|
// make sure there's 'rcmBody' div, we need it for proper css modification
|
|
|
|
array('/<body([^>]*)>/i', '/<\/body>/i'),
|
|
|
|
// its name is hardcoded in rcmail_message_body() also
|
|
|
|
array('<div class="rcmBody"\\1>', '</div>'),
|
|
|
|
|
|
|
|
$out);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!preg_match('/<div class="rcmBody"/', $out))
|
|
|
|
if (!preg_match('/<div class="rcmBody"/', $out))
|
|
|
|
$out = '<div class="rcmBody">' . $out . '</div>';
|
|
|
|
$out = '<div class="rcmBody">' . $out . '</div>';
|
|
|
|
|
|
|
|
|
|
|
|
// quote <? of php and xml files that are specified as text/html
|
|
|
|
|
|
|
|
$out = preg_replace(array('/<\?/', '/\?>/'), array('<?', '?>'), $out);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $out;
|
|
|
|
return $out;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|