public function visitTextNode(TextNode $text_node) { $urllinker = new UrlLinker(); // Email-Adressen sollen nicht verlinkt werden $urllinker->setEmailLinkCreator(function ($email, $content) { return $email; }); $urllinker->setHtmlLinkCreator(function ($url, $content) { // Wir vergeben extra zweimal $url, weil $content durch UrlLinker gekürzt wird return Html::anchorFromConfig($url, $url, $this->config); }); $text_node->setValue($urllinker->linkUrlsAndEscapeHtml($text_node->getValue())); }
public function asHtml(ElementNode $el) { $content = ''; foreach ($el->getChildren() as $child) { $content .= $child->getAsText(); } $param = $el->getAttribute(); if (is_array($param)) { $param = array_shift($param); } $param = trim($param); if ($content == '' and $param == '') { return ''; } $short_url = $this->config->get('callbacks.url_content.short_url'); // Url finden if ($param == '') { // Die Url steht im Content $url = $content; // In der anzuzeigenden URL kein & anzeigen $content = str_replace('&', '&', $content); } else { // Die Url steht im Parameter $url = $param; $short_url = false; $content = ''; foreach ($el->getChildren() as $child) { $content .= $child->getAsHTML(); } } // http:// voranstellen, wenn nichts angegeben if (!preg_match('~^[a-z]+://~i', $url)) { $url = "http://" . $url; } // Wenn die URL nicht gültig ist, zeigen wir nur den Text if (!$this->config->getValidation()->isValidUrl($url)) { return $content; } return Html::anchorFromConfig($url, $content, $this->config); }