summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2011-04-29 08:17:42 +0000
committeralecpl <alec@alec.pl>2011-04-29 08:17:42 +0000
commitc08b18c4b92cc7c253c72709e3aecb639a742d9f (patch)
treec02837a76a99f32b249eae166a68e459f753f694 /program
parent09b0e36b3f453a410b3389b6d95a29605d13bfca (diff)
- Fix relative URLs handling according to a <base> in HTML (#1487889)
Diffstat (limited to 'program')
-rw-r--r--program/include/rcube_shared.inc6
-rw-r--r--program/steps/mail/func.inc11
2 files changed, 9 insertions, 8 deletions
diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc
index 1fd6ed035..68f3fe44f 100644
--- a/program/include/rcube_shared.inc
+++ b/program/include/rcube_shared.inc
@@ -231,7 +231,7 @@ function make_absolute_url($path, $base_url)
}
// $path is absolute
- if ($path{0}=='/')
+ if ($path[0] == '/')
$abs_path = $host_url.$path;
else
{
@@ -243,13 +243,13 @@ function make_absolute_url($path, $base_url)
{
if (strrpos($base_url, '/'))
$base_url = substr($base_url, 0, strrpos($base_url, '/'));
-
+
$path = substr($path, 3);
}
$abs_path = $base_url.'/'.$path;
}
-
+
return $abs_path;
}
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index c346ef358..0f25ec765 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -607,6 +607,7 @@ function rcmail_wash_html($html, $p = array(), $cid_replaces)
$html = '<head></head>'. $html;
$html = substr_replace($html, '<meta http-equiv="Content-Type" content="text/html; charset='.RCMAIL_CHARSET.'" />', intval(stripos($html, '<head>')+6), 0);
}
+
// turn relative into absolute urls
$html = rcmail_resolve_base($html);
@@ -955,13 +956,13 @@ function rcmail_message_headers($attrib, $headers=NULL)
function rcmail_message_full_headers($attrib, $headers=NULL)
{
global $OUTPUT;
-
+
$html = html::div(array('class' => "more-headers show-headers", 'onclick' => "return ".JS_OBJECT_NAME.".command('load-headers','',this)"), '');
$html .= html::div(array('id' => "all-headers", 'class' => "all", 'style' => 'display:none'), html::div(array('id' => 'headers-source'), ''));
-
+
$OUTPUT->add_gui_object('all_headers_row', 'all-headers');
$OUTPUT->add_gui_object('all_headers_box', 'headers-source');
-
+
return html::div($attrib, $html);
}
@@ -1086,8 +1087,8 @@ function rcmail_resolve_base($body)
$replacer = new rcube_base_replacer($regs[2]);
// replace all relative paths
- $body = preg_replace_callback('/(src|background|href)=(["\']?)([\.\/]+[^"\'\s]+)(\2|\s|>)/Ui', array($replacer, 'callback'), $body);
- $body = preg_replace_callback('/(url\s*\()(["\']?)([\.\/]+[^"\'\)\s]+)(\2)\)/Ui', array($replacer, 'callback'), $body);
+ $body = preg_replace_callback('/(src|background|href)=(["\']?)([^"\'\s]+)(\2|\s|>)/Ui', array($replacer, 'callback'), $body);
+ $body = preg_replace_callback('/(url\s*\()(["\']?)([^"\'\)\s]+)(\2)\)/Ui', array($replacer, 'callback'), $body);
}
return $body;