diff --git a/lib/classes/StudipCoreFormat.php b/lib/classes/StudipCoreFormat.php index f0f9a62523aff3c41248791878f7b1af20f23f6d..665bb376dd91a5166cbc6739b718952c3b6e0d35 100644 --- a/lib/classes/StudipCoreFormat.php +++ b/lib/classes/StudipCoreFormat.php @@ -515,8 +515,7 @@ class StudipCoreFormat extends TextFormat $intern = $domain === $_SERVER['HTTP_HOST']; - return sprintf('<a class="%s" href="mailto:%s">%s</a>', - $intern ? "link-intern" : "link-extern", + return sprintf('<a href="mailto:%1$s">%2$s</a>', $email, $link_text ); @@ -655,13 +654,23 @@ class StudipCoreFormat extends TextFormat $linkmarkup->removeMarkup('links'); $linkmarkup->removeMarkup('wiki-links'); - return sprintf('<a class="%s" href="%s"%s>%s</a>%s', - $intern ? 'link-intern' : 'link-extern', - $url, - $intern ? '' : ' target="_blank" rel="noreferrer noopener"', - $linkmarkup->format($title), - $postfix - ); + if (strpos($url, 'mailto:') === 0) { + return sprintf( + '<a href="%1$s">%2$s</a>%3$s', + $url, + $linkmarkup->format($title), + $postfix + ); + } else { + return sprintf( + '<a class="%s" href="%s"%s>%s</a>%s', + $intern ? 'link-intern' : 'link-extern', + $url, + $intern ? '' : ' target="_blank" rel="noreferrer noopener"', + $linkmarkup->format($title), + $postfix + ); + } } protected static function htmlAnchor($markup, $matches, $contents) diff --git a/lib/classes/htmlpurifier/HTMLPurifier_Injector_ClassifyLinks.php b/lib/classes/htmlpurifier/HTMLPurifier_Injector_ClassifyLinks.php index 4096bc8cbc242e1280ceed963bd6cea118388c48..a43e27e54925c70b06ab67ab578a3df6c8d55124 100644 --- a/lib/classes/htmlpurifier/HTMLPurifier_Injector_ClassifyLinks.php +++ b/lib/classes/htmlpurifier/HTMLPurifier_Injector_ClassifyLinks.php @@ -1,7 +1,7 @@ <?php /** - * Classify links as internal or external and set the class attribute + * Classify links as internal or external and set the class attribute * accordingly. */ class HTMLPurifier_Injector_ClassifyLinks extends HTMLPurifier_Injector @@ -13,8 +13,10 @@ class HTMLPurifier_Injector_ClassifyLinks extends HTMLPurifier_Injector { if ($token->name === 'a' && isset($token->attr['href'])) { $is_link_intern = isLinkIntern($token->attr['href']); - $token->attr['class'] = $is_link_intern ? 'link-intern' : 'link-extern'; - if (!$is_link_intern) { + if ($is_link_intern) { + $token->attr['class'] = 'link-intern'; + } elseif (strpos($token->attr['href'], 'mailto:') !== 0) { + $token->attr['class'] = 'link-extern'; $token->attr['target'] = '_blank'; } }